#41711 [NEW]: Null temporary lobs not supported
| From: | christopher dot jones at oracle dot com | Date: | Fri, 15 Jun 2007 22:48:14 +0000 |
| Subject: | #41711 [NEW]: Null temporary lobs not supported | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-113844@lists.php.net to get a copy of this message | ||
From: christopher dot jones at oracle dot com
Operating system: n/a
PHP version: 5.2.3
PHP Bug Type: OCI8 related
Bug description: Null temporary lobs not supported
Description:
------------
Using NULL data for LOB "IN" bind variables gives ORA-22275: invalid LOB
locator specified. Bug discovered by Mike Simonds.
[Tony: I'll send you a complete .phpt via email]
Patch is in function php_oci_lob_write_tmp() in oci_lob.c:
--- oci8_lob.c.orig 2007-06-15 21:13:31.000000000 -0700
+++ oci8_lob.c 2007-06-15 21:58:54.000000000 -0700
@@ -859,11 +859,6 @@
break;
}
- if (!data || data_len <= 0) {
- /* nothing to write, silently fail */
- return 1;
- }
-
PHP_OCI_CALL_RETURN(connection->errcode, OCILobCreateTemporary,
(
connection->svc,
Reproduce code:
---------------
<?php
$c = oci_connect("hr", "hrpwd", "//localhost/XE");
// Initialization
$s = oci_parse($c, 'drop table ctb');
oci_execute($s);
$s = oci_parse($c, 'create table ctb (id number, data clob)');
oci_execute($s);
echo "Temporary CLOB: NULL\n";
$s = oci_parse($c, "insert into ctb values (1, :b)");
$lob = oci_new_descriptor($c, OCI_D_LOB);
oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
$lob->writeTemporary(null);
$r = oci_execute($s);
$lob->close();
echo "Temporary CLOB: ''\n";
$s = oci_parse($c, "insert into ctb values (2, :b)");
$lob = oci_new_descriptor($c, OCI_D_LOB);
oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
$lob->writeTemporary('');
$r = oci_execute($s);
$lob->close();
echo "Temporary CLOB: text\n";
$s = oci_parse($c, "insert into ctb values (3, :b)");
$lob = oci_new_descriptor($c, OCI_D_LOB);
oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
$lob->writeTemporary('Inserted via SQL statement');
$r = oci_execute($s);
$lob->close();
$s = oci_parse ($c, 'select id, data from ctb order by id');
oci_execute($s);
oci_fetch_all($s, $res);
var_dump($res);
?>
Expected result:
----------------
Temporary CLOB: NULL
Temporary CLOB: ''
Temporary CLOB: text
array(2) {
["ID"]=>
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
["DATA"]=>
array(3) {
[0]=>
string(0) ""
[1]=>
string(0) ""
[2]=>
string(26) "Inserted via SQL statement"
}
}
Actual result:
--------------
Temporary CLOB: NULL
PHP Warning: oci_execute(): ORA-22275: invalid LOB locator specified in
/home/cjones/public_html/b.php on line 23
Warning: oci_execute(): ORA-22275: invalid LOB locator specified in
/home/cjones/public_html/b.php on line 23
PHP Warning: OCI-Lob::close(): OCI_INVALID_HANDLE in
/home/cjones/public_html/b.php on line 24
Warning: OCI-Lob::close(): OCI_INVALID_HANDLE in
/home/cjones/public_html/b.php on line 24
Temporary CLOB: ''
PHP Warning: oci_execute(): ORA-22275: invalid LOB locator specified in
/home/cjones/public_html/b.php on line 31
Warning: oci_execute(): ORA-22275: invalid LOB locator specified in
/home/cjones/public_html/b.php on line 31
PHP Warning: OCI-Lob::close(): OCI_INVALID_HANDLE in
/home/cjones/public_html/b.php on line 32
Warning: OCI-Lob::close(): OCI_INVALID_HANDLE in
/home/cjones/public_html/b.php on line 32
Temporary CLOB: text
array(2) {
["ID"]=>
array(1) {
[0]=>
string(1) "3"
}
["DATA"]=>
array(1) {
[0]=>
string(26) "Inserted via SQL statement"
}
}
--
Edit bug report at http://bugs.php.net/?id=41711&edit=1
--
Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=41711&r=trysnapshot44
Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=41711&r=trysnapshot52
Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=41711&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=41711&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=41711&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=41711&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=41711&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=41711&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=41711&r=support
Expected behavior: http://bugs.php.net/fix.php?id=41711&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=41711&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=41711&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=41711&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=41711&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=41711&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=41711&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=41711&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=41711&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=41711&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=41711&r=mysqlcfg