]> granicus.if.org Git - php/commitdiff
Fix bug #72524 (Binding null values triggers ORA-24816 error)
authorChristopher Jones <christopher.jones@oracle.com>
Thu, 4 Aug 2016 02:45:32 +0000 (12:45 +1000)
committerChristopher Jones <sixd@php.net>
Sat, 6 Aug 2016 23:39:44 +0000 (09:39 +1000)
12 files changed:
NEWS
ext/oci8/oci8_statement.c
ext/oci8/package.xml
ext/oci8/php_oci8.h
ext/oci8/tests/bind_char_3.phpt
ext/oci8/tests/bind_char_3_11gR1.phpt
ext/oci8/tests/bind_char_4.phpt
ext/oci8/tests/bind_char_4_11gR1.phpt
ext/oci8/tests/bug27303_1_11gR1.phpt
ext/oci8/tests/bug27303_2_11gR1.phpt
ext/oci8/tests/bug27303_4_11gR1.phpt
ext/oci8/tests/bug72524.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 3be4c9bb99897e83fbe8b9e7db569f59dccd64de..dbcca1aee72127530301868a2cb7393ba6819918 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,10 @@ PHP                                                                        NEWS
 - GD:
   . Fixed bug #72709 (imagesetstyle() causes OOB read for empty $styles). (cmb)
 
+- OCI8
+  . Fixed invalid handle error with Implicit Result Sets. (Chris Jones)
+  . Fixed bug #72524 (Binding null values triggers ORA-24816 error). (Chris Jones)
+
 - Session:
   . Fixed bug #72724 (PHP7: session-uploadprogress kills httpd). (Nikita)
 
index 55983d3e9fbea751abb58d0af449758d2186e6ba..11bd2aab404f87e0af47ffad1c16e6406ba4ac47 100644 (file)
@@ -1178,7 +1178,8 @@ int php_oci_bind_by_name(php_oci_statement *statement, char *name, size_t name_l
                                } else if (Z_TYPE_P(var) == IS_STRING) {
                                        value_sz = (sb4) Z_STRLEN_P(var);
                                } else {
-                                       value_sz = PHP_OCI_PIECE_SIZE;
+                                       /* Bug-72524: revert value_sz from PHP_OCI_PIECE_SIZE to 0. This restores PHP 5.6 behavior */
+                                       value_sz = 0;
                                }
                        } else {
                                value_sz = (sb4) maxlength;
@@ -1243,6 +1244,11 @@ int php_oci_bind_by_name(php_oci_statement *statement, char *name, size_t name_l
                bindp = zend_hash_update_ptr(statement->binds, zvtmp, bindp);
                zend_string_release(zvtmp);
        }
+    /* Make sure the minimum of value_sz is 1 to avoid ORA-3149 
+     * when both in/out parameters are bound with empty strings
+     */
+       if (value_sz == 0)
+               value_sz = 1;
        
        bindp->descriptor = oci_desc;
        bindp->statement = oci_stmt;
index 25be979e9b4966e925bb75fc196bfa33a7095e9b..13c1ea39bb955640158540cb544fa4e02dd33151 100644 (file)
@@ -46,7 +46,7 @@ Interoperability Support" (ID 207303.1) for details.
   <active>no</active>
  </lead>
 
- <date>2016-08-04</date>
+ <date>2016-08-07</date>
  <time>12:00:00</time>
 
   <version>
@@ -61,6 +61,7 @@ Interoperability Support" (ID 207303.1) for details.
   <notes>
 This version is for PHP 7 only.
 Fixed invalid handle error with Implicit Result Sets
+Fixed bug #72524 (Binding null values triggers ORA-24816 error)
   </notes>
  <contents>
   <dir name="/">
@@ -163,6 +164,7 @@ Fixed invalid handle error with Implicit Result Sets
     <file name="bug68298.phpt" role="test" />
     <file name="bug71422.phpt" role="test" />
     <file name="bug71600.phpt" role="test" />
+    <file name="bug72524.phpt" role="test" />
     <file name="clientversion.phpt" role="test" />
     <file name="close.phpt" role="test" />
     <file name="coll_001.phpt" role="test" />
index da62aabac635d8eef27fcb775947247c52d049ad..d1e501344a42652b90d5a4be862e5c2d1a8c4086 100644 (file)
@@ -45,7 +45,7 @@
  */
 #undef PHP_OCI8_VERSION
 #endif
-#define PHP_OCI8_VERSION "2.1.1"
+#define PHP_OCI8_VERSION "2.1.2"
 
 extern zend_module_entry oci8_module_entry;
 #define phpext_oci8_ptr &oci8_module_entry
index 67aafae3cc177586c15bfd9f2a03a6ed839108c1..9ff09551afe9445607de7e4de939b0f454a0546a 100644 (file)
@@ -246,8 +246,9 @@ echo "Done\n";
 --EXPECTF--
 Test 1.1 In Length: default.  In Type: default.  Out Length: default.          Out Type: default
   Executing:
+    Oci_execute error ORA-6502
 string(3) "abc"
-string(3) "abc"
+NULL
 Test 1.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default
   Executing:
 string(3) "abc"
index 5c8b286249d1258bb76d9b67f69aab4ede45666a..af0ad4e682c4a354047ccbe51ff2423ccfe584fc 100644 (file)
@@ -246,8 +246,9 @@ echo "Done\n";
 --EXPECTF--
 Test 1.1 In Length: default.  In Type: default.  Out Length: default.          Out Type: default
   Executing:
+    Oci_execute error ORA-6502
 string(3) "abc"
-string(3) "abc"
+NULL
 Test 1.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default
   Executing:
 string(3) "abc"
index 9ca369a1727383283518905d22e9661f1f0684c7..b8f2284830a22ba69a2b791da4d977516765c730 100644 (file)
@@ -248,8 +248,9 @@ echo "Done\n";
 --EXPECTF--
 Test 1.1 In Length: default.  In Type: default.  Out Length: default.          Out Type: default
   Executing:
+    Oci_execute error ORA-6502
 string(3) "abc"
-string(3) "abc"
+NULL
 Test 1.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default
   Executing:
 string(3) "abc"
index 56a666e4a55696f3c69be464178d31ccc42f5aa2..646b3317a1b18a94959c5cc070bdee1d3850dba8 100644 (file)
@@ -248,8 +248,9 @@ echo "Done\n";
 --EXPECTF--
 Test 1.1 In Length: default.  In Type: default.  Out Length: default.          Out Type: default
   Executing:
+    Oci_execute error ORA-6502
 string(3) "abc"
-string(3) "abc"
+NULL
 Test 1.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default
   Executing:
 string(3) "abc"
index 44fcc588e8f584f4d5f8528efc6e944597662fff..d2018783bc925932ee3c3be2e109d687af3a5e59 100644 (file)
@@ -61,194 +61,194 @@ string(1) "6"
 string(1) "7"
 string(1) "8"
 string(1) "9"
-string(2) "10"
-string(2) "11"
-string(2) "12"
-string(2) "13"
-string(2) "14"
-string(2) "15"
-string(2) "16"
-string(2) "17"
-string(2) "18"
-string(2) "19"
-string(2) "20"
-string(2) "21"
-string(2) "22"
-string(2) "23"
-string(2) "24"
-string(2) "25"
-string(2) "26"
-string(2) "27"
-string(2) "28"
-string(2) "29"
-string(2) "30"
-string(2) "31"
-string(2) "32"
-string(2) "33"
-string(2) "34"
-string(2) "35"
-string(2) "36"
-string(2) "37"
-string(2) "38"
-string(2) "39"
-string(2) "40"
-string(2) "41"
-string(2) "42"
-string(2) "43"
-string(2) "44"
-string(2) "45"
-string(2) "46"
-string(2) "47"
-string(2) "48"
-string(2) "49"
-string(2) "50"
-string(2) "51"
-string(2) "52"
-string(2) "53"
-string(2) "54"
-string(2) "55"
-string(2) "56"
-string(2) "57"
-string(2) "58"
-string(2) "59"
-string(2) "60"
-string(2) "61"
-string(2) "62"
-string(2) "63"
-string(2) "64"
-string(2) "65"
-string(2) "66"
-string(2) "67"
-string(2) "68"
-string(2) "69"
-string(2) "70"
-string(2) "71"
-string(2) "72"
-string(2) "73"
-string(2) "74"
-string(2) "75"
-string(2) "76"
-string(2) "77"
-string(2) "78"
-string(2) "79"
-string(2) "80"
-string(2) "81"
-string(2) "82"
-string(2) "83"
-string(2) "84"
-string(2) "85"
-string(2) "86"
-string(2) "87"
-string(2) "88"
-string(2) "89"
-string(2) "90"
-string(2) "91"
-string(2) "92"
-string(2) "93"
-string(2) "94"
-string(2) "95"
-string(2) "96"
-string(2) "97"
-string(2) "98"
-string(2) "99"
-string(3) "100"
-string(3) "101"
-string(3) "102"
-string(3) "103"
-string(3) "104"
-string(3) "105"
-string(3) "106"
-string(3) "107"
-string(3) "108"
-string(3) "109"
-string(3) "110"
-string(3) "111"
-string(3) "112"
-string(3) "113"
-string(3) "114"
-string(3) "115"
-string(3) "116"
-string(3) "117"
-string(3) "118"
-string(3) "119"
-string(3) "120"
-string(3) "121"
-string(3) "122"
-string(3) "123"
-string(3) "124"
-string(3) "125"
-string(3) "126"
-string(3) "127"
-string(3) "128"
-string(3) "129"
-string(3) "130"
-string(3) "131"
-string(3) "132"
-string(3) "133"
-string(3) "134"
-string(3) "135"
-string(3) "136"
-string(3) "137"
-string(3) "138"
-string(3) "139"
-string(3) "140"
-string(3) "141"
-string(3) "142"
-string(3) "143"
-string(3) "144"
-string(3) "145"
-string(3) "146"
-string(3) "147"
-string(3) "148"
-string(3) "149"
-string(3) "150"
-string(3) "151"
-string(3) "152"
-string(3) "153"
-string(3) "154"
-string(3) "155"
-string(3) "156"
-string(3) "157"
-string(3) "158"
-string(3) "159"
-string(3) "160"
-string(3) "161"
-string(3) "162"
-string(3) "163"
-string(3) "164"
-string(3) "165"
-string(3) "166"
-string(3) "167"
-string(3) "168"
-string(3) "169"
-string(3) "170"
-string(3) "171"
-string(3) "172"
-string(3) "173"
-string(3) "174"
-string(3) "175"
-string(3) "176"
-string(3) "177"
-string(3) "178"
-string(3) "179"
-string(3) "180"
-string(3) "181"
-string(3) "182"
-string(3) "183"
-string(3) "184"
-string(3) "185"
-string(3) "186"
-string(3) "187"
-string(3) "188"
-string(3) "189"
-string(3) "190"
-string(3) "191"
-string(3) "192"
-string(3) "193"
-string(3) "194"
-string(3) "195"
-string(3) "196"
-string(3) "197"
-string(3) "198"
-string(3) "199"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
 Done
index d9a68b8cc731720073dcc564a328434c80779f51..a50b3e2613291d8859499c3fcd0c56ee674129a3 100644 (file)
@@ -155,104 +155,104 @@ string(2) "96"
 string(2) "97"
 string(2) "98"
 string(2) "99"
-string(3) "100"
-string(3) "101"
-string(3) "102"
-string(3) "103"
-string(3) "104"
-string(3) "105"
-string(3) "106"
-string(3) "107"
-string(3) "108"
-string(3) "109"
-string(3) "110"
-string(3) "111"
-string(3) "112"
-string(3) "113"
-string(3) "114"
-string(3) "115"
-string(3) "116"
-string(3) "117"
-string(3) "118"
-string(3) "119"
-string(3) "120"
-string(3) "121"
-string(3) "122"
-string(3) "123"
-string(3) "124"
-string(3) "125"
-string(3) "126"
-string(3) "127"
-string(3) "128"
-string(3) "129"
-string(3) "130"
-string(3) "131"
-string(3) "132"
-string(3) "133"
-string(3) "134"
-string(3) "135"
-string(3) "136"
-string(3) "137"
-string(3) "138"
-string(3) "139"
-string(3) "140"
-string(3) "141"
-string(3) "142"
-string(3) "143"
-string(3) "144"
-string(3) "145"
-string(3) "146"
-string(3) "147"
-string(3) "148"
-string(3) "149"
-string(3) "150"
-string(3) "151"
-string(3) "152"
-string(3) "153"
-string(3) "154"
-string(3) "155"
-string(3) "156"
-string(3) "157"
-string(3) "158"
-string(3) "159"
-string(3) "160"
-string(3) "161"
-string(3) "162"
-string(3) "163"
-string(3) "164"
-string(3) "165"
-string(3) "166"
-string(3) "167"
-string(3) "168"
-string(3) "169"
-string(3) "170"
-string(3) "171"
-string(3) "172"
-string(3) "173"
-string(3) "174"
-string(3) "175"
-string(3) "176"
-string(3) "177"
-string(3) "178"
-string(3) "179"
-string(3) "180"
-string(3) "181"
-string(3) "182"
-string(3) "183"
-string(3) "184"
-string(3) "185"
-string(3) "186"
-string(3) "187"
-string(3) "188"
-string(3) "189"
-string(3) "190"
-string(3) "191"
-string(3) "192"
-string(3) "193"
-string(3) "194"
-string(3) "195"
-string(3) "196"
-string(3) "197"
-string(3) "198"
-string(3) "199"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "10"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "11"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "12"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "13"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "14"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "15"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "16"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "17"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "18"
+string(2) "19"
+string(2) "19"
+string(2) "19"
+string(2) "19"
+string(2) "19"
+string(2) "19"
+string(2) "19"
+string(2) "19"
+string(2) "19"
+string(2) "19"
 Done
index d65fbc5f88d1ba9c0dc3714f4b2c9a246fa6fecc..550d89fdcc52f39e7347a7b883e5ed574e3cdeeb 100644 (file)
@@ -59,194 +59,194 @@ string(1) "6"
 string(1) "7"
 string(1) "8"
 string(1) "9"
-string(2) "10"
-string(2) "11"
-string(2) "12"
-string(2) "13"
-string(2) "14"
-string(2) "15"
-string(2) "16"
-string(2) "17"
-string(2) "18"
-string(2) "19"
-string(2) "20"
-string(2) "21"
-string(2) "22"
-string(2) "23"
-string(2) "24"
-string(2) "25"
-string(2) "26"
-string(2) "27"
-string(2) "28"
-string(2) "29"
-string(2) "30"
-string(2) "31"
-string(2) "32"
-string(2) "33"
-string(2) "34"
-string(2) "35"
-string(2) "36"
-string(2) "37"
-string(2) "38"
-string(2) "39"
-string(2) "40"
-string(2) "41"
-string(2) "42"
-string(2) "43"
-string(2) "44"
-string(2) "45"
-string(2) "46"
-string(2) "47"
-string(2) "48"
-string(2) "49"
-string(2) "50"
-string(2) "51"
-string(2) "52"
-string(2) "53"
-string(2) "54"
-string(2) "55"
-string(2) "56"
-string(2) "57"
-string(2) "58"
-string(2) "59"
-string(2) "60"
-string(2) "61"
-string(2) "62"
-string(2) "63"
-string(2) "64"
-string(2) "65"
-string(2) "66"
-string(2) "67"
-string(2) "68"
-string(2) "69"
-string(2) "70"
-string(2) "71"
-string(2) "72"
-string(2) "73"
-string(2) "74"
-string(2) "75"
-string(2) "76"
-string(2) "77"
-string(2) "78"
-string(2) "79"
-string(2) "80"
-string(2) "81"
-string(2) "82"
-string(2) "83"
-string(2) "84"
-string(2) "85"
-string(2) "86"
-string(2) "87"
-string(2) "88"
-string(2) "89"
-string(2) "90"
-string(2) "91"
-string(2) "92"
-string(2) "93"
-string(2) "94"
-string(2) "95"
-string(2) "96"
-string(2) "97"
-string(2) "98"
-string(2) "99"
-string(3) "100"
-string(3) "101"
-string(3) "102"
-string(3) "103"
-string(3) "104"
-string(3) "105"
-string(3) "106"
-string(3) "107"
-string(3) "108"
-string(3) "109"
-string(3) "110"
-string(3) "111"
-string(3) "112"
-string(3) "113"
-string(3) "114"
-string(3) "115"
-string(3) "116"
-string(3) "117"
-string(3) "118"
-string(3) "119"
-string(3) "120"
-string(3) "121"
-string(3) "122"
-string(3) "123"
-string(3) "124"
-string(3) "125"
-string(3) "126"
-string(3) "127"
-string(3) "128"
-string(3) "129"
-string(3) "130"
-string(3) "131"
-string(3) "132"
-string(3) "133"
-string(3) "134"
-string(3) "135"
-string(3) "136"
-string(3) "137"
-string(3) "138"
-string(3) "139"
-string(3) "140"
-string(3) "141"
-string(3) "142"
-string(3) "143"
-string(3) "144"
-string(3) "145"
-string(3) "146"
-string(3) "147"
-string(3) "148"
-string(3) "149"
-string(3) "150"
-string(3) "151"
-string(3) "152"
-string(3) "153"
-string(3) "154"
-string(3) "155"
-string(3) "156"
-string(3) "157"
-string(3) "158"
-string(3) "159"
-string(3) "160"
-string(3) "161"
-string(3) "162"
-string(3) "163"
-string(3) "164"
-string(3) "165"
-string(3) "166"
-string(3) "167"
-string(3) "168"
-string(3) "169"
-string(3) "170"
-string(3) "171"
-string(3) "172"
-string(3) "173"
-string(3) "174"
-string(3) "175"
-string(3) "176"
-string(3) "177"
-string(3) "178"
-string(3) "179"
-string(3) "180"
-string(3) "181"
-string(3) "182"
-string(3) "183"
-string(3) "184"
-string(3) "185"
-string(3) "186"
-string(3) "187"
-string(3) "188"
-string(3) "189"
-string(3) "190"
-string(3) "191"
-string(3) "192"
-string(3) "193"
-string(3) "194"
-string(3) "195"
-string(3) "196"
-string(3) "197"
-string(3) "198"
-string(3) "199"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "2"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "3"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "4"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "5"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "6"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "7"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "8"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "9"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
+string(1) "1"
 Done
diff --git a/ext/oci8/tests/bug72524.phpt b/ext/oci8/tests/bug72524.phpt
new file mode 100644 (file)
index 0000000..dde99b0
--- /dev/null
@@ -0,0 +1,96 @@
+--TEST--\r
+Bug #72524 (Binding null values triggers ORA-24816 error)\r
+--SKIPIF--\r
+<?php\r
+$target_dbs = array('oracledb' => true, 'timesten' => true);  // test runs on these DBs\r
+require(dirname(__FILE__).'/skipif.inc');\r
+?>\r
+--FILE--\r
+\r
+<?php\r
+\r
+require(dirname(__FILE__).'/connect.inc');\r
+\r
+// Initialize\r
+\r
+$stmtarray = array(\r
+         "CREATE TABLE mytable (clob_col CLOB DEFAULT NULL, varchar2_col VARCHAR2(255) DEFAULT NULL)"\r
+);\r
+\r
+oci8_test_sql_execute($c, $stmtarray);\r
+\r
+// Run test\r
+\r
+$sql = "INSERT INTO mytable VALUES (:clob_col, :varchar2_col)";\r
+\r
+echo "Test 1 - P1 Value: NULL  P1 Length: Default  P1 Type: Default  P2 Value: NULL P2 Length: Default  P2 Type: Default\n";\r
+$stmt = oci_parse($c, $sql);\r
+\r
+$clob = NULL;\r
+$varchar2 = NULL;\r
+oci_bind_by_name($stmt, ':clob_col', $clob);\r
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2);\r
+\r
+var_dump(oci_execute($stmt));\r
+\r
+echo "Test 2 - P1 Value: ''    P1 Length: Default  P1 Type: Default  P2 Value: ''   P2 Length: Default  P2 Type: Default\n";\r
+\r
+$clob = '';\r
+$varchar2 = '';\r
+oci_bind_by_name($stmt, ':clob_col', $clob);\r
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2);\r
+\r
+var_dump(oci_execute($stmt));\r
+\r
+echo "Test 3 - P1 Value: 'abc' P1 Length: 0        P1 Type: Default  P2 Value: ''   P2 Length: 0        P2 Type: Default\n";\r
+$clob = 'abc';\r
+$varchar2 = 'abc';\r
+oci_bind_by_name($stmt, ':clob_col', $clob, 0);\r
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0);\r
+\r
+var_dump(oci_execute($stmt));\r
+\r
+echo "Test 4 - P1 Value: NULL  P1 Length: -1       P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1       P2 Type:Default\n";\r
+$clob = NULL;\r
+$varchar2 = NULL;\r
+oci_bind_by_name($stmt, ':clob_col', $clob, -1, SQLT_LNG);\r
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, -1, SQLT_LNG);\r
+\r
+var_dump(oci_execute($stmt));\r
+\r
+echo "Test 5 - P1 Value: NULL  P1 Length: 0        P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0        P2 Type:Default\n";\r
+$clob = NULL;\r
+$varchar2 = NULL;\r
+oci_bind_by_name($stmt, ':clob_col', $clob, 0, SQLT_LNG);\r
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0, SQLT_LNG);\r
+\r
+\r
+var_dump(oci_execute($stmt));\r
+\r
+// Cleanup\r
+\r
+$stmtarray = array(\r
+    "DROP TABLE mytable"\r
+);\r
+\r
+oci8_test_sql_execute($c, $stmtarray);\r
+\r
+?>\r
+===DONE===\r
+<?php exit(0); ?>\r
+--EXPECTF--\r
+Test 1 - P1 Value: NULL  P1 Length: Default  P1 Type: Default  P2 Value: NULL P2 Length: Default  P2 Type: Default\r
+bool(true)\r
+Test 2 - P1 Value: ''    P1 Length: Default  P1 Type: Default  P2 Value: ''   P2 Length: Default  P2 Type: Default\r
+bool(true)\r
+Test 3 - P1 Value: 'abc' P1 Length: 0        P1 Type: Default  P2 Value: ''   P2 Length: 0        P2 Type: Default\r
+bool(true)\r
+Test 4 - P1 Value: NULL  P1 Length: -1       P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1       P2 Type:Default\r
+\r
+Warning: oci_execute(): ORA-24816: %s in %s on line %d\r
+bool(false)\r
+Test 5 - P1 Value: NULL  P1 Length: 0        P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0        P2 Type:Default\r
+\r
+Warning: oci_execute(): ORA-24816: %s in %s on line %d\r
+bool(false)\r
+===DONE===\r