Re: DBD::Pg 1.30_1 WAS (Re: Prepare and prepare ?) - Mailing list pgsql-interfaces

From David Wheeler
Subject Re: DBD::Pg 1.30_1 WAS (Re: Prepare and prepare ?)
Date
Msg-id 07EFE962-91EB-11D7-975B-0003931A964A@wheeler.net
Whole thread Raw
In response to DBD::Pg 1.30_1 WAS (Re: Prepare and prepare ?)  (Rudy Lippan <rlippan@remotelinux.com>)
List pgsql-interfaces
On Thursday, May 29, 2003, at 01:57  AM, Rudy Lippan wrote:

> On Mon, 26 May 2003, Bruce Momjian wrote:
>
>> Rudy, where are we on the release of DBD:pg withs your patches?  Are
>> they ready to go?
>
>
> I spun an ALPHA copy of DBD::Pg. So much has changed in there that I am
> sure something is broken for someone; therefore, I think we should let
> people hammer on it for a few days before making an official release.
>
> I put the alpha up here:
> http://www.remotelinux.com/rlippan/DBD-Pg-1.30_1.tar.gz

Nice, thanks for this, Rudy.

> And for anyone who is interested here is the change log:
>
>     - $dbh->prepare() rewrites the SQL statement into an internal for
>       striping out comments and whitespace, and if PostgreSQL > 7.3 
> takes
> the
>       stripped statement and passes that to postgress' PREPARE 
> statement,
>       then rewrites the statement as 'EXECUTE "DBD::PG::cached_query n"
>       ($1, $2, ... $n, $n+1)' for DBD::Pg's execute.  -- Currently
> disabled
>       until PREPARE works a little better

Pity. Do you know if it will work as well as you need in 7.4? Have you 
tested it with the latest from CVS? I think that it is close-ish to 
done, so now would be the time to get in any requests for fixes.

>     - Allows the use of :n and :foo bind params. So: (SELECT * FROM foo
> where
>       1 = :this and 2 = :that) will now work.
>     - Complains on execute when unbound bind params are submitted 
> (instead
> of
>       defaulting to NULL)

Ah, good!

>     - Switched over to use driver.xst.

About time we did this!

>     - pg_error() only removes \n's don't truncate message on first \n

Heh, funny. If we don't release 1.30 with all your changes soon, it 
might be worth it to backport this fix.

>     - fixed statement scan problem where the preparse of
>       "SELECT foo[3:33] from bar"  was scanning :33 as a placeholder
>     - moved the quoting of bind values out of execute() and into
>       bind -- as there is no need to requote the value every time 
> execute
>       is called.

rudy++

>     - :veryverylongplaceholdername ==  Long walk. Sort pier -- fixed.
>     - quote() is now in C and uses same code as bind_param.
>     - quoting and dequoting now use libpq quoting functions where
> available
>       (I still need to take the libpq functions swiped out of quote.c 
> and
> move
>       it into libpqswip.c with license info &c., and switch ifndefs to
> ifdefs)

Good, nice to have all this centralized.

>     - bind_param() will convert from 1,0 to TRUE/FALSE when pg_type is
>       PGBOOLOID.

Nice.

>     - fixed many heap buffer overruns.

Thanks Rudy, sounds great!

David

-- 
David Wheeler                                     AIM: dwTheory
david@kineticode.com                              ICQ: 15726394
http://kineticode.com/                         Yahoo!: dew7e                                               Jabber:
Theory@jabber.org
Kineticode. Setting knowledge in motion.[sm]



pgsql-interfaces by date:

Previous
From: Michael Vodep
Date:
Subject: Got Problems with libpg.dll
Next
From: David Wheeler
Date:
Subject: Re: DBD::Pg 1.30_1 WAS (Re: Prepare and prepare ?)