[elephant-devel] db gc

Gábor Melis mega at hotpop.com
Sat Mar 19 10:42:44 UTC 2005


On Monday 14 March 2005 23:02, Ben wrote:
> hey! thanks for the patch.
>
> ok, i've changed my mind, i'll do one last set of patches to elephant
> and cut a release, to include all of gabor and other people's fixes.
>
> gabor, let me know when you feel like a good time to do this is,
> e.g. when your code will settle.  i'll try to take a serious look at
> it too at some point.
>
> B

I think it is in reasonable shape, gc is cleaned up, a bit faster and there 
are tests for join and gc. The attached big patch contains the latest 
versions of multiple things (let me know if I should try to split it): 
- revised serialization of persistent objects (type is not in each ref, this 
is incompatible on the db level)
- gc
- multiple-key indices 
- join

Note: maybe key-fn should always return a list of secondary keys and not 
t/nil/:multiple-key + key (or keys). This would be incompatible on the source 
level.

With multi indices + join it is easy to do 'full' text indexing, if this stuff 
goes in I'll write the doc. Until then look at the last test in 
testjoin.lisp. I'm not satisfied with join API, but it works and the 
direction in which it will develop is not clear yet. Hopefully one day it 
will support queries like: (and (< my-index 42)  (or (= other-index "hello") 
(= other-index "world"))).

ChangeLog from the patch:

 * src/join.lisp, tests/testjoin.lisp: implemented join for
 secondary cursors

 * src/utils.lisp: added with-gensyms

 * src/sleepycat.lisp: added buffer-compare

 * src/collections.lisp: multiple key support for indices

 * src/libsleepycat.c: the new lisp_raw_compare does what
 lisp_compare does but on arrays instead of DB*. This function is
 called from lisp.

 * src/gc.lisp, tests/testgc.lisp: implemented offline gc

 * src/serializer.lisp: renamed deserialize to really-deserialize
 and made deserialize call *deserialize-fn* to allow gc to hook
 into it

 * src/sleepycat.lisp: added buffer-skip

 * tests/elephant-tests.lisp: cleanup

 * src/classes.lisp, tests/mop-tests.lisp,
 tests/testcollections.lisp: store type of an object in
 controller-db keyed by oid instead of in every reference to it;
 change-class should work reliably now

Gabor
-------------- next part --------------
A non-text attachment was scrubbed...
Name: big.patch
Type: text/x-diff
Size: 64477 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/elephant-devel/attachments/20050319/33dc5841/attachment.patch>


More information about the elephant-devel mailing list