ID:               37706
 Updated by:       [EMAIL PROTECTED]
 Reported By:      crescentfreshpot at yahoo dot com
 Status:           Bogus
 Bug Type:         OCI8 related
 Operating System: Win XP
 PHP Version:      5CVS-2006-06-05 (snap)
 New Comment:

I don't see any way to bind several variables to one placeholder/column
in OCI API, so we reuse the same descriptor on each iteration.


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

[2006-06-06 00:29:57] crescentfreshpot at yahoo dot com

Three things:

a) AFAIK php has no problems with having multiple stream handles open,
so does your "it's expected" comment refer to limitations in the oci
library itself?

b) is this why there is no way to stop oci_fetch_all from automatically
fetching my lob data and instead return them to me as separate,
*individual* streams?

b) Is there no workaround for this? Something along the lines of
php_stream_copy_to_stream to save a reference to an oci stream as it's
fetched say in a fetchAll scenario?

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

[2006-06-05 22:21:38] [EMAIL PROTECTED]

$row1[0] and $row2[0] are different variables pointing to the same LOB
descriptor.
This is how it works and it's expected.

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

[2006-06-05 22:18:18] crescentfreshpot at yahoo dot com

Description:
------------
I think OCI-Lob::read() is reading from the wrong handle when called
multiple times on different lob descriptors.



Reproduce code:
---------------
sql:
create table lobtest (lobdata clob);
insert into lobtest (lobdata) values('data data data data data data
data data');
insert into lobtest (lobdata) values('data2 data2 data2 data2 data2
data2 data2 data2');
commit;

php:
$conn  = oci_connect('xxx','yyy','zzz');
$stmt = oci_parse($conn, "select lobdata from lobtest");
oci_execute($stmt);

$row1 = oci_fetch_array($stmt, OCI_NUM);
$row2 = oci_fetch_array($stmt, OCI_NUM);

var_dump($row1[0]->tell());
var_dump($row1[0]->read(8192));

var_dump($row2[0]->tell());
var_dump($row2[0]->read(8192));

Expected result:
----------------
int(0)
string(39) "data data data data data data data data"
int(0)
string(0) "data2 data2 data2 data2 data2 data2 data2 data2"

Actual result:
--------------
int(0)
string(39) "data data data data data data data data"
int(39)
string(0) ""


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


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

Reply via email to