field_funcs2.phpt 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. --TEST--
  2. Bug #41917 (invalid scale and precision)
  3. --EXTENSIONS--
  4. oci8
  5. --FILE--
  6. <?php
  7. require(__DIR__."/connect.inc");
  8. $s = oci_parse($c, 'drop table field_funcs2_tab');
  9. @oci_execute($s);
  10. $t = array("C01" => "NUMBER",
  11. "C02" => "NUMBER(*,1)",
  12. "C03" => "NUMBER(9)",
  13. "C04" => "NUMBER(9,2)",
  14. "C05" => "NUMBER(9,1)",
  15. "C06" => "NUMBER(7,-2)",
  16. "C07" => "DECIMAL(4,9)",
  17. "C08" => "NUMERIC(4,9)",
  18. "C09" => "DECIMAL(4)",
  19. "C10" => "INTEGER",
  20. "C11" => "INT",
  21. "C12" => "SMALLINT",
  22. "C13" => "FLOAT",
  23. "C14" => "FLOAT(9)",
  24. "C15" => "DOUBLE PRECISION",
  25. "C16" => "REAL",
  26. );
  27. $stmt = "create table field_funcs2_tab (\n";
  28. foreach ($t as $colname => $type) {
  29. $stmt .= "$colname $type,\n";
  30. }
  31. $stmt[strlen($stmt)-2] = ")";
  32. $s = oci_parse($c, $stmt);
  33. oci_execute($s);
  34. $s = oci_parse($c, "select * from field_funcs2_tab");
  35. oci_execute($s);
  36. for ($i = 1; $i <= oci_num_fields($s); $i++) {
  37. $name = oci_field_name($s, $i);
  38. $precision = oci_field_precision($s, $i);
  39. $scale = oci_field_scale($s, $i);
  40. echo "$name ".$t[$name] .": precision $precision, scale $scale\n";
  41. }
  42. echo "Done\n";
  43. ?>
  44. --EXPECT--
  45. C01 NUMBER: precision 0, scale -127
  46. C02 NUMBER(*,1): precision 38, scale 1
  47. C03 NUMBER(9): precision 9, scale 0
  48. C04 NUMBER(9,2): precision 9, scale 2
  49. C05 NUMBER(9,1): precision 9, scale 1
  50. C06 NUMBER(7,-2): precision 7, scale -2
  51. C07 DECIMAL(4,9): precision 4, scale 9
  52. C08 NUMERIC(4,9): precision 4, scale 9
  53. C09 DECIMAL(4): precision 4, scale 0
  54. C10 INTEGER: precision 38, scale 0
  55. C11 INT: precision 38, scale 0
  56. C12 SMALLINT: precision 38, scale 0
  57. C13 FLOAT: precision 126, scale -127
  58. C14 FLOAT(9): precision 9, scale -127
  59. C15 DOUBLE PRECISION: precision 126, scale -127
  60. C16 REAL: precision 63, scale -127
  61. Done