sixd Thu, 01 Oct 2009 05:51:11 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=289039
Log: PECL Bug #16842 (oci_error return false when NO_DATA_FOUND is raised) Bug: http://pecl.php.net/bugs/16842 (unknown) Changed paths: U php/php-src/branches/PHP_5_3/ext/oci8/oci8.c A php/php-src/branches/PHP_5_3/ext/oci8/tests/pecl_bug16842.phpt U php/php-src/trunk/ext/oci8/oci8.c A php/php-src/trunk/ext/oci8/tests/pecl_bug16842.phpt Modified: php/php-src/branches/PHP_5_3/ext/oci8/oci8.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/oci8/oci8.c 2009-10-01 05:08:47 UTC (rev 289038) +++ php/php-src/branches/PHP_5_3/ext/oci8/oci8.c 2009-10-01 05:51:11 UTC (rev 289039) @@ -1529,6 +1529,12 @@ break; case OCI_NO_DATA: php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCI_NO_DATA"); + errcode = php_oci_fetch_errmsg(err_p, &errbuf TSRMLS_CC); + if (errbuf) { + efree(errbuf); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCI_NO_DATA: failed to fetch error message"); + } break; case OCI_ERROR: errcode = php_oci_fetch_errmsg(err_p, &errbuf TSRMLS_CC); Added: php/php-src/branches/PHP_5_3/ext/oci8/tests/pecl_bug16842.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/oci8/tests/pecl_bug16842.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/oci8/tests/pecl_bug16842.phpt 2009-10-01 05:51:11 UTC (rev 289039) @@ -0,0 +1,69 @@ +--TEST-- +PECL Bug #16842 (NO_DATA_FOUND exception is a warning) +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die ("skip no oci8 extension"); ?> +--INI-- +error_reporting = E_WARNING +--FILE-- +<?php + +require(dirname(__FILE__).'/connect.inc'); + +// Run Test + +echo "Test 1\n"; + +echo "Raises NO_DATA_FOUND\n"; +$s = oci_parse($c, 'begin raise NO_DATA_FOUND; end;'); +$e = oci_execute($s); +var_dump($e); +var_dump(oci_error($s)); + +echo "Test 2\n"; + +echo "Raises ZERO_DIVIDE\n"; +$s = oci_parse($c, 'begin raise ZERO_DIVIDE; end;'); +$e = oci_execute($s); +var_dump($e); +var_dump(oci_error($s)); + +oci_close($c); + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +Test 1 +Raises NO_DATA_FOUND + +Warning: oci_execute(): OCI_NO_DATA in %s on line 11 +bool(false) +array(4) { + [%u|b%"code"]=> + int(1403) + [%u|b%"message"]=> + %unicode|string%(45) "ORA-01403: %s +ORA-06512: at line 1" + [%u|b%"offset"]=> + int(0) + [%u|b%"sqltext"]=> + %unicode|string%(31) "begin raise NO_DATA_FOUND; end;" +} +Test 2 +Raises ZERO_DIVIDE + +Warning: oci_execute(): ORA-01476: %s +ORA-06512: at line 1 in %s on line 19 +bool(false) +array(4) { + [%u|b%"code"]=> + int(1476) + [%u|b%"message"]=> + %unicode|string%(56) "ORA-01476: %s +ORA-06512: at line 1" + [%u|b%"offset"]=> + int(0) + [%u|b%"sqltext"]=> + %unicode|string%(29) "begin raise ZERO_DIVIDE; end;" +} +===DONE=== Property changes on: php/php-src/branches/PHP_5_3/ext/oci8/tests/pecl_bug16842.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Modified: php/php-src/trunk/ext/oci8/oci8.c =================================================================== --- php/php-src/trunk/ext/oci8/oci8.c 2009-10-01 05:08:47 UTC (rev 289038) +++ php/php-src/trunk/ext/oci8/oci8.c 2009-10-01 05:51:11 UTC (rev 289039) @@ -1371,6 +1371,12 @@ break; case OCI_NO_DATA: php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCI_NO_DATA"); + errcode = php_oci_fetch_errmsg(err_p, &errbuf TSRMLS_CC); + if (errbuf) { + efree(errbuf); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCI_NO_DATA: failed to fetch error message"); + } break; case OCI_ERROR: errcode = php_oci_fetch_errmsg(err_p, &errbuf TSRMLS_CC); Added: php/php-src/trunk/ext/oci8/tests/pecl_bug16842.phpt =================================================================== --- php/php-src/trunk/ext/oci8/tests/pecl_bug16842.phpt (rev 0) +++ php/php-src/trunk/ext/oci8/tests/pecl_bug16842.phpt 2009-10-01 05:51:11 UTC (rev 289039) @@ -0,0 +1,69 @@ +--TEST-- +PECL Bug #16842 (NO_DATA_FOUND exception is a warning) +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die ("skip no oci8 extension"); ?> +--INI-- +error_reporting = E_WARNING +--FILE-- +<?php + +require(dirname(__FILE__).'/connect.inc'); + +// Run Test + +echo "Test 1\n"; + +echo "Raises NO_DATA_FOUND\n"; +$s = oci_parse($c, 'begin raise NO_DATA_FOUND; end;'); +$e = oci_execute($s); +var_dump($e); +var_dump(oci_error($s)); + +echo "Test 2\n"; + +echo "Raises ZERO_DIVIDE\n"; +$s = oci_parse($c, 'begin raise ZERO_DIVIDE; end;'); +$e = oci_execute($s); +var_dump($e); +var_dump(oci_error($s)); + +oci_close($c); + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +Test 1 +Raises NO_DATA_FOUND + +Warning: oci_execute(): OCI_NO_DATA in %s on line 11 +bool(false) +array(4) { + [%u|b%"code"]=> + int(1403) + [%u|b%"message"]=> + %unicode|string%(45) "ORA-01403: %s +ORA-06512: at line 1" + [%u|b%"offset"]=> + int(0) + [%u|b%"sqltext"]=> + %unicode|string%(31) "begin raise NO_DATA_FOUND; end;" +} +Test 2 +Raises ZERO_DIVIDE + +Warning: oci_execute(): ORA-01476: %s +ORA-06512: at line 1 in %s on line 19 +bool(false) +array(4) { + [%u|b%"code"]=> + int(1476) + [%u|b%"message"]=> + %unicode|string%(56) "ORA-01476: %s +ORA-06512: at line 1" + [%u|b%"offset"]=> + int(0) + [%u|b%"sqltext"]=> + %unicode|string%(29) "begin raise ZERO_DIVIDE; end;" +} +===DONE=== Property changes on: php/php-src/trunk/ext/oci8/tests/pecl_bug16842.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php