Re: PDO PgSQL: _pdo_pgsql_notice
| From: | Samuel ROZE | Date: | Wed, 07 Oct 2009 06:18:20 +0000 |
| Subject: | Re: PDO PgSQL: _pdo_pgsql_notice | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-45680@lists.php.net to get a copy of this message | ||
Ok, it is possible with Oracle.. Do you think that if it is for only
both of PDO's supported databases is a reason to make that generaly ?
For other drivers it must just burdening PDO. It's what I think...
Le mardi 06 octobre 2009 à 23:08 -0700, Christopher Jones a écrit :
>
> Samuel ROZE wrote:
> > Notices are informations returned with your own function which was
> > writed for. For instance, a function (trigger or simple) which have to
> > insert, delete and update lines can use the RAISE NOTICE (in PostgreSQL)
> > to send notices to the client.
> >
> > It can be "2 deleted lines, 0 updated lines and 11 inserted lines", what
> > you want ! For me, it is important for stats.
> >
> > Others Databases don't support that (RAISE NOTICE) but I think there's
> > an equivalent in Oracle but I don't know it.
>
> There's a way to "print" message from Oracle. See dbms_output in
>
> http://www.oracle.com/technology/tech/php/underground-php-oracle-manual.html
> These can be retrieved with existing OCI8 or PDO_OCI calls to stored
> procedures using bind variables.
>
> What we want to avoid is someone trying to port apps to different
> databases and having to rewrite more code than needed. Easier said
> than done :)
>
> Chris
>
> >
> > Samuel.
> >
> > Le mardi 06 octobre 2009 à 22:47 -0700, Christopher Jones a écrit :
> >> What are notices? Do they relate anything in other Databases?
> >> I.e. can a generic interface be implemented instead of a postgres
> >> specific one?
> >>
> >> Chris
> >>
> >> Samuel ROZE wrote:
> >>> Thanks all lot for your work ! It is be what I want !
> >>>
> >>> I'll view it this evening and I probably will transform it for PHP 5.2
> >>> (which is my version) and put it here.
> >>>
> >>> At tonight ! :-)
> >>> Samuel.
> >>>
> >>> Le mercredi 07 octobre 2009 à 00:31 +0200, Matteo Beccati a écrit :
> >>>> Hi,
> >>>>
> >>>>>> Please allow some time for me to check how they are currently dealt
> >>>>>> with
> >>>>>> in the pgsql extension and to see how they can be implemented in the
> >>>>>> PDO driver.
> >>>>> Actually, the PosgreSQL driver for PDO don't report
> >>>>> notices.. The content of "_pdo_pgsql_notice" is commented !
> >>>>>
> >>>>> Thanks a lot for the time you passed/you'll pass !
> >>>> Here's a proof of concept patch you can apply to the PHP_5_3 branch:
> >>>>
> >>>>
> >>>> http://www.beccati.com/misc/php/pdo_pgsql_notices_php5_3.patch
> >>>>
> >>>> I still need to clean it up a bit and discuss it with the team, but
> >>>> here's how it currently works:
> >>>>
> >>>> $db = new PDO(...);
> >>>> $db->setAttribute(PDO::PGSQL_ATTR_ENABLE_NOTICES, true);
> >>>>
> >>>> $db->exec($query); // works with $db->query() too
> >>>> $aNotices = $db->pgsqlGetNotices();
> >>>>
> >>>> And you will get an array of the notices raised by the last query.
> >>>>
> >>>> To sum up:
> >>>> * Notices are disabled by default, minimising the overhead
> >>>> * Unlike the pgsql extension which returns the most recent one, multiple
> >>>> notices can be fetched
> >>>> * A new query will reset the stored notices
> >>>> * Available on the base class because exec() doesn't return a
> >>>> PDOStatement
> >>>>
> >>>> Hope this helps
> >>>>
> >>>>
> >>>> Cheers
> >>>> --
> >>>> Matteo Beccati
> >>>>
> >>>
> >
>