mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Most oci8 tests fail out-of-the-box because a typical host won't have an Oracle database instance available. Other database drivers like mysqli and pgsql address this problem with an include file, inserted into SKIPIF, that skips the test if no connection at all can be made. This commits adds such a file (skipifconnectfailure.inc) for oci8, and adds the corresponding SKIPIF to any tests that connect to a database. Closes GH-11804 * ext/oci8/tests/lob_aliases.phpt: drop unnecessary SKIPIF.
96 lines
2.9 KiB
PHP
96 lines
2.9 KiB
PHP
--TEST--
|
|
Bug #72524 (Binding null values triggers ORA-24816 error)
|
|
--EXTENSIONS--
|
|
oci8
|
|
--SKIPIF--
|
|
<?php
|
|
require_once('skipifconnectfailure.inc');
|
|
$target_dbs = array('oracledb' => true, 'timesten' => true); // test runs on these DBs
|
|
require(__DIR__.'/skipif.inc');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
|
|
require(__DIR__.'/connect.inc');
|
|
|
|
// Initialize
|
|
|
|
$stmtarray = array(
|
|
"CREATE TABLE mytable (clob_col CLOB DEFAULT NULL, varchar2_col VARCHAR2(255) DEFAULT NULL)"
|
|
);
|
|
|
|
oci8_test_sql_execute($c, $stmtarray);
|
|
|
|
// Run test
|
|
|
|
$sql = "INSERT INTO mytable VALUES (:clob_col, :varchar2_col)";
|
|
|
|
echo "Test 1 - P1 Value: NULL P1 Length: Default P1 Type: Default P2 Value: NULL P2 Length: Default P2 Type: Default\n";
|
|
$stmt = oci_parse($c, $sql);
|
|
|
|
$clob = NULL;
|
|
$varchar2 = NULL;
|
|
oci_bind_by_name($stmt, ':clob_col', $clob);
|
|
oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
|
|
|
|
var_dump(oci_execute($stmt));
|
|
|
|
echo "Test 2 - P1 Value: '' P1 Length: Default P1 Type: Default P2 Value: '' P2 Length: Default P2 Type: Default\n";
|
|
|
|
$clob = '';
|
|
$varchar2 = '';
|
|
oci_bind_by_name($stmt, ':clob_col', $clob);
|
|
oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
|
|
|
|
var_dump(oci_execute($stmt));
|
|
|
|
echo "Test 3 - P1 Value: 'abc' P1 Length: 0 P1 Type: Default P2 Value: '' P2 Length: 0 P2 Type: Default\n";
|
|
$clob = 'abc';
|
|
$varchar2 = 'abc';
|
|
oci_bind_by_name($stmt, ':clob_col', $clob, 0);
|
|
oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0);
|
|
|
|
var_dump(oci_execute($stmt));
|
|
|
|
echo "Test 4 - P1 Value: NULL P1 Length: -1 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1 P2 Type:Default\n";
|
|
$clob = NULL;
|
|
$varchar2 = NULL;
|
|
oci_bind_by_name($stmt, ':clob_col', $clob, -1, SQLT_LNG);
|
|
oci_bind_by_name($stmt, ':varchar2_col', $varchar2, -1, SQLT_LNG);
|
|
|
|
var_dump(oci_execute($stmt));
|
|
|
|
echo "Test 5 - P1 Value: NULL P1 Length: 0 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0 P2 Type:Default\n";
|
|
$clob = NULL;
|
|
$varchar2 = NULL;
|
|
oci_bind_by_name($stmt, ':clob_col', $clob, 0, SQLT_LNG);
|
|
oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0, SQLT_LNG);
|
|
|
|
|
|
var_dump(oci_execute($stmt));
|
|
|
|
// Cleanup
|
|
|
|
$stmtarray = array(
|
|
"DROP TABLE mytable"
|
|
);
|
|
|
|
oci8_test_sql_execute($c, $stmtarray);
|
|
|
|
?>
|
|
--EXPECTF--
|
|
Test 1 - P1 Value: NULL P1 Length: Default P1 Type: Default P2 Value: NULL P2 Length: Default P2 Type: Default
|
|
bool(true)
|
|
Test 2 - P1 Value: '' P1 Length: Default P1 Type: Default P2 Value: '' P2 Length: Default P2 Type: Default
|
|
bool(true)
|
|
Test 3 - P1 Value: 'abc' P1 Length: 0 P1 Type: Default P2 Value: '' P2 Length: 0 P2 Type: Default
|
|
bool(true)
|
|
Test 4 - P1 Value: NULL P1 Length: -1 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1 P2 Type:Default
|
|
|
|
Warning: oci_execute(): ORA-24816: %s in %s on line %d
|
|
bool(false)
|
|
Test 5 - P1 Value: NULL P1 Length: 0 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0 P2 Type:Default
|
|
|
|
Warning: oci_execute(): ORA-24816: %s in %s on line %d
|
|
bool(false)
|