From: Christopher Jones Date: Fri, 11 Sep 2015 23:10:32 +0000 (+1000) Subject: Final diff fixes for PHP7 on base platform (some mem leaks still to be fixed). Updat... X-Git-Tag: php-7.1.0alpha1~1182 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a96f99e30a91f00de8ff49bb925ba5fda296d2c2;p=php Final diff fixes for PHP7 on base platform (some mem leaks still to be fixed). Update driver name. Improve test portability (Senthil) --- 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. PHP - PHP 7 Compatibility. This version is for PHP 7 only. +This version is for PHP 7 only. +Updated driver name format. 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-- - ---FILE-- - ---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-- + +--FILE-- + +--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-- - ---FILE-- - ---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-- + +--FILE-- + +--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-- - 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-- - -===DONE=== - ---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-- + 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-- + +===DONE=== + +--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-- += 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-- + +--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); --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)