#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"
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 */
}
#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++) {
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);
}
- }
}
/* }}} */
</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="/">
* 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
/* }}} */
---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
---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
---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
} 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);
}
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");
}
?>
$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
--- /dev/null
+--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
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);
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);
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);
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);
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);
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);
<?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)