Annotation of embedaddon/php/ext/interbase/tests/006.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
                      2: InterBase: binding (may take a while)
                      3: --SKIPIF--
                      4: <?php include("skipif.inc"); ?>
                      5: --FILE--
1.1.1.2 ! misho       6: <?php /* $Id$ */
1.1       misho       7: 
                      8:        require("interbase.inc");
                      9:        
                     10:        ibase_connect($test_base);
                     11:        
                     12:        ibase_query(
                     13:                "create table test6 (
                     14:                        iter            integer,
                     15:                        v_char          char(1000),
                     16:                        v_date      timestamp,
                     17:                        v_decimal   decimal(12,3),
                     18:                        v_double        double precision,
                     19:                        v_float     float,
                     20:                        v_integer   integer,
                     21:                        v_numeric   numeric(4,2),
                     22:                        v_smallint  smallint,
                     23:                        v_varchar   varchar(10000)
                     24:                        )");
                     25:        ibase_query(
                     26:                "create procedure add1 (arg integer)
                     27:                returns (result integer)
                     28:                as 
                     29:                begin
                     30:                        result = arg +1;
                     31:                end");
                     32:        ibase_commit();
                     33: 
                     34:        /* if timefmt not supported, hide error */
                     35:        ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
                     36: 
                     37:        echo "insert\n";
                     38: 
                     39:        for($iter = 0; $iter < 3; $iter++) {
                     40:                /* prepare data  */
                     41:                $v_char = rand_str(1000);
                     42:                $v_date = rand_datetime();
                     43:                $v_decimal = rand_number(12,3);
                     44:                $v_double  = rand_number(20);
                     45:                $v_float   = rand_number(7);
                     46:                $v_integer = rand_number(9,0);
                     47:                $v_numeric = rand_number(4,2);
                     48:                $v_smallint = rand_number(5) % 32767;
                     49:                $v_varchar = rand_str(10000);
                     50: 
                     51:                ibase_query("insert into test6
                     52:                        (iter,v_char,v_date,v_decimal,v_double,v_float,
                     53:                        v_integer,v_numeric,v_smallint,v_varchar)
                     54:                        values (?,?,?,?,?,?,?,?,?,?)",
                     55:                        $iter, $v_char, $v_date, $v_decimal, $v_double, $v_float,
                     56:                        $v_integer, $v_numeric, $v_smallint, $v_varchar);
                     57:                $sel = ibase_query("select * from test6 where iter = ?", $iter);
                     58: 
                     59:                $row = ibase_fetch_object($sel);
                     60:                if(substr($row->V_CHAR,0,strlen($v_char)) != $v_char) {
                     61:                        echo " CHAR fail:\n";
                     62:                        echo " in:  $v_char\n";
                     63:                        echo " out: $row->V_CHAR\n";
                     64:                }
                     65:                if($row->V_DATE != $v_date) {
                     66:                        echo " DATE fail\n";
                     67:                        echo " in:  $v_date\n";
                     68:                        echo " out: $row->V_DATE\n";
                     69:                }
                     70:                if($row->V_DECIMAL != $v_decimal) {
                     71:                        echo " DECIMAL fail\n";
                     72:                        echo " in:  $v_decimal\n";
                     73:                        echo " out: $row->V_DECIMAL\n";
                     74:                }
                     75:                if(abs($row->V_DOUBLE - $v_double) > abs($v_double / 1E15)) {
                     76:                        echo " DOUBLE fail\n";
                     77:                        echo " in:  $v_double\n";
                     78:                        echo " out: $row->V_DOUBLE\n";
                     79:                }
                     80:                if(abs($row->V_FLOAT - $v_float) > abs($v_float / 1E7)) {
                     81:                        echo " FLOAT fail\n";
                     82:                        echo " in:  $v_float\n";
                     83:                        echo " out: $row->V_FLOAT\n";
                     84:                }
                     85:                if($row->V_INTEGER != $v_integer) {
                     86:                        echo " INTEGER fail\n";
                     87:                        echo " in:  $v_integer\n";
                     88:                        echo " out: $row->V_INTEGER\n";
                     89:                }
                     90:                if ($row->V_NUMERIC != $v_numeric) {
                     91:                        echo " NUMERIC fail\n";
                     92:                        echo " in:  $v_numeric\n";
                     93:                        echo " out: $row->V_NUMERIC\n";
                     94:                }
                     95:                if ($row->V_SMALLINT != $v_smallint) {
                     96:                        echo " SMALLINT fail\n";
                     97:                        echo " in:  $v_smallint\n";
                     98:                        echo " out: $row->V_SMALLINT\n";
                     99:                }
                    100:                if ($row->V_VARCHAR != $v_varchar) {
                    101:                        echo " VARCHAR fail:\n";
                    102:                        echo " in:  $v_varchar\n";
                    103:                        echo " out: $row->V_VARCHAR\n";
                    104:                }
                    105:                ibase_free_result($sel);
                    106:        }/* for($iter)*/
                    107: 
                    108:        echo "select\n";
                    109:        for($iter = 0; $iter < 3; $iter++) {
                    110:                /* prepare data  */
                    111:                $v_char = rand_str(1000);
                    112:                $v_date = (int)rand_number(10,0,0);
                    113:                $v_decimal = rand_number(12,3);
                    114:                $v_double  = rand_number(20);
                    115:                $v_float   = rand_number(7);
                    116:                $v_integer = rand_number(9,0);
                    117:                $v_numeric = rand_number(4,2);
                    118:                $v_smallint = rand_number(5) % 32767;
                    119:                $v_varchar = rand_str(10000);
                    120: 
                    121:                /* clear table*/
                    122:                ibase_query("delete from test6");
                    123: 
                    124:                /* make one record */
                    125:                ibase_query("insert into test6
                    126:                        (iter, v_char,v_date,v_decimal,
                    127:                        v_integer,v_numeric,v_smallint,v_varchar)
                    128:                        values (666, '$v_char',?,$v_decimal, $v_integer,
                    129:                        $v_numeric, $v_smallint, '$v_varchar')",$v_date);
                    130: 
                    131:                /* test all types */
                    132:                if(!($sel = ibase_query(
                    133:                        "select iter from test6 where v_char = ?", $v_char)) ||
                    134:                        !ibase_fetch_row($sel)) {
                    135:                        echo "CHAR fail\n";
                    136:                }
                    137:                ibase_free_result($sel);
                    138:                if(!($sel = ibase_query(
                    139:                        "select iter from test6 where v_date = ?", $v_date)) ||
                    140:                        !ibase_fetch_row($sel)) {
                    141:                        echo "DATE fail\n";
                    142:                }
                    143:                ibase_free_result($sel);
                    144:                if(!($sel = ibase_query(
                    145:                        "select iter from test6 where v_decimal = ?", $v_decimal)) ||
                    146:                        !ibase_fetch_row($sel)) {
                    147:                        echo "DECIMAL fail\n";
                    148:                }
                    149:                ibase_free_result($sel);
                    150:                if(!($sel = ibase_query(
                    151:                        "select iter from test6 where v_integer = ?", $v_integer)) ||
                    152:                        !ibase_fetch_row($sel)) {
                    153:                        echo "INTEGER fail\n";
                    154:                }
                    155:                ibase_free_result($sel);
                    156:                if(!($sel = ibase_query(
                    157:                        "select iter from test6 where v_numeric = ?", $v_numeric)) ||
                    158:                        !ibase_fetch_row($sel)) {
                    159:                        echo "NUMERIC fail\n";
                    160:                }
                    161:                ibase_free_result($sel);
                    162:                if(!($sel = ibase_query(
                    163:                        "select iter from test6 where v_smallint = ?", $v_smallint)) ||
                    164:                        !ibase_fetch_row($sel)) {
                    165:                        echo "SMALLINT fail\n";
                    166:                }
                    167:                ibase_free_result($sel);
                    168:                if(!($sel = ibase_query(
                    169:                        "select iter from test6 where v_varchar = ?", $v_varchar)) ||
                    170:                        !ibase_fetch_row($sel)) {
                    171:                        echo "VARCHAR fail\n";
                    172:                }
                    173:                ibase_free_result($sel);
                    174:         
                    175:        } /*for iter*/
                    176: 
                    177:        echo "prepare and exec insert\n";
                    178: 
                    179:     /* prepare table */
                    180:        ibase_query("delete from test6");
                    181: 
                    182:        /* prepare query */
                    183:        $query = ibase_prepare(
                    184:                "insert into test6 (v_integer) values (?)");
                    185: 
                    186:        for($i = 0; $i < 10; $i++) {
                    187:                ibase_execute($query, $i);
                    188:        }
                    189: 
                    190:        out_table("test6");
                    191: 
                    192:        ibase_free_query($query);
                    193: 
                    194:        echo "prepare and exec select\n";
                    195: 
                    196:        /* prepare query */
                    197:        $query = ibase_prepare("select * from test6
                    198:                where v_integer between ? and ?");
                    199: 
                    200:        $low_border = 2;
                    201:        $high_border = 6;
                    202: 
                    203:        $res = ibase_execute($query, $low_border, $high_border);
                    204:        out_result($res, "test6");
                    205:        ibase_free_result($res);
                    206: 
                    207:        $low_border = 0;
                    208:        $high_border = 4;
                    209:        $res = ibase_execute($query, $low_border, $high_border);
                    210:        out_result($res, "test6");
                    211:        ibase_free_result($res);
                    212: 
                    213:        $res = ibase_execute($query, "5", 7.499);
                    214:        out_result($res, "test6");
                    215:        ibase_free_result($res);
                    216: 
                    217:        ibase_free_query($query);
                    218: 
                    219:        /* test execute procedure */
                    220:        $query = ibase_prepare("execute procedure add1(?)");
                    221:        $res = array();
                    222:        for ($i = 0; $i < 10; $i++) {
                    223:                $res[] = ibase_execute($query,$i);
                    224:        }
                    225:        ibase_free_query($query);
                    226:        foreach ($res as $r) {
                    227:                out_result($r, "proc add1");
                    228:                ibase_free_result($r);
                    229:        }
                    230: 
                    231:        ibase_close();
                    232:        echo "end of test\n";
                    233: ?>
                    234: --EXPECT--
                    235: insert
                    236: select
                    237: prepare and exec insert
                    238: --- test6 ---
                    239:                                                0                               
                    240:                                                1                               
                    241:                                                2                               
                    242:                                                3                               
                    243:                                                4                               
                    244:                                                5                               
                    245:                                                6                               
                    246:                                                7                               
                    247:                                                8                               
                    248:                                                9                               
                    249: ---
                    250: prepare and exec select
                    251: --- test6 ---
                    252:                                                2                               
                    253:                                                3                               
                    254:                                                4                               
                    255:                                                5                               
                    256:                                                6                               
                    257: ---
                    258: --- test6 ---
                    259:                                                0                               
                    260:                                                1                               
                    261:                                                2                               
                    262:                                                3                               
                    263:                                                4                               
                    264: ---
                    265: --- test6 ---
                    266:                                                5                               
                    267:                                                6                               
                    268:                                                7                               
                    269: ---
                    270: --- proc add1 ---
                    271: 1      
                    272: ---
                    273: --- proc add1 ---
                    274: 2      
                    275: ---
                    276: --- proc add1 ---
                    277: 3      
                    278: ---
                    279: --- proc add1 ---
                    280: 4      
                    281: ---
                    282: --- proc add1 ---
                    283: 5      
                    284: ---
                    285: --- proc add1 ---
                    286: 6      
                    287: ---
                    288: --- proc add1 ---
                    289: 7      
                    290: ---
                    291: --- proc add1 ---
                    292: 8      
                    293: ---
                    294: --- proc add1 ---
                    295: 9      
                    296: ---
                    297: --- proc add1 ---
                    298: 10     
                    299: ---
                    300: end of test
                    301: 

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