Annotation of embedaddon/php/ext/oci8/tests/bug40415.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Bug #40415 (Using oci_fetchall with nested cursors)
        !             3: --SKIPIF--
        !             4: <?php
        !             5: $target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
        !             6: require(dirname(__FILE__).'/skipif.inc');
        !             7: ?> 
        !             8: --FILE--
        !             9: <?php 
        !            10: 
        !            11: require dirname(__FILE__)."/connect.inc";
        !            12: 
        !            13: // Setup
        !            14: 
        !            15: $create_1 = "CREATE TABLE t1 (id1 INTEGER)";
        !            16: $create_2 = "CREATE TABLE t2 (id2 INTEGER)";
        !            17: $drop_1 = "DROP TABLE t1";
        !            18: $drop_2 = "DROP TABLE t2";
        !            19: 
        !            20: $s1 = oci_parse($c, $drop_1);
        !            21: $s2 = oci_parse($c, $drop_2);
        !            22: @oci_execute($s1);
        !            23: @oci_execute($s2);
        !            24: 
        !            25: $s1 = oci_parse($c, $create_1);
        !            26: $s2 = oci_parse($c, $create_2);
        !            27: oci_execute($s1);
        !            28: oci_execute($s2);
        !            29: 
        !            30: for($i=1; $i < 4; $i++) {
        !            31:     $insert = "INSERT INTO t1 VALUES(1".$i.")";
        !            32:     $s = oci_parse($c, $insert);
        !            33:     oci_execute($s);
        !            34: }
        !            35: 
        !            36: for($i=1; $i < 4; $i++) {
        !            37:     $insert = "INSERT INTO t2 VALUES(2".$i.")";
        !            38:     $s = oci_parse($c, $insert);
        !            39:     oci_execute($s);
        !            40: }
        !            41: 
        !            42: 
        !            43: function do_assoc($c) 
        !            44: {
        !            45:     $query = "SELECT t1.*, CURSOR( SELECT * FROM t2 ) AS CURSOR FROM t1";
        !            46: 
        !            47:     $stmt = oci_parse($c, $query);
        !            48:     oci_execute($stmt);
        !            49:     
        !            50:     while ($row = oci_fetch_assoc($stmt)) {
        !            51:         print "Got row \"".$row['ID1']."\". Now getting nested cursor:\n";
        !            52:         var_dump(oci_execute($row['CURSOR']));
        !            53:         while ($row_n = oci_fetch_assoc($row['CURSOR']) ) {
        !            54:             var_dump($row_n);
        !            55:         }
        !            56:     }
        !            57: }
        !            58: 
        !            59: function do_all($c) 
        !            60: {
        !            61:     $query = "SELECT t1.*, CURSOR( SELECT * FROM t2 ) AS CURSOR FROM t1";
        !            62: 
        !            63:     $stmt = oci_parse($c, $query);
        !            64:     oci_execute($stmt);
        !            65:     
        !            66:     $rc1 = oci_fetch_all($stmt, $res);
        !            67:     
        !            68:     echo "Rows returned $rc1\n";
        !            69: 
        !            70:     var_dump($res);
        !            71: 
        !            72:     foreach ($res['CURSOR'] as $cv) {
        !            73:         echo "Getting nested cursor\n";
        !            74:         var_dump(oci_execute($cv));
        !            75:         $rc2 = oci_fetch_all($cv, $res2);
        !            76:         var_dump($res2);
        !            77:     }
        !            78: }
        !            79: 
        !            80: 
        !            81: 
        !            82: echo "Test 1: Associate fetch of nested cursor\n";
        !            83: do_assoc($c);
        !            84: 
        !            85: echo "\nTest 2: fetchall of nested cursor\n";
        !            86: do_all($c);
        !            87: 
        !            88: 
        !            89: // Cleanup 
        !            90: $s1 = oci_parse($c, $drop_1);
        !            91: $s2 = oci_parse($c, $drop_2);
        !            92: @oci_execute($s1);
        !            93: @oci_execute($s2);
        !            94: 
        !            95: echo "Done\n";
        !            96: ?>
        !            97: --EXPECTF--
        !            98: Test 1: Associate fetch of nested cursor
        !            99: Got row "11". Now getting nested cursor:
        !           100: bool(true)
        !           101: array(1) {
        !           102:   ["ID2"]=>
        !           103:   string(2) "21"
        !           104: }
        !           105: array(1) {
        !           106:   ["ID2"]=>
        !           107:   string(2) "22"
        !           108: }
        !           109: array(1) {
        !           110:   ["ID2"]=>
        !           111:   string(2) "23"
        !           112: }
        !           113: Got row "12". Now getting nested cursor:
        !           114: bool(true)
        !           115: array(1) {
        !           116:   ["ID2"]=>
        !           117:   string(2) "21"
        !           118: }
        !           119: array(1) {
        !           120:   ["ID2"]=>
        !           121:   string(2) "22"
        !           122: }
        !           123: array(1) {
        !           124:   ["ID2"]=>
        !           125:   string(2) "23"
        !           126: }
        !           127: Got row "13". Now getting nested cursor:
        !           128: bool(true)
        !           129: array(1) {
        !           130:   ["ID2"]=>
        !           131:   string(2) "21"
        !           132: }
        !           133: array(1) {
        !           134:   ["ID2"]=>
        !           135:   string(2) "22"
        !           136: }
        !           137: array(1) {
        !           138:   ["ID2"]=>
        !           139:   string(2) "23"
        !           140: }
        !           141: 
        !           142: Test 2: fetchall of nested cursor
        !           143: Rows returned 3
        !           144: array(2) {
        !           145:   ["ID1"]=>
        !           146:   array(3) {
        !           147:     [0]=>
        !           148:     string(2) "11"
        !           149:     [1]=>
        !           150:     string(2) "12"
        !           151:     [2]=>
        !           152:     string(2) "13"
        !           153:   }
        !           154:   ["CURSOR"]=>
        !           155:   array(3) {
        !           156:     [0]=>
        !           157:     resource(%d) of type (oci8 statement)
        !           158:     [1]=>
        !           159:     resource(%d) of type (oci8 statement)
        !           160:     [2]=>
        !           161:     resource(%d) of type (oci8 statement)
        !           162:   }
        !           163: }
        !           164: Getting nested cursor
        !           165: bool(true)
        !           166: array(1) {
        !           167:   ["ID2"]=>
        !           168:   array(3) {
        !           169:     [0]=>
        !           170:     string(2) "21"
        !           171:     [1]=>
        !           172:     string(2) "22"
        !           173:     [2]=>
        !           174:     string(2) "23"
        !           175:   }
        !           176: }
        !           177: Getting nested cursor
        !           178: bool(true)
        !           179: array(1) {
        !           180:   ["ID2"]=>
        !           181:   array(3) {
        !           182:     [0]=>
        !           183:     string(2) "21"
        !           184:     [1]=>
        !           185:     string(2) "22"
        !           186:     [2]=>
        !           187:     string(2) "23"
        !           188:   }
        !           189: }
        !           190: Getting nested cursor
        !           191: bool(true)
        !           192: array(1) {
        !           193:   ["ID2"]=>
        !           194:   array(3) {
        !           195:     [0]=>
        !           196:     string(2) "21"
        !           197:     [1]=>
        !           198:     string(2) "22"
        !           199:     [2]=>
        !           200:     string(2) "23"
        !           201:   }
        !           202: }
        !           203: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>