|
|
sybperl-l Archive
Up Prev Next
From: "Orton, Yves" <yves dot orton at de dot mci dot com>
Subject: RE: About prepared statements asnd transactions....
Date: Oct 12 2005 9:10AM
Edward J. Sabol wrote on Wednesday, October 12, 2005 1:01 AM
> Yves Orton wrote:
> > The main issue for me is that currently prepared handles +
> > transasctions are dangerous.
>
> They are? How so exactly? I've used prepare_cached() within
> transactions in several Web applications in a mod_perl environment for a
> couple years now and I haven't encountered any problems.
>
> Do you mean "*active* statement handles"? Like when you have an active
> statement handle and then you prepare/execute another
> statement handle which transparently opens up a separate DBI connection?
Yes this is precisely the issue I mean. Dangerous as a description is
perhaps a touch drammatic, but not wrong.
> Because that can lead to inconsistent transactional behavior.
Yep. And if you've missed the bit of the docs that explains this behaviour
extremely perplexing. :-)
> It would be really nice if DBD::Sybase could better support multiple
active sth's over
> a single dbh. I know this is still one of the problems preventing easy
porting
> of Bugzilla to Sybase.
This is exactly what I was trying to address.
> While, it's arguably poor program design to need multiple
> active statement handles, most every DBD supports it *except* for
DBD::Sybase.
> DBD::Mysql and DBD::Pg (for older versions of PostgreSQL only) emulate the
> capability of having multiple active sth's per dbh by reading all the data
from an
> unfinished sth into memory when a second sth is executed. I
> suggested adding similar emulation of this capability to DBD::Sybase to
> Michael in February 2004, but nothing came of it, AFAIK.
And I guess that's exactly what I want. I think tho I misunderstood the
problem and therefore suggested the incorrect remedy. I thought that you
could have multiple active statements so long as they don't use
placeholders, so avoiding them seemed the solution, I guess im wrong there?
Yves
|