ID:               44861
 Updated by:       mbecc...@php.net
 Reported By:      php at benjaminschulz dot com
-Status:           Verified
+Status:           Closed
 Bug Type:         PDO related
-Operating System: osx
+Operating System: Irrelevant
 PHP Version:      5.3CVS-2008-04-29 (CVS)
-Assigned To:      
+Assigned To:      mbeccati
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2009-02-04 00:43:51] matteo at beccati dot com

Here's the patch, including a phpt file:

http://www.beccati.com/misc/pdo_pgsql_bug44861_php_5.3.patch

A bit of explanations... I've changed the ordering when executing the
query so that if a cursor is needed, it's created before any preparation
happens.

The cursor is now declared as SCROLL-able and WITH HOLD to ensure it
can be used even outside transactions. I was previously trying to avoid
WITH HOLD and enforce requirement for a transaction, but things were
going very bad when the destructor was called after the transaction was
closed, which is a common situation when calling commit() without
previusly unsetting the statement variable.

One thing I'm not really sure about is the behaviour of ORI_ABS and
ORI_REL: ORI_ABS will work for offsets >= 1, while ORI_REL can work
with negative numbers as well. I'm sorry, but it's impossible for me to
guess how they should work just by reading the pdo_oci code or the
Oracle documentation of OCIStmtFetch2.

------------------------------------------------------------------------

[2009-01-15 22:30:21] andrew at rook dot ca

Same problem.
PHP 5.2.8 on Fedora 8 (2.6.21.7-5.fc8xen) && PostgreSQL 8.2.11

------------------------------------------------------------------------

[2008-12-12 11:36:07] denis at edistar dot com

Same problem also in PHP 5.2.6.

I think this is a very serious bug.

------------------------------------------------------------------------

[2008-04-29 16:13:24] php at benjaminschulz dot com

Description:
------------
I don't see how to use scrollable cursors with pdo_pgsql

Reproduce code:
---------------
$db = new Pdo("pgsql:...");
$db->setAttribute(Pdo::ATTR_ERRMODE, Pdo::ERRMODE_EXCEPTION);
$res = $db->prepare("SELECT 'row1' UNION SELECT 'row2' UNION SELECT
'row3' UNION SELECT 'row4'", array(PDO::ATTR_CURSOR =>
PDO::CURSOR_SCROLL));
$res->execute();
var_dump($res->fetch());
// $res->fetch(Pdo::FETCH_NUM, PDO::FETCH_ORI_ABS, 2) won't throw an
exception but return false

Expected result:
----------------
array('row1')

Actual result:
--------------
Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[34000]: Invalid cursor name: 7 ERROR: cursor
"pdo_pgsql_cursor_00d78a0c" does not exist' in ...


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=44861&edit=1

Reply via email to