[elephant-devel] Re: Mixing "logical" layers in an elephant application
Alex Mizrahi
killerstorm at newmail.ru
Sun Dec 9 11:39:08 UTC 2007
AP> When I tried the above, it blew up when I added the ENSURE-TRANSACTION
AP> clause; because all of a sudden the DOQUERY found itself querying
AP> on the "wrong" database. (I'm assuming ENSURE-TRANSACTION binds
AP> something like a *DATABASE* var which got mistakenly inherited by
AP> the postmodern layer)
so you have two postmodern connections?
there are two layers in POSTMODERN: postmodern itself uses special variable
*database* to control which connection is used, but in lower level
cl-postgres connection is passed explicitly.
elephant's backend uses both. it uses with-postmodern-conn macro when it's
going to use it's own database. other times it uses cl-postgres layer and
that shouldn't affect other uses (it uses it's own special variable
*connection* and passes it to cl-postgres calls).
it calls with-postmodern-conn in ensure-transaction (i'm not sure why it's
there, but it is).
so you need to fight-back your connection in your map-visits (or before you
call it, but inside elephant's ensure-transaction). even if you call
elephant functions from it, it should automatically switching connections
and it should "just work".
if it doesn't, it's a bug, and with-postmodern-conn macro should be inserted
somewhere.
alternatively you can use cl-postgres, or make your own macros that both
allow fancy syntax and explicit connection specification..
i think that besides connection nothing can be messed with postmodern -- if
you do two connections they are totally independent.
but i'm afraid you're first human on the earth who uses both
elephant/db-postmodern and postmodern combination simultaneously, so nobody
really knows.. :)
More information about the elephant-devel
mailing list