<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.3.2">
</HEAD>
<BODY>
I have just integrated Henrik Hjelte's postmodern-based backend into the official<BR>
darcs repository for elephant:<BR>
<BR>
<A HREF="http://common-lisp.net/project/elephant/darcs/elephant/">http://common-lisp.net/project/elephant/darcs/elephant/</A><BR>
<BR>
However, this is not an official release, but presumably will be part of the next official release.<BR>
It passes all of the tests.  The Postmodern backend is not quite twice as fast on our testsuite as<BR>
the CL-SQL backend.  The CL-SQL backend still has some value, however, for non-Postgres <BR>
databases.  If someone were to write another DB-specific backend, such as a MySQL backend<BR>
or an Oracle backend, I would assume they would benefit from both the CL-SQL version and <BR>
the Postmodern version.  However, I think the Postmodern version is better-written.  I thank<BR>
Henrik very much for preparing such a well-written, easy-to-integrate backend.<BR>
<BR>
I did, however, have to make three changes to get this to work for me under SBCL.<BR>
Postmodern defines "db-error" incompatibly with the BDB backend, so I renamed the BDB symbol<BR>
from db-error to bdb-db-error.  This was one issue on a "handler-case" that I assume was <BR>
acceptable under Henrik's LISP, but didn't work under SBCL, or seem to follow the CLHS.<BR>
Finally, in shared-initialize :after method that builds the cache-indices I had to explicitly <BR>
set the slot to the initform, to prevent a reading of an unbound-slot.  I still have no idea<BR>
why the slot was unbound at that point, in spite of all documentation saying that it should be.<BR>
<BR>
I slightly modified Henrik's test to harmonize more with the CL-SQL version, and added an<BR>
example of using postmodern into the RUNTEST.lisp file.<BR>
<BR>
Describing this in the manual remains to be done; I don't have any immediate plans to do so.<BR>
<BR>
Personally, I think each backend adds to the overall usability of Elephant, and should broaden<BR>
our user base.  Particularly since one can migrate data from one backend to another, it would<BR>
seem that we are offering a solid platform.<BR>
<BR>
Once this is officially released, users can expect the postmodern backend to be supported <BR>
indefinitely.  If we ever drop a backend, we will provide a way to migrate data out of it.<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
On Sat, 2007-05-12 at 16:46 +0200, Henrik Hjelte wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
<FONT COLOR="#000000">I have made some changes to the postmodern postgresql backend. The darcs</FONT>
<FONT COLOR="#000000">repo is now based on the official elephant darcs repo, so patches can be</FONT>
<FONT COLOR="#000000">moved between them easily. The postmodern backend passes all "official"</FONT>
<FONT COLOR="#000000">tests, but has not been extensively tested with real data yet.</FONT>

<FONT COLOR="#000000">The db-postmodern tree can be found here:</FONT>
<FONT COLOR="#000000"><A HREF="http://common-lisp.net/project/grand-prix/darcs/elephant">http://common-lisp.net/project/grand-prix/darcs/elephant</A></FONT>

<FONT COLOR="#000000">/Henrik Hjelte</FONT>

<FONT COLOR="#000000">_______________________________________________</FONT>
<FONT COLOR="#000000">elephant-devel site list</FONT>
<FONT COLOR="#000000"><A HREF="mailto:elephant-devel@common-lisp.net">elephant-devel@common-lisp.net</A></FONT>
<FONT COLOR="#000000"><A HREF="http://common-lisp.net/mailman/listinfo/elephant-devel">http://common-lisp.net/mailman/listinfo/elephant-devel</A></FONT>
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>