003.phpt 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. --TEST--
  2. InterBase: misc sql types (may take a while)
  3. --SKIPIF--
  4. <?php include("skipif.inc"); ?>
  5. --FILE--
  6. <?php /* $Id$ */
  7. require("interbase.inc");
  8. ibase_connect($test_base);
  9. ibase_query(
  10. "create table test3 (
  11. iter integer not null,
  12. v_char char(1000),
  13. v_date timestamp,
  14. v_decimal4_2 decimal(4,2),
  15. v_decimal4_0 decimal(4,0),
  16. v_decimal7_2 decimal(7,2),
  17. v_decimal7_0 decimal(7,0),
  18. v_numeric15_15 numeric(15,15),
  19. v_numeric15_0 numeric(15,0),
  20. v_double double precision,
  21. v_float float,
  22. v_integer integer,
  23. v_smallint smallint,
  24. v_varchar varchar(10000)
  25. )");
  26. ibase_commit();
  27. /* should fail, but gracefully */
  28. @ibase_query("insert into test3 (iter) values (?)", null);
  29. /* if timefmt is not supported, suppress error here */
  30. ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
  31. for($iter = 0; $iter < 10; $iter++){
  32. /* prepare data */
  33. $v_char = rand_str(1000);
  34. $v_date = rand_datetime();
  35. $v_decimal4_2 = rand_number(4,2);
  36. $v_decimal4_0 = rand_number(4,0);
  37. $v_decimal7_2 = rand_number(7,2);
  38. $v_decimal7_0 = rand_number(7,0);
  39. $v_numeric15_15 = rand_number(15,15);
  40. $v_numeric15_0 = $iter ? rand_number(15,0) : 0;
  41. $v_double = rand_number(18);
  42. $v_float = rand_number(7);
  43. $v_integer = rand_number(9,0);
  44. $v_smallint = rand_number(5) % 32767;
  45. $v_varchar = rand_str(10000);
  46. ibase_query(
  47. "insert into test3 (iter, v_char,v_date,v_decimal4_2, v_decimal4_0, v_decimal7_2, v_decimal7_0,v_numeric15_15, v_numeric15_0,v_double,v_float,v_integer,v_smallint,v_varchar)
  48. values ($iter, '$v_char','$v_date',$v_decimal4_2, $v_decimal4_0, $v_decimal7_2, $v_decimal7_0,$v_numeric15_15, $v_numeric15_0,$v_double,$v_float,$v_integer,$v_smallint,'$v_varchar')");
  49. $sel = ibase_query("select * from test3 where iter = $iter");
  50. $row = ibase_fetch_object($sel);
  51. if(substr($row->V_CHAR,0,strlen($v_char)) != $v_char){
  52. echo " CHAR fail:\n";
  53. echo " in: $v_char\n";
  54. echo " out: $row->V_CHAR\n";
  55. }
  56. if($row->V_DATE != $v_date){
  57. echo " DATE fail\n";
  58. echo " in: $v_date\n";
  59. echo " out: $row->V_DATE\n";
  60. }
  61. if($row->V_DECIMAL4_2 != $v_decimal4_2){
  62. echo " DECIMAL4_2 fail\n";
  63. echo " in: $v_decimal4_2\n";
  64. echo " out: $row->V_DECIMAL4_2\n";
  65. }
  66. if($row->V_DECIMAL4_0 != $v_decimal4_0){
  67. echo " DECIMAL4_0 fail\n";
  68. echo " in: $v_decimal4_0\n";
  69. echo " out: $row->V_DECIMAL4_0\n";
  70. }
  71. if($row->V_DECIMAL7_2 != $v_decimal7_2){
  72. echo " DECIMAL7_2 fail\n";
  73. echo " in: $v_decimal7_2\n";
  74. echo " out: $row->V_DECIMAL7_2\n";
  75. }
  76. if($row->V_DECIMAL7_0 != $v_decimal7_0){
  77. echo " DECIMAL7_0 fail\n";
  78. echo " in: $v_decimal7_0\n";
  79. echo " out: $row->V_DECIMAL7_0\n";
  80. }
  81. if($row->V_NUMERIC15_15 != $v_numeric15_15){
  82. echo " NUMERIC15_15 fail\n";
  83. echo " in: $v_numeric15_15\n";
  84. echo " out: $row->V_NUMERIC15_15\n";
  85. }
  86. if($row->V_NUMERIC15_0 != (string)$v_numeric15_0){
  87. echo " NUMERIC15_0 fail\n";
  88. echo " in: $v_numeric15_0\n";
  89. echo " out: $row->V_NUMERIC15_0\n";
  90. }
  91. if(abs($row->V_DOUBLE - $v_double) > abs($v_double / 1E15)){
  92. echo " DOUBLE fail\n";
  93. echo " in: $v_double\n";
  94. echo " out: $row->V_DOUBLE\n";
  95. }
  96. if(abs($row->V_FLOAT - $v_float) > abs($v_float / 1E7)){
  97. echo " FLOAT fail\n";
  98. echo " in: $v_float\n";
  99. echo " out: $row->V_FLOAT\n";
  100. }
  101. if($row->V_INTEGER != $v_integer){
  102. echo " INTEGER fail\n";
  103. echo " in: $v_integer\n";
  104. echo " out: $row->V_INTEGER\n";
  105. }
  106. if($row->V_SMALLINT != $v_smallint){
  107. echo " SMALLINT fail\n";
  108. echo " in: $v_smallint\n";
  109. echo " out: $row->V_SMALLINT\n";
  110. }
  111. if(substr($row->V_VARCHAR,0,strlen($v_varchar)) != $v_varchar){
  112. echo " VARCHAR fail:\n";
  113. echo " in: $v_varchar\n";
  114. echo " out: $row->V_VARCHAR\n";
  115. }
  116. ibase_free_result($sel);
  117. } /* for($iter) */
  118. /* check for correct handling of duplicate field names */
  119. $q = ibase_query('SELECT 1 AS id, 2 AS id, 3 AS id, 4 AS id, 5 AS id, 6 AS id, 7 AS id, 8 AS id, 9 AS id,
  120. 10 AS id, 11 AS id, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 FROM rdb$database');
  121. var_dump(ibase_fetch_assoc($q));
  122. ibase_close();
  123. echo "end of test\n";
  124. ?>
  125. --EXPECT--
  126. array(22) {
  127. ["ID"]=>
  128. int(1)
  129. ["ID_01"]=>
  130. int(2)
  131. ["ID_02"]=>
  132. int(3)
  133. ["ID_03"]=>
  134. int(4)
  135. ["ID_04"]=>
  136. int(5)
  137. ["ID_05"]=>
  138. int(6)
  139. ["ID_06"]=>
  140. int(7)
  141. ["ID_07"]=>
  142. int(8)
  143. ["ID_08"]=>
  144. int(9)
  145. ["ID_09"]=>
  146. int(10)
  147. ["ID_10"]=>
  148. int(11)
  149. ["CONSTANT"]=>
  150. int(12)
  151. ["CONSTANT_01"]=>
  152. int(13)
  153. ["CONSTANT_02"]=>
  154. int(14)
  155. ["CONSTANT_03"]=>
  156. int(15)
  157. ["CONSTANT_04"]=>
  158. int(16)
  159. ["CONSTANT_05"]=>
  160. int(17)
  161. ["CONSTANT_06"]=>
  162. int(18)
  163. ["CONSTANT_07"]=>
  164. int(19)
  165. ["CONSTANT_08"]=>
  166. int(20)
  167. ["CONSTANT_09"]=>
  168. int(21)
  169. ["CONSTANT_10"]=>
  170. int(22)
  171. }
  172. end of test