tony2001 Thu Mar 1 23:28:51 2007 UTC
Added files:
/php-src/ext/oci8/tests lob_039.phpt lob_038.phpt lob_037.phpt
bug40415.phpt
Modified files:
/php-src/ext/oci8/tests lob_029.phpt
Log:
new tests by Chris and me
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/tests/lob_029.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/oci8/tests/lob_029.phpt
diff -u php-src/ext/oci8/tests/lob_029.phpt:1.2
php-src/ext/oci8/tests/lob_029.phpt:1.3
--- php-src/ext/oci8/tests/lob_029.phpt:1.2 Tue Dec 12 12:57:02 2006
+++ php-src/ext/oci8/tests/lob_029.phpt Thu Mar 1 23:28:51 2007
@@ -1,8 +1,7 @@
--TEST--
reading/writing BFILE LOBs
--SKIPIF--
-<?php
-if (!extension_loaded('oci8')) die("skip no oci8 extension");
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension");
include "details.inc";
if (empty($oracle_on_localhost)) die("skip this test won't work with remote
Oracle");
?>
@@ -12,19 +11,31 @@
require dirname(__FILE__).'/connect.inc';
$realdirname = dirname(__FILE__);
-$realfilename = "oci8bfiletest.txt";
-$fullname = $realdirname."/".$realfilename;
+$realfilename1 = "oci8bfiletest1.txt";
+$fullname1 = $realdirname."/".$realfilename1;
+$realfilename2 = "oci8bfiletest2.txt";
+$fullname2 = $realdirname."/".$realfilename2;
+$realfilename3 = "oci8bfiletest3.txt";
+$fullname3 = $realdirname."/".$realfilename3;
// Setup
$s = oci_parse($c, "create directory TestDir as '$realdirname'");
oci_execute($s);
-file_put_contents($fullname, 'Some text in the bfile');
+file_put_contents($fullname1, 'Some text in the bfile 1');
+file_put_contents($fullname2, 'Some text in the bfile 2');
+file_put_contents($fullname3, 'Some text in the bfile 3');
$s = oci_parse($c, "create table FileTest (FileNum number, FileDesc
varchar2(30), Image bfile)");
oci_execute($s);
-$s = oci_parse($c, "insert into FileTest (FileNum, FileDesc, Image) values (1,
'Description 1', bfilename('TESTDIR', '$realfilename'))");
+$s = oci_parse($c, "insert into FileTest (FileNum, FileDesc, Image) values (1,
'Description 1', bfilename('TESTDIR', '$realfilename1'))");
+oci_execute($s);
+
+$s = oci_parse($c, "insert into FileTest (FileNum, FileDesc, Image) values (2,
'Description 2', bfilename('TESTDIR', '$realfilename2'))");
+oci_execute($s);
+
+$s = oci_parse($c, "insert into FileTest (FileNum, FileDesc, Image) values (3,
'Description 3', bfilename('TESTDIR', '$realfilename3'))");
oci_execute($s);
// Run tests
@@ -37,7 +48,7 @@
var_dump($res);
echo "Test 2\n";
-$s = oci_parse($c, "select * from FileTest");
+$s = oci_parse($c, "select * from FileTest order by FileNum");
oci_execute($s);
oci_fetch_all($s, $res);
var_dump($res);
@@ -45,14 +56,16 @@
echo "Test 3\n";
$d = oci_new_descriptor($c, OCI_D_FILE);
-$s = oci_parse($c, "insert into FileTest (FileNum, FileDesc, Image) values (2,
'Description 2', bfilename('TESTDIR', '$realfilename')) returning Image into
:im");
+$s = oci_parse($c, "insert into FileTest (FileNum, FileDesc, Image) values (2,
'Description 2', bfilename('TESTDIR', '$realfilename1')) returning Image into
:im");
oci_bind_by_name($s, ":im", $d, -1, OCI_B_BFILE);
oci_execute($s);
$r = $d->read(40);
var_dump($r);
-unlink($fullname);
+unlink($fullname1);
+unlink($fullname2);
+unlink($fullname3);
$s = oci_parse($c, "drop table FileTest");
oci_execute($s);
@@ -62,63 +75,45 @@
echo "Done\n";
?>
---EXPECTF--
+--EXPECTF--
Test 1. Check how many rows in the table
array(1) {
["NUMROWS"]=>
array(1) {
[0]=>
- string(1) "1"
+ string(1) "3"
}
}
Test 2
array(3) {
["FILENUM"]=>
- array(1) {
+ array(3) {
[0]=>
string(1) "1"
+ [1]=>
+ string(1) "2"
+ [2]=>
+ string(1) "3"
}
["FILEDESC"]=>
- array(1) {
+ array(3) {
[0]=>
string(13) "Description 1"
+ [1]=>
+ string(13) "Description 2"
+ [2]=>
+ string(13) "Description 3"
}
["IMAGE"]=>
- array(1) {
- [0]=>
- string(22) "Some text in the bfile"
- }
-}
-Test 3
-string(22) "Some text in the bfile"
-Done
---UEXPECTF--
-Test 1. Check how many rows in the table
-array(1) {
- [u"NUMROWS"]=>
- array(1) {
- [0]=>
- unicode(1) "1"
- }
-}
-Test 2
-array(3) {
- [u"FILENUM"]=>
- array(1) {
- [0]=>
- unicode(1) "1"
- }
- [u"FILEDESC"]=>
- array(1) {
- [0]=>
- unicode(13) "Description 1"
- }
- [u"IMAGE"]=>
- array(1) {
+ array(3) {
[0]=>
- string(22) "Some text in the bfile"
+ string(24) "Some text in the bfile 1"
+ [1]=>
+ string(24) "Some text in the bfile 2"
+ [2]=>
+ string(24) "Some text in the bfile 3"
}
}
Test 3
-string(22) "Some text in the bfile"
-Done
+string(24) "Some text in the bfile 1"
+Done
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/tests/lob_039.phpt?view=markup&rev=1.1
Index: php-src/ext/oci8/tests/lob_039.phpt
+++ php-src/ext/oci8/tests/lob_039.phpt
--TEST--
Test CLOB->write() for multiple inserts
--SKIPIF--
<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
--FILE--
<?php
require dirname(__FILE__).'/connect.inc';
require dirname(__FILE__).'/create_table.inc';
echo "Test 1: CLOB\n";
$ora_sql = "INSERT INTO
".$schema.$table_name." (clob)
VALUES (empty_clob())
RETURNING
clob
INTO :v_clob ";
$s = oci_parse($c,$ora_sql);
$clob = oci_new_descriptor($c,OCI_DTYPE_LOB);
oci_bind_by_name($s,":v_clob", $clob,-1,OCI_B_CLOB);
oci_execute($s, OCI_DEFAULT);
var_dump($clob->write("clob test 1"));
oci_execute($s, OCI_DEFAULT);
var_dump($clob->write("clob test 2"));
oci_execute($s, OCI_DEFAULT);
var_dump($clob->write("clob test 3"));
$s = oci_parse($c,"select clob from ".$schema.$table_name);
var_dump(oci_execute($s));
oci_fetch_all($s, $res);
var_dump($res);
require dirname(__FILE__).'/drop_table.inc';
echo "Done\n";
?>
--EXPECT--
Test 1: CLOB
int(11)
int(11)
int(11)
bool(true)
array(1) {
["CLOB"]=>
array(3) {
[0]=>
string(11) "clob test 1"
[1]=>
string(11) "clob test 2"
[2]=>
string(11) "clob test 3"
}
}
Done
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/tests/lob_038.phpt?view=markup&rev=1.1
Index: php-src/ext/oci8/tests/lob_038.phpt
+++ php-src/ext/oci8/tests/lob_038.phpt
--TEST--
Array fetch CLOB and BLOB
--SKIPIF--
<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
--FILE--
<?php
require dirname(__FILE__).'/connect.inc';
require dirname(__FILE__).'/create_table.inc';
echo "Test 1: CLOB\n";
$ora_sql = "INSERT INTO
".$schema.$table_name." (clob)
VALUES (empty_clob())
RETURNING
clob
INTO :v_clob ";
$s = oci_parse($c,$ora_sql);
$clob = oci_new_descriptor($c,OCI_DTYPE_LOB);
oci_bind_by_name($s,":v_clob", $clob,-1,OCI_B_CLOB);
oci_execute($s, OCI_DEFAULT);
var_dump($clob->save("clob test 1"));
oci_execute($s, OCI_DEFAULT);
var_dump($clob->save("clob test 2"));
oci_execute($s, OCI_DEFAULT);
var_dump($clob->save("clob test 3"));
$s = oci_parse($c,"select clob from ".$schema.$table_name);
var_dump(oci_execute($s));
oci_fetch_all($s, $res);
var_dump($res);
echo "Test 1b\n";
$s = oci_parse($c, "select clob from ".$schema.$table_name);
var_dump(oci_execute($s, OCI_DEFAULT));
while ($row = oci_fetch_array($s, OCI_ASSOC)) {
var_dump($row);
$result = $row['CLOB']->load();
var_dump($result);
}
require dirname(__FILE__).'/drop_table.inc';
echo "Test 2: BLOB\n";
require dirname(__FILE__).'/create_table.inc';
$ora_sql = "INSERT INTO
".$schema.$table_name." (blob)
VALUES (empty_blob())
RETURNING
blob
INTO :v_blob ";
$s = oci_parse($c,$ora_sql);
$blob = oci_new_descriptor($c,OCI_DTYPE_LOB);
oci_bind_by_name($s,":v_blob", $blob,-1,OCI_B_BLOB);
oci_execute($s, OCI_DEFAULT);
var_dump($blob->save("blob test 1"));
oci_execute($s, OCI_DEFAULT);
var_dump($blob->save("blob test 2"));
oci_execute($s, OCI_DEFAULT);
var_dump($blob->save("blob test 3"));
$s = oci_parse($c, "select blob from ".$schema.$table_name);
var_dump(oci_execute($s));
oci_fetch_all($s, $res);
var_dump($res);
echo "Test 2b\n";
$s = oci_parse($c, "select blob from ".$schema.$table_name);
var_dump(oci_execute($s, OCI_DEFAULT));
while ($row = oci_fetch_array($s, OCI_ASSOC)) {
var_dump($row);
$result = $row['BLOB']->load();
var_dump($result);
}
require dirname(__FILE__).'/drop_table.inc';
echo "Done\n";
?>
--EXPECTF--
Test 1: CLOB
bool(true)
bool(true)
bool(true)
bool(true)
array(1) {
["CLOB"]=>
array(3) {
[0]=>
string(11) "clob test 1"
[1]=>
string(11) "clob test 2"
[2]=>
string(11) "clob test 3"
}
}
Test 1b
bool(true)
array(1) {
["CLOB"]=>
object(OCI-Lob)#%d (1) {
["descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(11) "clob test 1"
array(1) {
["CLOB"]=>
object(OCI-Lob)#%d (1) {
["descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(11) "clob test 2"
array(1) {
["CLOB"]=>
object(OCI-Lob)#%d (1) {
["descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(11) "clob test 3"
Test 2: BLOB
bool(true)
bool(true)
bool(true)
bool(true)
array(1) {
["BLOB"]=>
array(3) {
[0]=>
string(11) "blob test 1"
[1]=>
string(11) "blob test 2"
[2]=>
string(11) "blob test 3"
}
}
Test 2b
bool(true)
array(1) {
["BLOB"]=>
object(OCI-Lob)#%d (1) {
["descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(11) "blob test 1"
array(1) {
["BLOB"]=>
object(OCI-Lob)#%d (1) {
["descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(11) "blob test 2"
array(1) {
["BLOB"]=>
object(OCI-Lob)#%d (1) {
["descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(11) "blob test 3"
Done
--UEXPECTF--
Test 1: CLOB
bool(true)
bool(true)
bool(true)
bool(true)
array(1) {
[u"CLOB"]=>
array(3) {
[0]=>
unicode(11) "clob test 1"
[1]=>
unicode(11) "clob test 2"
[2]=>
unicode(11) "clob test 3"
}
}
Test 1b
bool(true)
array(1) {
[u"CLOB"]=>
object(OCI-Lob)#%d (1) {
[u"descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
unicode(11) "clob test 1"
array(1) {
[u"CLOB"]=>
object(OCI-Lob)#%d (1) {
[u"descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
unicode(11) "clob test 2"
array(1) {
[u"CLOB"]=>
object(OCI-Lob)#%d (1) {
[u"descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
unicode(11) "clob test 3"
Test 2: BLOB
bool(true)
bool(true)
bool(true)
bool(true)
array(1) {
[u"BLOB"]=>
array(3) {
[0]=>
string(22) "b
[1]=>
string(22) "b
[2]=>
string(22) "b
}
}
Test 2b
bool(true)
array(1) {
[u"BLOB"]=>
object(OCI-Lob)#%d (1) {
[u"descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(22) "b
array(1) {
[u"BLOB"]=>
object(OCI-Lob)#%d (1) {
[u"descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(22) "b
array(1) {
[u"BLOB"]=>
object(OCI-Lob)#%d (1) {
[u"descriptor"]=>
resource(%d) of type (oci8 descriptor)
}
}
string(22) "b
Done
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/tests/lob_037.phpt?view=markup&rev=1.1
Index: php-src/ext/oci8/tests/lob_037.phpt
+++ php-src/ext/oci8/tests/lob_037.phpt
--TEST--
Fetching two different lobs and using them after fetch
--SKIPIF--
<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
--FILE--
<?php
require dirname(__FILE__).'/connect.inc';
require dirname(__FILE__).'/create_table.inc';
/* insert the first LOB */
$ora_sql = "INSERT INTO
".$schema.$table_name." (blob)
VALUES (empty_blob())
RETURNING
blob
INTO :v_blob ";
$s = oci_parse($c,$ora_sql);
$blob = oci_new_descriptor($c,OCI_DTYPE_LOB);
oci_bind_by_name($s,":v_blob", $blob,-1,OCI_B_BLOB);
oci_execute($s, OCI_DEFAULT);
var_dump($blob->write("first lob data"));
oci_commit($c);
/* insert the second LOB */
$ora_sql = "INSERT INTO
".$schema.$table_name." (blob)
VALUES (empty_blob())
RETURNING
blob
INTO :v_blob ";
$s = oci_parse($c,$ora_sql);
$blob = oci_new_descriptor($c,OCI_DTYPE_LOB);
oci_bind_by_name($s,":v_blob", $blob,-1,OCI_B_BLOB);
oci_execute($s, OCI_DEFAULT);
var_dump($blob->write("second lob data"));
oci_commit($c);
/* select both */
$ora_sql = "SELECT blob FROM ".$schema.$table_name;
$s = oci_parse($c,$ora_sql);
oci_execute($s, OCI_DEFAULT);
$rows = array();
$rows[0] = oci_fetch_assoc($s);
$rows[1] = oci_fetch_assoc($s);
var_dump($rows[0]['BLOB']->read(1000));
var_dump($rows[1]['BLOB']->read(1000));
require dirname(__FILE__).'/drop_table.inc';
echo "Done\n";
?>
--EXPECT--
int(14)
int(15)
string(14) "first lob data"
string(15) "second lob data"
Done
--UEXPECT--
int(28)
int(30)
string(28) "f
string(30) "s
Done
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/tests/bug40415.phpt?view=markup&rev=1.1
Index: php-src/ext/oci8/tests/bug40415.phpt
+++ php-src/ext/oci8/tests/bug40415.phpt
--TEST--
Bug #40415 (Using oci_fetchall with nested cursors)
--SKIPIF--
<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
--FILE--
<?php
require dirname(__FILE__)."/connect.inc";
// Setup
$create_1 = "CREATE TABLE t1 (id1 INTEGER)";
$create_2 = "CREATE TABLE t2 (id2 INTEGER)";
$drop_1 = "DROP TABLE t1";
$drop_2 = "DROP TABLE t2";
$s1 = oci_parse($c, $drop_1);
$s2 = oci_parse($c, $drop_2);
@oci_execute($s1);
@oci_execute($s2);
$s1 = oci_parse($c, $create_1);
$s2 = oci_parse($c, $create_2);
oci_execute($s1);
oci_execute($s2);
for($i=1; $i < 4; $i++) {
$insert = "INSERT INTO t1 VALUES(1".$i.")";
$s = oci_parse($c, $insert);
oci_execute($s);
}
for($i=1; $i < 4; $i++) {
$insert = "INSERT INTO t2 VALUES(2".$i.")";
$s = oci_parse($c, $insert);
oci_execute($s);
}
function do_assoc($c)
{
$query = "SELECT t1.*, CURSOR( SELECT * FROM t2 ) AS CURSOR FROM t1";
$stmt = oci_parse($c, $query);
oci_execute($stmt);
while ($row = oci_fetch_assoc($stmt)) {
print "Got row \"".$row['ID1']."\". Now getting nested cursor:\n";
var_dump(oci_execute($row['CURSOR']));
while ($row_n = oci_fetch_assoc($row['CURSOR']) ) {
var_dump($row_n);
}
}
}
function do_all($c)
{
$query = "SELECT t1.*, CURSOR( SELECT * FROM t2 ) AS CURSOR FROM t1";
$stmt = oci_parse($c, $query);
oci_execute($stmt);
$rc1 = oci_fetch_all($stmt, $res);
echo "Rows returned $rc1\n";
var_dump($res);
foreach ($res['CURSOR'] as $cv) {
echo "Getting nested cursor\n";
var_dump(oci_execute($cv));
$rc2 = oci_fetch_all($cv, $res2);
var_dump($res2);
}
}
echo "Test 1: Associate fetch of nested cursor\n";
do_assoc($c);
echo "\nTest 2: fetchall of nested cursor\n";
do_all($c);
// Cleanup
$s1 = oci_parse($c, $drop_1);
$s2 = oci_parse($c, $drop_2);
@oci_execute($s1);
@oci_execute($s2);
echo "Done\n";
?>
--EXPECTF--
Test 1: Associate fetch of nested cursor
Got row "11". Now getting nested cursor:
bool(true)
array(1) {
["ID2"]=>
string(2) "21"
}
array(1) {
["ID2"]=>
string(2) "22"
}
array(1) {
["ID2"]=>
string(2) "23"
}
Got row "12". Now getting nested cursor:
bool(true)
array(1) {
["ID2"]=>
string(2) "21"
}
array(1) {
["ID2"]=>
string(2) "22"
}
array(1) {
["ID2"]=>
string(2) "23"
}
Got row "13". Now getting nested cursor:
bool(true)
array(1) {
["ID2"]=>
string(2) "21"
}
array(1) {
["ID2"]=>
string(2) "22"
}
array(1) {
["ID2"]=>
string(2) "23"
}
Test 2: fetchall of nested cursor
Rows returned 3
array(2) {
["ID1"]=>
array(3) {
[0]=>
string(2) "11"
[1]=>
string(2) "12"
[2]=>
string(2) "13"
}
["CURSOR"]=>
array(3) {
[0]=>
resource(%d) of type (oci8 statement)
[1]=>
resource(%d) of type (oci8 statement)
[2]=>
resource(%d) of type (oci8 statement)
}
}
Getting nested cursor
bool(true)
array(1) {
["ID2"]=>
array(3) {
[0]=>
string(2) "21"
[1]=>
string(2) "22"
[2]=>
string(2) "23"
}
}
Getting nested cursor
bool(true)
array(1) {
["ID2"]=>
array(3) {
[0]=>
string(2) "21"
[1]=>
string(2) "22"
[2]=>
string(2) "23"
}
}
Getting nested cursor
bool(true)
array(1) {
["ID2"]=>
array(3) {
[0]=>
string(2) "21"
[1]=>
string(2) "22"
[2]=>
string(2) "23"
}
}
Done
--UEXPECTF--
Test 1: Associate fetch of nested cursor
Got row "11". Now getting nested cursor:
bool(true)
array(1) {
[u"ID2"]=>
unicode(2) "21"
}
array(1) {
[u"ID2"]=>
unicode(2) "22"
}
array(1) {
[u"ID2"]=>
unicode(2) "23"
}
Got row "12". Now getting nested cursor:
bool(true)
array(1) {
[u"ID2"]=>
unicode(2) "21"
}
array(1) {
[u"ID2"]=>
unicode(2) "22"
}
array(1) {
[u"ID2"]=>
unicode(2) "23"
}
Got row "13". Now getting nested cursor:
bool(true)
array(1) {
[u"ID2"]=>
unicode(2) "21"
}
array(1) {
[u"ID2"]=>
unicode(2) "22"
}
array(1) {
[u"ID2"]=>
unicode(2) "23"
}
Test 2: fetchall of nested cursor
Rows returned 3
array(2) {
[u"ID1"]=>
array(3) {
[0]=>
unicode(2) "11"
[1]=>
unicode(2) "12"
[2]=>
unicode(2) "13"
}
[u"CURSOR"]=>
array(3) {
[0]=>
resource(22) of type (oci8 statement)
[1]=>
resource(23) of type (oci8 statement)
[2]=>
resource(24) of type (oci8 statement)
}
}
Getting nested cursor
bool(true)
array(1) {
[u"ID2"]=>
array(3) {
[0]=>
unicode(2) "21"
[1]=>
unicode(2) "22"
[2]=>
unicode(2) "23"
}
}
Getting nested cursor
bool(true)
array(1) {
[u"ID2"]=>
array(3) {
[0]=>
unicode(2) "21"
[1]=>
unicode(2) "22"
[2]=>
unicode(2) "23"
}
}
Getting nested cursor
bool(true)
array(1) {
[u"ID2"]=>
array(3) {
[0]=>
unicode(2) "21"
[1]=>
unicode(2) "22"
[2]=>
unicode(2) "23"
}
}
Done
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php