remove some test cases conflict with gpl (#819)
This commit is contained in:
parent
ced202f10b
commit
c4130e5a6f
@ -1,416 +0,0 @@
|
||||
drop table if exists t1,t2,t3,t11,t12;
|
||||
CREATE TABLE t1 (a int, b int, c int, primary key(a,b));
|
||||
INSERT INTO t1 VALUES (1,1,0);
|
||||
INSERT INTO t1 VALUES (1,2,0);
|
||||
INSERT INTO t1 VALUES (1,3,0);
|
||||
DELETE from t1 where a=1 limit 1;
|
||||
DELETE from t1 where a=1 and b =1;
|
||||
INSERT INTO t1 VALUES (1,1,0);
|
||||
DELETE from t1 where a=1 and b=1;
|
||||
DELETE from t1 where a=1 and b=2;
|
||||
DELETE from t1 where a=1 and b=3;
|
||||
INSERT INTO t1 VALUES (1,2,0);
|
||||
DELETE from t1 where a=1 and b=2;
|
||||
INSERT INTO t1 VALUES (1,2,0);
|
||||
DELETE from t1 where a=1 and b=2;
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a bigint not null,
|
||||
b bigint not null default 0,
|
||||
c bigint not null default 0,
|
||||
d bigint not null default 0,
|
||||
e bigint not null default 0,
|
||||
f bigint not null default 0,
|
||||
g bigint not null default 0,
|
||||
h bigint not null default 0,
|
||||
i bigint not null default 0,
|
||||
j bigint not null default 0,
|
||||
primary key (a));
|
||||
insert into t1 (a) values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23);
|
||||
delete from t1 where a=26;
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a bigint not null,
|
||||
b bigint not null default 0,
|
||||
c bigint not null default 0,
|
||||
d bigint not null default 0,
|
||||
e bigint not null default 0,
|
||||
f bigint not null default 0,
|
||||
g bigint not null default 0,
|
||||
h bigint not null default 0,
|
||||
i bigint not null default 0,
|
||||
j bigint not null default 0,
|
||||
primary key (a));
|
||||
insert into t1 (a) values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
||||
delete from t1 where a=27;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
bool1 char(0) default NULL,
|
||||
not_null varchar(20) NOT NULL default '',
|
||||
misc integer not null,
|
||||
PRIMARY KEY (not_null)
|
||||
) ;
|
||||
INSERT INTO t1 VALUES (NULL,'a',4), (NULL,'b',5), (NULL,'c',6), (NULL,'d',7);
|
||||
select * from t1 where misc > 5 and bool1 is null;
|
||||
bool1 not_null misc
|
||||
NULL c 6
|
||||
NULL d 7
|
||||
delete from t1 where not_null='c';
|
||||
delete from t1 where not_null='d';
|
||||
select * from t1 where misc > 5 and bool1 is null;
|
||||
bool1 not_null misc
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
2
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
2
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
2
|
||||
drop table t1;
|
||||
create table t1 (a int not null auto_increment primary key, b char(32));
|
||||
insert into t1 (a,b) values (1,'apple'), (2,'apple');
|
||||
select * from t1;
|
||||
a b
|
||||
1 apple
|
||||
2 apple
|
||||
delete t1 from t1, t1 as t2 where t1.b = t2.b and t1.a > t2.a;
|
||||
select * from t1;
|
||||
a b
|
||||
1 apple
|
||||
drop table t1;
|
||||
create table t11 (a int NOT NULL, b int, primary key (a));
|
||||
create table t12 (a int NOT NULL, b int, primary key (a));
|
||||
create table t2 (a int NOT NULL, b int, primary key (a));
|
||||
insert into t11 values (0, 10),(1, 11),(2, 12);
|
||||
insert into t12 values (33, 10),(0, 11),(2, 12);
|
||||
insert into t2 values (1, 21),(2, 12),(3, 23);
|
||||
select * from t11;
|
||||
a b
|
||||
0 10
|
||||
1 11
|
||||
2 12
|
||||
select * from t12;
|
||||
a b
|
||||
0 11
|
||||
2 12
|
||||
33 10
|
||||
select * from t2;
|
||||
a b
|
||||
1 21
|
||||
2 12
|
||||
3 23
|
||||
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select b from t2 where t11.a < t2.a);
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
select * from t11;
|
||||
a b
|
||||
0 10
|
||||
1 11
|
||||
2 12
|
||||
select * from t12;
|
||||
a b
|
||||
0 11
|
||||
2 12
|
||||
33 10
|
||||
insert into t11 values (2, 12) on duplicate key update a=values(a), b=values(b);
|
||||
delete from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
select * from t11;
|
||||
a b
|
||||
0 10
|
||||
1 11
|
||||
2 12
|
||||
select * from t11;
|
||||
a b
|
||||
0 10
|
||||
1 11
|
||||
2 12
|
||||
drop table t11, t12, t2;
|
||||
CREATE TABLE t1 ( a int PRIMARY KEY );
|
||||
DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a;
|
||||
INSERT INTO t1 VALUES (0),(1),(2);
|
||||
DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
0
|
||||
2
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int);
|
||||
delete `4.t1` from t1 as `4.t1` where `4.t1`.a = 5;
|
||||
delete FROM `4.t1` USING t1 as `4.t1` where `4.t1`.a = 5;
|
||||
drop table t1;
|
||||
create table t1(f1 int primary key);
|
||||
insert into t1 values (4),(3),(1),(2);
|
||||
delete from t1 where (@a:= f1) order by f1 limit 1;
|
||||
select @a;
|
||||
@a
|
||||
1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
`date` date ,
|
||||
`time` time ,
|
||||
`seq` int(10) unsigned NOT NULL auto_increment,
|
||||
PRIMARY KEY (`seq`),
|
||||
KEY `seq` (`seq`),
|
||||
KEY `time` (`time`),
|
||||
KEY `date` (`date`)
|
||||
);
|
||||
DELETE FROM t1 ORDER BY date ASC, time ASC LIMIT 1;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int not null,b int not null);
|
||||
CREATE TABLE t2 (a int not null, b int not null, primary key (a,b));
|
||||
CREATE TABLE t3 (a int not null, b int not null, primary key (a,b));
|
||||
insert into t1 values (1,1),(2,1),(1,3);
|
||||
insert into t2 values (1,1),(2,2),(3,3);
|
||||
insert into t3 values (1,1),(2,1),(1,3);
|
||||
select * from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
|
||||
a b a b a b
|
||||
1 1 1 1 1 1
|
||||
1 3 1 1 1 3
|
||||
2 1 2 2 2 1
|
||||
delete t2.*,t3.* from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
|
||||
select * from t3;
|
||||
a b
|
||||
drop table t1,t2,t3;
|
||||
create table t1(a datetime not null primary key, b int);
|
||||
insert into t1 values (USEC_TO_TIME(0),1);
|
||||
insert into t1 values (timestamp'1970-01-01 08:00:00',1);
|
||||
ERROR 23000: Duplicate entry '1970-01-01 08:00:00.000000' for key 'PRIMARY'
|
||||
select * from t1 where a is null;
|
||||
a b
|
||||
delete from t1 where a = null;
|
||||
delete from t1 where a = timestamp'1970-01-01 08:00:00';
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
0
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
DELETE FROM t1 ORDER BY x;
|
||||
ERROR 42S22: Unknown column 'x' in 'order clause'
|
||||
DELETE FROM t1 ORDER BY t2.x;
|
||||
ERROR 42S22: Unknown column 't2.x' in 'order clause'
|
||||
DELETE FROM t1 ORDER BY (SELECT x);
|
||||
ERROR 42S22: Unknown column 'x' in 'field list'
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
a INT
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
a INT
|
||||
);
|
||||
drop database if exists db1;
|
||||
drop database if exists db2;
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db1.t1 (a) SELECT * FROM t1;
|
||||
CREATE DATABASE db2;
|
||||
CREATE TABLE db2.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db2.t1 (a) SELECT * FROM t2;
|
||||
DELETE FROM t1 alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'USING t1, t2 alias WHERE t1.a = alias.a' at line 1
|
||||
DELETE FROM alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM t1, alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM t1, t2 USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
ERROR 42S02: Unknown table 't2' in MULTI DELETE
|
||||
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a' at line 1
|
||||
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM t1 USING t1 WHERE a = 1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
DELETE FROM t1 alias USING t1 alias WHERE a = 2;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'USING t1 alias WHERE a = 2' at line 1
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
delete t1.* from db1.t1 as t1, db2.t1;
|
||||
ERROR 42S02: Unknown table 't1' in MULTI DELETE
|
||||
select * from t1;
|
||||
a
|
||||
delete db1.t1.* from db1.t1 as t1, db2.t1;
|
||||
select * from db1.t1;
|
||||
a
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
#
|
||||
# Bug #49552 : sql_buffer_result cause crash + not found records
|
||||
# in multitable delete/subquery
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
DELETE t1 FROM (SELECT SUM(a) a FROM t1) x,t1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
DROP DATABASE IF EXISTS db3;
|
||||
DROP DATABASE IF EXISTS db4;
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP TABLE IF EXISTS a1;
|
||||
USE test;
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
CREATE TABLE db1.t1 (a INT, b INT);
|
||||
INSERT INTO db1.t1 VALUES (1,1),(2,2),(3,3);
|
||||
CREATE TABLE db1.t2 AS SELECT * FROM db1.t1;
|
||||
CREATE TABLE db2.t1 AS SELECT * FROM db1.t2;
|
||||
CREATE TABLE db2.t2 AS SELECT * FROM db2.t1;
|
||||
CREATE TABLE t1 AS SELECT * FROM db2.t2;
|
||||
CREATE TABLE t2 AS SELECT * FROM t1;
|
||||
CREATE DATABASE db3;
|
||||
USE db3;
|
||||
DROP DATABASE db3;
|
||||
SELECT * FROM t1;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE a1 FROM db1.a1, db2.t2 AS a1;
|
||||
ERROR 42S02: Table 'db1.a1' doesn't exist
|
||||
DELETE a1 FROM a1, db1.t1 AS a1;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE t1 FROM db1.t1, db2.t1 AS a1;
|
||||
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
|
||||
ERROR 3D000: No database selected
|
||||
DELETE t1 FROM db1.t1, db2.t1;
|
||||
ERROR 3D000: No database selected
|
||||
USE test;
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
ERROR 42S02: Unknown table 'a1' in MULTI DELETE
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
ERROR 42S02: Unknown table 'a1' in MULTI DELETE
|
||||
DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
|
||||
ERROR 42S02: Unknown table 'a2' in MULTI DELETE
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
|
||||
ERROR 42S02: Unknown table 'a1' in MULTI DELETE
|
||||
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
|
||||
ERROR 42S02: Table 'db3.t1' doesn't exist
|
||||
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
|
||||
ERROR 42S02: Table 'db3.t1' doesn't exist
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
ERROR 42S02: Unknown table 'a1' in MULTI DELETE
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
ERROR 42S02: Unknown table 'a1' in MULTI DELETE
|
||||
DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
|
||||
ERROR 42S02: Unknown table 'a2' in MULTI DELETE
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
|
||||
ERROR 42S02: Unknown table 'a1' in MULTI DELETE
|
||||
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
|
||||
ERROR 42S02: Table 'db3.t1' doesn't exist
|
||||
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
|
||||
ERROR 42S02: Table 'db3.t1' doesn't exist
|
||||
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
|
||||
ERROR 42S02: Unknown table 'a1' in MULTI DELETE
|
||||
DELETE a1 FROM db1.a1, db2.t2 AS a1;
|
||||
ERROR 42S02: Table 'db1.a1' doesn't exist
|
||||
DELETE a1 FROM a1, db1.t1 AS a1;
|
||||
ERROR 42S02: Table 'test.a1' doesn't exist
|
||||
DELETE t1 FROM db1.t1, db2.t1 AS a1;
|
||||
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
|
||||
ERROR 42S02: Unknown table 't1' in MULTI DELETE
|
||||
DELETE t1 FROM db1.t1, db2.t1;
|
||||
ERROR 42S02: Unknown table 't1' in MULTI DELETE
|
||||
DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a;
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
1
|
||||
DELETE a1, a2 FROM db2.t1 AS a1, t2 AS a2 WHERE a1.a = 2 AND a2.a = 2;
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
1
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# Bug#46958: Assertion in Diagnostics_area::set_ok_status, trigger,
|
||||
# merge table
|
||||
#
|
||||
CREATE TABLE t1 ( a INT );
|
||||
CREATE TABLE t2 ( a INT );
|
||||
CREATE TABLE t3 ( a INT );
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
INSERT INTO t3 VALUES (1), (2);
|
||||
DELETE t1, t2, t3 FROM t1, t2, t3;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
SELECT * FROM t2;
|
||||
a
|
||||
SELECT * FROM t3;
|
||||
a
|
||||
DROP TABLE t1, t2, t3;
|
||||
CREATE TABLE t1 ( a INT );
|
||||
CREATE TABLE t2 ( a INT );
|
||||
CREATE TABLE t3 ( a INT );
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
INSERT INTO t3 VALUES (1), (2);
|
||||
DELETE t1, t2, t3 FROM t1, t2, t3;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
SELECT * FROM t2;
|
||||
a
|
||||
SELECT * FROM t3;
|
||||
a
|
||||
DROP TABLE t1, t2, t3;
|
||||
#
|
||||
# Bug #46425 crash in Diagnostics_area::set_ok_status,
|
||||
# empty statement, DELETE IGNORE
|
||||
#
|
||||
CREATE table t1 (i INTEGER);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #53450: Crash/assertion
|
||||
# 'virtual int ha_myisam::index_first(uchar*)') at assert.c:81
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT, c INT,
|
||||
INDEX(a), INDEX(b), INDEX(c));
|
||||
INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
|
||||
DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #53034: Multiple-table DELETE statements not accepting
|
||||
# 'Access compatibility' syntax
|
||||
#
|
||||
CREATE TABLE t1 (id INT);
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
CREATE TABLE t3 LIKE t1;
|
||||
DELETE FROM t1.*, test.t2.*, a.* USING t1, t2, t3 AS a;
|
||||
DROP TABLE t1, t2, t3;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Bug#51099 Assertion in mysql_multi_delete_prepare()
|
||||
#
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP VIEW IF EXISTS v1, v2;
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(b INT);
|
||||
CREATE VIEW v1 AS SELECT a, b FROM t1, t2;
|
||||
CREATE VIEW v2 AS SELECT a FROM v1;
|
||||
DROP VIEW v2, v1;
|
||||
DROP TABLE t1, t2;
|
@ -1,568 +0,0 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
#
|
||||
# Check for problems with delete
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3,t11,t12;
|
||||
--enable_warnings
|
||||
CREATE TABLE t1 (a int, b int, c int, primary key(a,b));
|
||||
INSERT INTO t1 VALUES (1,1,0);
|
||||
#INSERT LOW_PRIORITY INTO t1 VALUES (1,2);
|
||||
INSERT INTO t1 VALUES (1,2,0);
|
||||
INSERT INTO t1 VALUES (1,3,0);
|
||||
DELETE from t1 where a=1 limit 1;
|
||||
#DELETE LOW_PRIORITY from t1 where a=1;
|
||||
DELETE from t1 where a=1 and b =1;
|
||||
|
||||
INSERT INTO t1 VALUES (1,1,0);
|
||||
DELETE from t1 where a=1 and b=1;
|
||||
DELETE from t1 where a=1 and b=2;
|
||||
DELETE from t1 where a=1 and b=3;
|
||||
#LOCK TABLE t1 write;
|
||||
INSERT INTO t1 VALUES (1,2,0);
|
||||
DELETE from t1 where a=1 and b=2;
|
||||
#UNLOCK TABLES;
|
||||
INSERT INTO t1 VALUES (1,2,0);
|
||||
#SET AUTOCOMMIT=0;
|
||||
DELETE from t1 where a=1 and b=2;
|
||||
#SET AUTOCOMMIT=1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of delete when the delete will cause a node to disappear and reappear
|
||||
# (This assumes a block size of 1024)
|
||||
#
|
||||
|
||||
create table t1 (
|
||||
a bigint not null,
|
||||
b bigint not null default 0,
|
||||
c bigint not null default 0,
|
||||
d bigint not null default 0,
|
||||
e bigint not null default 0,
|
||||
f bigint not null default 0,
|
||||
g bigint not null default 0,
|
||||
h bigint not null default 0,
|
||||
i bigint not null default 0,
|
||||
j bigint not null default 0,
|
||||
primary key (a));
|
||||
insert into t1 (a) values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23);
|
||||
delete from t1 where a=26;
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a bigint not null,
|
||||
b bigint not null default 0,
|
||||
c bigint not null default 0,
|
||||
d bigint not null default 0,
|
||||
e bigint not null default 0,
|
||||
f bigint not null default 0,
|
||||
g bigint not null default 0,
|
||||
h bigint not null default 0,
|
||||
i bigint not null default 0,
|
||||
j bigint not null default 0,
|
||||
primary key (a));
|
||||
insert into t1 (a) values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
||||
delete from t1 where a=27;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
bool1 char(0) default NULL,
|
||||
not_null varchar(20) NOT NULL default '',
|
||||
misc integer not null,
|
||||
PRIMARY KEY (not_null)
|
||||
) ;
|
||||
|
||||
INSERT INTO t1 VALUES (NULL,'a',4), (NULL,'b',5), (NULL,'c',6), (NULL,'d',7);
|
||||
|
||||
select * from t1 where misc > 5 and bool1 is null;
|
||||
delete from t1 where not_null='c';
|
||||
delete from t1 where not_null='d';
|
||||
select * from t1 where misc > 5 and bool1 is null;
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1;
|
||||
select count(*) from t1;
|
||||
|
||||
drop table t1;
|
||||
#
|
||||
# Bug #5733: Table handler error with self-join multi-table DELETE
|
||||
|
||||
create table t1 (a int not null auto_increment primary key, b char(32));
|
||||
insert into t1 (a,b) values (1,'apple'), (2,'apple');
|
||||
select * from t1;
|
||||
delete t1 from t1, t1 as t2 where t1.b = t2.b and t1.a > t2.a;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
# IGNORE option
|
||||
|
||||
create table t11 (a int NOT NULL, b int, primary key (a));
|
||||
create table t12 (a int NOT NULL, b int, primary key (a));
|
||||
create table t2 (a int NOT NULL, b int, primary key (a));
|
||||
insert into t11 values (0, 10),(1, 11),(2, 12);
|
||||
insert into t12 values (33, 10),(0, 11),(2, 12);
|
||||
insert into t2 values (1, 21),(2, 12),(3, 23);
|
||||
select * from t11;
|
||||
select * from t12;
|
||||
select * from t2;
|
||||
-- error 1242
|
||||
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select b from t2 where t11.a < t2.a);
|
||||
select * from t11;
|
||||
select * from t12;
|
||||
#delete ignore t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select b from t2 where t11.a < t2.a);
|
||||
#select * from t11;
|
||||
#select * from t12;
|
||||
insert into t11 values (2, 12) on duplicate key update a=values(a), b=values(b);
|
||||
-- error 1242
|
||||
delete from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
|
||||
select * from t11;
|
||||
#delete ignore from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
|
||||
select * from t11;
|
||||
drop table t11, t12, t2;
|
||||
|
||||
#
|
||||
# Bug #4198: deletion and KEYREAD
|
||||
#
|
||||
|
||||
#create table t1 (a int, b int, unique key (a), key (b));
|
||||
#insert into t1 values (3, 3), (7, 7);
|
||||
#delete t1 from t1 where a = 3;
|
||||
#check table t1;
|
||||
#select * from t1;
|
||||
#drop table t1;
|
||||
|
||||
#
|
||||
# Bug #8392: delete with ORDER BY containing a direct reference to the table
|
||||
|
||||
CREATE TABLE t1 ( a int PRIMARY KEY );
|
||||
DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a;
|
||||
INSERT INTO t1 VALUES (0),(1),(2);
|
||||
DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #21392: multi-table delete with alias table name fails with
|
||||
#
|
||||
|
||||
create table t1 (a int);
|
||||
delete `4.t1` from t1 as `4.t1` where `4.t1`.a = 5;
|
||||
delete FROM `4.t1` USING t1 as `4.t1` where `4.t1`.a = 5;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and
|
||||
# non-restricting WHERE is present.
|
||||
#
|
||||
create table t1(f1 int primary key);
|
||||
insert into t1 values (4),(3),(1),(2);
|
||||
delete from t1 where (@a:= f1) order by f1 limit 1;
|
||||
select @a;
|
||||
drop table t1;
|
||||
|
||||
# BUG#30385 'Server crash when deleting with order by and limit'
|
||||
CREATE TABLE t1 (
|
||||
`date` date ,
|
||||
`time` time ,
|
||||
`seq` int(10) unsigned NOT NULL auto_increment,
|
||||
PRIMARY KEY (`seq`),
|
||||
KEY `seq` (`seq`),
|
||||
KEY `time` (`time`),
|
||||
KEY `date` (`date`)
|
||||
);
|
||||
DELETE FROM t1 ORDER BY date ASC, time ASC LIMIT 1;
|
||||
drop table t1;
|
||||
|
||||
#--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# Test of multi-delete where we are not scanning the first table
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int not null,b int not null);
|
||||
CREATE TABLE t2 (a int not null, b int not null, primary key (a,b));
|
||||
CREATE TABLE t3 (a int not null, b int not null, primary key (a,b));
|
||||
insert into t1 values (1,1),(2,1),(1,3);
|
||||
insert into t2 values (1,1),(2,2),(3,3);
|
||||
insert into t3 values (1,1),(2,1),(1,3);
|
||||
select * from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
|
||||
--replace_regex /Plan signature: [0-9]*/Plan signature/
|
||||
--disable_result_log
|
||||
#explain select * from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
|
||||
--enable_result_log
|
||||
delete t2.*,t3.* from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
|
||||
# This should be empty
|
||||
select * from t3;
|
||||
drop table t1,t2,t3;
|
||||
#
|
||||
##
|
||||
## Bug #8143: deleting '0000-00-00' values using IS NULL
|
||||
##
|
||||
#
|
||||
create table t1(a datetime not null primary key, b int);
|
||||
insert into t1 values (USEC_TO_TIME(0),1);
|
||||
--error 1062
|
||||
insert into t1 values (timestamp'1970-01-01 08:00:00',1);
|
||||
select * from t1 where a is null;
|
||||
delete from t1 where a = null;
|
||||
delete from t1 where a = timestamp'1970-01-01 08:00:00';
|
||||
select count(*) from t1;
|
||||
drop table t1;
|
||||
#
|
||||
##
|
||||
## Bug #26186: delete order by, sometimes accept unknown column
|
||||
##
|
||||
CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1);
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
DELETE FROM t1 ORDER BY x;
|
||||
|
||||
# even columns from a table not used in query (and not even existing)
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
DELETE FROM t1 ORDER BY t2.x;
|
||||
|
||||
# subquery (as long as the subquery from is valid or DUAL)
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
DELETE FROM t1 ORDER BY (SELECT x);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #30234: Unexpected behavior using DELETE with AS and USING
|
||||
# '
|
||||
CREATE TABLE t1 (
|
||||
a INT
|
||||
);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a INT
|
||||
);
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists db1;
|
||||
drop database if exists db2;
|
||||
--enable_warnings
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db1.t1 (a) SELECT * FROM t1;
|
||||
|
||||
CREATE DATABASE db2;
|
||||
CREATE TABLE db2.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db2.t1 (a) SELECT * FROM t2;
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
DELETE FROM t1 alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM t1, alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE FROM t1, t2 USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
--error ER_PARSE_ERROR
|
||||
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM t1 USING t1 WHERE a = 1;
|
||||
SELECT * FROM t1;
|
||||
--error ER_PARSE_ERROR
|
||||
DELETE FROM t1 alias USING t1 alias WHERE a = 2;
|
||||
SELECT * FROM t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
delete t1.* from db1.t1 as t1, db2.t1;
|
||||
select * from t1;
|
||||
delete db1.t1.* from db1.t1 as t1, db2.t1;
|
||||
select * from db1.t1;
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #49552 : sql_buffer_result cause crash + not found records
|
||||
--echo # in multitable delete/subquery
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
DELETE t1 FROM (SELECT SUM(a) a FROM t1) x,t1;
|
||||
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
# Bug#27525: table not found when using multi-table-deletes with aliases over
|
||||
# several databas
|
||||
# Bug#21148: MULTI-DELETE fails to resolve a table by alias if it's from a
|
||||
# different database
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
DROP DATABASE IF EXISTS db3;
|
||||
DROP DATABASE IF EXISTS db4;
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP TABLE IF EXISTS a1;
|
||||
#DROP PROCEDURE IF EXISTS count;
|
||||
--enable_warnings
|
||||
USE test;
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
CREATE TABLE db1.t1 (a INT, b INT);
|
||||
INSERT INTO db1.t1 VALUES (1,1),(2,2),(3,3);
|
||||
CREATE TABLE db1.t2 AS SELECT * FROM db1.t1;
|
||||
CREATE TABLE db2.t1 AS SELECT * FROM db1.t2;
|
||||
CREATE TABLE db2.t2 AS SELECT * FROM db2.t1;
|
||||
CREATE TABLE t1 AS SELECT * FROM db2.t2;
|
||||
CREATE TABLE t2 AS SELECT * FROM t1;
|
||||
|
||||
#delimiter |;
|
||||
#CREATE PROCEDURE count_rows()
|
||||
#BEGIN
|
||||
# SELECT COUNT(*) AS 'COUNT(db1.t1)' FROM db1.t1;
|
||||
# SELECT COUNT(*) AS 'COUNT(db1.t2)' FROM db1.t2;
|
||||
# SELECT COUNT(*) AS 'COUNT(db2.t1)' FROM db2.t1;
|
||||
# SELECT COUNT(*) AS 'COUNT(db2.t2)' FROM db2.t2;
|
||||
# SELECT COUNT(*) AS 'COUNT(test.t1)' FROM test.t1;
|
||||
# SELECT COUNT(*) AS 'COUNT(test.t2)' FROM test.t2;
|
||||
#END|
|
||||
#delimiter ;|
|
||||
|
||||
#
|
||||
# Testing without a selected database
|
||||
#
|
||||
|
||||
CREATE DATABASE db3;
|
||||
USE db3;
|
||||
DROP DATABASE db3;
|
||||
--error ER_NO_DB_ERROR
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Detect missing table references
|
||||
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
|
||||
#--error ER_NO_DB_ERROR
|
||||
#DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
|
||||
#--error ER_NO_DB_ERROR
|
||||
#DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
|
||||
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
|
||||
#--error ER_NO_DB_ERROR
|
||||
#DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
|
||||
#--error ER_NO_DB_ERROR
|
||||
#DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
|
||||
|
||||
# Ambiguous table references
|
||||
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
|
||||
--error 1146
|
||||
DELETE a1 FROM db1.a1, db2.t2 AS a1;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE a1 FROM a1, db1.t1 AS a1;
|
||||
DELETE t1 FROM db1.t1, db2.t1 AS a1;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
|
||||
--error ER_NO_DB_ERROR
|
||||
DELETE t1 FROM db1.t1, db2.t1;
|
||||
|
||||
# Test all again, now with a selected database
|
||||
|
||||
USE test;
|
||||
|
||||
# Detect missing table references
|
||||
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
|
||||
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
|
||||
|
||||
# Ambiguous table references
|
||||
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
DELETE a1 FROM db1.a1, db2.t2 AS a1;
|
||||
--error 1146
|
||||
DELETE a1 FROM a1, db1.t1 AS a1;
|
||||
DELETE t1 FROM db1.t1, db2.t1 AS a1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE t1 FROM db1.t1, db2.t1;
|
||||
|
||||
# Test multiple-table cross database deletes
|
||||
|
||||
DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a;
|
||||
SELECT ROW_COUNT();
|
||||
#CALL count_rows();
|
||||
DELETE a1, a2 FROM db2.t1 AS a1, t2 AS a2 WHERE a1.a = 2 AND a2.a = 2;
|
||||
SELECT ROW_COUNT();
|
||||
#CALL count_rows();
|
||||
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
#DROP PROCEDURE count_rows;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#46958: Assertion in Diagnostics_area::set_ok_status, trigger,
|
||||
--echo # merge table
|
||||
--echo #
|
||||
CREATE TABLE t1 ( a INT );
|
||||
CREATE TABLE t2 ( a INT );
|
||||
CREATE TABLE t3 ( a INT );
|
||||
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
INSERT INTO t3 VALUES (1), (2);
|
||||
|
||||
#CREATE TRIGGER tr1 BEFORE DELETE ON t2
|
||||
#FOR EACH ROW INSERT INTO no_such_table VALUES (1);
|
||||
|
||||
DELETE t1, t2, t3 FROM t1, t2, t3;
|
||||
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
CREATE TABLE t1 ( a INT );
|
||||
CREATE TABLE t2 ( a INT );
|
||||
CREATE TABLE t3 ( a INT );
|
||||
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
INSERT INTO t3 VALUES (1), (2);
|
||||
|
||||
#CREATE TRIGGER tr1 AFTER DELETE ON t2
|
||||
#FOR EACH ROW INSERT INTO no_such_table VALUES (1);
|
||||
|
||||
DELETE t1, t2, t3 FROM t1, t2, t3;
|
||||
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #46425 crash in Diagnostics_area::set_ok_status,
|
||||
--echo # empty statement, DELETE IGNORE
|
||||
--echo #
|
||||
|
||||
CREATE table t1 (i INTEGER);
|
||||
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
#--delimiter |
|
||||
#
|
||||
#CREATE TRIGGER tr1 AFTER DELETE ON t1 FOR EACH ROW
|
||||
#BEGIN
|
||||
# INSERT INTO t1 SELECT * FROM t1 AS A;
|
||||
#END |
|
||||
#
|
||||
#--delimiter ;
|
||||
#--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
|
||||
#DELETE IGNORE FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #53450: Crash/assertion
|
||||
--echo # 'virtual int ha_myisam::index_first(uchar*)') at assert.c:81
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT, c INT,
|
||||
INDEX(a), INDEX(b), INDEX(c));
|
||||
INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
|
||||
|
||||
DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #53034: Multiple-table DELETE statements not accepting
|
||||
--echo # 'Access compatibility' syntax
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (id INT);
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
CREATE TABLE t3 LIKE t1;
|
||||
|
||||
DELETE FROM t1.*, test.t2.*, a.* USING t1, t2, t3 AS a;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#51099 Assertion in mysql_multi_delete_prepare()
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP VIEW IF EXISTS v1, v2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(b INT);
|
||||
CREATE VIEW v1 AS SELECT a, b FROM t1, t2;
|
||||
CREATE VIEW v2 AS SELECT a FROM v1;
|
||||
|
||||
# This is a normal delete
|
||||
#--error ER_VIEW_DELETE_MERGE_VIEW
|
||||
#DELETE FROM v2;
|
||||
# This is a multi table delete, check that we get the same error
|
||||
# This caused the assertion.
|
||||
#--error ER_VIEW_DELETE_MERGE_VIEW
|
||||
#DELETE v2 FROM v2;
|
||||
|
||||
DROP VIEW v2, v1;
|
||||
DROP TABLE t1, t2;
|
@ -1,711 +0,0 @@
|
||||
drop table if exists t1,t2;
|
||||
select inet_ntoa(null),inet_aton(null);
|
||||
inet_ntoa(null) inet_aton(null)
|
||||
NULL NULL
|
||||
select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"));
|
||||
inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"))
|
||||
NULL
|
||||
select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255");
|
||||
inet_aton("255.255.255.255.255") inet_aton("255.255.1.255") inet_aton("0.1.255")
|
||||
NULL 4294902271 65791
|
||||
select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
|
||||
inet_ntoa(1099511627775) inet_ntoa(4294902271) inet_ntoa(511)
|
||||
NULL 255.255.1.255 0.0.1.255
|
||||
select inet_aton("0.255.255.255.255");
|
||||
inet_aton("0.255.255.255.255")
|
||||
NULL
|
||||
select inet_aton("255.255.255.0000");
|
||||
inet_aton("255.255.255.0000")
|
||||
4294967040
|
||||
select hex(inet_aton('127'));
|
||||
hex(inet_aton('127'))
|
||||
7F
|
||||
select hex(inet_aton('127.1'));
|
||||
hex(inet_aton('127.1'))
|
||||
7F000001
|
||||
select hex(inet_aton('127.1.1'));
|
||||
hex(inet_aton('127.1.1'))
|
||||
7F010001
|
||||
select inet_aton("122.256");
|
||||
inet_aton("122.256")
|
||||
NULL
|
||||
select inet_aton("122.226.");
|
||||
inet_aton("122.226.")
|
||||
NULL
|
||||
select inet_aton("");
|
||||
inet_aton("")
|
||||
NULL
|
||||
|
||||
# -- 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(str_to_date('2014,2,28 09', '%Y,%m,%d %h')) IS NULL;
|
||||
INET6_ATON(str_to_date('2014,2,28 09', '%Y,%m,%d %h')) 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('oceanbase') IS NULL;
|
||||
INET6_ATON('oceanbase') 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(str_to_date('2014,2,28 09', '%Y,%m,%d %h'));
|
||||
INET6_NTOA(str_to_date('2014,2,28 09', '%Y,%m,%d %h'))
|
||||
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('0000:0000:0000:0000:1:1:255.255.255.255'));
|
||||
INET6_NTOA(INET6_ATON('0000:0000:0000:0000:1:1:255.255.255.255'))
|
||||
::1:1:ffff:ffff
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0001:0001:255.255.255.255'));
|
||||
INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0001:0001:255.255.255.255'))
|
||||
::1:1:ffff:ffff
|
||||
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'))
|
||||
NULL
|
||||
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(NULL), IS_IPV4_COMPAT(NULL);
|
||||
IS_IPV4_MAPPED(NULL) IS_IPV4_COMPAT(NULL)
|
||||
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 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 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
|
||||
|
||||
# test different sql mode
|
||||
|
||||
set sql_mode = STRICT_TRANS_TABLES;
|
||||
select @@sql_mode;
|
||||
@@sql_mode
|
||||
STRICT_TRANS_TABLES
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
ERROR HY000: Invalid argument
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
INET6_NTOA(ip) HEX(ip) LENGTH(ip)
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
INET6_ATON('1.0002.3.4')
|
||||
NULL
|
||||
SELECT INET6_ATON("");
|
||||
INET6_ATON("")
|
||||
NULL
|
||||
|
||||
set sql_mode = STRICT_ALL_TABLES;
|
||||
select @@sql_mode;
|
||||
@@sql_mode
|
||||
STRICT_ALL_TABLES
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
ERROR HY000: Invalid argument
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
INET6_NTOA(ip) HEX(ip) LENGTH(ip)
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
INET6_ATON('1.0002.3.4')
|
||||
NULL
|
||||
SELECT INET6_ATON("");
|
||||
INET6_ATON("")
|
||||
NULL
|
||||
|
||||
set sql_mode = '';
|
||||
select @@sql_mode;
|
||||
@@sql_mode
|
||||
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
INET6_NTOA(ip) HEX(ip) LENGTH(ip)
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
INET6_ATON('1.0002.3.4')
|
||||
NULL
|
||||
SELECT INET6_ATON("");
|
||||
INET6_ATON("")
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
# -- Done misc test.
|
||||
|
||||
#
|
||||
# End of tests
|
||||
#
|
@ -1,718 +0,0 @@
|
||||
connect sys_jianhua, $OBMYSQL_MS0,root@sys,,oceanbase,$OBMYSQL_PORT;
|
||||
connection sys_jianhua;
|
||||
alter system set _enable_static_typing_engine = false;
|
||||
connect mysql_jianhua, $OBMYSQL_MS0,root@mysql,'',test,$OBMYSQL_PORT;
|
||||
connection mysql_jianhua;
|
||||
drop table if exists t1,t2;
|
||||
select inet_ntoa(null),inet_aton(null);
|
||||
inet_ntoa(null) inet_aton(null)
|
||||
NULL NULL
|
||||
select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"));
|
||||
inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"))
|
||||
NULL
|
||||
select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255");
|
||||
inet_aton("255.255.255.255.255") inet_aton("255.255.1.255") inet_aton("0.1.255")
|
||||
NULL 4294902271 65791
|
||||
select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
|
||||
inet_ntoa(1099511627775) inet_ntoa(4294902271) inet_ntoa(511)
|
||||
NULL 255.255.1.255 0.0.1.255
|
||||
select inet_aton("0.255.255.255.255");
|
||||
inet_aton("0.255.255.255.255")
|
||||
NULL
|
||||
select inet_aton("255.255.255.0000");
|
||||
inet_aton("255.255.255.0000")
|
||||
4294967040
|
||||
select hex(inet_aton('127'));
|
||||
hex(inet_aton('127'))
|
||||
7F
|
||||
select hex(inet_aton('127.1'));
|
||||
hex(inet_aton('127.1'))
|
||||
7F000001
|
||||
select hex(inet_aton('127.1.1'));
|
||||
hex(inet_aton('127.1.1'))
|
||||
7F010001
|
||||
select inet_aton("122.256");
|
||||
inet_aton("122.256")
|
||||
NULL
|
||||
select inet_aton("122.226.");
|
||||
inet_aton("122.226.")
|
||||
NULL
|
||||
select inet_aton("");
|
||||
inet_aton("")
|
||||
NULL
|
||||
|
||||
# -- 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(str_to_date('2014,2,28 09', '%Y,%m,%d %h')) IS NULL;
|
||||
INET6_ATON(str_to_date('2014,2,28 09', '%Y,%m,%d %h')) 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('oceanbase') IS NULL;
|
||||
INET6_ATON('oceanbase') 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(str_to_date('2014,2,28 09', '%Y,%m,%d %h'));
|
||||
INET6_NTOA(str_to_date('2014,2,28 09', '%Y,%m,%d %h'))
|
||||
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('0000:0000:0000:0000:1:1:255.255.255.255'));
|
||||
INET6_NTOA(INET6_ATON('0000:0000:0000:0000:1:1:255.255.255.255'))
|
||||
::1:1:ffff:ffff
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0001:0001:255.255.255.255'));
|
||||
INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0001:0001:255.255.255.255'))
|
||||
::1:1:ffff:ffff
|
||||
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'))
|
||||
NULL
|
||||
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(NULL), IS_IPV4_COMPAT(NULL);
|
||||
IS_IPV4_MAPPED(NULL) IS_IPV4_COMPAT(NULL)
|
||||
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 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 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
|
||||
|
||||
# test different sql mode
|
||||
|
||||
set sql_mode = STRICT_TRANS_TABLES;
|
||||
select @@sql_mode;
|
||||
@@sql_mode
|
||||
STRICT_TRANS_TABLES
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
ERROR HY000: Invalid argument
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
INET6_NTOA(ip) HEX(ip) LENGTH(ip)
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
INET6_ATON('1.0002.3.4')
|
||||
NULL
|
||||
SELECT INET6_ATON("");
|
||||
INET6_ATON("")
|
||||
NULL
|
||||
|
||||
set sql_mode = STRICT_ALL_TABLES;
|
||||
select @@sql_mode;
|
||||
@@sql_mode
|
||||
STRICT_ALL_TABLES
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
ERROR HY000: Invalid argument
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
ERROR HY000: Invalid argument
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
INET6_NTOA(ip) HEX(ip) LENGTH(ip)
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
INET6_ATON('1.0002.3.4')
|
||||
NULL
|
||||
SELECT INET6_ATON("");
|
||||
INET6_ATON("")
|
||||
NULL
|
||||
|
||||
set sql_mode = '';
|
||||
select @@sql_mode;
|
||||
@@sql_mode
|
||||
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
INET6_NTOA(ip) HEX(ip) LENGTH(ip)
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
NULL NULL NULL
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
INET6_ATON('1.0002.3.4')
|
||||
NULL
|
||||
SELECT INET6_ATON("");
|
||||
INET6_ATON("")
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
# -- Done misc test.
|
||||
|
||||
#
|
||||
# End of tests
|
||||
#
|
||||
connection sys_jianhua;
|
||||
alter system set _enable_static_typing_engine = true;
|
@ -1,373 +0,0 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Testing of misc functions
|
||||
#
|
||||
select inet_ntoa(null),inet_aton(null);
|
||||
select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"));
|
||||
select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255");
|
||||
select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
|
||||
select inet_aton("0.255.255.255.255");
|
||||
select inet_aton("255.255.255.0000");
|
||||
|
||||
select hex(inet_aton('127'));
|
||||
select hex(inet_aton('127.1'));
|
||||
select hex(inet_aton('127.1.1'));
|
||||
|
||||
select inet_aton("122.256");
|
||||
select inet_aton("122.226.");
|
||||
select inet_aton("");
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_ATON: checking NULL, invalid types, out-of range values...
|
||||
--echo
|
||||
|
||||
SELECT INET6_ATON(NULL) IS NULL;
|
||||
SELECT INET6_ATON(123) IS NULL;
|
||||
SELECT INET6_ATON(123.45) IS NULL;
|
||||
SELECT INET6_ATON(str_to_date('2014,2,28 09', '%Y,%m,%d %h')) IS NULL;
|
||||
|
||||
SELECT INET6_ATON('1.2.3') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.') IS NULL;
|
||||
SELECT INET6_ATON('1..3.4') IS NULL;
|
||||
SELECT INET6_ATON('-1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.256') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.4.5') IS NULL;
|
||||
SELECT INET6_ATON('0001.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('0x1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('a.2.3.4') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('1.2.3.4:80') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.4/32') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('oceanbase') IS NULL;
|
||||
|
||||
SELECT INET6_ATON(':::') IS NULL;
|
||||
SELECT INET6_ATON(':1:2:3') IS NULL;
|
||||
SELECT INET6_ATON('1:2:3:') IS NULL;
|
||||
SELECT INET6_ATON(':1::2:3') IS NULL;
|
||||
SELECT INET6_ATON('1::2:3:') IS NULL;
|
||||
SELECT INET6_ATON('::00001') IS NULL;
|
||||
SELECT INET6_ATON('::00001:2') IS NULL;
|
||||
SELECT INET6_ATON('::12345') IS NULL;
|
||||
SELECT INET6_ATON('1020::3040::5060') IS NULL;
|
||||
SELECT INET6_ATON('::ABCZ') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('::0x1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::1.0x2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::a.b.c.d') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('::FFFF:0x1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::FFFF:1.0x2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::FFFF:a.b.c.d') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('::1.2.3.4:ABCD') IS NULL;
|
||||
|
||||
--echo # NOTE: such addresses are supported because getaddrinfo() supports them.
|
||||
--echo # This is just to record the current behaviour.
|
||||
SELECT HEX(INET6_ATON('::ABCD:1.2.3.4'));
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_ATON: checking binary representation...
|
||||
--echo
|
||||
|
||||
SELECT HEX(INET6_ATON('0.0.0.0'));
|
||||
SELECT HEX(INET6_ATON('00.00.00.00'));
|
||||
SELECT HEX(INET6_ATON('000.000.000.000'));
|
||||
SELECT HEX(INET6_ATON('1.2.3.4'));
|
||||
SELECT HEX(INET6_ATON('01.02.03.04'));
|
||||
SELECT HEX(INET6_ATON('001.002.003.004'));
|
||||
SELECT HEX(INET6_ATON('255.255.255.255'));
|
||||
SELECT HEX(INET6_ATON('::'));
|
||||
SELECT HEX(INET6_ATON('0::0'));
|
||||
SELECT HEX(INET6_ATON('1::2'));
|
||||
SELECT HEX(INET6_ATON('0::'));
|
||||
SELECT HEX(INET6_ATON('1::'));
|
||||
SELECT HEX(INET6_ATON('::0'));
|
||||
SELECT HEX(INET6_ATON('::1'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('::2:3:4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1::3:4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2::4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3::5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4::6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5::7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5:6::8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5:6:7::'));
|
||||
SELECT HEX(INET6_ATON('0000:0000::0000:0001'));
|
||||
SELECT HEX(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'));
|
||||
SELECT HEX(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'));
|
||||
SELECT HEX(INET6_ATON('::C0A8:0102'));
|
||||
SELECT HEX(INET6_ATON('::c0a8:0102'));
|
||||
SELECT HEX(INET6_ATON('::192.168.1.2'));
|
||||
SELECT HEX(INET6_ATON('::FfFf:C0a8:0102'));
|
||||
SELECT HEX(INET6_ATON('::ffff:c0a8:0102'));
|
||||
SELECT HEX(INET6_ATON('::ffff:192.168.1.2'));
|
||||
SELECT HEX(INET6_ATON('::01.2.3.4'));
|
||||
SELECT HEX(INET6_ATON('::1.02.3.4'));
|
||||
SELECT HEX(INET6_ATON('::1.2.03.4'));
|
||||
SELECT HEX(INET6_ATON('::1.2.3.04'));
|
||||
SELECT HEX(INET6_ATON('::1.2.3.00'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:01.2.3.4'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.02.3.4'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.2.03.4'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.2.3.04'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.2.3.00'));
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_ATON: checking the length is either 4 or 16...
|
||||
--echo
|
||||
|
||||
SELECT LENGTH(INET6_ATON('0.0.0.0'));
|
||||
SELECT LENGTH(INET6_ATON('255.255.255.255'));
|
||||
SELECT LENGTH(INET6_ATON('::'));
|
||||
SELECT LENGTH(INET6_ATON('1020:3040:5060:7080:90A0:B0C0:D0E0:F010'));
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_NTOA: checking NULL, invalid types, out-of range values...
|
||||
--echo
|
||||
|
||||
SELECT INET6_NTOA(NULL);
|
||||
SELECT INET6_NTOA(123);
|
||||
SELECT INET6_NTOA(123.456);
|
||||
SELECT INET6_NTOA(str_to_date('2014,2,28 09', '%Y,%m,%d %h'));
|
||||
SELECT INET6_NTOA(UNHEX('C0A801')); # 3 bytes -> NULL
|
||||
SELECT INET6_NTOA(UNHEX('C0A80102')); # 4 bytes -> 192.168.1.2
|
||||
SELECT INET6_NTOA(UNHEX('C0A8010203')); # 5 bytes -> NULL
|
||||
SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F')); # 15 bytes -> NULL
|
||||
SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F10')); # 16 bytes -> IP
|
||||
SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F1011')); # 17 bytes -> NULL
|
||||
|
||||
SELECT INET6_NTOA('1234'), INET6_NTOA(BINARY('1234'));
|
||||
SELECT INET6_NTOA('0123456789abcdef'), INET6_NTOA(BINARY('0123456789abcdef'));
|
||||
|
||||
--echo
|
||||
--echo # -- Checking double-conversion...
|
||||
--echo
|
||||
|
||||
SELECT INET6_NTOA(INET6_ATON('::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0::0'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1::2'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::0'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::2:3:4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1::3:4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2::4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3::5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4::6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5::7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6::8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000::0000:0001'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:1:1:255.255.255.255'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0001:0001:255.255.255.255'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::C0A8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::c0a8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::192.168.1.2'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FfFf:C0a8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::ffff:c0a8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::ffff:192.168.1.2'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::01.2.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.02.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.2.03.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.2.3.04'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.2.3.00'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:01.2.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.02.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.03.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.3.04'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.3.00'));
|
||||
|
||||
--echo
|
||||
--echo # -- Comparing INET_ATON() and INET6_ATON()...
|
||||
--echo
|
||||
|
||||
SELECT HEX(INET_ATON('192.168.1.2'));
|
||||
SELECT HEX(INET6_ATON('192.168.1.2'));
|
||||
|
||||
SELECT HEX(INET_ATON('255.255.255.255'));
|
||||
SELECT HEX(INET6_ATON('255.255.255.255'));
|
||||
|
||||
SELECT HEX(INET_ATON('192.168.08.2'));
|
||||
SELECT HEX(INET6_ATON('192.168.08.2'));
|
||||
|
||||
SELECT HEX(INET_ATON('192.168.0x8.2'));
|
||||
SELECT HEX(INET6_ATON('192.168.0x8.2'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.2.255'));
|
||||
SELECT HEX(INET6_ATON('1.2.255'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.2.256'));
|
||||
SELECT HEX(INET6_ATON('1.2.256'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.0002.3.4'));
|
||||
SELECT HEX(INET6_ATON('1.0002.3.4'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.2.3.4.5'));
|
||||
SELECT HEX(INET6_ATON('1.2.3.4.5'));
|
||||
|
||||
--echo
|
||||
--echo # -- Checking mix of INET- and INET6- functions...
|
||||
--echo
|
||||
|
||||
SELECT HEX(INET6_ATON(INET_NTOA(INET_ATON('1.2.3.4')))) AS x;
|
||||
|
||||
--echo
|
||||
--echo # -- Checking IS_IPV4() / IS_IPV6()...
|
||||
--echo
|
||||
|
||||
SELECT IS_IPV4(NULL);
|
||||
SELECT IS_IPV4(1);
|
||||
SELECT IS_IPV4(1.0);
|
||||
SELECT IS_IPV4('1.2.3.4');
|
||||
SELECT IS_IPV4('001.02.000.255');
|
||||
SELECT IS_IPV4('::1.2.0.255');
|
||||
SELECT IS_IPV4('::1');
|
||||
SELECT IS_IPV4(BINARY('1.2.3.4'));
|
||||
|
||||
SELECT IS_IPV6(NULL);
|
||||
SELECT IS_IPV6(1);
|
||||
SELECT IS_IPV6(1.0);
|
||||
SELECT IS_IPV6('1.2.3.4');
|
||||
SELECT IS_IPV6('001.02.000.255');
|
||||
SELECT IS_IPV6('::001.02.000.255');
|
||||
SELECT IS_IPV6('::1.2.0.255');
|
||||
SELECT IS_IPV6('::1');
|
||||
SELECT IS_IPV6('0000:0000:0000:0000:0000:0000:0000:0001');
|
||||
SELECT IS_IPV6(BINARY('0000:0000:0000:0000:0000:0000:0000:0001'));
|
||||
|
||||
--echo
|
||||
--echo # -- Checking IS_IPV4_MAPPED() and IS_IPV4_COMPAT()...
|
||||
--echo
|
||||
SELECT IS_IPV4_MAPPED(NULL), IS_IPV4_COMPAT(NULL);
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::FFFF:1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::FFFF:1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::ABCD:1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::ABCD:1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::1')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::1'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::'));
|
||||
|
||||
# NOTE: IS_IPV4_COMPAT() / IS_IPV4_MAPPED() could work with "regular strings in
|
||||
# binary collation" too, but there is no way to create a "regular string"
|
||||
# starting with \0.
|
||||
|
||||
--echo
|
||||
--echo # -- Checking IS_IPV4_COMPAT()...
|
||||
--echo
|
||||
|
||||
--echo
|
||||
--echo # -- Working with a table...
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(ip INT UNSIGNED);
|
||||
CREATE TABLE t2(ip VARBINARY(16));
|
||||
|
||||
--echo
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(INET_ATON('1.2.3.4')), (INET_ATON('255.255.255.255'));
|
||||
SELECT INET_NTOA(ip) FROM t1;
|
||||
|
||||
--echo
|
||||
|
||||
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;
|
||||
|
||||
--echo
|
||||
--echo # test different sql mode
|
||||
--echo
|
||||
set sql_mode = STRICT_TRANS_TABLES;
|
||||
select @@sql_mode;
|
||||
DELETE FROM t2;
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
SELECT INET6_ATON("");
|
||||
--echo
|
||||
set sql_mode = STRICT_ALL_TABLES;
|
||||
select @@sql_mode;
|
||||
DELETE FROM t2;
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
SELECT INET6_ATON("");
|
||||
|
||||
--echo
|
||||
set sql_mode = '';
|
||||
select @@sql_mode;
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
SELECT INET6_ATON("");
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo
|
||||
--echo # -- Done misc test.
|
||||
|
||||
--echo
|
||||
--echo #
|
||||
--echo # End of tests
|
||||
--echo #
|
@ -1,383 +0,0 @@
|
||||
connect (sys_jianhua, $OBMYSQL_MS0,root@sys,,oceanbase,$OBMYSQL_PORT);
|
||||
connection sys_jianhua;
|
||||
alter system set _enable_static_typing_engine = false;
|
||||
|
||||
connect(mysql_jianhua, $OBMYSQL_MS0,root@mysql,'',test,$OBMYSQL_PORT);
|
||||
connection mysql_jianhua;
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Testing of misc functions
|
||||
#
|
||||
select inet_ntoa(null),inet_aton(null);
|
||||
select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"));
|
||||
select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255");
|
||||
select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
|
||||
select inet_aton("0.255.255.255.255");
|
||||
select inet_aton("255.255.255.0000");
|
||||
|
||||
select hex(inet_aton('127'));
|
||||
select hex(inet_aton('127.1'));
|
||||
select hex(inet_aton('127.1.1'));
|
||||
|
||||
select inet_aton("122.256");
|
||||
select inet_aton("122.226.");
|
||||
select inet_aton("");
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_ATON: checking NULL, invalid types, out-of range values...
|
||||
--echo
|
||||
|
||||
SELECT INET6_ATON(NULL) IS NULL;
|
||||
SELECT INET6_ATON(123) IS NULL;
|
||||
SELECT INET6_ATON(123.45) IS NULL;
|
||||
SELECT INET6_ATON(str_to_date('2014,2,28 09', '%Y,%m,%d %h')) IS NULL;
|
||||
|
||||
SELECT INET6_ATON('1.2.3') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.') IS NULL;
|
||||
SELECT INET6_ATON('1..3.4') IS NULL;
|
||||
SELECT INET6_ATON('-1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.256') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.4.5') IS NULL;
|
||||
SELECT INET6_ATON('0001.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('0x1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('a.2.3.4') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('1.2.3.4:80') IS NULL;
|
||||
SELECT INET6_ATON('1.2.3.4/32') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('oceanbase') IS NULL;
|
||||
|
||||
SELECT INET6_ATON(':::') IS NULL;
|
||||
SELECT INET6_ATON(':1:2:3') IS NULL;
|
||||
SELECT INET6_ATON('1:2:3:') IS NULL;
|
||||
SELECT INET6_ATON(':1::2:3') IS NULL;
|
||||
SELECT INET6_ATON('1::2:3:') IS NULL;
|
||||
SELECT INET6_ATON('::00001') IS NULL;
|
||||
SELECT INET6_ATON('::00001:2') IS NULL;
|
||||
SELECT INET6_ATON('::12345') IS NULL;
|
||||
SELECT INET6_ATON('1020::3040::5060') IS NULL;
|
||||
SELECT INET6_ATON('::ABCZ') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('::0x1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::1.0x2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::a.b.c.d') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('::FFFF:0x1.2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::FFFF:1.0x2.3.4') IS NULL;
|
||||
SELECT INET6_ATON('::FFFF:a.b.c.d') IS NULL;
|
||||
|
||||
SELECT INET6_ATON('::1.2.3.4:ABCD') IS NULL;
|
||||
|
||||
--echo # NOTE: such addresses are supported because getaddrinfo() supports them.
|
||||
--echo # This is just to record the current behaviour.
|
||||
SELECT HEX(INET6_ATON('::ABCD:1.2.3.4'));
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_ATON: checking binary representation...
|
||||
--echo
|
||||
|
||||
SELECT HEX(INET6_ATON('0.0.0.0'));
|
||||
SELECT HEX(INET6_ATON('00.00.00.00'));
|
||||
SELECT HEX(INET6_ATON('000.000.000.000'));
|
||||
SELECT HEX(INET6_ATON('1.2.3.4'));
|
||||
SELECT HEX(INET6_ATON('01.02.03.04'));
|
||||
SELECT HEX(INET6_ATON('001.002.003.004'));
|
||||
SELECT HEX(INET6_ATON('255.255.255.255'));
|
||||
SELECT HEX(INET6_ATON('::'));
|
||||
SELECT HEX(INET6_ATON('0::0'));
|
||||
SELECT HEX(INET6_ATON('1::2'));
|
||||
SELECT HEX(INET6_ATON('0::'));
|
||||
SELECT HEX(INET6_ATON('1::'));
|
||||
SELECT HEX(INET6_ATON('::0'));
|
||||
SELECT HEX(INET6_ATON('::1'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('::2:3:4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1::3:4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2::4:5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3::5:6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4::6:7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5::7:8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5:6::8'));
|
||||
SELECT HEX(INET6_ATON('1:2:3:4:5:6:7::'));
|
||||
SELECT HEX(INET6_ATON('0000:0000::0000:0001'));
|
||||
SELECT HEX(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'));
|
||||
SELECT HEX(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'));
|
||||
SELECT HEX(INET6_ATON('::C0A8:0102'));
|
||||
SELECT HEX(INET6_ATON('::c0a8:0102'));
|
||||
SELECT HEX(INET6_ATON('::192.168.1.2'));
|
||||
SELECT HEX(INET6_ATON('::FfFf:C0a8:0102'));
|
||||
SELECT HEX(INET6_ATON('::ffff:c0a8:0102'));
|
||||
SELECT HEX(INET6_ATON('::ffff:192.168.1.2'));
|
||||
SELECT HEX(INET6_ATON('::01.2.3.4'));
|
||||
SELECT HEX(INET6_ATON('::1.02.3.4'));
|
||||
SELECT HEX(INET6_ATON('::1.2.03.4'));
|
||||
SELECT HEX(INET6_ATON('::1.2.3.04'));
|
||||
SELECT HEX(INET6_ATON('::1.2.3.00'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:01.2.3.4'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.02.3.4'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.2.03.4'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.2.3.04'));
|
||||
SELECT HEX(INET6_ATON('::FFFF:1.2.3.00'));
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_ATON: checking the length is either 4 or 16...
|
||||
--echo
|
||||
|
||||
SELECT LENGTH(INET6_ATON('0.0.0.0'));
|
||||
SELECT LENGTH(INET6_ATON('255.255.255.255'));
|
||||
SELECT LENGTH(INET6_ATON('::'));
|
||||
SELECT LENGTH(INET6_ATON('1020:3040:5060:7080:90A0:B0C0:D0E0:F010'));
|
||||
|
||||
--echo
|
||||
--echo # -- INET6_NTOA: checking NULL, invalid types, out-of range values...
|
||||
--echo
|
||||
|
||||
SELECT INET6_NTOA(NULL);
|
||||
SELECT INET6_NTOA(123);
|
||||
SELECT INET6_NTOA(123.456);
|
||||
SELECT INET6_NTOA(str_to_date('2014,2,28 09', '%Y,%m,%d %h'));
|
||||
SELECT INET6_NTOA(UNHEX('C0A801')); # 3 bytes -> NULL
|
||||
SELECT INET6_NTOA(UNHEX('C0A80102')); # 4 bytes -> 192.168.1.2
|
||||
SELECT INET6_NTOA(UNHEX('C0A8010203')); # 5 bytes -> NULL
|
||||
SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F')); # 15 bytes -> NULL
|
||||
SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F10')); # 16 bytes -> IP
|
||||
SELECT INET6_NTOA(UNHEX('0102030405060708090A0B0C0D0E0F1011')); # 17 bytes -> NULL
|
||||
|
||||
SELECT INET6_NTOA('1234'), INET6_NTOA(BINARY('1234'));
|
||||
SELECT INET6_NTOA('0123456789abcdef'), INET6_NTOA(BINARY('0123456789abcdef'));
|
||||
|
||||
--echo
|
||||
--echo # -- Checking double-conversion...
|
||||
--echo
|
||||
|
||||
SELECT INET6_NTOA(INET6_ATON('::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0::0'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1::2'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::0'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::2:3:4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1::3:4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2::4:5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3::5:6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4::6:7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5::7:8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6::8'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1:2:3:4:5:6:7::'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000::0000:0001'));
|
||||
SELECT INET6_NTOA(INET6_ATON('1234:5678:9abc:def0:4321:8765:cba9:0fed'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0000:0000:0000:0001'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:1:1:255.255.255.255'));
|
||||
SELECT INET6_NTOA(INET6_ATON('0000:0000:0000:0000:0001:0001:255.255.255.255'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::C0A8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::c0a8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::192.168.1.2'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FfFf:C0a8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::ffff:c0a8:0102'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::ffff:192.168.1.2'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::01.2.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.02.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.2.03.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.2.3.04'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::1.2.3.00'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:01.2.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.02.3.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.03.4'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.3.04'));
|
||||
SELECT INET6_NTOA(INET6_ATON('::FFFF:1.2.3.00'));
|
||||
|
||||
--echo
|
||||
--echo # -- Comparing INET_ATON() and INET6_ATON()...
|
||||
--echo
|
||||
|
||||
SELECT HEX(INET_ATON('192.168.1.2'));
|
||||
SELECT HEX(INET6_ATON('192.168.1.2'));
|
||||
|
||||
SELECT HEX(INET_ATON('255.255.255.255'));
|
||||
SELECT HEX(INET6_ATON('255.255.255.255'));
|
||||
|
||||
SELECT HEX(INET_ATON('192.168.08.2'));
|
||||
SELECT HEX(INET6_ATON('192.168.08.2'));
|
||||
|
||||
SELECT HEX(INET_ATON('192.168.0x8.2'));
|
||||
SELECT HEX(INET6_ATON('192.168.0x8.2'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.2.255'));
|
||||
SELECT HEX(INET6_ATON('1.2.255'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.2.256'));
|
||||
SELECT HEX(INET6_ATON('1.2.256'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.0002.3.4'));
|
||||
SELECT HEX(INET6_ATON('1.0002.3.4'));
|
||||
|
||||
SELECT HEX(INET_ATON('1.2.3.4.5'));
|
||||
SELECT HEX(INET6_ATON('1.2.3.4.5'));
|
||||
|
||||
--echo
|
||||
--echo # -- Checking mix of INET- and INET6- functions...
|
||||
--echo
|
||||
|
||||
SELECT HEX(INET6_ATON(INET_NTOA(INET_ATON('1.2.3.4')))) AS x;
|
||||
|
||||
--echo
|
||||
--echo # -- Checking IS_IPV4() / IS_IPV6()...
|
||||
--echo
|
||||
|
||||
SELECT IS_IPV4(NULL);
|
||||
SELECT IS_IPV4(1);
|
||||
SELECT IS_IPV4(1.0);
|
||||
SELECT IS_IPV4('1.2.3.4');
|
||||
SELECT IS_IPV4('001.02.000.255');
|
||||
SELECT IS_IPV4('::1.2.0.255');
|
||||
SELECT IS_IPV4('::1');
|
||||
SELECT IS_IPV4(BINARY('1.2.3.4'));
|
||||
|
||||
SELECT IS_IPV6(NULL);
|
||||
SELECT IS_IPV6(1);
|
||||
SELECT IS_IPV6(1.0);
|
||||
SELECT IS_IPV6('1.2.3.4');
|
||||
SELECT IS_IPV6('001.02.000.255');
|
||||
SELECT IS_IPV6('::001.02.000.255');
|
||||
SELECT IS_IPV6('::1.2.0.255');
|
||||
SELECT IS_IPV6('::1');
|
||||
SELECT IS_IPV6('0000:0000:0000:0000:0000:0000:0000:0001');
|
||||
SELECT IS_IPV6(BINARY('0000:0000:0000:0000:0000:0000:0000:0001'));
|
||||
|
||||
--echo
|
||||
--echo # -- Checking IS_IPV4_MAPPED() and IS_IPV4_COMPAT()...
|
||||
--echo
|
||||
SELECT IS_IPV4_MAPPED(NULL), IS_IPV4_COMPAT(NULL);
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::FFFF:1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::FFFF:1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::ABCD:1.2.3.4')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::ABCD:1.2.3.4'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::1')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::1'));
|
||||
SELECT IS_IPV4_MAPPED(INET6_ATON('::')),
|
||||
IS_IPV4_COMPAT(INET6_ATON('::'));
|
||||
|
||||
# NOTE: IS_IPV4_COMPAT() / IS_IPV4_MAPPED() could work with "regular strings in
|
||||
# binary collation" too, but there is no way to create a "regular string"
|
||||
# starting with \0.
|
||||
|
||||
--echo
|
||||
--echo # -- Checking IS_IPV4_COMPAT()...
|
||||
--echo
|
||||
|
||||
--echo
|
||||
--echo # -- Working with a table...
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(ip INT UNSIGNED);
|
||||
CREATE TABLE t2(ip VARBINARY(16));
|
||||
|
||||
--echo
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(INET_ATON('1.2.3.4')), (INET_ATON('255.255.255.255'));
|
||||
SELECT INET_NTOA(ip) FROM t1;
|
||||
|
||||
--echo
|
||||
|
||||
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;
|
||||
|
||||
--echo
|
||||
--echo # test different sql mode
|
||||
--echo
|
||||
set sql_mode = STRICT_TRANS_TABLES;
|
||||
select @@sql_mode;
|
||||
DELETE FROM t2;
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
SELECT INET6_ATON("");
|
||||
--echo
|
||||
set sql_mode = STRICT_ALL_TABLES;
|
||||
select @@sql_mode;
|
||||
DELETE FROM t2;
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
--error 1210
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
SELECT INET6_ATON("");
|
||||
|
||||
--echo
|
||||
set sql_mode = '';
|
||||
select @@sql_mode;
|
||||
DELETE FROM t2;
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.0002.3.4'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.255'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('1.2.256'));
|
||||
INSERT INTO t2 VALUES (INET6_ATON('192.168.0x8.2'));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.256"));
|
||||
INSERT INTO t2 VALUES (inet_aton("122.226."));
|
||||
INSERT INTO t2 VALUES (inet_aton(""));
|
||||
SELECT INET6_NTOA(ip), HEX(ip), LENGTH(ip) FROM t2;
|
||||
|
||||
SELECT INET6_ATON('1.0002.3.4');
|
||||
SELECT INET6_ATON("");
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo
|
||||
--echo # -- Done misc test.
|
||||
|
||||
--echo
|
||||
--echo #
|
||||
--echo # End of tests
|
||||
--echo #
|
||||
|
||||
connection sys_jianhua;
|
||||
alter system set _enable_static_typing_engine = true;
|
@ -1,168 +0,0 @@
|
||||
#
|
||||
# certain query plans
|
||||
#
|
||||
drop table if exists t0, t1, t2, t3, t6, t8;
|
||||
drop view if exists v1, v2, v3, v_t2, view_b, view_c;
|
||||
CREATE TABLE t0(a INTEGER);
|
||||
CREATE TABLE t1(a INTEGER);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
CREATE TABLE t2(a INTEGER);
|
||||
INSERT INTO t2 VALUES(5), (8);
|
||||
CREATE TABLE t6(a INTEGER);
|
||||
INSERT INTO t6 VALUES(7), (1), (0), (5), (1), (4);
|
||||
CREATE TABLE t8(a INTEGER);
|
||||
INSERT INTO t8 VALUES(1), (3), (5), (7), (9), (7), (3), (1);
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
Query Plan
|
||||
=========================================================
|
||||
|ID|OPERATOR |NAME |EST. ROWS|COST|
|
||||
---------------------------------------------------------
|
||||
|0 |NESTED-LOOP SEMI JOIN CARTESIAN| |2 |113 |
|
||||
|1 | TABLE SCAN |nt2 |2 |37 |
|
||||
|2 | MATERIAL | |1 |76 |
|
||||
|3 | SUBPLAN SCAN |VIEW1|1 |75 |
|
||||
|4 | NESTED-LOOP JOIN CARTESIAN | |1 |75 |
|
||||
|5 | TABLE SCAN |it1 |1 |37 |
|
||||
|6 | MATERIAL | |1 |39 |
|
||||
|7 | TABLE SCAN |it3 |1 |38 |
|
||||
=========================================================
|
||||
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([nt2.a]), filter(nil),
|
||||
conds(nil), nl_params_(nil)
|
||||
1 - output([nt2.a]), filter(nil),
|
||||
access([nt2.a]), partitions(p0)
|
||||
2 - output([1]), filter(nil)
|
||||
3 - output([1]), filter(nil),
|
||||
access(nil)
|
||||
4 - output([1]), filter(nil),
|
||||
conds(nil), nl_params_(nil)
|
||||
5 - output([1]), filter([it1.a = 1]),
|
||||
access([it1.a]), partitions(p0)
|
||||
6 - output([1]), filter(nil)
|
||||
7 - output([1]), filter([it3.a = 1]),
|
||||
access([it3.a]), partitions(p0)
|
||||
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
a
|
||||
5
|
||||
8
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
Query Plan
|
||||
===========================================================
|
||||
|ID|OPERATOR |NAME |EST. ROWS|COST|
|
||||
-----------------------------------------------------------
|
||||
|0 |NESTED-LOOP JOIN CARTESIAN | |16 |162 |
|
||||
|1 | TABLE SCAN |nt4 |8 |38 |
|
||||
|2 | MATERIAL | |2 |114 |
|
||||
|3 | NESTED-LOOP SEMI JOIN CARTESIAN| |2 |113 |
|
||||
|4 | TABLE SCAN |nt2 |2 |37 |
|
||||
|5 | MATERIAL | |1 |76 |
|
||||
|6 | SUBPLAN SCAN |VIEW1|1 |75 |
|
||||
|7 | NESTED-LOOP JOIN CARTESIAN | |1 |75 |
|
||||
|8 | TABLE SCAN |it1 |1 |37 |
|
||||
|9 | MATERIAL | |1 |39 |
|
||||
|10| TABLE SCAN |it3 |1 |38 |
|
||||
===========================================================
|
||||
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([nt2.a], [nt4.a]), filter(nil),
|
||||
conds(nil), nl_params_(nil)
|
||||
1 - output([nt4.a]), filter(nil),
|
||||
access([nt4.a]), partitions(p0)
|
||||
2 - output([nt2.a]), filter(nil)
|
||||
3 - output([nt2.a]), filter(nil),
|
||||
conds(nil), nl_params_(nil)
|
||||
4 - output([nt2.a]), filter(nil),
|
||||
access([nt2.a]), partitions(p0)
|
||||
5 - output([1]), filter(nil)
|
||||
6 - output([1]), filter(nil),
|
||||
access(nil)
|
||||
7 - output([1]), filter(nil),
|
||||
conds(nil), nl_params_(nil)
|
||||
8 - output([1]), filter([it1.a = 1]),
|
||||
access([it1.a]), partitions(p0)
|
||||
9 - output([1]), filter(nil)
|
||||
10 - output([1]), filter([it3.a = 1]),
|
||||
access([it3.a]), partitions(p0)
|
||||
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
a a
|
||||
5 1
|
||||
8 1
|
||||
5 3
|
||||
8 3
|
||||
5 5
|
||||
8 5
|
||||
5 7
|
||||
8 7
|
||||
5 9
|
||||
8 9
|
||||
5 7
|
||||
8 7
|
||||
5 3
|
||||
8 3
|
||||
5 1
|
||||
8 1
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t0 AS ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
Query Plan
|
||||
=====================================================
|
||||
|ID|OPERATOR |NAME |EST. ROWS|COST |
|
||||
-----------------------------------------------------
|
||||
|0 |NESTED-LOOP JOIN CARTESIAN| |1961 |96769|
|
||||
|1 | HASH RIGHT SEMI JOIN | |981 |95345|
|
||||
|2 | SUBPLAN SCAN |VIEW1|1 |78 |
|
||||
|3 | HASH JOIN | |1 |78 |
|
||||
|4 | TABLE SCAN |it2 |1 |36 |
|
||||
|5 | TABLE SCAN |it4 |8 |38 |
|
||||
|6 | TABLE SCAN |ot1 |100000 |61860|
|
||||
|7 | MATERIAL | |2 |37 |
|
||||
|8 | TABLE SCAN |nt3 |2 |37 |
|
||||
=====================================================
|
||||
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([ot1.a], [nt3.a]), filter(nil),
|
||||
conds(nil), nl_params_(nil)
|
||||
1 - output([ot1.a]), filter(nil),
|
||||
equal_conds([ot1.a = VIEW1.a]), other_conds(nil)
|
||||
2 - output([VIEW1.a]), filter(nil),
|
||||
access([VIEW1.a])
|
||||
3 - output([it2.a]), filter(nil),
|
||||
equal_conds([it2.a = it4.a]), other_conds(nil)
|
||||
4 - output([it2.a]), filter(nil),
|
||||
access([it2.a]), partitions(p0)
|
||||
5 - output([it4.a]), filter(nil),
|
||||
access([it4.a]), partitions(p0)
|
||||
6 - output([ot1.a]), filter(nil),
|
||||
access([ot1.a]), partitions(p0)
|
||||
7 - output([nt3.a]), filter(nil)
|
||||
8 - output([nt3.a]), filter(nil),
|
||||
access([nt3.a]), partitions(p0)
|
||||
|
||||
SELECT *
|
||||
FROM t0 as ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
a a
|
||||
DROP TABLE t0, t1, t2, t6, t8;
|
@ -1,108 +0,0 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
#
|
||||
# Run subquery_sj.inc with semijoin and turn off all strategies, but FirstMatch
|
||||
#
|
||||
|
||||
#--source include/have_semijoin.inc
|
||||
#--source include/have_firstmatch.inc
|
||||
#set optimizer_switch='semijoin=on,firstmatch=on';
|
||||
#
|
||||
#--disable_query_log
|
||||
#if (`select locate('materialization', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='materialization=off';
|
||||
#}
|
||||
#if (`select locate('loosescan', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='loosescan=off';
|
||||
#}
|
||||
#if (`select locate('index_condition_pushdown', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='index_condition_pushdown=off';
|
||||
#}
|
||||
#if (`select locate('mrr', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='mrr=off';
|
||||
#}
|
||||
#--enable_query_log
|
||||
#
|
||||
#--source include/subquery_sj.inc
|
||||
|
||||
--echo #
|
||||
--echo # certain query plans
|
||||
--echo #
|
||||
|
||||
#SET @@default_storage_engine='innodb';
|
||||
#SET @@optimizer_switch='semijoin=on,materialization=off,firstmatch=on,loosescan=off,block_nested_loop=off,batched_key_access=off';
|
||||
--disable_warnings
|
||||
drop table if exists t0, t1, t2, t3, t6, t8;
|
||||
drop view if exists v1, v2, v3, v_t2, view_b, view_c;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t0(a INTEGER);
|
||||
|
||||
CREATE TABLE t1(a INTEGER);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
CREATE TABLE t2(a INTEGER);
|
||||
INSERT INTO t2 VALUES(5), (8);
|
||||
|
||||
CREATE TABLE t6(a INTEGER);
|
||||
INSERT INTO t6 VALUES(7), (1), (0), (5), (1), (4);
|
||||
|
||||
CREATE TABLE t8(a INTEGER);
|
||||
INSERT INTO t8 VALUES(1), (3), (5), (7), (9), (7), (3), (1);
|
||||
|
||||
-- disable_query_log
|
||||
-- disable_result_log
|
||||
#ANALYZE TABLE t0;
|
||||
#ANALYZE TABLE t1;
|
||||
#ANALYZE TABLE t2;
|
||||
#ANALYZE TABLE t6;
|
||||
#ANALYZE TABLE t8;
|
||||
-- enable_result_log
|
||||
-- enable_query_log
|
||||
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t0 AS ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
|
||||
SELECT *
|
||||
FROM t0 as ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
|
||||
DROP TABLE t0, t1, t2, t6, t8;
|
||||
|
||||
#SET @@default_storage_engine=default;
|
||||
#SET @@optimizer_switch=default;
|
||||
|
||||
|
||||
#set optimizer_switch=default;
|
||||
|
Loading…
x
Reference in New Issue
Block a user