Created
February 5, 2012 16:53
-
-
Save mariuz/1746550 to your computer and use it in GitHub Desktop.
I test the decimal[18,3] insertion issue http://gcov.php.net/viewer.php?version=PHP_HEAD&func=tests&file=ext%2Finterbase%2Ftests%2F007.phpt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php /* $Id: 007.phpt 160078 2004-05-30 16:20:25Z abies $ */ | |
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 */ | |
ini_set('ibase.timestampformat',"%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] = -195264376833689.984; | |
$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"; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment