]> granicus.if.org Git - php/commitdiff
Add IN bind case to bug74625.phpt
authorChristopher Jones <sixd@php.net>
Wed, 21 Jun 2017 05:47:32 +0000 (15:47 +1000)
committerChristopher Jones <sixd@php.net>
Wed, 21 Jun 2017 05:47:32 +0000 (15:47 +1000)
ext/oci8/tests/bug74625.phpt

index 7b6c3164ff8f271d1b8f977056cb0bdacb89cf86..df9440e42af83add19846c8c07b897805534de16 100644 (file)
@@ -3,26 +3,63 @@ Bug #74625 (Integer overflow in oci_bind_array_by_name)
 --SKIPIF--
 <?php
 if (!extension_loaded('oci8')) die ("skip no oci8 extension");
-if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platforms only");
 ?>
 --FILE--
 <?php
-
 require(dirname(__FILE__).'/connect.inc');
 
-$s = oci_parse($c, "BEGIN
-      SELECT -1 BULK COLLECT INTO :a FROM DUAL;
-  END;");
-oci_bind_array_by_name($s, ':a', $a, 5000, 10, SQLT_INT);
-oci_execute($s);
+// Initialization
+
+$stmtarray = array(
+        "CREATE TABLE bug74625_tab (NAME NUMBER)",
+        "CREATE OR REPLACE PACKAGE PKG74625 AS
+          TYPE ARRTYPE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
+          PROCEDURE iobind(c1 IN OUT ARRTYPE);
+         END PKG74625;",
+        "CREATE OR REPLACE PACKAGE BODY PKG74625 AS
+          PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
+          BEGIN
+           FOR i IN 1..5 LOOP
+            c1(i) := c1(i) * 2;
+           END LOOP;
+          END iobind;
+         END PKG74625;"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
+
+$statement = oci_parse($c, "BEGIN pkg74625.iobind(:c1); END;");
+
+$array = Array(-1,-2,-3,-4,-5);
+
+oci_bind_array_by_name($statement, ":c1", $array, 5, -1, SQLT_INT);
+
+oci_execute($statement);
+
+var_dump($array);
+
+// Cleanup
+$stmtarray = array(
+    "DROP TABLE bug74625_tab",
+    "DROP PACKAGE PKG74625"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
 
-var_dump($a);
 ?>
 ===DONE===
 <?php exit(0); ?>
 --EXPECTF--
-Array
-(
-    [0] => -1
-)
+array(5) {
+  [0]=>
+  int(-2)
+  [1]=>
+  int(-4)
+  [2]=>
+  int(-6)
+  [3]=>
+  int(-8)
+  [4]=>
+  int(-10)
+}
 ===DONE===