Re: PDO PgSQL: _pdo_pgsql_notice

From: Date: Wed, 07 Oct 2009 07:06:06 +0000
Subject: Re: PDO PgSQL: _pdo_pgsql_notice
References: 1 2 3 4 5 6 7 8 9 10 11 12  Groups: php.internals 
Request: Send a blank email to internals+get-45682@lists.php.net to get a copy of this message
Christopher Jones wrote: > Lukas Kahwe Smith wrote: >> >> On 07.10.2009, at 08:09, Matteo Beccati wrote: >> >>> Christopher Jones ha scritto: >>>> >>>> Could you use the new PG specific attribute to enable them >>>> but make them output/handled by the existing error/exception >>>> interface? >>> >>> That's what I originally thought. But there can be multiple notices >>> triggered by a single query and they shouldn't make the query fail (i.e. >>> throwing an exception would be awkward for a successful query). >> >> >> MySQL has similar notices. Like when stuff gets truncated etc. >> I also think that using the current "error modes" is probably not >> ideal. Or rather these arent exception worthy, and they should >> obviously not return false either. > > Is there a common interface that would suit both MySQL & Postgres usage? From the user perspective I'd say yes. We can surely make generic attributes and methods to deal with warnings/notices/dbms_output. From what I could see, things get a bit more complicate on the code side: PgSQL: 1. Set a notice processor callback 2. Clear the notice buffer before a query 3. Asynchronously buffer notices inside the callback 4. Set a no-op processor callback MySQL: 1. Call mysql_warning_count() after a succesful query 2. if the result is non-zero, execute "SHOW WARNINGS" and fetch the results Oracle: 1. Enable output buffering 2. Fetch the buffer after a successful query 3. Clear the buffer 4. Disable output buffering Adding generic hooks/functions will also require a PDO API version bump. Cheers -- Matteo Beccati

« previous php.internals (#45682) next »