diff options
| author | Anatol Belski <ab@php.net> | 2016-04-10 18:49:38 +0200 |
|---|---|---|
| committer | Anatol Belski <ab@php.net> | 2016-04-10 18:49:38 +0200 |
| commit | 672d0eeecfc6f8f820a4174677ac1515007ce4e5 (patch) | |
| tree | 1e848bed54772398e1bd64fe7bfbf7161c519d5b /ext/pgsql/tests | |
| parent | 4e128978269dddfee2d1377a97241664194c4bb5 (diff) | |
| parent | b4ab0effc76385a3e1d7cded722a27481019b481 (diff) | |
| download | php-git-672d0eeecfc6f8f820a4174677ac1515007ce4e5.tar.gz | |
Merge branch 'PHP-7.0'
* PHP-7.0:
Fixed bug #71998 Function pg_insert does not insert when column type = inet
Diffstat (limited to 'ext/pgsql/tests')
| -rw-r--r-- | ext/pgsql/tests/bug71998.phpt | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/ext/pgsql/tests/bug71998.phpt b/ext/pgsql/tests/bug71998.phpt new file mode 100644 index 0000000000..b9924166f9 --- /dev/null +++ b/ext/pgsql/tests/bug71998.phpt @@ -0,0 +1,196 @@ +--TEST-- +Bug #71998 Function pg_insert does not insert when column type = inet +--SKIPIF-- +<?php include("skipif.inc"); ?> +--FILE-- +<?php +// Kudos for the IP regex to +// http://stackoverflow.com/a/17871737/3358424 + +include('config.inc'); + +$db = pg_connect($conn_str); + +pg_query("CREATE TABLE tmp_statistics (id integer NOT NULL, remote_addr inet);"); + +$ips = array( + /* IPv4*/ + "127.0.0.1", + "10.0.0.1", + "192.168.1.1", + "0.0.0.0", + "255.255.255.255", + "192.168.1.35/24", + + /* IPv6 */ + "::1", + "::10.2.3.4", + "::ffff:10.4.3.2", + "1:2:3:4:5:6:7:8", + "::ffff:10.0.0.1", + "::ffff:1.2.3.4", + "::ffff:0.0.0.0", + "1:2:3:4:5:6:77:88", + "::ffff:255.255.255.255", + "fe08::7:8", + "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", + "::5:aef1:ffff/128", + "2001:4f8:3:ba::/112", + +); + +$bad = array( + /* bad */ + "256.257.258.259", + "fe08::7:8interface", + "schnitzel", + "10002.3.4", + "1.2.3.4.5", + "256.0.0.0", + "260.0.0.0", +); + +$ips = array_merge($ips, $bad); +$i = 0; +$errors = 0; +foreach ($ips as $ip) { + $data = array("id" => ++$i, "remote_addr" => $ip); + $r = @pg_insert($db, 'tmp_statistics', $data); + + if (!$r && in_array($ip, $bad)) { + $errors++; + //echo pg_last_error($db); + } + + //pg_query($db, "INSERT INTO tmp_statistics (id, remote_addr) VALUES (2, '127.0.0.1')"); // OK, record inserted +} + + +$r = pg_query($db, "SELECT * FROM tmp_statistics"); +while (false != ($row = pg_fetch_row($r))) { + var_dump($row); +} +echo $errors, " errors catched\n"; + +pg_query($db, "DROP TABLE tmp_statistics"); +pg_close($db); + +?> +==DONE== +--EXPECT-- +array(2) { + [0]=> + string(1) "1" + [1]=> + string(9) "127.0.0.1" +} +array(2) { + [0]=> + string(1) "2" + [1]=> + string(8) "10.0.0.1" +} +array(2) { + [0]=> + string(1) "3" + [1]=> + string(11) "192.168.1.1" +} +array(2) { + [0]=> + string(1) "4" + [1]=> + string(7) "0.0.0.0" +} +array(2) { + [0]=> + string(1) "5" + [1]=> + string(15) "255.255.255.255" +} +array(2) { + [0]=> + string(1) "6" + [1]=> + string(15) "192.168.1.35/24" +} +array(2) { + [0]=> + string(1) "7" + [1]=> + string(3) "::1" +} +array(2) { + [0]=> + string(1) "8" + [1]=> + string(10) "::10.2.3.4" +} +array(2) { + [0]=> + string(1) "9" + [1]=> + string(15) "::ffff:10.4.3.2" +} +array(2) { + [0]=> + string(2) "10" + [1]=> + string(15) "1:2:3:4:5:6:7:8" +} +array(2) { + [0]=> + string(2) "11" + [1]=> + string(15) "::ffff:10.0.0.1" +} +array(2) { + [0]=> + string(2) "12" + [1]=> + string(14) "::ffff:1.2.3.4" +} +array(2) { + [0]=> + string(2) "13" + [1]=> + string(14) "::ffff:0.0.0.0" +} +array(2) { + [0]=> + string(2) "14" + [1]=> + string(17) "1:2:3:4:5:6:77:88" +} +array(2) { + [0]=> + string(2) "15" + [1]=> + string(22) "::ffff:255.255.255.255" +} +array(2) { + [0]=> + string(2) "16" + [1]=> + string(9) "fe08::7:8" +} +array(2) { + [0]=> + string(2) "17" + [1]=> + string(39) "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" +} +array(2) { + [0]=> + string(2) "18" + [1]=> + string(13) "::5:aef1:ffff" +} +array(2) { + [0]=> + string(2) "19" + [1]=> + string(19) "2001:4f8:3:ba::/112" +} +7 errors catched +==DONE== |
