X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-tcl.git;a=blobdiff_plain;f=cdb%2Fcdb.tct;h=889e72aab507769c87334a5cf2aea7ddd8b23906;hp=e33607bc7932348367007a86a0ae3a4547452908;hb=a3466b322998a623a15907a5c3520b4f30d1c050;hpb=ca258c32ca9f43fa6ddb5642860f310c8b506f2c diff --git a/cdb/cdb.tct b/cdb/cdb.tct index e33607b..889e72a 100644 --- a/cdb/cdb.tct +++ b/cdb/cdb.tct @@ -1,10 +1,25 @@ +# cdb, cdb-wr - Tcl bindings for tinycdb and a journalling write extension +# Copyright 2006-2012 Ian Jackson +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this library; if not, see . + + Table *cdbtoplevel TopLevel_Command cdb - subcmd enum(Cdb/_SubCommand, "cdb subcommand") - ... obj + dispatch(Cdb/_SubCommand, "cdb subcommand") cdb-wr - subcmd enum(Cdbwr/_SubCommand, "cdb-wr subcommand") - ... obj + dispatch(Cdbwr/_SubCommand, "cdb-wr subcommand") Table cdb Cdb_SubCommand open @@ -13,11 +28,13 @@ Table cdb Cdb_SubCommand lookup db iddata(&cdbtcl_databases) key obj + ?def obj => obj lookup-hb db iddata(&cdbtcl_databases) key hb - => hb + ?def obj + => obj close db iddata(&cdbtcl_databases) @@ -28,7 +45,7 @@ Table cdbwr Cdbwr_SubCommand # .main # .lock # .cdb - # .log + # .jrn # .tmp (might be new .main or new .cdb) # invariants: # .lock is an empty file @@ -38,23 +55,23 @@ Table cdbwr Cdbwr_SubCommand # .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 + # have been updated with data from .jrn but + # .main not yet); if .jrn 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 + # if .jrn exists, it is a cdb native # text file _without the trailing newline_; # its contents override values from .main or .cdb # if .main.tmp or .cdb.tmp exists it is irrelevant - # zero length values mean record is deleted (in .log only; + # zero length values mean record is deleted (in .jrn only; # forbidden elsewhere) # while db is open: # .lock is locked - # .log and open hash table contain same info + # .jrn and open hash table contain same info open 0 pathb string on_info obj @@ -89,8 +106,8 @@ Table cdbwr Cdbwr_SubCommand lookup-hb 0 db iddata(&cdbtcl_rwdatabases) key string - ?def hb - => hb + ?def obj + => obj delete 0 db iddata(&cdbtcl_rwdatabases) key string @@ -106,7 +123,8 @@ Table cdbwr Cdbwr_SubCommand db iddata(&cdbtcl_rwdatabases) compact-check 0 db iddata(&cdbtcl_rwdatabases) - compact-onupdate 0 # this is the default + compact-auto 0 + # this is the default db iddata(&cdbtcl_rwdatabases) compact-explicit 0 db iddata(&cdbtcl_rwdatabases)