-Table cdbtoplevel TopLevel_Command
+Table *cdbtoplevel TopLevel_Command
cdb
subcmd enum(Cdb/_SubCommand, "cdb subcommand")
... obj
db iddata(&cdbtcl_databases)
Table cdbwr Cdbwr_SubCommand
- create-empty
+ create-empty 0
pathb string
# files:
# <pathb>.main
+ # <pathb>.lock
# <pathb>.cdb
# <pathb>.log
# <pathb>.tmp (might be new .main or new .cdb)
# invariants:
+ # .lock is an empty file
+ # which is locked with fcntl by open
# .main is a cdb native text file
# and always exists
- # if .tmp exists it is irrelevant
- # if .cdb exists it is a cdb database
- # containing exactly the same as .main
+ # .cdb is a cdb database containing data
+ # equivalent to and at least as recent as .main
+ # (maybe not identical, because .cdb may
+ # have been updated with data from .log but
+ # .main not yet); if .log does not exist then
+ # they are identical)
+ # .cdb may not exist; in which case it is to
+ # be treated as if it existed and was empty
+ # but this is maximally early (so main must
+ # exist and be empty since .main is never
+ # newer than .cdb)
# if .log exists, it is a cdb native
# text file _without the trailing newline_;
# its contents override values from .main or .cdb
- open
+ # if .main.tmp or .cdb.tmp exists it is irrelevant
+ # zero length values mean record is deleted (in .log only;
+ # forbidden elsewhere)
+ # while db is open:
+ # .lock is locked
+ # .log and open hash table contain same info
+ open 0
pathb string
on_info obj
+ ?on_lexminval obj
+ # on_lexminval present and not empty list: provides a
+ # script which returns the current lexminval. In
+ # this case, occasionally,
+ # on_lexminval will be called and then entries whose
+ # value is lexically strictly less than lexminval
+ # will be deleted automatically. The comparison
+ # is bytewise on the UTF-8 representations.
+ => iddata(&cdbtcl_rwdatabases)
+ open-okjunk RWSCF_OKJUNK
+ pathb string
+ on_info obj
+ ?on_lexminval obj
=> iddata(&cdbtcl_rwdatabases)
# on_info <event> <xinfo>...:
# on_info open-clean <statistics-info-string>
- # on_info open-dirty <statistics-info-string>
+ # on_info open-dirty-start <statistics-info-string>
+ # on_info open-dirty-junk <problem-info-string> \
+ # <problem-error-code-list>
+ # on_info open-dirty-done <statistics-info-string>
# on_info compact-start <statistics-info-string>
- # on_info compact-end <statistics-info-string>
+ # on_info compact-done <statistics-info-string>
# on_info close <statistics-info-string>
- lookup
+ lookup 0
db iddata(&cdbtcl_rwdatabases)
- key obj
+ key string
+ ?def obj
=> obj
- lookup-hb
+ lookup-hb 0
db iddata(&cdbtcl_rwdatabases)
- key hb
+ key string
+ ?def hb
=> hb
- update
+ delete 0
db iddata(&cdbtcl_rwdatabases)
- key obj
+ key string
+ update 0
+ db iddata(&cdbtcl_rwdatabases)
+ key string
value obj
- update-hb
+ update-hb 0
db iddata(&cdbtcl_rwdatabases)
- key hb
+ key string
value hb
- update-quick
+ compact-force 0
db iddata(&cdbtcl_rwdatabases)
- key obj
- value obj
- update-quick-hb
+ compact-check 0
db iddata(&cdbtcl_rwdatabases)
- key hb
- value hb
- close
+ compact-auto 0
+ # this is the default
db iddata(&cdbtcl_rwdatabases)
- close-quick
+ compact-explicit 0
db iddata(&cdbtcl_rwdatabases)
+ close 0
+ db iddata(&cdbtcl_rwdatabases)
+
+EntryExtra Cdbwr_SubCommand
+ unsigned flags;