remove some test cases conflict with gpl (#819)
This commit is contained in:
		| @ -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; |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 Laughing
					Laughing