Annotation of embedaddon/php/ext/oci8/tests/bug37581.phpt, revision 1.1.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>