<!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>
On Thu, 2006-04-20 at 01:06 +0300, Ignas Mikalajunas wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    <FONT COLOR="#000000">And indeed it is independent, but calls to ele:start-transaction, ele:commit-transaction and ele:abort-transaction are throwing an error for me and their code seems to be BDB specific. I would like to use with-transacton, yet it aborts the transaction on "any non-local exit", while i want to rollback only when some error occurs. TBNL redirect code does (throw 'tbnl:tbnl-handler-done), aborting transaction on each redirect. As in web applications (save-data-to-database) (redirect-to-avoid-double-post) is a very common pattern, i was getting my data reverted every time. So i am doing manual commits/rollbacks, depending on whether the request processing code raised an error or not. </FONT><BR>
    <BR>
</BLOCKQUOTE>
<BR>
Are you using the latest cvs version, or the latest released version from a tar file?<BR>
The cvs version has reworked a lot of this to make it more clearly independent.<BR>
If you check out the latest cvs version (instructions are on the Elephant project home page),<BR>
you will find in the src directory transactions.lisp, which provides a small API.  This would<BR>
be in spirit much, much better than calling anything on clsql directly.  The whole point of <BR>
Elephant, and particularly the last year of work, is to protect the user from details at the <BR>
implementation level.<BR>
<BR>
Of course, I understand making it work overrides design philosophy; I hate to tell you to extensively<BR>
rewrite something, but I really must insist that directly accessing either CLSQL or BDB is not a <BR>
reasonable long term approach.  It should be better to use the latest transaction interface <BR>
(mostly reorganized by Ian Eslick, I think) that is independent of the back-end.  I've attached<BR>
the file from the latest version for you to look at.<BR>
<BR>
I apologize that our latest version has been "just about ready" for so long; I hope we haven't wasted<BR>
your time by not releasing it faster.<BR>
<BR>
I have not done that much work with the transaction handling, but am willing to debug any<BR>
reproducible problem that you find.<BR>
<BR>
You have already posted a very nice, small, testcase for SBCL.  If we could figure out <BR>
how to make that testcase work (perhaps by changing Elephant internals when SQLite3 is in use),<BR>
would that allow you to go back to using the "pure" Elephant API?<BR>
<BR>
If so, I'll work on that.<BR>
<BR>
If not, I'll work on whatever the problem is, but I don't think I should work on any solution that <BR>
goes around the Elephant API (or is not using the latest version from CVS), even though I <BR>
appreciate you trying so hard to get it to work.
</BODY>
</HTML>