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

1.1     ! misho       1: --TEST--
        !             2: Bug #37581 (oci_bind_array_by_name clobbers input array when using SQLT_AFC, AVC)
        !             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: $p1 = "create or replace package ARRAYBINDPKG1 as
        !            14: type str_array is table of char(2) index by binary_integer;
        !            15: procedure array_bind(in_str in str_array, out_str out string);
        !            16: end ARRAYBINDPKG1;";
        !            17: 
        !            18: $p2 = "create or replace package body ARRAYBINDPKG1 as
        !            19:   procedure array_bind(in_str in str_array, out_str out string) is
        !            20:   begin
        !            21:     for i in 1 .. in_str.count loop
        !            22:       out_str := in_str(i);
        !            23:     end loop;
        !            24:   end array_bind;
        !            25: end ARRAYBINDPKG1;";
        !            26: 
        !            27: $s1 = oci_parse($c, $p1);
        !            28: $s2 = oci_parse($c, $p2);
        !            29: oci_execute($s1);
        !            30: oci_execute($s2);
        !            31: 
        !            32: 
        !            33: $stmt           = oci_parse($c,'begin ARRAYBINDPKG1.array_bind(:in_arr, :out_str); end;');
        !            34: $strings        = array('A','B','C','D','E');
        !            35: 
        !            36: oci_bind_array_by_name($stmt,':in_arr',$strings,5,1,SQLT_AFC);
        !            37: oci_bind_by_name($stmt,':out_str',$result,10);
        !            38: 
        !            39: oci_execute($stmt);
        !            40: var_dump($strings);
        !            41: 
        !            42: oci_execute($stmt);
        !            43: var_dump($strings);
        !            44: 
        !            45: echo "Done\n";
        !            46: ?>
        !            47: --EXPECTF--    
        !            48: array(5) {
        !            49:   [0]=>
        !            50:   string(1) "A"
        !            51:   [1]=>
        !            52:   string(1) "B"
        !            53:   [2]=>
        !            54:   string(1) "C"
        !            55:   [3]=>
        !            56:   string(1) "D"
        !            57:   [4]=>
        !            58:   string(1) "E"
        !            59: }
        !            60: array(5) {
        !            61:   [0]=>
        !            62:   string(1) "A"
        !            63:   [1]=>
        !            64:   string(1) "B"
        !            65:   [2]=>
        !            66:   string(1) "C"
        !            67:   [3]=>
        !            68:   string(1) "D"
        !            69:   [4]=>
        !            70:   string(1) "E"
        !            71: }
        !            72: Done

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