summaryrefslogtreecommitdiff
path: root/mysql-test/r/func_misc.result
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2014-05-30 16:19:00 +0400
committerAlexander Barkov <bar@mariadb.org>2014-05-30 16:19:00 +0400
commit4211b1cd48c0ff315d40c37817211b31114080e1 (patch)
tree7e90331145ad0345c7c28dcfd5e362a397f79ddb /mysql-test/r/func_misc.result
parent1449d1d54fc4ea876e54bded79c29b51eb6be91d (diff)
downloadmariadb-git-4211b1cd48c0ff315d40c37817211b31114080e1.tar.gz
MDEV-4051 INET6_ATON() and INET6_NTOA()
Backporting functions from MySQL-5.6: - INET6_ATON() - INET6_NTOA() - IS_IPV4() - IS_IPV4_COMPAT() - IS_IPV4_MAPPED() - IS_IPV6()
Diffstat (limited to 'mysql-test/r/func_misc.result')
-rw-r--r--mysql-test/r/func_misc.result588
1 files changed, 588 insertions, 0 deletions
diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result
index 0c4d22f89b7..5ae9ae1f0e8 100644
--- a/mysql-test/r/func_misc.result
+++ b/mysql-test/r/func_misc.result
@@ -584,3 +584,591 @@ ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
#
# End of 5.5 tests
#
+
+# --
+# -- WL#5787: IPv6-capable INET_ATON and INET_NTOA functions.
+# --
+
+# -- INET6_ATON: checking NULL, invalid types, out-of range values...
+
+SELECT INET6_ATON(NULL) IS NULL;
+INET6_ATON(NULL) IS NULL
+1
+SELECT INET6_ATON(123) IS NULL;
+INET6_ATON(123) IS NULL
+1
+SELECT INET6_ATON(123.45) IS NULL;
+INET6_ATON(123.45) IS NULL
+1
+SELECT INET6_ATON(NOW()) IS NULL;
+INET6_ATON(NOW()) IS NULL
+1
+SELECT INET6_ATON('1.2.3') IS NULL;
+INET6_ATON('1.2.3') IS NULL
+1
+SELECT INET6_ATON('1.2.3.') IS NULL;
+INET6_ATON('1.2.3.') IS NULL
+1
+SELECT INET6_ATON('1..3.4') IS NULL;
+INET6_ATON('1..3.4') IS NULL
+1
+SELECT INET6_ATON('-1.2.3.4') IS NULL;
+INET6_ATON('-1.2.3.4') IS NULL
+1
+SELECT INET6_ATON('1.2.3.256') IS NULL;
+INET6_ATON('1.2.3.256') IS NULL
+1
+SELECT INET6_ATON('1.2.3.4.5') IS NULL;
+INET6_ATON('1.2.3.4.5') IS NULL
+1
+SELECT INET6_ATON('0001.2.3.4') IS NULL;
+INET6_ATON('0001.2.3.4') IS NULL
+1
+SELECT INET6_ATON('0x1.2.3.4') IS NULL;
+INET6_ATON('0x1.2.3.4') IS NULL
+1
+SELECT INET6_ATON('a.2.3.4') IS NULL;
+INET6_ATON('a.2.3.4') IS NULL
+1
+SELECT INET6_ATON('1.2.3.4:80') IS NULL;
+INET6_ATON('1.2.3.4:80') IS NULL
+1
+SELECT INET6_ATON('1.2.3.4/32') IS NULL;
+INET6_ATON('1.2.3.4/32') IS NULL
+1
+SELECT INET6_ATON('mysql.com') IS NULL;
+INET6_ATON('mysql.com') IS NULL
+1
+SELECT INET6_ATON(':::') IS NULL;
+INET6_ATON(':::') IS NULL
+1
+SELECT INET6_ATON(':1:2:3') IS NULL;
+INET6_ATON(':1:2:3') IS NULL
+1
+SELECT INET6_ATON('1:2:3:') IS NULL;
+INET6_ATON('1:2:3:') IS NULL
+1
+SELECT INET6_ATON(':1::2:3') IS NULL;
+INET6_ATON(':1::2:3') IS NULL
+1
+SELECT INET6_ATON('1::2:3:') IS NULL;
+INET6_ATON('1::2:3:') IS NULL
+1
+SELECT INET6_ATON('::00001') IS NULL;
+INET6_ATON('::00001') IS NULL
+1
+SELECT INET6_ATON('::00001:2') IS NULL;
+INET6_ATON('::00001:2') IS NULL
+1
+SELECT INET6_ATON('::12345') IS NULL;
+INET6_ATON('::12345') IS NULL
+1
+SELECT INET6_ATON('1020::3040::5060') IS NULL;
+INET6_ATON('1020::3040::5060') IS NULL
+1
+SELECT INET6_ATON('::ABCZ') IS NULL;
+INET6_ATON('::ABCZ') IS NULL
+1
+SELECT INET6_ATON('::0x1.2.3.4') IS NULL;
+INET6_ATON('::0x1.2.3.4') IS NULL
+1
+SELECT INET6_ATON('::1.0x2.3.4') IS NULL;
+INET6_ATON('::1.0x2.3.4') IS NULL
+1
+SELECT INET6_ATON('::a.b.c.d') IS NULL;
+INET6_ATON('::a.b.c.d') IS NULL
+1
+SELECT INET6_ATON('::FFFF:0x1.2.3.4') IS NULL;
+INET6_ATON('::FFFF:0x1.2.3.4') IS NULL
+1
+SELECT INET6_ATON('::FFFF:1.0x2.3.4') IS NULL;
+INET6_ATON('::FFFF:1.0x2.3.4') IS NULL
+1
+SELECT INET6_ATON('::FFFF:a.b.c.d') IS NULL;
+INET6_ATON('::FFFF:a.b.c.d') IS NULL
+1
+SELECT INET6_ATON('::1.2.3.4:ABCD') IS NULL;
+INET6_ATON('::1.2.3.4:ABCD') IS NULL
+1
+# NOTE: such addresses are supported because getaddrinfo() supports them.
+# This is just to record the current behaviour.
+SELECT HEX(INET6_ATON('::ABCD:1.2.3.4'));
+HEX(INET6_ATON('::ABCD:1.2.3.4'))
+00000000000000000000ABCD01020304
+
+# -- INET6_ATON: checking binary representation...
+
+SELECT HEX(INET6_ATON('0.0.0.0'));
+HEX(INET6_ATON('0.0.0.0'))
+00000000
+SELECT HEX(INET6_ATON('00.00.00.00'));
+HEX(INET6_ATON('00.00.00.00'))
+00000000
+SELECT HEX(INET6_ATON('000.000.000.000'));
+HEX(INET6_ATON('000.000.000.000'))
+00000000
+SELECT HEX(INET6_ATON('1.2.3.4'));
+HEX(INET6_ATON('1.2.3.4'))
+01020304
+SELECT HEX(INET6_ATON('01.02.03.04'));
+HEX(INET6_ATON('01.02.03.04'))
+01020304
+SELECT HEX(INET6_ATON('001.002.003.004'));
+HEX(INET6_ATON('001.002.003.004'))
+01020304
+SELECT HEX(INET6_ATON('255.255.255.255'));
+HEX(INET6_ATON('255.255.255.255'))
+FFFFFFFF
+SELECT HEX(INET6_ATON('::'));
+HEX(INET6_ATON('::'))
+00000000000000000000000000000000
+SELECT HEX(INET6_ATON('0::0'));
+HEX(INET6_ATON('0::0'))
+00000000000000000000000000000000
+SELECT HEX(INET6_ATON('1::2'));
+HEX(INET6_ATON('1::2'))
+00010000000000000000000000000002
+SELECT HEX(INET6_ATON('0::'));
+HEX(INET6_ATON('0::'))
+00000000000000000000000000000000
+SELECT HEX(INET6_ATON('1::'));
+HEX(INET6_ATON('1::'))
+00010000000000000000000000000000
+SELECT HEX(INET6_ATON('::0'));
+HEX(INET6_ATON('::0'))
+00000000000000000000000000000000
+SELECT HEX(INET6_ATON('::1'));
+HEX(INET6_ATON('::1'))
+00000000000000000000000000000001
+SELECT HEX(INET6_ATON('1:2:3:4:5:6:7:8'));
+HEX(INET6_ATON('1:2:3:4:5:6:7:8'))
+00010002000300040005000600070008
+SELECT HEX(INET6_ATON('::2:3:4:5:6:7:8'));
+HEX(INET6_ATON('::2:3:4:5:6:7:8'))
+00000002000300040005000600070008
+SELECT HEX(INET6_ATON('1::3:4:5:6:7:8'));
+HEX(INET6_ATON('1::3:4:5:6:7:8'))
+00010000000300040005000600070008
+SELECT HEX(INET6_ATON('1:2::4:5:6:7:8'));
+HEX(INET6_ATON('1:2::4:5:6:7:8'))
+00010002000000040005000600070008
+SELECT HEX(INET6_ATON('1:2:3::5:6:7:8'));
+HEX(INET6_ATON('1:2:3::5:6:7:8'))
+00010002000300000005000600070008
+SELECT HEX(INET6_ATON('1:2:3:4::6:7:8'));
+HEX(INET6_ATON('1:2:3:4::6:7:8'))
+00010002000300040000000600070008
+SELECT HEX(INET6_ATON('1:2:3:4:5::7:8'));
+HEX(INET6_ATON('1:2:3:4:5::7:8'))
+00010002000300040005000000070008
+SELECT HEX(INET6_ATON('1:2:3:4:5:6::8'));
+HEX(INET6_ATON('1:2:3:4:5:6::8'))
+00010002000300040005000600000008
+SELECT HEX(INET6_ATON('1:2:3:4:5:6:7::'));
+HEX(INET6_ATON('1:2:3:4:5:6:7::'))
+00010002000300040005000600070000
+SELECT HEX(INET6_ATON('0000:0000::0000:0001'));
+HEX(INET6_ATON('0000:0000::0000:0001'))
+00000000000000000000000000000001
+SELECT HEX(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'));
+HEX(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'))
+123456789ABCDEF043218765CBA90FED
+SELECT HEX(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'));
+HEX(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'))
+00000000000000000000000000000001
+SELECT HEX(INET6_ATON('::C0A8:0102'));
+HEX(INET6_ATON('::C0A8:0102'))
+000000000000000000000000C0A80102
+SELECT HEX(INET6_ATON('::c0a8:0102'));
+HEX(INET6_ATON('::c0a8:0102'))
+000000000000000000000000C0A80102
+SELECT HEX(INET6_ATON('::192.168.1.2'));
+HEX(INET6_ATON('::192.168.1.2'))
+000000000000000000000000C0A80102
+SELECT HEX(INET6_ATON('::FfFf:C0a8:0102'));
+HEX(INET6_ATON('::FfFf:C0a8:0102'))
+00000000000000000000FFFFC0A80102
+SELECT HEX(INET6_ATON('::ffff:c0a8:0102'));
+HEX(INET6_ATON('::ffff:c0a8:0102'))
+00000000000000000000FFFFC0A80102
+SELECT HEX(INET6_ATON('::ffff:192.168.1.2'));
+HEX(INET6_ATON('::ffff:192.168.1.2'))
+00000000000000000000FFFFC0A80102
+SELECT HEX(INET6_ATON('::01.2.3.4'));
+HEX(INET6_ATON('::01.2.3.4'))
+00000000000000000000000001020304
+SELECT HEX(INET6_ATON('::1.02.3.4'));
+HEX(INET6_ATON('::1.02.3.4'))
+00000000000000000000000001020304
+SELECT HEX(INET6_ATON('::1.2.03.4'));
+HEX(INET6_ATON('::1.2.03.4'))
+00000000000000000000000001020304
+SELECT HEX(INET6_ATON('::1.2.3.04'));
+HEX(INET6_ATON('::1.2.3.04'))
+00000000000000000000000001020304
+SELECT HEX(INET6_ATON('::1.2.3.00'));
+HEX(INET6_ATON('::1.2.3.00'))
+00000000000000000000000001020300
+SELECT HEX(INET6_ATON('::FFFF:01.2.3.4'));
+HEX(INET6_ATON('::FFFF:01.2.3.4'))
+00000000000000000000FFFF01020304
+SELECT HEX(INET6_ATON('::FFFF:1.02.3.4'));
+HEX(INET6_ATON('::FFFF:1.02.3.4'))
+00000000000000000000FFFF01020304
+SELECT HEX(INET6_ATON('::FFFF:1.2.03.4'));
+HEX(INET6_ATON('::FFFF:1.2.03.4'))
+00000000000000000000FFFF01020304
+SELECT HEX(INET6_ATON('::FFFF:1.2.3.04'));
+HEX(INET6_ATON('::FFFF:1.2.3.04'))
+00000000000000000000FFFF01020304
+SELECT HEX(INET6_ATON('::FFFF:1.2.3.00'));
+HEX(INET6_ATON('::FFFF:1.2.3.00'))
+00000000000000000000FFFF01020300
+
+# -- INET6_ATON: checking the length is either 4 or 16...
+
+SELECT LENGTH(INET6_ATON('0.0.0.0'));
+LENGTH(INET6_ATON('0.0.0.0'))
+4
+SELECT LENGTH(INET6_ATON('255.255.255.255'));
+LENGTH(INET6_ATON('255.255.255.255'))
+4
+SELECT LENGTH(INET6_ATON('::'));
+LENGTH(INET6_ATON('::'))
+16
+SELECT LENGTH(INET6_ATON('1020:3040:5060:7080:90A0:B0C0:D0E0:F010'));
+LENGTH(INET6_ATON('1020:3040:5060:7080:90A0:B0C0:D0E0:F010'))
+16
+
+# -- INET6_NTOA: checking NULL, invalid types, out-of range values...
+
+SELECT INET6_NTOA(NULL);
+INET6_NTOA(NULL)
+NULL
+SELECT INET6_NTOA(123);
+INET6_NTOA(123)
+NULL
+SELECT INET6_NTOA(123.456);
+INET6_NTOA(123.456)
+NULL
+SELECT INET6_NTOA(NOW());
+INET6_NTOA(NOW())
+NULL
+SELECT INET6_NTOA(UNHEX('C0A801'));
+INET6_NTOA(UNHEX('C0A801'))
+NULL
+SELECT INET6_NTOA(UNHEX('C0A80102'));
+INET6_NTOA(UNHEX('C0A80102'))
+192.168.1.2
+SELECT INET6_NTOA(UNHEX('C0A8010203'));
+INET6_NTOA(UNHEX('C0A8010203'))
+NULL
+SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F'));
+INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F'))
+NULL
+SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F10'));
+INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F10'))
+102:304:506:708:90a:b0c:d0e:f10
+SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F1011'));
+INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F1011'))
+NULL
+SELECT INET6_NTOA('1234'), INET6_NTOA(BINARY('1234'));
+INET6_NTOA('1234') INET6_NTOA(BINARY('1234'))
+NULL 49.50.51.52
+SELECT INET6_NTOA('0123456789abcdef'), INET6_NTOA(BINARY('0123456789abcdef'));
+INET6_NTOA('0123456789abcdef') INET6_NTOA(BINARY('0123456789abcdef'))
+NULL 3031:3233:3435:3637:3839:6162:6364:6566
+
+# -- Checking double-conversion...
+
+SELECT INET6_NTOA(INET6_ATON('::'));
+INET6_NTOA(INET6_ATON('::'))
+::
+SELECT INET6_NTOA(INET6_ATON('0::0'));
+INET6_NTOA(INET6_ATON('0::0'))
+::
+SELECT INET6_NTOA(INET6_ATON('1::2'));
+INET6_NTOA(INET6_ATON('1::2'))
+1::2
+SELECT INET6_NTOA(INET6_ATON('0::'));
+INET6_NTOA(INET6_ATON('0::'))
+::
+SELECT INET6_NTOA(INET6_ATON('1::'));
+INET6_NTOA(INET6_ATON('1::'))
+1::
+SELECT INET6_NTOA(INET6_ATON('::0'));
+INET6_NTOA(INET6_ATON('::0'))
+::
+SELECT INET6_NTOA(INET6_ATON('::1'));
+INET6_NTOA(INET6_ATON('::1'))
+::1
+SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7:8'));
+INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7:8'))
+1:2:3:4:5:6:7:8
+SELECT INET6_NTOA(INET6_ATON('::2:3:4:5:6:7:8'));
+INET6_NTOA(INET6_ATON('::2:3:4:5:6:7:8'))
+::2:3:4:5:6:7:8
+SELECT INET6_NTOA(INET6_ATON('1::3:4:5:6:7:8'));
+INET6_NTOA(INET6_ATON('1::3:4:5:6:7:8'))
+1::3:4:5:6:7:8
+SELECT INET6_NTOA(INET6_ATON('1:2::4:5:6:7:8'));
+INET6_NTOA(INET6_ATON('1:2::4:5:6:7:8'))
+1:2::4:5:6:7:8
+SELECT INET6_NTOA(INET6_ATON('1:2:3::5:6:7:8'));
+INET6_NTOA(INET6_ATON('1:2:3::5:6:7:8'))
+1:2:3::5:6:7:8
+SELECT INET6_NTOA(INET6_ATON('1:2:3:4::6:7:8'));
+INET6_NTOA(INET6_ATON('1:2:3:4::6:7:8'))
+1:2:3:4::6:7:8
+SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5::7:8'));
+INET6_NTOA(INET6_ATON('1:2:3:4:5::7:8'))
+1:2:3:4:5::7:8
+SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6::8'));
+INET6_NTOA(INET6_ATON('1:2:3:4:5:6::8'))
+1:2:3:4:5:6::8
+SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7::'));
+INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7::'))
+1:2:3:4:5:6:7::
+SELECT INET6_NTOA(INET6_ATON('0000:0000::0000:0001'));
+INET6_NTOA(INET6_ATON('0000:0000::0000:0001'))
+::1
+SELECT INET6_NTOA(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'));
+INET6_NTOA(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'))
+1234:5678:9abc:def0:4321:8765:cba9:fed
+SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'));
+INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'))
+::1
+SELECT INET6_NTOA(INET6_ATON('::C0A8:0102'));
+INET6_NTOA(INET6_ATON('::C0A8:0102'))
+::192.168.1.2
+SELECT INET6_NTOA(INET6_ATON('::c0a8:0102'));
+INET6_NTOA(INET6_ATON('::c0a8:0102'))
+::192.168.1.2
+SELECT INET6_NTOA(INET6_ATON('::192.168.1.2'));
+INET6_NTOA(INET6_ATON('::192.168.1.2'))
+::192.168.1.2
+SELECT INET6_NTOA(INET6_ATON('::FfFf:C0a8:0102'));
+INET6_NTOA(INET6_ATON('::FfFf:C0a8:0102'))
+::ffff:192.168.1.2
+SELECT INET6_NTOA(INET6_ATON('::ffff:c0a8:0102'));
+INET6_NTOA(INET6_ATON('::ffff:c0a8:0102'))
+::ffff:192.168.1.2
+SELECT INET6_NTOA(INET6_ATON('::ffff:192.168.1.2'));
+INET6_NTOA(INET6_ATON('::ffff:192.168.1.2'))
+::ffff:192.168.1.2
+SELECT INET6_NTOA(INET6_ATON('::01.2.3.4'));
+INET6_NTOA(INET6_ATON('::01.2.3.4'))
+::1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::1.02.3.4'));
+INET6_NTOA(INET6_ATON('::1.02.3.4'))
+::1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::1.2.03.4'));
+INET6_NTOA(INET6_ATON('::1.2.03.4'))
+::1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::1.2.3.04'));
+INET6_NTOA(INET6_ATON('::1.2.3.04'))
+::1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::1.2.3.00'));
+INET6_NTOA(INET6_ATON('::1.2.3.00'))
+::1.2.3.0
+SELECT INET6_NTOA(INET6_ATON('::FFFF:01.2.3.4'));
+INET6_NTOA(INET6_ATON('::FFFF:01.2.3.4'))
+::ffff:1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::FFFF:1.02.3.4'));
+INET6_NTOA(INET6_ATON('::FFFF:1.02.3.4'))
+::ffff:1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.03.4'));
+INET6_NTOA(INET6_ATON('::FFFF:1.2.03.4'))
+::ffff:1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.3.04'));
+INET6_NTOA(INET6_ATON('::FFFF:1.2.3.04'))
+::ffff:1.2.3.4
+SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.3.00'));
+INET6_NTOA(INET6_ATON('::FFFF:1.2.3.00'))
+::ffff:1.2.3.0
+
+# -- Comparing INET_ATON() and INET6_ATON()...
+
+SELECT HEX(INET_ATON('192.168.1.2'));
+HEX(INET_ATON('192.168.1.2'))
+C0A80102
+SELECT HEX(INET6_ATON('192.168.1.2'));
+HEX(INET6_ATON('192.168.1.2'))
+C0A80102
+SELECT HEX(INET_ATON('255.255.255.255'));
+HEX(INET_ATON('255.255.255.255'))
+FFFFFFFF
+SELECT HEX(INET6_ATON('255.255.255.255'));
+HEX(INET6_ATON('255.255.255.255'))
+FFFFFFFF
+SELECT HEX(INET_ATON('192.168.08.2'));
+HEX(INET_ATON('192.168.08.2'))
+C0A80802
+SELECT HEX(INET6_ATON('192.168.08.2'));
+HEX(INET6_ATON('192.168.08.2'))
+C0A80802
+SELECT HEX(INET_ATON('192.168.0x8.2'));
+HEX(INET_ATON('192.168.0x8.2'))
+NULL
+SELECT HEX(INET6_ATON('192.168.0x8.2'));
+HEX(INET6_ATON('192.168.0x8.2'))
+NULL
+SELECT HEX(INET_ATON('1.2.255'));
+HEX(INET_ATON('1.2.255'))
+10200FF
+SELECT HEX(INET6_ATON('1.2.255'));
+HEX(INET6_ATON('1.2.255'))
+NULL
+SELECT HEX(INET_ATON('1.2.256'));
+HEX(INET_ATON('1.2.256'))
+NULL
+SELECT HEX(INET6_ATON('1.2.256'));
+HEX(INET6_ATON('1.2.256'))
+NULL
+SELECT HEX(INET_ATON('1.0002.3.4'));
+HEX(INET_ATON('1.0002.3.4'))
+1020304
+SELECT HEX(INET6_ATON('1.0002.3.4'));
+HEX(INET6_ATON('1.0002.3.4'))
+NULL
+SELECT HEX(INET_ATON('1.2.3.4.5'));
+HEX(INET_ATON('1.2.3.4.5'))
+102030405
+SELECT HEX(INET6_ATON('1.2.3.4.5'));
+HEX(INET6_ATON('1.2.3.4.5'))
+NULL
+
+# -- Checking mix of INET- and INET6- functions...
+
+SELECT HEX(INET6_ATON(INET_NTOA(INET_ATON('1.2.3.4')))) AS x;
+x
+01020304
+
+# -- Checking IS_IPV4() / IS_IPV6()...
+
+SELECT IS_IPV4(NULL);
+IS_IPV4(NULL)
+0
+SELECT IS_IPV4(1);
+IS_IPV4(1)
+0
+SELECT IS_IPV4(1.0);
+IS_IPV4(1.0)
+0
+SELECT IS_IPV4('1.2.3.4');
+IS_IPV4('1.2.3.4')
+1
+SELECT IS_IPV4('001.02.000.255');
+IS_IPV4('001.02.000.255')
+1
+SELECT IS_IPV4('::1.2.0.255');
+IS_IPV4('::1.2.0.255')
+0
+SELECT IS_IPV4('::1');
+IS_IPV4('::1')
+0
+SELECT IS_IPV4(BINARY('1.2.3.4'));
+IS_IPV4(BINARY('1.2.3.4'))
+1
+SELECT IS_IPV6(NULL);
+IS_IPV6(NULL)
+0
+SELECT IS_IPV6(1);
+IS_IPV6(1)
+0
+SELECT IS_IPV6(1.0);
+IS_IPV6(1.0)
+0
+SELECT IS_IPV6('1.2.3.4');
+IS_IPV6('1.2.3.4')
+0
+SELECT IS_IPV6('001.02.000.255');
+IS_IPV6('001.02.000.255')
+0
+SELECT IS_IPV6('::001.02.000.255');
+IS_IPV6('::001.02.000.255')
+1
+SELECT IS_IPV6('::1.2.0.255');
+IS_IPV6('::1.2.0.255')
+1
+SELECT IS_IPV6('::1');
+IS_IPV6('::1')
+1
+SELECT IS_IPV6('0000:0000:0000:0000:0000:0000:0000:0001');
+IS_IPV6('0000:0000:0000:0000:0000:0000:0000:0001')
+1
+SELECT IS_IPV6(BINARY('0000:0000:0000:0000:0000:0000:0000:0001'));
+IS_IPV6(BINARY('0000:0000:0000:0000:0000:0000:0000:0001'))
+1
+
+# -- Checking IS_IPV4_MAPPED() and IS_IPV4_COMPAT()...
+
+SELECT IS_IPV4_MAPPED(INET6_ATON('1.2.3.4')),
+IS_IPV4_COMPAT(INET6_ATON('1.2.3.4'));
+IS_IPV4_MAPPED(INET6_ATON('1.2.3.4')) IS_IPV4_COMPAT(INET6_ATON('1.2.3.4'))
+0 0
+SELECT IS_IPV4_MAPPED(INET6_ATON('::1.2.3.4')),
+IS_IPV4_COMPAT(INET6_ATON('::1.2.3.4'));
+IS_IPV4_MAPPED(INET6_ATON('::1.2.3.4')) IS_IPV4_COMPAT(INET6_ATON('::1.2.3.4'))
+0 1
+SELECT IS_IPV4_MAPPED(INET6_ATON('::FFFF:1.2.3.4')),
+IS_IPV4_COMPAT(INET6_ATON('::FFFF:1.2.3.4'));
+IS_IPV4_MAPPED(INET6_ATON('::FFFF:1.2.3.4')) IS_IPV4_COMPAT(INET6_ATON('::FFFF:1.2.3.4'))
+1 0
+SELECT IS_IPV4_MAPPED(INET6_ATON('::ABCD:1.2.3.4')),
+IS_IPV4_COMPAT(INET6_ATON('::ABCD:1.2.3.4'));
+IS_IPV4_MAPPED(INET6_ATON('::ABCD:1.2.3.4')) IS_IPV4_COMPAT(INET6_ATON('::ABCD:1.2.3.4'))
+0 0
+SELECT IS_IPV4_MAPPED(INET6_ATON('::1')),
+IS_IPV4_COMPAT(INET6_ATON('::1'));
+IS_IPV4_MAPPED(INET6_ATON('::1')) IS_IPV4_COMPAT(INET6_ATON('::1'))
+0 0
+SELECT IS_IPV4_MAPPED(INET6_ATON('::')),
+IS_IPV4_COMPAT(INET6_ATON('::'));
+IS_IPV4_MAPPED(INET6_ATON('::')) IS_IPV4_COMPAT(INET6_ATON('::'))
+0 0
+
+# -- Checking IS_IPV4_COMPAT()...
+
+
+# -- Working with a table...
+
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t2;
+CREATE TABLE t1(ip INT UNSIGNED);
+CREATE TABLE t2(ip VARBINARY(16));
+
+INSERT INTO t1 VALUES
+(INET_ATON('1.2.3.4')), (INET_ATON('255.255.255.255'));
+SELECT INET_NTOA(ip) FROM t1;
+INET_NTOA(ip)
+1.2.3.4
+255.255.255.255
+
+INSERT INTO t2 SELECT INET6_ATON(INET_NTOA(ip)) FROM t1;
+SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
+INET6_NTOA(ip) HEX(ip) LENGTH(ip)
+1.2.3.4 01020304 4
+255.255.255.255 FFFFFFFF 4
+DELETE FROM t2;
+
+INSERT INTO t2 VALUES
+(INET6_ATON('1.2.3.4')), (INET6_ATON('255.255.255.255')),
+(INET6_ATON('::1.2.3.4')), (INET6_ATON('::ffff:255.255.255.255')),
+(INET6_ATON('::')), (INET6_ATON('::1')),
+(INET6_ATON('1020:3040:5060:7080:90A0:B0C0:D0E0:F010'));
+SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
+INET6_NTOA(ip) HEX(ip) LENGTH(ip)
+1.2.3.4 01020304 4
+255.255.255.255 FFFFFFFF 4
+::1.2.3.4 00000000000000000000000001020304 16
+::ffff:255.255.255.255 00000000000000000000FFFFFFFFFFFF 16
+:: 00000000000000000000000000000000 16
+::1 00000000000000000000000000000001 16
+1020:3040:5060:7080:90a0:b0c0:d0e0:f010 102030405060708090A0B0C0D0E0F010 16
+
+DROP TABLE t1;
+DROP TABLE t2;
+
+# -- Done.
+