Browse Source

fix #37487 (oci_fetch_array() array-type should always default to OCI_BOTH)

migration/RELEASE_1_0_0
Antony Dovgal 20 years ago
parent
commit
10c2fc97df
  1. 10
      ext/oci8/oci8.c
  2. 54
      ext/oci8/tests/fetch_array.phpt
  3. 2
      ext/oci8/tests/field_funcs.phpt
  4. 2
      ext/oci8/tests/field_funcs1.phpt
  5. 4
      ext/oci8/tests/lob_011.phpt
  6. 4
      ext/oci8/tests/select_null.phpt

10
ext/oci8/oci8.c

@ -1643,6 +1643,16 @@ void php_oci_fetch_row (INTERNAL_FUNCTION_PARAMETERS, int mode, int expected_arg
fetch_mode = mode; fetch_mode = mode;
} }
if (!(fetch_mode & PHP_OCI_NUM) && !(fetch_mode & PHP_OCI_ASSOC)) {
/* none of the modes present, use the default one */
if (mode & PHP_OCI_ASSOC) {
fetch_mode |= PHP_OCI_ASSOC;
}
if (mode & PHP_OCI_NUM) {
fetch_mode |= PHP_OCI_NUM;
}
}
PHP_OCI_ZVAL_TO_STATEMENT(z_statement, statement); PHP_OCI_ZVAL_TO_STATEMENT(z_statement, statement);
if (php_oci_statement_fetch(statement, nrows TSRMLS_CC)) { if (php_oci_statement_fetch(statement, nrows TSRMLS_CC)) {

54
ext/oci8/tests/fetch_array.phpt

@ -209,58 +209,100 @@ array(4) {
["VALUE"]=> ["VALUE"]=>
string(1) "1" string(1) "1"
} }
array(2) {
array(4) {
[0]=> [0]=>
string(1) "1" string(1) "1"
["ID"]=>
string(1) "1"
[1]=> [1]=>
string(1) "1" string(1) "1"
["VALUE"]=>
string(1) "1"
} }
array(2) {
array(4) {
[0]=> [0]=>
string(1) "1" string(1) "1"
["ID"]=>
string(1) "1"
[1]=> [1]=>
string(1) "1" string(1) "1"
["VALUE"]=>
string(1) "1"
} }
array(2) {
array(4) {
[0]=> [0]=>
string(1) "1" string(1) "1"
["ID"]=>
string(1) "1"
[1]=> [1]=>
string(1) "1" string(1) "1"
["VALUE"]=>
string(1) "1"
} }
array(5) {
array(10) {
[0]=> [0]=>
string(1) "1" string(1) "1"
["ID"]=>
string(1) "1"
[1]=> [1]=>
string(1) "1" string(1) "1"
["VALUE"]=>
string(1) "1"
[2]=> [2]=>
NULL NULL
["BLOB"]=>
NULL
[3]=> [3]=>
NULL NULL
["CLOB"]=>
NULL
[4]=> [4]=>
NULL NULL
["STRING"]=>
NULL
} }
array(5) {
array(10) {
[0]=> [0]=>
string(1) "1" string(1) "1"
["ID"]=>
string(1) "1"
[1]=> [1]=>
string(1) "1" string(1) "1"
["VALUE"]=>
string(1) "1"
[2]=> [2]=>
NULL NULL
["BLOB"]=>
NULL
[3]=> [3]=>
NULL NULL
["CLOB"]=>
NULL
[4]=> [4]=>
NULL NULL
["STRING"]=>
NULL
} }
array(5) {
array(10) {
[0]=> [0]=>
string(1) "1" string(1) "1"
["ID"]=>
string(1) "1"
[1]=> [1]=>
string(1) "1" string(1) "1"
["VALUE"]=>
string(1) "1"
[2]=> [2]=>
NULL NULL
["BLOB"]=>
NULL
[3]=> [3]=>
NULL NULL
["CLOB"]=>
NULL
[4]=> [4]=>
NULL NULL
["STRING"]=>
NULL
} }
Done Done

2
ext/oci8/tests/field_funcs.phpt

@ -34,7 +34,7 @@ if (!oci_execute($s)) {
die("oci_execute(select) failed!\n"); die("oci_execute(select) failed!\n");
} }
$row = oci_fetch_array($s, OCI_RETURN_NULLS + OCI_RETURN_LOBS);
$row = oci_fetch_array($s, OCI_NUM + OCI_RETURN_NULLS + OCI_RETURN_LOBS);
var_dump($row); var_dump($row);
foreach ($row as $num => $field) { foreach ($row as $num => $field) {

2
ext/oci8/tests/field_funcs1.phpt

@ -34,7 +34,7 @@ if (!oci_execute($s)) {
die("oci_execute(select) failed!\n"); die("oci_execute(select) failed!\n");
} }
$row = oci_fetch_array($s, OCI_RETURN_NULLS + OCI_RETURN_LOBS);
$row = oci_fetch_array($s, OCI_NUM + OCI_RETURN_NULLS + OCI_RETURN_LOBS);
var_dump($row); var_dump($row);
var_dump(oci_field_is_null($s, -1)); var_dump(oci_field_is_null($s, -1));

4
ext/oci8/tests/lob_011.phpt

@ -69,8 +69,10 @@ echo "Done\n";
int(32) int(32)
bool(true) bool(true)
string(32) "some string here. string, I said" string(32) "some string here. string, I said"
array(1) {
array(2) {
[0]=> [0]=>
string(32) "some string here. string, I said" string(32) "some string here. string, I said"
["BLOB"]=>
string(32) "some string here. string, I said"
} }
Done Done

4
ext/oci8/tests/select_null.phpt

@ -16,8 +16,10 @@ var_dump(oci_fetch_array($stmt, OCI_RETURN_NULLS));
echo "Done\n"; echo "Done\n";
?> ?>
--EXPECT-- --EXPECT--
array(1) {
array(2) {
[0]=> [0]=>
NULL NULL
["NULL"]=>
NULL
} }
Done Done
Loading…
Cancel
Save