changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/rdb/proto.lisp

changeset 679: 12287fab15d0
parent: 97dd03beda03
child: 5f88b237ce29
author: Richard Westhaver <ellis@rwest.io>
date: Thu, 26 Sep 2024 21:16:45 -0400
permissions: -rw-r--r--
description: rocksdb load opts and env updates
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
1
 ;;; rdb/proto.lisp --- RDB protocol
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
2
 
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
3
 ;; Extends OBJ/DB protocol with RocksDB-specific generics.
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
4
 
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
5
 ;;; Code:
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
6
 (in-package :rdb)
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents:
diff changeset
7
 
94
01051403700f rdb work
ellis <ellis@rwest.io>
parents: 93
diff changeset
8
 ;; Most methods are intended to work with the RDB struct directly
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
9
 (defgeneric put-kv (self kv)
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
10
   (:documentation "Insert a KeyVal object."))
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
11
 (defgeneric put-key (self key val)
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
12
   (:documentation "Insert a KEY and VAL."))
292
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
13
 (defgeneric put-key-ts (self key val ts)
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
14
   (:documentation "Insert a KEY and VAL with associated timestamp TS."))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
15
 (defgeneric get-key (self key &key)
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
16
   (:documentation "Get value of KEY."))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
17
 (defgeneric multi-get (self keys &key)
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
18
   (:documentation "Retrieve multiple KEYS from SELF."))
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
19
 (defgeneric get-opt (self key)
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
20
   (:documentation "Get value of option KEY."))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
21
 (defgeneric set-opt (self key val &key)
226
956fe7929a7c temps, db, etc
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
22
   (:documentation "Set value of option KEY to VAL."))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
23
 (defgeneric push-opts (self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
24
   (:documentation "Push all options to internal sap."))
269
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
25
 (defgeneric backfill-opts (self &key)
87f503c7a365 more rocksdb
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
26
   (:documentation "Backfill opts from an alien."))
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
27
 (defgeneric push-sap (self key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
28
   (:documentation "Push a value associated with KEY to the sap associated
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
29
 with SELF. Typically used to send a value from one slot, to a foreign
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
30
 handle stored in another slot of the same object."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
31
 (defgeneric push-sap* (self)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
32
   (:documentation "Implicitly push values to the sap associated with SELF."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
33
 (defgeneric pull-sap (self key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
34
   (:documentation "Pull a foreign value identified by KEY from the sap associated with SELF."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
35
 (defgeneric pull-sap* (self)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
36
   (:documentation "Implicitly pull foreign values from the sap associated with SELF."))
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
37
 (defgeneric push-cf (cf self)
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
38
   (:documentation "Push a column-family to a sap."))
679
12287fab15d0 rocksdb load opts and env updates
Richard Westhaver <ellis@rwest.io>
parents: 624
diff changeset
39
 (defgeneric open-cf (self cf &optional opts)
624
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
40
   (:documentation "Open column-family CF in SELF. When ERROR is non-nil signal an error if the
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
41
 column-family is already open."))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
42
 (defgeneric open-cfs (self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
43
   (:documentation "Open all column-fmailies belonging to SELF."))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
44
 (defgeneric close-cf (self &optional error)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
45
   (:documentation "Close the column-family SELF. When ERROR is non-nil signal an error if the
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
46
 column-family is already closed."))
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
47
 (defgeneric close-cfs (self)
97dd03beda03 rocksdb updates in coordination with infra/scripts/org-graph-db-init.lisp
Richard Westhaver <ellis@rwest.io>
parents: 293
diff changeset
48
   (:documentation "Close the column-families belonging to SELF."))
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
49
 (defgeneric insert-key (self key val &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
50
   (:documentation "Insert KEY:VAL into SELF."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
51
 (defgeneric insert-kv (self kv &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
52
   (:documentation "Insert KV object into SELF."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
53
 (defgeneric make-kv (key val)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
54
   (:documentation "Make a KV object from KEY:VAL."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
55
 (defgeneric delete-key (self key &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
56
   (:documentation "Delete value associated with KEY from SELF."))
292
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
57
 (defgeneric delete-key-ts (self key ts)
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
58
   (:documentation "Delete value associated with KEY and TS from SELF."))
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
59
 (defgeneric delete-key-range (self start end &key)
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
60
   (:documentation "Delete values associates with keys between START and END from SELF."))
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
61
 (defgeneric make-transaction (self &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
62
   (:documentation "Make a new transaction object from SELF."))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
63
 (defgeneric begin-transaction (self &key)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
64
   (:documentation "Begin processing of transaction SELF."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
65
 (defgeneric prepare-transaction (self &key)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
66
   (:documentation "Prepare transaction SELF."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
67
 (defgeneric rollback-transaction (self &key)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
68
   (:documentation "Rollback transaction SELF."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
69
 (defgeneric delete-transaction (self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
70
   (:documentation "Delete transaction SELF."))
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
71
 (defgeneric commit-transaction (self &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
72
   (:documentation "Commit transaction object SELF."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
73
 (defgeneric flush-db (self &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
74
   (:documentation "Flush the database SELF."))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
75
 (defgeneric sync-db (self other &key) ;;nyi
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
76
   (:documentation "Perform a synchronization on SELF using OTHER."))
293
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
77
 (defgeneric find-cf (cf self &key)
e2e5c4831389 std fixes and rdb with-sst
Richard Westhaver <ellis@rwest.io>
parents: 292
diff changeset
78
   (:documentation "Find the column-familiy CF in SELF."))
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
79
 (defgeneric flush-cf (self cf &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
80
   (:documentation "Flush the column-family CF in SELF."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
81
 (defgeneric repair-db (self &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
82
   (:documentation "Attempt to repair the database SELF."))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
83
 (defgeneric backup-db (self &key)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
84
   (:documentation "Create a new backup for database SELF."))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
85
 (defgeneric restore-db (self from &key)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
86
   (:documentation "Restore database SELF from object FROM."))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
87
 (defgeneric snapshot-db (self)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
88
   (:documentation "Create a new snapshot for database SELF."))
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
89
 (defgeneric write-db (self batch &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
90
   (:documentation "Write BATCH to database SELF."))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
91
 (defgeneric shutdown-db (self &key)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
92
   (:documentation "Shutdown database SELF."))
292
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
93
 (defgeneric ingest-db (self file &key)
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 282
diff changeset
94
   (:documentation "Ingest an external file into the database"))
272
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
95
 (defgeneric get-prop (self propname)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
96
   (:documentation "Get the property-value of PROPNAME from SELF."))
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
97
 (defgeneric get-stats (self &optional htype)
0a5e37693fdf db protocol stuff, prep for tao, tests, with-temp-db
Richard Westhaver <ellis@rwest.io>
parents: 271
diff changeset
98
   (:documentation "Get stats modulo HTYPE from SELF."))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
99
 (defgeneric print-stats (self &optional stream)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
100
   (:documentation "Print statistics data from SELF."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
101
 (defgeneric get-metadata (self &optional arg)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
102
   (:documentation "Get metadata from SELF modulo ARG."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
103
 (defgeneric create-iter (self &optional cf opts)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
104
   (:documentation "Create an interator over the kvs of SELF module CF and OPTS."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
105
 (defgeneric iter-next (self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
106
   (:documentation "Return the next value."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
107
 (defgeneric iter-prev (self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
108
   (:documentation "Return the previous value."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
109
 (defgeneric iter-seek (self key &key)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
110
   (:documentation "Seek to a certain KEY in the iterator."))
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
111
 (defgeneric iter-val (self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
112
   (:documentation "Return the value of current iterator item."))
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 273
diff changeset
113
 (defgeneric iter-valid-p (self)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 273
diff changeset
114
   (:documentation "Return non-nil if the iterator cursor is valid."))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
115
 (defgeneric iter-key (self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
116
   (:documentation "Return the key of current iterator item."))
282
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 273
diff changeset
117
 (defgeneric iter-kv (self)
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 273
diff changeset
118
   (:documentation "Return the current KV object of the iterator by getting the key and
da580c7fe954 upgrades
Richard Westhaver <ellis@rwest.io>
parents: 273
diff changeset
119
 val."))
273
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
120
 (defgeneric iter-timestamp (self)
6d56c4950fa2 rocksdb iter,metadata,and more
Richard Westhaver <ellis@rwest.io>
parents: 272
diff changeset
121
   (:documentation "Return the timestamp of current iterator item."))
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
122
 (defgeneric make-val (val)
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
123
   (:documentation "Coerce VAL into an OCTET-VECTOR.")
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
124
   (:method ((val null))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
125
     #())
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
126
   (:method ((val string))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
127
     (string-to-octets val))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
128
   (:method ((val t))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
129
     val))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
130
 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
131
 (defgeneric make-key (key)
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
132
   (:documentation "Coerce KEY into an OCTET-VECTOR.")
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
133
   (:method ((val null))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
134
     #())
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
135
   (:method ((val string))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
136
     (string-to-octets val))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
137
   (:method ((val t))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
138
     val))
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 226
diff changeset
139
 
271
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
140
 (defgeneric merge-key (self key val &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
141
   (:documentation "Perform a merge operation on SELF using KEY and VAL."))
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
142
 
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
143
 (defgeneric merge-kv (self kv &key)
4a1a21ff46ee metadata,props,merge-ops
Richard Westhaver <ellis@rwest.io>
parents: 269
diff changeset
144
   (:documentation "Perform a merge operation on SELF using object KV."))