diff options
author | Christopher Jones <christopher.jones@oracle.com> | 2015-09-12 09:10:32 +1000 |
---|---|---|
committer | Christopher Jones <christopher.jones@oracle.com> | 2015-09-12 09:10:32 +1000 |
commit | a96f99e30a91f00de8ff49bb925ba5fda296d2c2 (patch) | |
tree | 7548d06604810380efb6a3bdfadc809acc7f7a20 | |
parent | 4ee6a9a9a91ddfcd1cac75a91fa99cae3e28c2e8 (diff) | |
download | php-git-a96f99e30a91f00de8ff49bb925ba5fda296d2c2.tar.gz |
Final diff fixes for PHP7 on base platform (some mem leaks still to be fixed). Update driver name. Improve test portability (Senthil)
-rw-r--r-- | ext/oci8/oci8.c | 86 | ||||
-rw-r--r-- | ext/oci8/package.xml | 3 | ||||
-rw-r--r-- | ext/oci8/php_oci8_int.h | 2 | ||||
-rw-r--r-- | ext/oci8/tests/bug27303_1_11gR1.phpt | 508 | ||||
-rw-r--r-- | ext/oci8/tests/bug27303_4_11gR1.phpt | 504 | ||||
-rw-r--r-- | ext/oci8/tests/bug47281.phpt | 134 | ||||
-rw-r--r-- | ext/oci8/tests/conn_attr_2.phpt | 2 | ||||
-rw-r--r-- | ext/oci8/tests/driver_name.phpt | 24 | ||||
-rw-r--r-- | ext/oci8/tests/driver_name_11gR2.phpt | 64 | ||||
-rw-r--r-- | ext/oci8/tests/extauth_01.phpt | 4 | ||||
-rw-r--r-- | ext/oci8/tests/extauth_02.phpt | 4 | ||||
-rw-r--r-- | ext/oci8/tests/extauth_03.phpt | 4 | ||||
-rw-r--r-- | ext/oci8/tests/extauth_04.phpt | 3 |
13 files changed, 693 insertions, 649 deletions
diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c index 148d90f75a..9144d48baf 100644 --- a/ext/oci8/oci8.c +++ b/ext/oci8/oci8.c @@ -42,6 +42,11 @@ #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); } - } } /* }}} */ diff --git a/ext/oci8/package.xml b/ext/oci8/package.xml index e4136974c5..886bdddb63 100644 --- a/ext/oci8/package.xml +++ b/ext/oci8/package.xml @@ -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="/"> diff --git a/ext/oci8/php_oci8_int.h b/ext/oci8/php_oci8_int.h index 5994d0be48..900797bc6c 100644 --- a/ext/oci8/php_oci8_int.h +++ b/ext/oci8/php_oci8_int.h @@ -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 /* }}} */ diff --git a/ext/oci8/tests/bug27303_1_11gR1.phpt b/ext/oci8/tests/bug27303_1_11gR1.phpt index d2018783bc..d1a7db58da 100644 --- a/ext/oci8/tests/bug27303_1_11gR1.phpt +++ b/ext/oci8/tests/bug27303_1_11gR1.phpt @@ -1,254 +1,254 @@ ---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--
+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(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"
+Done
diff --git a/ext/oci8/tests/bug27303_4_11gR1.phpt b/ext/oci8/tests/bug27303_4_11gR1.phpt index 550d89fdcc..48ea7d288b 100644 --- a/ext/oci8/tests/bug27303_4_11gR1.phpt +++ b/ext/oci8/tests/bug27303_4_11gR1.phpt @@ -1,252 +1,252 @@ ---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--
+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(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"
+Done
diff --git a/ext/oci8/tests/bug47281.phpt b/ext/oci8/tests/bug47281.phpt index 00c43c22da..f80fa88568 100644 --- a/ext/oci8/tests/bug47281.phpt +++ b/ext/oci8/tests/bug47281.phpt @@ -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--
+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: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccDeeeeeeeeeeee
+===DONE===
diff --git a/ext/oci8/tests/conn_attr_2.phpt b/ext/oci8/tests/conn_attr_2.phpt index ad83f70c20..000b2cec74 100644 --- a/ext/oci8/tests/conn_attr_2.phpt +++ b/ext/oci8/tests/conn_attr_2.phpt @@ -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); } diff --git a/ext/oci8/tests/driver_name.phpt b/ext/oci8/tests/driver_name.phpt index f63979d6b5..ffef0328d9 100644 --- a/ext/oci8/tests/driver_name.phpt +++ b/ext/oci8/tests/driver_name.phpt @@ -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 index 0000000000..3c21d57b93 --- /dev/null +++ b/ext/oci8/tests/driver_name_11gR2.phpt @@ -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 diff --git a/ext/oci8/tests/extauth_01.phpt b/ext/oci8/tests/extauth_01.phpt index 1194ae180d..7099b40945 100644 --- a/ext/oci8/tests/extauth_01.phpt +++ b/ext/oci8/tests/extauth_01.phpt @@ -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); diff --git a/ext/oci8/tests/extauth_02.phpt b/ext/oci8/tests/extauth_02.phpt index 0a3227019c..ea665eb918 100644 --- a/ext/oci8/tests/extauth_02.phpt +++ b/ext/oci8/tests/extauth_02.phpt @@ -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); diff --git a/ext/oci8/tests/extauth_03.phpt b/ext/oci8/tests/extauth_03.phpt index d7884ce6b4..3ced42fc23 100644 --- a/ext/oci8/tests/extauth_03.phpt +++ b/ext/oci8/tests/extauth_03.phpt @@ -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); diff --git a/ext/oci8/tests/extauth_04.phpt b/ext/oci8/tests/extauth_04.phpt index e502435bb0..1597c2a942 100644 --- a/ext/oci8/tests/extauth_04.phpt +++ b/ext/oci8/tests/extauth_04.phpt @@ -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) |