]> granicus.if.org Git - php/commitdiff
Final diff fixes for PHP7 on base platform (some mem leaks still to be fixed). Updat...
authorChristopher Jones <christopher.jones@oracle.com>
Fri, 11 Sep 2015 23:10:32 +0000 (09:10 +1000)
committerChristopher Jones <christopher.jones@oracle.com>
Fri, 11 Sep 2015 23:10:32 +0000 (09:10 +1000)
13 files changed:
ext/oci8/oci8.c
ext/oci8/package.xml
ext/oci8/php_oci8_int.h
ext/oci8/tests/bug27303_1_11gR1.phpt
ext/oci8/tests/bug27303_4_11gR1.phpt
ext/oci8/tests/bug47281.phpt
ext/oci8/tests/conn_attr_2.phpt
ext/oci8/tests/driver_name.phpt
ext/oci8/tests/driver_name_11gR2.phpt [new file with mode: 0644]
ext/oci8/tests/extauth_01.phpt
ext/oci8/tests/extauth_02.phpt
ext/oci8/tests/extauth_03.phpt
ext/oci8/tests/extauth_04.phpt

index 148d90f75a96c0adb4e8c44fb504b207fc740e7f..9144d48bafa53d7a17357f16ec7eb92e19a5559b 100644 (file)
 #error Use PHP OCI8 1.4 for your version of PHP
 #endif
 
+/* PHP 7 is the minimum supported version for OCI8 2.1 */
+#if PHP_MAJOR_VERSION < 7
+#error Use PHP OCI8 2.0 for your version of PHP
+#endif
+
 #include "php_oci8.h"
 #include "php_oci8_int.h"
 #include "zend_hash.h"
@@ -2629,6 +2634,8 @@ int php_oci_column_to_zval(php_oci_out_column *column, zval *value, int mode)
 void php_oci_fetch_row (INTERNAL_FUNCTION_PARAMETERS, int mode, int expected_args)
 {
        zval *z_statement, *array;
+       zval *placeholder;
+/*     zend_array *temp_array = (zend_array *) NULL;*/
        php_oci_statement *statement;             /* statement that will be fetched from */
 #if (OCI_MAJOR_VERSION >= 12)
        php_oci_statement *invokedstatement;  /* statement this function was invoked with */
@@ -2736,53 +2743,16 @@ void php_oci_fetch_row (INTERNAL_FUNCTION_PARAMETERS, int mode, int expected_arg
     }
 #endif /* OCI_MAJOR_VERSION */
 
-#if 0
-       if (expected_args > 2)
-       {
-               array_init(array);
-
-               for (i = 0; i < statement->ncolumns; i++) {
-
-                       column = php_oci_statement_get_column(statement, i + 1, NULL, 0);
-
-                       if (column == NULL) {
-                               continue;
-                       }
-                       if ((column->indicator == -1) && ((fetch_mode & PHP_OCI_RETURN_NULLS) == 0)) {
-                               continue;
-                       }
-
-                       if (!(column->indicator == -1)) {
-                               zval element;
-
-                               php_oci_column_to_zval(column, &element, fetch_mode);
-
-                               if (fetch_mode & PHP_OCI_NUM || !(fetch_mode & PHP_OCI_ASSOC)) {
-                                       add_index_zval(array, i, &element);
-                               }
-                               if (fetch_mode & PHP_OCI_ASSOC) {
-                                       if (fetch_mode & PHP_OCI_NUM) {
-                                               Z_TRY_ADDREF_P(&element);
-                                       }
-                                       add_assoc_zval(array, column->name, &element);
-                               }
-
-                       } else {
-                               if (fetch_mode & PHP_OCI_NUM || !(fetch_mode & PHP_OCI_ASSOC)) {
-                                       add_index_null(array, i);
-                               }
-                               if (fetch_mode & PHP_OCI_ASSOC) {
-                                       add_assoc_null(array, column->name);
-                               }
-                       }
-               }
-
-               /* RETURN_LONG(statement->ncolumns); */
+       if (expected_args > 2) {
+               if (Z_ISREF_P(array))
+                       placeholder = Z_REFVAL_P(array);
+               else
+                       placeholder = array;
+       } else {
+               placeholder = return_value;
        }
-       else
-#endif
-       {
-               array_init(return_value);
+
+       array_init(placeholder);
 
        for (i = 0; i < statement->ncolumns; i++) {
 
@@ -2801,32 +2771,42 @@ void php_oci_fetch_row (INTERNAL_FUNCTION_PARAMETERS, int mode, int expected_arg
                        php_oci_column_to_zval(column, &element, (int) fetch_mode);
 
                        if (fetch_mode & PHP_OCI_NUM || !(fetch_mode & PHP_OCI_ASSOC)) {
-                               add_index_zval(return_value, i, &element);
+                               add_index_zval(placeholder, i, &element);
                        }
                        if (fetch_mode & PHP_OCI_ASSOC) {
                                if (fetch_mode & PHP_OCI_NUM) {
                                        Z_TRY_ADDREF_P(&element);
                                }
-                               add_assoc_zval(return_value, column->name, &element);
+                               add_assoc_zval(placeholder, column->name, &element);
                        }
 
                } else {
                        if (fetch_mode & PHP_OCI_NUM || !(fetch_mode & PHP_OCI_ASSOC)) {
-                               add_index_null(return_value, i);
+                               add_index_null(placeholder, i);
                        }
                        if (fetch_mode & PHP_OCI_ASSOC) {
-                               add_assoc_null(return_value, column->name);
+                               add_assoc_null(placeholder, column->name);
                        }
                }
        }
 
        if (expected_args > 2) {
                /* Only for ocifetchinto BC.  In all other cases we return array, not long */
-               ZVAL_COPY(array, return_value); /* copy return_value to given reference */
-               /* zval_dtor(return_value); */
+#if 0          
+               zval *temp_array;
+               if (Z_ISREF_P(array))
+                       temp_array = Z_REFVAL_P(array);
+               else /* PHP7 will pass user buffer through 'array' as reference type.
+                         * So this part of code may not be reached. */
+                       temp_array = array; 
+
+               /* copy array content in return_value into user buffer passed through
+                * reference variable 'array' */
+               ZVAL_ARR(temp_array, Z_ARRVAL_P(return_value));
+               zval_ptr_dtor(return_value);
+#endif
                RETURN_LONG(statement->ncolumns);
        }
-       }
 }
 /* }}} */
 
index e4136974c5faed4ba32b7feb3d611d5b2329f132..886bdddb635153fa6a01f5c1c5954a5e9fc1174d 100644 (file)
@@ -58,7 +58,8 @@ only Oracle Database 9.2 client libraries are available.
   </stability>
   <license uri="http://www.php.net/license">PHP</license>
   <notes>
-    PHP 7 Compatibility. This version is for PHP 7 only.
+This version is for PHP 7 only.
+Updated driver name format.    
   </notes>
  <contents>
   <dir name="/">
index 5994d0be4863306eabcbcf24044be00d0ae4bd51..900797bc6c27f42a55c467400875360b51342692 100644 (file)
@@ -121,7 +121,7 @@ extern zend_class_entry *oci_coll_class_entry_ptr;
  * Name passed to Oracle for tracing.  Note some DB views only show
  * the first nine characters of the driver name.
  */
-#define PHP_OCI8_DRIVER_NAME "PHP OCI8 " PHP_OCI8_VERSION
+#define PHP_OCI8_DRIVER_NAME     "PHP OCI8 : " PHP_OCI8_VERSION
 
 /* }}} */
 
index d2018783bc925932ee3c3be2e109d687af3a5e59..d1a7db58dacd50456d446d4b02101a56cec3ee62 100644 (file)
---TEST--
-Bug #27303 (OCIBindByName binds numeric PHP values as characters)
---SKIPIF--
-<?php
-if (!extension_loaded('oci8')) die ("skip no oci8 extension");
-require(dirname(__FILE__)."/connect.inc");
-// The bind buffer size edge cases seem to change each DB version.
-preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
-if (!(isset($matches[0]) && $matches[1] < 12)) {
-    die("skip expected output only valid when using pre-Oracle 12c database");
-}
-?>
---FILE--
-<?php
-
-require(dirname(__FILE__).'/connect.inc');
-
-$stmtarray = array(
-    "drop sequence myseq",
-    "drop table mytab",
-    "create sequence myseq",
-    "create table mytab (mydata varchar2(20), seqcol number)"
-);
-
-oci8_test_sql_execute($c, $stmtarray);
-
-define('MYLIMIT', 200);
-
-$stmt = "insert into mytab (mydata, seqcol) values ('Some data', myseq.nextval) returning seqcol into :mybv";
-
-$stid = OCIParse($c, $stmt);
-if (!$stid) { echo "Parse error"; die; }
-
-$r = OCIBindByName($stid, ':MYBV', $mybv);
-if (!$r) { echo "Bind error"; die; }
-
-for ($i = 1; $i < MYLIMIT; $i++) {
-       $r = OCIExecute($stid, OCI_DEFAULT);
-       if (!$r) { echo "Execute error"; die; }
-       var_dump($mybv);
-}
-
-OCICommit($c);
-
-$stmtarray = array(
-    "drop sequence myseq",
-    "drop table mytab"
-);
-
-oci8_test_sql_execute($c, $stmtarray);
-
-echo "Done\n";
-?>
---EXPECT--     
-string(1) "1"
-string(1) "2"
-string(1) "3"
-string(1) "4"
-string(1) "5"
-string(1) "6"
-string(1) "7"
-string(1) "8"
-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) "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
+--TEST--\r
+Bug #27303 (OCIBindByName binds numeric PHP values as characters)\r
+--SKIPIF--\r
+<?php\r
+if (!extension_loaded('oci8')) die ("skip no oci8 extension");\r
+require(dirname(__FILE__)."/connect.inc");\r
+// The bind buffer size edge cases seem to change each DB version.\r
+preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);\r
+if (!(isset($matches[0]) && $matches[1] < 12)) {\r
+    die("skip expected output only valid when using pre-Oracle 12c database");\r
+}\r
+?>\r
+--FILE--\r
+<?php\r
+\r
+require(dirname(__FILE__).'/connect.inc');\r
+\r
+$stmtarray = array(\r
+    "drop sequence myseq",\r
+    "drop table mytab",\r
+    "create sequence myseq",\r
+    "create table mytab (mydata varchar2(20), seqcol number)"\r
+);\r
+\r
+oci8_test_sql_execute($c, $stmtarray);\r
+\r
+define('MYLIMIT', 200);\r
+\r
+$stmt = "insert into mytab (mydata, seqcol) values ('Some data', myseq.nextval) returning seqcol into :mybv";\r
+\r
+$stid = OCIParse($c, $stmt);\r
+if (!$stid) { echo "Parse error"; die; }\r
+\r
+$r = OCIBindByName($stid, ':MYBV', $mybv);\r
+if (!$r) { echo "Bind error"; die; }\r
+\r
+for ($i = 1; $i < MYLIMIT; $i++) {\r
+       $r = OCIExecute($stid, OCI_DEFAULT);\r
+       if (!$r) { echo "Execute error"; die; }\r
+       var_dump($mybv);\r
+}\r
+\r
+OCICommit($c);\r
+\r
+$stmtarray = array(\r
+    "drop sequence myseq",\r
+    "drop table mytab"\r
+);\r
+\r
+oci8_test_sql_execute($c, $stmtarray);\r
+\r
+echo "Done\n";\r
+?>\r
+--EXPECT--     \r
+string(1) "1"\r
+string(1) "2"\r
+string(1) "3"\r
+string(1) "4"\r
+string(1) "5"\r
+string(1) "6"\r
+string(1) "7"\r
+string(1) "8"\r
+string(1) "9"\r
+string(2) "10"\r
+string(2) "11"\r
+string(2) "12"\r
+string(2) "13"\r
+string(2) "14"\r
+string(2) "15"\r
+string(2) "16"\r
+string(2) "17"\r
+string(2) "18"\r
+string(2) "19"\r
+string(2) "20"\r
+string(2) "21"\r
+string(2) "22"\r
+string(2) "23"\r
+string(2) "24"\r
+string(2) "25"\r
+string(2) "26"\r
+string(2) "27"\r
+string(2) "28"\r
+string(2) "29"\r
+string(2) "30"\r
+string(2) "31"\r
+string(2) "32"\r
+string(2) "33"\r
+string(2) "34"\r
+string(2) "35"\r
+string(2) "36"\r
+string(2) "37"\r
+string(2) "38"\r
+string(2) "39"\r
+string(2) "40"\r
+string(2) "41"\r
+string(2) "42"\r
+string(2) "43"\r
+string(2) "44"\r
+string(2) "45"\r
+string(2) "46"\r
+string(2) "47"\r
+string(2) "48"\r
+string(2) "49"\r
+string(2) "50"\r
+string(2) "51"\r
+string(2) "52"\r
+string(2) "53"\r
+string(2) "54"\r
+string(2) "55"\r
+string(2) "56"\r
+string(2) "57"\r
+string(2) "58"\r
+string(2) "59"\r
+string(2) "60"\r
+string(2) "61"\r
+string(2) "62"\r
+string(2) "63"\r
+string(2) "64"\r
+string(2) "65"\r
+string(2) "66"\r
+string(2) "67"\r
+string(2) "68"\r
+string(2) "69"\r
+string(2) "70"\r
+string(2) "71"\r
+string(2) "72"\r
+string(2) "73"\r
+string(2) "74"\r
+string(2) "75"\r
+string(2) "76"\r
+string(2) "77"\r
+string(2) "78"\r
+string(2) "79"\r
+string(2) "80"\r
+string(2) "81"\r
+string(2) "82"\r
+string(2) "83"\r
+string(2) "84"\r
+string(2) "85"\r
+string(2) "86"\r
+string(2) "87"\r
+string(2) "88"\r
+string(2) "89"\r
+string(2) "90"\r
+string(2) "91"\r
+string(2) "92"\r
+string(2) "93"\r
+string(2) "94"\r
+string(2) "95"\r
+string(2) "96"\r
+string(2) "97"\r
+string(2) "98"\r
+string(2) "99"\r
+string(3) "100"\r
+string(3) "101"\r
+string(3) "102"\r
+string(3) "103"\r
+string(3) "104"\r
+string(3) "105"\r
+string(3) "106"\r
+string(3) "107"\r
+string(3) "108"\r
+string(3) "109"\r
+string(3) "110"\r
+string(3) "111"\r
+string(3) "112"\r
+string(3) "113"\r
+string(3) "114"\r
+string(3) "115"\r
+string(3) "116"\r
+string(3) "117"\r
+string(3) "118"\r
+string(3) "119"\r
+string(3) "120"\r
+string(3) "121"\r
+string(3) "122"\r
+string(3) "123"\r
+string(3) "124"\r
+string(3) "125"\r
+string(3) "126"\r
+string(3) "127"\r
+string(3) "128"\r
+string(3) "129"\r
+string(3) "130"\r
+string(3) "131"\r
+string(3) "132"\r
+string(3) "133"\r
+string(3) "134"\r
+string(3) "135"\r
+string(3) "136"\r
+string(3) "137"\r
+string(3) "138"\r
+string(3) "139"\r
+string(3) "140"\r
+string(3) "141"\r
+string(3) "142"\r
+string(3) "143"\r
+string(3) "144"\r
+string(3) "145"\r
+string(3) "146"\r
+string(3) "147"\r
+string(3) "148"\r
+string(3) "149"\r
+string(3) "150"\r
+string(3) "151"\r
+string(3) "152"\r
+string(3) "153"\r
+string(3) "154"\r
+string(3) "155"\r
+string(3) "156"\r
+string(3) "157"\r
+string(3) "158"\r
+string(3) "159"\r
+string(3) "160"\r
+string(3) "161"\r
+string(3) "162"\r
+string(3) "163"\r
+string(3) "164"\r
+string(3) "165"\r
+string(3) "166"\r
+string(3) "167"\r
+string(3) "168"\r
+string(3) "169"\r
+string(3) "170"\r
+string(3) "171"\r
+string(3) "172"\r
+string(3) "173"\r
+string(3) "174"\r
+string(3) "175"\r
+string(3) "176"\r
+string(3) "177"\r
+string(3) "178"\r
+string(3) "179"\r
+string(3) "180"\r
+string(3) "181"\r
+string(3) "182"\r
+string(3) "183"\r
+string(3) "184"\r
+string(3) "185"\r
+string(3) "186"\r
+string(3) "187"\r
+string(3) "188"\r
+string(3) "189"\r
+string(3) "190"\r
+string(3) "191"\r
+string(3) "192"\r
+string(3) "193"\r
+string(3) "194"\r
+string(3) "195"\r
+string(3) "196"\r
+string(3) "197"\r
+string(3) "198"\r
+string(3) "199"\r
+Done\r
index 550d89fdcc52f39e7347a7b883e5ed574e3cdeeb..48ea7d288b9ea928ec4f0c24e9dc8e2020a0edc8 100644 (file)
---TEST--
-Bug #27303 (OCIBindByName binds numeric PHP values as characters)
---SKIPIF--
-<?php
-if (!extension_loaded('oci8')) die ("skip no oci8 extension");
-require(dirname(__FILE__)."/connect.inc");
-// The bind buffer size edge cases seem to change each DB version.
-preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
-if (!(isset($matches[0]) && $matches[1] < 12)) {
-    die("skip expected output only valid when using pre-Oracle 12c database");
-}
-?>
---FILE--
-<?php
-
-require dirname(__FILE__).'/connect.inc';
-       
-$create_st = array();
-$create_st[] = "drop sequence myseq";
-$create_st[] = "drop table mytab";
-$create_st[] = "create sequence myseq";
-$create_st[] = "create table mytab (mydata varchar2(20), seqcol number)";
-
-oci8_test_sql_execute($c, $create_st);
-
-define('MYLIMIT', 200);
-
-$stmt = "insert into mytab (mydata, seqcol) values ('Some data', myseq.nextval) returning seqcol into :mybv";
-
-$stid = OCIParse($c, $stmt);
-if (!$stid) { echo "Parse error"; die; }
-
-$r = OCIBindByName($stid, ':MYBV', $mybv, 0 );
-if (!$r) { echo "Bind error"; die; }
-
-for ($i = 1; $i < MYLIMIT; $i++) {
-       $r = OCIExecute($stid, OCI_DEFAULT);
-       if (!$r) { echo "Execute error"; die; }
-       var_dump($mybv);
-}
-
-OCICommit($c);
-
-$drop_st = array();
-$drop_st[] = "drop sequence myseq";
-$drop_st[] = "drop table mytab";
-
-oci8_test_sql_execute($c, $drop_st);
-
-echo "Done\n";
-?>
---EXPECT--     
-string(1) "1"
-string(1) "2"
-string(1) "3"
-string(1) "4"
-string(1) "5"
-string(1) "6"
-string(1) "7"
-string(1) "8"
-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) "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
+--TEST--\r
+Bug #27303 (OCIBindByName binds numeric PHP values as characters)\r
+--SKIPIF--\r
+<?php\r
+if (!extension_loaded('oci8')) die ("skip no oci8 extension");\r
+require(dirname(__FILE__)."/connect.inc");\r
+// The bind buffer size edge cases seem to change each DB version.\r
+preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);\r
+if (!(isset($matches[0]) && $matches[1] < 12)) {\r
+    die("skip expected output only valid when using pre-Oracle 12c database");\r
+}\r
+?>\r
+--FILE--\r
+<?php\r
+\r
+require dirname(__FILE__).'/connect.inc';\r
+       \r
+$create_st = array();\r
+$create_st[] = "drop sequence myseq";\r
+$create_st[] = "drop table mytab";\r
+$create_st[] = "create sequence myseq";\r
+$create_st[] = "create table mytab (mydata varchar2(20), seqcol number)";\r
+\r
+oci8_test_sql_execute($c, $create_st);\r
+\r
+define('MYLIMIT', 200);\r
+\r
+$stmt = "insert into mytab (mydata, seqcol) values ('Some data', myseq.nextval) returning seqcol into :mybv";\r
+\r
+$stid = OCIParse($c, $stmt);\r
+if (!$stid) { echo "Parse error"; die; }\r
+\r
+$r = OCIBindByName($stid, ':MYBV', $mybv, 0 );\r
+if (!$r) { echo "Bind error"; die; }\r
+\r
+for ($i = 1; $i < MYLIMIT; $i++) {\r
+       $r = OCIExecute($stid, OCI_DEFAULT);\r
+       if (!$r) { echo "Execute error"; die; }\r
+       var_dump($mybv);\r
+}\r
+\r
+OCICommit($c);\r
+\r
+$drop_st = array();\r
+$drop_st[] = "drop sequence myseq";\r
+$drop_st[] = "drop table mytab";\r
+\r
+oci8_test_sql_execute($c, $drop_st);\r
+\r
+echo "Done\n";\r
+?>\r
+--EXPECT--     \r
+string(1) "1"\r
+string(1) "2"\r
+string(1) "3"\r
+string(1) "4"\r
+string(1) "5"\r
+string(1) "6"\r
+string(1) "7"\r
+string(1) "8"\r
+string(1) "9"\r
+string(2) "10"\r
+string(2) "11"\r
+string(2) "12"\r
+string(2) "13"\r
+string(2) "14"\r
+string(2) "15"\r
+string(2) "16"\r
+string(2) "17"\r
+string(2) "18"\r
+string(2) "19"\r
+string(2) "20"\r
+string(2) "21"\r
+string(2) "22"\r
+string(2) "23"\r
+string(2) "24"\r
+string(2) "25"\r
+string(2) "26"\r
+string(2) "27"\r
+string(2) "28"\r
+string(2) "29"\r
+string(2) "30"\r
+string(2) "31"\r
+string(2) "32"\r
+string(2) "33"\r
+string(2) "34"\r
+string(2) "35"\r
+string(2) "36"\r
+string(2) "37"\r
+string(2) "38"\r
+string(2) "39"\r
+string(2) "40"\r
+string(2) "41"\r
+string(2) "42"\r
+string(2) "43"\r
+string(2) "44"\r
+string(2) "45"\r
+string(2) "46"\r
+string(2) "47"\r
+string(2) "48"\r
+string(2) "49"\r
+string(2) "50"\r
+string(2) "51"\r
+string(2) "52"\r
+string(2) "53"\r
+string(2) "54"\r
+string(2) "55"\r
+string(2) "56"\r
+string(2) "57"\r
+string(2) "58"\r
+string(2) "59"\r
+string(2) "60"\r
+string(2) "61"\r
+string(2) "62"\r
+string(2) "63"\r
+string(2) "64"\r
+string(2) "65"\r
+string(2) "66"\r
+string(2) "67"\r
+string(2) "68"\r
+string(2) "69"\r
+string(2) "70"\r
+string(2) "71"\r
+string(2) "72"\r
+string(2) "73"\r
+string(2) "74"\r
+string(2) "75"\r
+string(2) "76"\r
+string(2) "77"\r
+string(2) "78"\r
+string(2) "79"\r
+string(2) "80"\r
+string(2) "81"\r
+string(2) "82"\r
+string(2) "83"\r
+string(2) "84"\r
+string(2) "85"\r
+string(2) "86"\r
+string(2) "87"\r
+string(2) "88"\r
+string(2) "89"\r
+string(2) "90"\r
+string(2) "91"\r
+string(2) "92"\r
+string(2) "93"\r
+string(2) "94"\r
+string(2) "95"\r
+string(2) "96"\r
+string(2) "97"\r
+string(2) "98"\r
+string(2) "99"\r
+string(3) "100"\r
+string(3) "101"\r
+string(3) "102"\r
+string(3) "103"\r
+string(3) "104"\r
+string(3) "105"\r
+string(3) "106"\r
+string(3) "107"\r
+string(3) "108"\r
+string(3) "109"\r
+string(3) "110"\r
+string(3) "111"\r
+string(3) "112"\r
+string(3) "113"\r
+string(3) "114"\r
+string(3) "115"\r
+string(3) "116"\r
+string(3) "117"\r
+string(3) "118"\r
+string(3) "119"\r
+string(3) "120"\r
+string(3) "121"\r
+string(3) "122"\r
+string(3) "123"\r
+string(3) "124"\r
+string(3) "125"\r
+string(3) "126"\r
+string(3) "127"\r
+string(3) "128"\r
+string(3) "129"\r
+string(3) "130"\r
+string(3) "131"\r
+string(3) "132"\r
+string(3) "133"\r
+string(3) "134"\r
+string(3) "135"\r
+string(3) "136"\r
+string(3) "137"\r
+string(3) "138"\r
+string(3) "139"\r
+string(3) "140"\r
+string(3) "141"\r
+string(3) "142"\r
+string(3) "143"\r
+string(3) "144"\r
+string(3) "145"\r
+string(3) "146"\r
+string(3) "147"\r
+string(3) "148"\r
+string(3) "149"\r
+string(3) "150"\r
+string(3) "151"\r
+string(3) "152"\r
+string(3) "153"\r
+string(3) "154"\r
+string(3) "155"\r
+string(3) "156"\r
+string(3) "157"\r
+string(3) "158"\r
+string(3) "159"\r
+string(3) "160"\r
+string(3) "161"\r
+string(3) "162"\r
+string(3) "163"\r
+string(3) "164"\r
+string(3) "165"\r
+string(3) "166"\r
+string(3) "167"\r
+string(3) "168"\r
+string(3) "169"\r
+string(3) "170"\r
+string(3) "171"\r
+string(3) "172"\r
+string(3) "173"\r
+string(3) "174"\r
+string(3) "175"\r
+string(3) "176"\r
+string(3) "177"\r
+string(3) "178"\r
+string(3) "179"\r
+string(3) "180"\r
+string(3) "181"\r
+string(3) "182"\r
+string(3) "183"\r
+string(3) "184"\r
+string(3) "185"\r
+string(3) "186"\r
+string(3) "187"\r
+string(3) "188"\r
+string(3) "189"\r
+string(3) "190"\r
+string(3) "191"\r
+string(3) "192"\r
+string(3) "193"\r
+string(3) "194"\r
+string(3) "195"\r
+string(3) "196"\r
+string(3) "197"\r
+string(3) "198"\r
+string(3) "199"\r
+Done\r
index 00c43c22dac7cfb196a8b0e946feb9625a062432..f80fa88568068e394a951401002c1a6e0fcda5cc 100644 (file)
@@ -1,67 +1,67 @@
---TEST--
-Bug #47281 ($php_errormsg is limited in size of characters)
---SKIPIF--
-<?php
-$target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
-require(dirname(__FILE__).'/skipif.inc');
-// error3.phpt obsoletes this test for newer Oracle client versions
-// Assume runtime client version is >= compile time client version
-preg_match('/^([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/', oci_client_version(), $matches);
-if (!isset($matches[0]) ||
-    ($matches[1] > 11 || ($matches[1] == 11 && $matches[2] > 2) || ($matches[1] == 11 && $matches[2] == 2 && $matches[4] >= 3)
-     )) {
-    die("skip test works only with Oracle 11.2.0.2 or earlier Oracle client libraries");
-}
-?> 
---ENV--
-NLS_LANG=.AL32UTF8
---FILE--
-<?php
-
-require(dirname(__FILE__).'/connect.inc');
-
-// Initialization
-
-$stmtarray = array(
-    "create or replace procedure bug47281_sp as
-    begin
-    raise_application_error(-20000, 
-        'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccDeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeFggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhIjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjKlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllM');
-    end;"
-);
-
-oci8_test_sql_execute($c, $stmtarray);
-
-// Run Test
-
-echo "Test 1\n";
-
-$s = oci_parse($c, 'begin bug47281_sp; end;');
-$r = @oci_execute($s);
-
-if (!$r) {
-    $m = oci_error($s);
-    echo $m['message'], "\n";
-}
-
-echo "Test 2\n";
-
-echo $php_errormsg. "\n";
-
-// Clean up
-
-$stmtarray = array(
-    "drop procedure bug47281_sp"
-);
-
-oci8_test_sql_execute($c, $stmtarray);
-
-?>
-===DONE===
-<?php exit(0); ?>
---EXPECTF--
-Test 1
-ORA-20000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccDeeeeeeeeeeee
-Test 2
-oci_execute(): ORA-20000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-===DONE===
+--TEST--\r
+Bug #47281 ($php_errormsg is limited in size of characters)\r
+--SKIPIF--\r
+<?php\r
+$target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs\r
+require(dirname(__FILE__).'/skipif.inc');\r
+// error3.phpt obsoletes this test for newer Oracle client versions\r
+// Assume runtime client version is >= compile time client version\r
+preg_match('/^([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/', oci_client_version(), $matches);\r
+if (!isset($matches[0]) ||\r
+    ($matches[1] > 11 || ($matches[1] == 11 && $matches[2] > 2) || ($matches[1] == 11 && $matches[2] == 2 && $matches[4] >= 3)\r
+     )) {\r
+    die("skip test works only with Oracle 11.2.0.2 or earlier Oracle client libraries");\r
+}\r
+?> \r
+--ENV--\r
+NLS_LANG=.AL32UTF8\r
+--FILE--\r
+<?php\r
+\r
+require(dirname(__FILE__).'/connect.inc');\r
+\r
+// Initialization\r
+\r
+$stmtarray = array(\r
+    "create or replace procedure bug47281_sp as\r
+    begin\r
+    raise_application_error(-20000, \r
+        'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccDeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeFggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhIjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjKlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllM');\r
+    end;"\r
+);\r
+\r
+oci8_test_sql_execute($c, $stmtarray);\r
+\r
+// Run Test\r
+\r
+echo "Test 1\n";\r
+\r
+$s = oci_parse($c, 'begin bug47281_sp; end;');\r
+$r = @oci_execute($s);\r
+\r
+if (!$r) {\r
+    $m = oci_error($s);\r
+    echo $m['message'], "\n";\r
+}\r
+\r
+echo "Test 2\n";\r
+\r
+echo $php_errormsg. "\n";\r
+\r
+// Clean up\r
+\r
+$stmtarray = array(\r
+    "drop procedure bug47281_sp"\r
+);\r
+\r
+oci8_test_sql_execute($c, $stmtarray);\r
+\r
+?>\r
+===DONE===\r
+<?php exit(0); ?>\r
+--EXPECTF--\r
+Test 1\r
+ORA-20000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccDeeeeeeeeeeee\r
+Test 2\r
+oci_execute(): ORA-20000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccDeeeeeeeeeeee\r
+===DONE===\r
index ad83f70c2019fdfdbf9f7d0a76e48997360c3a69..000b2cec74e69b4637a8c9b2b65b11e36656e4c5 100644 (file)
@@ -71,7 +71,7 @@ if (!$sys_c1) {
 } else {
        set_attr($sys_c1,'ACTION',10);
        get_sys_attr($sys_c1,'ACTION');
-       get_attr($pc2,'ACTION');
+       get_attr($sys_c1,'ACTION');
        oci_close($sys_c1);
 }
 
index f63979d6b54c0e8ee1bf25ad595c99bcae767e17..ffef0328d940b796b35f572aab55514942cce477 100644 (file)
@@ -8,18 +8,14 @@ if (strcasecmp($user, "system") && strcasecmp($user, "sys")) die("skip needs to
 if ($test_drcp) die("skip as Output might vary with DRCP");
 
 preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
-if (!(isset($matches[0]) && 
-      (($matches[1] == 11 && $matches[2] >= 2) ||
-       ($matches[1] >= 12)
-       ))) {
-               die("skip expected output only valid when using Oracle 11gR2 or greater database server");
+if (!(isset($matches[0]) && ($matches[1] == 12 && $matches[2] == 1 && $matches[3] >= 0
+       && $matches[4] >= 2) || ($matches[1] == 12 && $matches[2] > 1)))
+    die("skip test expected to work only with Oracle 12.1.0.2 database or its later patchsets");
 }
+
 preg_match('/^([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/', oci_client_version(), $matches);
-if (!(isset($matches[0]) &&
-    (($matches[1] == 11 && $matches[2] >= 2) ||
-     ($matches[1] >= 12)
-     ))) {
-    die("skip test expected to work only with Oracle 11gR2 or greater version of client");
+if (!(isset($matches[0]) && ($matches[1] == 11 && $matches[2] >= 2) || ($matches[1] > 11))) {
+    die("skip test expected to work only with Oracle 11.2 or greater version of client");
 }
 
 ?>
@@ -54,17 +50,17 @@ function get_attr($conn)
     $s2 = oci_parse($conn,$sel_stmt);
     oci_execute($s2,OCI_DEFAULT);
     oci_fetch($s2);
-    echo "The value of DRIVER_NAME is ".oci_result($s2,1)."\n";
+    echo "The value of DRIVER_NAME is ".trim(oci_result($s2,1))."\n";
 }
 
 ?>
 --EXPECT--
 **Test 1.1 - Default values for the attribute **************
-The value of DRIVER_NAME is PHP OCI8
+The value of DRIVER_NAME is PHP OCI8 : 2.1.0
 
 ***Test 1.2 - Get the values from different connections **************
 Testing with oci_pconnect()
-The value of DRIVER_NAME is PHP OCI8
+The value of DRIVER_NAME is PHP OCI8 : 2.1.0
 Testing with oci_new_connect()
-The value of DRIVER_NAME is PHP OCI8
+The value of DRIVER_NAME is PHP OCI8 : 2.1.0
 Done
diff --git a/ext/oci8/tests/driver_name_11gR2.phpt b/ext/oci8/tests/driver_name_11gR2.phpt
new file mode 100644 (file)
index 0000000..3c21d57
--- /dev/null
@@ -0,0 +1,64 @@
+--TEST--
+Verify that the Driver Name attribute is set
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); 
+
+require(dirname(__FILE__)."/connect.inc");
+if (strcasecmp($user, "system") && strcasecmp($user, "sys")) die("skip needs to be run as a DBA user");
+if ($test_drcp) die("skip as Output might vary with DRCP");
+
+preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
+if (!(isset($matches[0]) && ($matches[1] == 11 && $matches[2] >= 2))) {
+    die("skip expected output only valid when using Oracle 11.2 database or its later patchsets");
+}
+preg_match('/^([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/', oci_client_version(), $matches);
+if (!(isset($matches[0]) && ($matches[1] == 11 && $matches[2] >= 2) || ($matches[1] > 11))) {
+    die("skip test expected to work only with Oracle 11.2 or greater version of client");
+}
+
+?>
+--FILE--
+<?php
+require(dirname(__FILE__)."/connect.inc");
+
+echo"**Test 1.1 - Default values for the attribute **************\n";
+get_attr($c);
+oci_close($c);
+
+echo"\n***Test 1.2 - Get the values from different connections **************\n";
+// with oci_pconnect() 
+echo "Testing with oci_pconnect()\n";
+$pc1=oci_pconnect($user,$password,$dbase);
+get_attr($pc1);
+oci_close($pc1);
+
+echo "Testing with oci_new_connect()\n";
+$nc1=oci_new_connect($user,$password,$dbase);
+get_attr($nc1);
+oci_close($nc1);
+echo "Done\n";
+
+function get_attr($conn)
+{
+       $sel_stmt = "select client_driver 
+        from v\$session_connect_info sci, v\$session s 
+        where sci.client_driver is not null 
+          and sci.sid = s.sid 
+          and s.audsid = userenv('SESSIONID')";
+    $s2 = oci_parse($conn,$sel_stmt);
+    oci_execute($s2,OCI_DEFAULT);
+    oci_fetch($s2);
+    echo "The value of DRIVER_NAME is ".trim(oci_result($s2,1))."\n";
+}
+
+?>
+--EXPECT--
+**Test 1.1 - Default values for the attribute **************
+The value of DRIVER_NAME is PHP OCI8
+
+***Test 1.2 - Get the values from different connections **************
+Testing with oci_pconnect()
+The value of DRIVER_NAME is PHP OCI8
+Testing with oci_new_connect()
+The value of DRIVER_NAME is PHP OCI8
+Done
index 1194ae180dd20a07ab1b98b616ce9750afe8f7dd..7099b40945cd5d7bcd92dccf43566fc9ead0b295 100644 (file)
@@ -88,7 +88,7 @@ var_dump($c);
 
 echo "Test 9\n";
 
-$c = oci_connect('/', '', 'c', null, OCI_SYSDBA+OCI_CRED_EXT);
+$c = oci_connect('/', '', 'd', null, OCI_SYSDBA+OCI_CRED_EXT);
 if (!$c) {
        $m = oci_error();
        var_dump($m);
@@ -97,7 +97,7 @@ var_dump($c);
 
 echo "Test 10\n";
 
-$c = oci_connect('/', '', 'c', null, OCI_SYSOPER+OCI_CRED_EXT);
+$c = oci_connect('/', '', 'd', null, OCI_SYSOPER+OCI_CRED_EXT);
 if (!$c) {
        $m = oci_error();
        var_dump($m);
index 0a3227019ce4128c6076d5c68ebc1da217724009..ea665eb9187cf11302771325c510cdbf27eefa7e 100644 (file)
@@ -87,7 +87,7 @@ var_dump($c);
 
 echo "Test 9\n";
 
-$c = oci_new_connect('/', '', 'c', null, OCI_SYSDBA+OCI_CRED_EXT);
+$c = oci_new_connect('/', '', 'd', null, OCI_SYSDBA+OCI_CRED_EXT);
 if (!$c) {
        $m = oci_error();
        var_dump($m);
@@ -96,7 +96,7 @@ var_dump($c);
 
 echo "Test 10\n";
 
-$c = oci_new_connect('/', '', 'c', null, OCI_SYSOPER+OCI_CRED_EXT);
+$c = oci_new_connect('/', '', 'd', null, OCI_SYSOPER+OCI_CRED_EXT);
 if (!$c) {
        $m = oci_error();
        var_dump($m);
index d7884ce6b48f68409251459b1d3bf1d735c3b053..3ced42fc23a60af3c9024a6b6b0ea351ec290bbb 100644 (file)
@@ -87,7 +87,7 @@ var_dump($c);
 
 echo "Test 9\n";
 
-$c = oci_pconnect('/', '', 'c', null, OCI_SYSDBA+OCI_CRED_EXT);
+$c = oci_pconnect('/', '', 'd', null, OCI_SYSDBA+OCI_CRED_EXT);
 if (!$c) {
        $m = oci_error();
        var_dump($m);
@@ -96,7 +96,7 @@ var_dump($c);
 
 echo "Test 10\n";
 
-$c = oci_pconnect('/', '', 'c', null, OCI_SYSOPER+OCI_CRED_EXT);
+$c = oci_pconnect('/', '', 'd', null, OCI_SYSOPER+OCI_CRED_EXT);
 if (!$c) {
        $m = oci_error();
        var_dump($m);
index e502435bb06929c175be57237661f035364da90d..1597c2a942dddeb1d6c69729e0789fe4005c1415 100644 (file)
@@ -42,14 +42,17 @@ var_dump($c);
 <?php exit(0); ?>
 --EXPECTF--
 Test 1
+
 Warning: oci_connect(): External Authentication is not supported on Windows in %s on line %d
 bool(false)
 bool(false)
 Test 2
+
 Warning: oci_new_connect(): External Authentication is not supported on Windows in %s on line %d
 bool(false)
 bool(false)
 Test 3
+
 Warning: oci_pconnect(): External Authentication is not supported on Windows in %s on line %d
 bool(false)
 bool(false)