1 changed files with 185 additions and 0 deletions
@ -0,0 +1,185 @@ |
|||
--TEST-- |
|||
InterBase: array handling |
|||
--SKIPIF-- |
|||
<?php include("skipif.inc"); ?> |
|||
--POST-- |
|||
--GET-- |
|||
--FILE-- |
|||
<?php |
|||
|
|||
require("interbase.inc"); |
|||
|
|||
ibase_connect($test_base); |
|||
|
|||
ibase_query( |
|||
"create table test7 ( |
|||
iter integer, |
|||
v_multi integer[10,10,10], |
|||
v_char char(100)[10], |
|||
v_date timestamp[10], |
|||
v_decimal decimal(18,3)[10], |
|||
v_double double precision[10], |
|||
v_float float[10], |
|||
v_integer integer[10], |
|||
v_numeric numeric(9,2)[10], |
|||
v_smallint smallint[10], |
|||
v_varchar varchar(1000)[10] |
|||
)"); |
|||
ibase_commit(); |
|||
|
|||
/* if timefmt not supported, hide error */ |
|||
@ibase_timefmt("%m/%d/%Y %H:%M:%S"); |
|||
|
|||
echo "insert\n"; |
|||
|
|||
for ($i = 1; $i <= 10; ++$i) { |
|||
for ($j = 1; $j <= 10; ++$j) { |
|||
for ($k = 1; $k <= 10; ++$k) { |
|||
$v_multi[$i][$j][$k] = $i * $j * $k; |
|||
} |
|||
} |
|||
} |
|||
|
|||
for($iter = 0; $iter < 3; $iter++) { |
|||
|
|||
/* prepare data */ |
|||
$v_char = array(); |
|||
$v_date = array(); |
|||
$v_decimal = array(); |
|||
$v_double = array(); |
|||
$v_float = array(); |
|||
$v_integer = array(); |
|||
$v_numeric = array(); |
|||
$v_smallint = array(); |
|||
$v_varchar = array(); |
|||
|
|||
for ($i = 1; $i <= 10; ++$i) { |
|||
$v_char[$i] = rand_str(100); |
|||
$v_date[$i] = rand_datetime(); |
|||
$v_decimal[$i] = rand_number(18,3); |
|||
$v_double[$i] = rand_number(20); |
|||
$v_float[$i] = rand_number(7); |
|||
$v_integer[$i] = rand_number(9,0); |
|||
$v_numeric[$i] = rand_number(9,2); |
|||
$v_smallint[$i] = rand_number(5) % 32767; |
|||
$v_varchar[$i] = rand_str(1000); |
|||
} |
|||
|
|||
ibase_query("insert into test7 |
|||
(iter,v_multi,v_char,v_date,v_decimal,v_double,v_float, |
|||
v_integer,v_numeric,v_smallint,v_varchar) |
|||
values (?,?,?,?,?,?,?,?,?,?,?)", |
|||
$iter, $v_multi, $v_char, $v_date, $v_decimal, $v_double, $v_float, |
|||
$v_integer, $v_numeric, $v_smallint, $v_varchar); |
|||
$sel = ibase_query("select * from test7 where iter = $iter"); |
|||
|
|||
$row = ibase_fetch_object($sel,IBASE_FETCH_ARRAYS); |
|||
for ($i = 1; $i <= 10; ++$i) { |
|||
|
|||
if(strncmp($row->V_CHAR[$i],$v_char[$i],strlen($v_char[$i])) != 0) { |
|||
echo " CHAR[$i] fail:\n"; |
|||
echo " in: ".$v_char[$i]."\n"; |
|||
echo " out: ".$row->V_CHAR[$i]."\n"; |
|||
} |
|||
if($row->V_DATE[$i] != $v_date[$i]) { |
|||
echo " DATE[$i] fail\n"; |
|||
echo " in: ".$v_date[$i]."\n"; |
|||
echo " out: ".$row->V_DATE[$i]."\n"; |
|||
} |
|||
if($row->V_DECIMAL[$i] != $v_decimal[$i]) { |
|||
echo " DECIMAL[$i] fail\n"; |
|||
echo " in: ".$v_decimal[$i]."\n"; |
|||
echo " out: ".$row->V_DECIMAL[$i]."\n"; |
|||
} |
|||
if(abs($row->V_DOUBLE[$i] - $v_double[$i]) > abs($v_double[$i] / 1E15)) { |
|||
echo " DOUBLE[$i] fail\n"; |
|||
echo " in: ".$v_double[$i]."\n"; |
|||
echo " out: ".$row->V_DOUBLE[$i]."\n"; |
|||
} |
|||
if(abs($row->V_FLOAT[$i] - $v_float[$i]) > abs($v_float[$i] / 1E7)) { |
|||
echo " FLOAT[$i] fail\n"; |
|||
echo " in: ".$v_float[$i]."\n"; |
|||
echo " out: ".$row->V_FLOAT[$i]."\n"; |
|||
} |
|||
if($row->V_INTEGER[$i] != $v_integer[$i]) { |
|||
echo " INTEGER[$i] fail\n"; |
|||
echo " in: ".$v_integer[$i]."\n"; |
|||
echo " out: ".$row->V_INTEGER[$i]."\n"; |
|||
} |
|||
if ($row->V_NUMERIC[$i] != $v_numeric[$i]) { |
|||
echo " NUMERIC[$i] fail\n"; |
|||
echo " in: ".$v_numeric[$i]."\n"; |
|||
echo " out: ".$row->V_NUMERIC[$i]."\n"; |
|||
} |
|||
if ($row->V_SMALLINT[$i] != $v_smallint[$i]) { |
|||
echo " SMALLINT[$i] fail\n"; |
|||
echo " in: ".$v_smallint[$i]."\n"; |
|||
echo " out: ".$row->V_SMALLINT[$i]."\n"; |
|||
} |
|||
if ($row->V_VARCHAR[$i] != $v_varchar[$i]) { |
|||
echo " VARCHAR[$i] fail:\n"; |
|||
echo " in: ".$v_varchar[$i]."\n"; |
|||
echo " out: ".$row->V_VARCHAR[$i]."\n"; |
|||
} |
|||
} |
|||
ibase_free_result($sel); |
|||
}/* for($iter) */ |
|||
|
|||
echo "select\n"; |
|||
|
|||
$sel = ibase_query("SELECT v_multi[5,5,5],v_multi[10,10,10] FROM test7 WHERE iter = 0"); |
|||
print_r(ibase_fetch_row($sel)); |
|||
ibase_free_result($sel); |
|||
|
|||
for($iter = 1; $iter <= 3; $iter++) { |
|||
|
|||
if(!($sel = ibase_query( |
|||
"select iter from test7 where v_char[$iter] LIKE ?", $v_char[$iter]."%")) || |
|||
!ibase_fetch_row($sel)) { |
|||
echo "CHAR fail\n"; |
|||
} |
|||
ibase_free_result($sel); |
|||
|
|||
if(!($sel = ibase_query( |
|||
"select iter from test7 where v_date[$iter] = ?", $v_date[$iter])) || |
|||
!ibase_fetch_row($sel)) { |
|||
echo "DATE fail\n"; |
|||
} |
|||
ibase_free_result($sel); |
|||
if(!($sel = ibase_query( |
|||
"select iter from test7 where v_decimal[$iter] = ?", $v_decimal[$iter])) || |
|||
!ibase_fetch_row($sel)) { |
|||
echo "DECIMAL fail\n"; |
|||
} |
|||
ibase_free_result($sel); |
|||
if(!($sel = ibase_query( |
|||
"select iter from test7 where v_integer[$iter] = ?", $v_integer[$iter])) || |
|||
!ibase_fetch_row($sel)) { |
|||
echo "INTEGER fail\n"; |
|||
} |
|||
ibase_free_result($sel); |
|||
if(!($sel = ibase_query( |
|||
"select iter from test7 where v_numeric[$iter] = ?", $v_numeric[$iter])) || |
|||
!ibase_fetch_row($sel)) { |
|||
echo "NUMERIC fail\n"; |
|||
} |
|||
ibase_free_result($sel); |
|||
if(!($sel = ibase_query( |
|||
"select iter from test7 where v_smallint[$iter] = ?", $v_smallint[$iter])) || |
|||
!ibase_fetch_row($sel)) { |
|||
echo "SMALLINT fail\n"; |
|||
} |
|||
ibase_free_result($sel); |
|||
} |
|||
ibase_close(); |
|||
echo "end of test\n"; |
|||
?> |
|||
--EXPECT-- |
|||
insert |
|||
select |
|||
Array |
|||
( |
|||
[0] => 125 |
|||
[1] => 1000 |
|||
) |
|||
end of test |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue