Annotation of embedaddon/php/ext/oci8/tests/bug38173.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #38173 (Freeing nested cursors causes OCI8 to segfault)
! 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: $create_1 = "CREATE TABLE t1 (id INTEGER)";
! 14: $create_2 = "CREATE TABLE t2 (id INTEGER)";
! 15: $drop_1 = "DROP TABLE t1";
! 16: $drop_2 = "DROP TABLE t2";
! 17:
! 18: $s1 = oci_parse($c, $drop_1);
! 19: $s2 = oci_parse($c, $drop_2);
! 20: @oci_execute($s1);
! 21: @oci_execute($s2);
! 22:
! 23: $s1 = oci_parse($c, $create_1);
! 24: $s2 = oci_parse($c, $create_2);
! 25: oci_execute($s1);
! 26: oci_execute($s2);
! 27:
! 28: for($i=0; $i < 5; $i++) {
! 29: $insert = "INSERT INTO t1 VALUES(".$i.")";
! 30: $s = oci_parse($c, $insert);
! 31: oci_execute($s);
! 32: }
! 33:
! 34: for($i=0; $i < 5; $i++) {
! 35: $insert = "INSERT INTO t2 VALUES(".$i.")";
! 36: $s = oci_parse($c, $insert);
! 37: oci_execute($s);
! 38: }
! 39:
! 40: $query ="
! 41: SELECT
! 42: t1.*,
! 43: CURSOR( SELECT * FROM t2 ) as cursor
! 44: FROM
! 45: t1
! 46: ";
! 47:
! 48: $sth = oci_parse($c, $query);
! 49: oci_execute($sth);
! 50:
! 51: // dies on oci_free_statement on 2nd pass through loop
! 52: while ( $row = oci_fetch_assoc($sth) ) {
! 53: print "Got row!\n";
! 54: var_dump(oci_execute($row['CURSOR']));
! 55: var_dump(oci_free_statement($row['CURSOR']));
! 56: }
! 57:
! 58: $s1 = oci_parse($c, $drop_1);
! 59: $s2 = oci_parse($c, $drop_2);
! 60: @oci_execute($s1);
! 61: @oci_execute($s2);
! 62:
! 63: echo "Done\n";
! 64:
! 65: ?>
! 66: --EXPECT--
! 67: Got row!
! 68: bool(true)
! 69: bool(true)
! 70: Got row!
! 71: bool(true)
! 72: bool(true)
! 73: Got row!
! 74: bool(true)
! 75: bool(true)
! 76: Got row!
! 77: bool(true)
! 78: bool(true)
! 79: Got row!
! 80: bool(true)
! 81: bool(true)
! 82: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>