]> granicus.if.org Git - php/commitdiff
new tests by Chris and me
authorAntony Dovgal <tony2001@php.net>
Thu, 1 Mar 2007 23:28:51 +0000 (23:28 +0000)
committerAntony Dovgal <tony2001@php.net>
Thu, 1 Mar 2007 23:28:51 +0000 (23:28 +0000)
ext/oci8/tests/bug40415.phpt [new file with mode: 0644]
ext/oci8/tests/lob_029.phpt
ext/oci8/tests/lob_037.phpt [new file with mode: 0644]
ext/oci8/tests/lob_038.phpt [new file with mode: 0644]
ext/oci8/tests/lob_039.phpt [new file with mode: 0644]

diff --git a/ext/oci8/tests/bug40415.phpt b/ext/oci8/tests/bug40415.phpt
new file mode 100644 (file)
index 0000000..05cee22
--- /dev/null
@@ -0,0 +1,307 @@
+--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
index fb49dce2053cec6680541cef2b2dee509ce0b701..6c310981b886ed7ce52b54af9ca5ba33e3ce54b9 100644 (file)
@@ -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 @@ if (empty($oracle_on_localhost)) die("skip this test won't work with remote Orac
 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 @@ oci_fetch_all($s, $res);
 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 @@ var_dump($res);
 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 @@ oci_execute($s);
 
 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
diff --git a/ext/oci8/tests/lob_037.phpt b/ext/oci8/tests/lob_037.phpt
new file mode 100644 (file)
index 0000000..8137037
Binary files /dev/null and b/ext/oci8/tests/lob_037.phpt differ
diff --git a/ext/oci8/tests/lob_038.phpt b/ext/oci8/tests/lob_038.phpt
new file mode 100644 (file)
index 0000000..ebfc4a3
Binary files /dev/null and b/ext/oci8/tests/lob_038.phpt differ
diff --git a/ext/oci8/tests/lob_039.phpt b/ext/oci8/tests/lob_039.phpt
new file mode 100644 (file)
index 0000000..93251c8
--- /dev/null
@@ -0,0 +1,65 @@
+--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