bug71998.phpt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. --TEST--
  2. Bug #71998 Function pg_insert does not insert when column type = inet
  3. --EXTENSIONS--
  4. pgsql
  5. --SKIPIF--
  6. <?php include("skipif.inc"); ?>
  7. --FILE--
  8. <?php
  9. // Kudos for the IP regex to
  10. // http://stackoverflow.com/a/17871737/3358424
  11. include('config.inc');
  12. $db = pg_connect($conn_str);
  13. pg_query($db, "CREATE TABLE tmp_statistics (id integer NOT NULL, remote_addr inet);");
  14. $ips = array(
  15. /* IPv4*/
  16. "127.0.0.1",
  17. "10.0.0.1",
  18. "192.168.1.1",
  19. "0.0.0.0",
  20. "255.255.255.255",
  21. "192.168.1.35/24",
  22. /* IPv6 */
  23. "::1",
  24. "::10.2.3.4",
  25. "::ffff:10.4.3.2",
  26. "1:2:3:4:5:6:7:8",
  27. "::ffff:10.0.0.1",
  28. "::ffff:1.2.3.4",
  29. "::ffff:0.0.0.0",
  30. "1:2:3:4:5:6:77:88",
  31. "::ffff:255.255.255.255",
  32. "fe08::7:8",
  33. "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
  34. "::5:aef1:ffff/128",
  35. "2001:4f8:3:ba::/112",
  36. );
  37. $bad = array(
  38. /* bad */
  39. "256.257.258.259",
  40. "fe08::7:8interface",
  41. "schnitzel",
  42. "10002.3.4",
  43. "1.2.3.4.5",
  44. "256.0.0.0",
  45. "260.0.0.0",
  46. );
  47. $ips = array_merge($ips, $bad);
  48. $i = 0;
  49. $errors = 0;
  50. foreach ($ips as $ip) {
  51. $data = array("id" => ++$i, "remote_addr" => $ip);
  52. $r = @pg_insert($db, 'tmp_statistics', $data);
  53. if (!$r && in_array($ip, $bad)) {
  54. $errors++;
  55. //echo pg_last_error($db);
  56. }
  57. //pg_query($db, "INSERT INTO tmp_statistics (id, remote_addr) VALUES (2, '127.0.0.1')"); // OK, record inserted
  58. }
  59. $r = pg_query($db, "SELECT * FROM tmp_statistics");
  60. while (false != ($row = pg_fetch_row($r))) {
  61. var_dump($row);
  62. }
  63. echo $errors, " errors caught\n";
  64. pg_query($db, "DROP TABLE tmp_statistics");
  65. pg_close($db);
  66. ?>
  67. --EXPECT--
  68. array(2) {
  69. [0]=>
  70. string(1) "1"
  71. [1]=>
  72. string(9) "127.0.0.1"
  73. }
  74. array(2) {
  75. [0]=>
  76. string(1) "2"
  77. [1]=>
  78. string(8) "10.0.0.1"
  79. }
  80. array(2) {
  81. [0]=>
  82. string(1) "3"
  83. [1]=>
  84. string(11) "192.168.1.1"
  85. }
  86. array(2) {
  87. [0]=>
  88. string(1) "4"
  89. [1]=>
  90. string(7) "0.0.0.0"
  91. }
  92. array(2) {
  93. [0]=>
  94. string(1) "5"
  95. [1]=>
  96. string(15) "255.255.255.255"
  97. }
  98. array(2) {
  99. [0]=>
  100. string(1) "6"
  101. [1]=>
  102. string(15) "192.168.1.35/24"
  103. }
  104. array(2) {
  105. [0]=>
  106. string(1) "7"
  107. [1]=>
  108. string(3) "::1"
  109. }
  110. array(2) {
  111. [0]=>
  112. string(1) "8"
  113. [1]=>
  114. string(10) "::10.2.3.4"
  115. }
  116. array(2) {
  117. [0]=>
  118. string(1) "9"
  119. [1]=>
  120. string(15) "::ffff:10.4.3.2"
  121. }
  122. array(2) {
  123. [0]=>
  124. string(2) "10"
  125. [1]=>
  126. string(15) "1:2:3:4:5:6:7:8"
  127. }
  128. array(2) {
  129. [0]=>
  130. string(2) "11"
  131. [1]=>
  132. string(15) "::ffff:10.0.0.1"
  133. }
  134. array(2) {
  135. [0]=>
  136. string(2) "12"
  137. [1]=>
  138. string(14) "::ffff:1.2.3.4"
  139. }
  140. array(2) {
  141. [0]=>
  142. string(2) "13"
  143. [1]=>
  144. string(14) "::ffff:0.0.0.0"
  145. }
  146. array(2) {
  147. [0]=>
  148. string(2) "14"
  149. [1]=>
  150. string(17) "1:2:3:4:5:6:77:88"
  151. }
  152. array(2) {
  153. [0]=>
  154. string(2) "15"
  155. [1]=>
  156. string(22) "::ffff:255.255.255.255"
  157. }
  158. array(2) {
  159. [0]=>
  160. string(2) "16"
  161. [1]=>
  162. string(9) "fe08::7:8"
  163. }
  164. array(2) {
  165. [0]=>
  166. string(2) "17"
  167. [1]=>
  168. string(39) "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
  169. }
  170. array(2) {
  171. [0]=>
  172. string(2) "18"
  173. [1]=>
  174. string(13) "::5:aef1:ffff"
  175. }
  176. array(2) {
  177. [0]=>
  178. string(2) "19"
  179. [1]=>
  180. string(19) "2001:4f8:3:ba::/112"
  181. }
  182. 7 errors caught