]> granicus.if.org Git - php/commitdiff
- Merge: Pecl #16842
authorPierre Joye <pajoye@php.net>
Fri, 9 Oct 2009 14:44:43 +0000 (14:44 +0000)
committerPierre Joye <pajoye@php.net>
Fri, 9 Oct 2009 14:44:43 +0000 (14:44 +0000)
ext/oci8/oci8.c
ext/oci8/tests/pecl_bug16842.phpt [new file with mode: 0644]

index 3dff8427d565336e6f1b251e97e449865f3b8cf5..533195084edcfd0b04cd54e369d4b016c8de1505 100644 (file)
@@ -1529,6 +1529,12 @@ sb4 php_oci_error(OCIError *err_p, sword status TSRMLS_DC)
                        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);
diff --git a/ext/oci8/tests/pecl_bug16842.phpt b/ext/oci8/tests/pecl_bug16842.phpt
new file mode 100644 (file)
index 0000000..d796d25
--- /dev/null
@@ -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===