27 changed files with 4448 additions and 10 deletions
-
34plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet6.result
-
28plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet6.test
-
17plugin/type_inet/mysql-test/type_inet/rpl_type_inet6.result
-
16plugin/type_inet/mysql-test/type_inet/rpl_type_inet6.test
-
18plugin/type_inet/mysql-test/type_inet/type_inet6-debug.result
-
14plugin/type_inet/mysql-test/type_inet/type_inet6-debug.test
-
1276plugin/type_inet/mysql-test/type_inet/type_inet6.result
-
835plugin/type_inet/mysql-test/type_inet/type_inet6.test
-
38plugin/type_inet/mysql-test/type_inet/type_inet6_engines.inc
-
104plugin/type_inet/mysql-test/type_inet/type_inet6_innodb.result
-
18plugin/type_inet/mysql-test/type_inet/type_inet6_innodb.test
-
163plugin/type_inet/mysql-test/type_inet/type_inet6_memory.result
-
18plugin/type_inet/mysql-test/type_inet/type_inet6_memory.test
-
104plugin/type_inet/mysql-test/type_inet/type_inet6_myisam.result
-
18plugin/type_inet/mysql-test/type_inet/type_inet6_myisam.test
-
15plugin/type_inet/mysql-test/type_inet/type_inet6_mysql.result
-
6plugin/type_inet/mysql-test/type_inet/type_inet6_mysql.test
-
31plugin/type_inet/mysql-test/type_inet/type_inet6_plugin.result
-
27plugin/type_inet/mysql-test/type_inet/type_inet6_plugin.test
-
25plugin/type_inet/plugin.cc
-
933plugin/type_inet/sql_type_inet.cc
-
682plugin/type_inet/sql_type_inet.h
-
23sql/field.cc
-
10sql/field.h
-
2sql/opt_range.cc
-
1sql/opt_range.h
-
2storage/innobase/handler/ha_innodb.cc
@ -0,0 +1,34 @@ |
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'); |
|||
INSERT INTO t1 VALUES ('ffff::ffff'); |
|||
PREPARE stmt FROM 'INSERT INTO t1 VALUES (?)'; |
|||
EXECUTE stmt USING CAST('::1' AS INET6); |
|||
EXECUTE stmt USING CAST(CONCAT(REPEAT(0x00,15), 0x02) AS INET6); |
|||
DEALLOCATE PREPARE stmt; |
|||
BEGIN NOT ATOMIC |
|||
DECLARE a INET6 DEFAULT '::3'; |
|||
INSERT INTO t1 VALUES (a); |
|||
END; |
|||
$$ |
|||
DROP TABLE t1; |
|||
include/show_binlog_events.inc |
|||
Log_name Pos Event_type Server_id End_log_pos Info |
|||
master-bin.000001 # Gtid # # GTID #-#-# |
|||
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INET6) |
|||
master-bin.000001 # Gtid # # BEGIN GTID #-#-# |
|||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('::') |
|||
master-bin.000001 # Query # # COMMIT |
|||
master-bin.000001 # Gtid # # BEGIN GTID #-#-# |
|||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('ffff::ffff') |
|||
master-bin.000001 # Query # # COMMIT |
|||
master-bin.000001 # Gtid # # BEGIN GTID #-#-# |
|||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('::1') |
|||
master-bin.000001 # Query # # COMMIT |
|||
master-bin.000001 # Gtid # # BEGIN GTID #-#-# |
|||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('::2') |
|||
master-bin.000001 # Query # # COMMIT |
|||
master-bin.000001 # Gtid # # BEGIN GTID #-#-# |
|||
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ( NAME_CONST('a','::3')) |
|||
master-bin.000001 # Query # # COMMIT |
|||
master-bin.000001 # Gtid # # GTID #-#-# |
|||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ |
|||
@ -0,0 +1,28 @@ |
|||
--source include/not_embedded.inc |
|||
--source include/have_binlog_format_statement.inc |
|||
|
|||
--disable_query_log |
|||
reset master; # get rid of previous tests binlog |
|||
--enable_query_log |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'); |
|||
INSERT INTO t1 VALUES ('ffff::ffff'); |
|||
|
|||
PREPARE stmt FROM 'INSERT INTO t1 VALUES (?)'; |
|||
EXECUTE stmt USING CAST('::1' AS INET6); |
|||
EXECUTE stmt USING CAST(CONCAT(REPEAT(0x00,15), 0x02) AS INET6); |
|||
DEALLOCATE PREPARE stmt; |
|||
|
|||
DELIMITER $$; |
|||
BEGIN NOT ATOMIC |
|||
DECLARE a INET6 DEFAULT '::3'; |
|||
INSERT INTO t1 VALUES (a); |
|||
END; |
|||
$$ |
|||
DELIMITER ;$$ |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
--let $binlog_file = LAST |
|||
source include/show_binlog_events.inc; |
|||
@ -0,0 +1,17 @@ |
|||
include/master-slave.inc |
|||
[connection master] |
|||
# |
|||
# MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
# |
|||
connection master; |
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('ffff::ffff'); |
|||
connection slave; |
|||
SELECT HEX(a), a FROM t1; |
|||
HEX(a) a |
|||
00000000000000000000000000000000 :: |
|||
FFFF000000000000000000000000FFFF ffff::ffff |
|||
connection master; |
|||
DROP TABLE t1; |
|||
connection slave; |
|||
include/rpl_end.inc |
|||
@ -0,0 +1,16 @@ |
|||
--source include/master-slave.inc |
|||
|
|||
--echo # |
|||
--echo # MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
--echo # |
|||
|
|||
connection master; |
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('ffff::ffff'); |
|||
sync_slave_with_master; |
|||
SELECT HEX(a), a FROM t1; |
|||
connection master; |
|||
DROP TABLE t1; |
|||
sync_slave_with_master; |
|||
|
|||
--source include/rpl_end.inc |
|||
@ -0,0 +1,18 @@ |
|||
# |
|||
# MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
# |
|||
SET @old_debug_dbug=@@debug_dbug; |
|||
SET debug_dbug="+d,frm_data_type_info"; |
|||
CREATE TABLE t1 (c01 INET6, c02 INET6); |
|||
Warnings: |
|||
Note 1105 build_frm_image: Field data type info length: 14 |
|||
Note 1105 DBUG: [0] name='c01' type_info='inet6' |
|||
Note 1105 DBUG: [1] name='c02' type_info='inet6' |
|||
SET debug_dbug=@old_debug_dbug; |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`c01` inet6 DEFAULT NULL, |
|||
`c02` inet6 DEFAULT NULL |
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
|||
DROP TABLE t1; |
|||
@ -0,0 +1,14 @@ |
|||
--source include/have_debug.inc |
|||
|
|||
--echo # |
|||
--echo # MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
--echo # |
|||
|
|||
SET @old_debug_dbug=@@debug_dbug; |
|||
|
|||
SET debug_dbug="+d,frm_data_type_info"; |
|||
CREATE TABLE t1 (c01 INET6, c02 INET6); |
|||
SET debug_dbug=@old_debug_dbug; |
|||
|
|||
SHOW CREATE TABLE t1; |
|||
DROP TABLE t1; |
|||
1276
plugin/type_inet/mysql-test/type_inet/type_inet6.result
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,835 @@ |
|||
|
|||
--echo # |
|||
--echo # Basic CREATE functionality, defaults, metadata |
|||
--echo # |
|||
|
|||
--error ER_WRONG_FIELD_SPEC |
|||
CREATE TABLE t1 (a INET6 AUTO_INCREMENT); |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
SHOW CREATE TABLE t1; |
|||
DESCRIBE t1; |
|||
--vertical_results |
|||
--replace_column 19 # |
|||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='test' AND table_name='t1'; |
|||
--horizontal_results |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::1'); |
|||
--enable_metadata |
|||
SELECT * FROM t1; |
|||
SELECT CAST('::' AS INET6) AS a; |
|||
--disable_metadata |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
CREATE TABLE t1 ( |
|||
c1 INET6 DEFAULT 0x00000000000000000000000000000000, |
|||
c2 INET6 DEFAULT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, |
|||
c3 INET6 DEFAULT '::', |
|||
c4 INET6 DEFAULT 'FFFF::ffff', |
|||
c5 INET6 DEFAULT CAST(X'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' AS INET6) |
|||
); |
|||
SHOW CREATE TABLE t1; |
|||
DESCRIBE t1; |
|||
--vertical_results |
|||
--replace_column 19 # |
|||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='test' AND table_name='t1'; |
|||
--horizontal_results |
|||
DROP TABLE t1; |
|||
|
|||
--error ER_INVALID_DEFAULT |
|||
CREATE TABLE t1 (c1 INET6 DEFAULT 0x00); |
|||
--error ER_INVALID_DEFAULT |
|||
CREATE TABLE t1 (c1 INET6 DEFAULT ''); |
|||
|
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
--error ER_TRUNCATED_WRONG_VALUE |
|||
INSERT INTO t1 VALUES ('x'); |
|||
--error ER_TRUNCATED_WRONG_VALUE |
|||
INSERT INTO t1 VALUES (1); |
|||
--error ER_TRUNCATED_WRONG_VALUE |
|||
INSERT INTO t1 VALUES (TIME'10:20:30'); |
|||
--error ER_TRUNCATED_WRONG_VALUE |
|||
INSERT INTO t1 VALUES (0x00); |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # CAST |
|||
--echo # |
|||
|
|||
SELECT CAST('garbage' AS INET6); |
|||
SELECT CAST(0x01 AS INET6); |
|||
SELECT CAST(REPEAT(0x00,16) AS INET6); |
|||
SELECT CAST(REPEAT(0x11,16) AS INET6); |
|||
|
|||
CREATE TABLE t1 AS SELECT CAST('::' AS INET6); |
|||
SHOW CREATE TABLE t1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Text and binary formats, comparison operators |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES (0x00000000000000000000000000000000); |
|||
INSERT INTO t1 VALUES (0x00000000000000000000000000000001); |
|||
INSERT INTO t1 VALUES (0xFFFF0000000000000000000000000001); |
|||
INSERT INTO t1 VALUES (0xFFFF0000000000000000000000000002); |
|||
SELECT * FROM t1 ORDER BY a; |
|||
SELECT * FROM t1 ORDER BY a DESC; |
|||
SELECT HEX(a),a FROM t1 ORDER BY a; |
|||
SELECT * FROM t1 WHERE a='::'; |
|||
SELECT * FROM t1 WHERE a='::1'; |
|||
SELECT * FROM t1 WHERE a='ffff::1'; |
|||
SELECT * FROM t1 WHERE a='ffff::2'; |
|||
SELECT * FROM t1 WHERE a=0x00000000000000000000000000000000; |
|||
SELECT * FROM t1 WHERE a=0x00000000000000000000000000000001; |
|||
SELECT * FROM t1 WHERE a=0xffff0000000000000000000000000001; |
|||
SELECT * FROM t1 WHERE a=0xffff0000000000000000000000000002; |
|||
SELECT * FROM t1 WHERE a<'::'; |
|||
SELECT * FROM t1 WHERE a<='::'; |
|||
SELECT * FROM t1 WHERE a>='ffff::2'; |
|||
SELECT * FROM t1 WHERE a>'ffff::2'; |
|||
SELECT * FROM t1 WHERE a IN ('::', 'ffff::1') ORDER BY a; |
|||
SELECT * FROM t1 WHERE a IN ('::', 0xffff0000000000000000000000000002) ORDER BY a; |
|||
|
|||
SELECT * FROM t1 WHERE a<'garbage'; |
|||
SELECT * FROM t1 WHERE a<='garbage'; |
|||
SELECT * FROM t1 WHERE a='garbage'; |
|||
SELECT * FROM t1 WHERE a>='garbage'; |
|||
SELECT * FROM t1 WHERE a>'garbage'; |
|||
|
|||
SELECT * FROM t1 WHERE a<0x01; |
|||
SELECT * FROM t1 WHERE a<=0x01; |
|||
SELECT * FROM t1 WHERE a=0x01; |
|||
SELECT * FROM t1 WHERE a>=0x01; |
|||
SELECT * FROM t1 WHERE a>0x01; |
|||
|
|||
SELECT * FROM t1 WHERE a='0::0'; |
|||
SELECT * FROM t1 WHERE a='0::00'; |
|||
SELECT * FROM t1 WHERE a='0::000'; |
|||
SELECT * FROM t1 WHERE a='0::0000'; |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT * FROM t1 WHERE a=0; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT * FROM t1 WHERE a=0.0; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT * FROM t1 WHERE a=0e0; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT * FROM t1 WHERE a=TIME'10:20:30'; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT * FROM t1 WHERE a IN ('::', 10); |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # cmp_item_inet6: IN for non-constants |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6, b INET6); |
|||
INSERT INTO t1 VALUES ('::1', '::2'); |
|||
SELECT * FROM t1 WHERE '::' IN (a, b); |
|||
SELECT * FROM t1 WHERE '::1' IN (a, b); |
|||
SELECT * FROM t1 WHERE '::01' IN (a, b); |
|||
SELECT * FROM t1 WHERE '00::01' IN (a, b); |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # cmp_item_inet6: DECODE_ORACLE |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES (NULL),('::01'),('::02'); |
|||
SELECT a, DECODE_ORACLE(a, '::01', '01') AS d FROM t1; |
|||
SELECT |
|||
a, |
|||
DECODE_ORACLE(a, '::01', '01') AS d0, |
|||
DECODE_ORACLE(a, NULL, '<NULL>', '::01', '01') AS d1, |
|||
DECODE_ORACLE(a, 'garbage', '<NULL>', '::01', '01') AS d2 |
|||
FROM t1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # CASE abbreviations |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 ( |
|||
c INET6, |
|||
c_char CHAR(32), |
|||
c_varchar VARCHAR(32), |
|||
c_tinytext TINYTEXT, |
|||
c_text TEXT, |
|||
c_mediumtext TEXT, |
|||
c_longtext LONGTEXT |
|||
); |
|||
CREATE TABLE t2 AS SELECT |
|||
COALESCE(c, c_char), |
|||
COALESCE(c, c_varchar), |
|||
COALESCE(c, c_tinytext), |
|||
COALESCE(c, c_text), |
|||
COALESCE(c, c_mediumtext), |
|||
COALESCE(c, c_longtext) |
|||
FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
CREATE TABLE t2 AS SELECT |
|||
LEAST(c, c_char), |
|||
LEAST(c, c_varchar), |
|||
LEAST(c, c_tinytext), |
|||
LEAST(c, c_text), |
|||
LEAST(c, c_mediumtext), |
|||
LEAST(c, c_longtext) |
|||
FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES (NULL),('::1'),('::2'); |
|||
SELECT COALESCE(a, '::') FROM t1 ORDER BY a; |
|||
SELECT a, LEAST(a,'::0'), LEAST(a,'::f') FROM t1 ORDER BY a; |
|||
SELECT a, GREATEST(a,'::0'), GREATEST(a,'::f') FROM t1 ORDER BY a; |
|||
|
|||
CREATE TABLE t2 AS SELECT |
|||
COALESCE(a, '::'), |
|||
LEAST(a,'::'), |
|||
GREATEST(a,'::') |
|||
FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
|
|||
SELECT COALESCE(a, 0x00000000000000000000000000000000) FROM t1 ORDER BY a; |
|||
SELECT a, |
|||
LEAST(a, 0x00000000000000000000000000000000), |
|||
LEAST(a, 0x0000000000000000000000000000000f) |
|||
FROM t1 ORDER BY a; |
|||
SELECT a, |
|||
GREATEST(a, 0x00000000000000000000000000000000), |
|||
GREATEST(a, 0x0000000000000000000000000000000f) |
|||
FROM t1 ORDER BY a; |
|||
|
|||
CREATE TABLE t2 AS SELECT |
|||
COALESCE(a, 0x00000000000000000000000000000000), |
|||
LEAST(a,0x00000000000000000000000000000000), |
|||
GREATEST(a,0x00000000000000000000000000000000) |
|||
FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT COALESCE(a, 10) FROM t1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT LEAST(a, 10) FROM t1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT GREATEST(a, 10) FROM t1; |
|||
DROP TABLE t1; |
|||
|
|||
SELECT COALESCE('garbage', CAST('::1' AS INET6)); |
|||
SELECT COALESCE(0x01, CAST('::1' AS INET6)); |
|||
|
|||
|
|||
--echo # |
|||
--echo # Uniqueness |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6 NOT NULL PRIMARY KEY); |
|||
INSERT INTO t1 VALUES ('41::1'),('61::1'); |
|||
--error ER_DUP_ENTRY |
|||
INSERT INTO t1 VALUES ('41::1'); |
|||
SELECT * FROM t1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Indexes |
|||
--echo # |
|||
|
|||
--error ER_WRONG_SUB_KEY |
|||
CREATE TABLE t1 (a INET6, KEY(a(1))); |
|||
|
|||
|
|||
--echo # |
|||
--echo # Explicit CAST on INSERT |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES (CAST('1::1' AS INET6)); |
|||
INSERT INTO t1 VALUES (CAST('1::2' AS INET6)); |
|||
INSERT INTO t1 VALUES (CAST('1::3' AS INET6)); |
|||
INSERT INTO t1 VALUES (CAST(CONCAT('2','::1') AS INET6)); |
|||
INSERT INTO t1 VALUES (CAST(CONCAT('2','::2') AS INET6)); |
|||
INSERT INTO t1 VALUES (CAST(CONCAT('2','::3') AS INET6)); |
|||
SELECT * FROM t1 ORDER BY a; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Explicit CAST and implicit CAST on ALTER |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a VARCHAR(64)); |
|||
INSERT INTO t1 VALUES ('garbage'),('::'),('::1'),('ffff::1'),('ffff::2'); |
|||
SELECT a, CAST(a AS INET6) FROM t1 ORDER BY a; |
|||
SELECT a, CAST(a AS INET6) FROM t1 ORDER BY CAST(a AS INET6); |
|||
--error ER_TRUNCATED_WRONG_VALUE |
|||
ALTER TABLE t1 MODIFY a INET6; |
|||
SET sql_mode=''; |
|||
ALTER TABLE t1 MODIFY a INET6; |
|||
SET sql_mode=DEFAULT; |
|||
SELECT * FROM t1 ORDER BY a; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
CREATE TABLE t1 (a BINARY(16)); |
|||
INSERT INTO t1 VALUES (0x00000000000000000000000000000000); |
|||
INSERT INTO t1 VALUES (0x00000000000000000000000000000001); |
|||
INSERT INTO t1 VALUES (0xffff0000000000000000000000000001); |
|||
INSERT INTO t1 VALUES (0xffff0000000000000000000000000002); |
|||
SELECT HEX(a), CAST(a AS INET6) FROM t1 ORDER BY a; |
|||
ALTER TABLE t1 MODIFY a INET6; |
|||
SELECT * FROM t1 ORDER BY a; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # INSERT..SELECT, same data types |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('::1'),('::2'); |
|||
CREATE TABLE t2 (a INET6); |
|||
INSERT INTO t2 SELECT a FROM t1; |
|||
SELECT * FROM t2; |
|||
DROP TABLE t1,t2; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Implicit CAST on INSERT..SELECT, text format |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a VARCHAR(64)); |
|||
INSERT INTO t1 VALUES ('garbage'),('::'),('::1'),('ffff::1'),('ffff::2'); |
|||
|
|||
CREATE TABLE t2 (a INET6); |
|||
--error ER_TRUNCATED_WRONG_VALUE |
|||
INSERT INTO t2 SELECT a FROM t1; |
|||
SET sql_mode=''; |
|||
INSERT INTO t2 SELECT a FROM t1; |
|||
SELECT * FROM t2 ORDER BY a; |
|||
SET sql_mode=DEFAULT; |
|||
DROP TABLE t2; |
|||
|
|||
CREATE TABLE t2 (a INET6 NOT NULL); |
|||
--error ER_TRUNCATED_WRONG_VALUE |
|||
INSERT INTO t2 SELECT a FROM t1; |
|||
SET sql_mode=''; |
|||
INSERT INTO t2 SELECT a FROM t1; |
|||
SELECT * FROM t2 ORDER BY a; |
|||
SET sql_mode=DEFAULT; |
|||
DROP TABLE t2; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Implicit CAST on INSERT..SELECT, binary format |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a BINARY(16)); |
|||
INSERT INTO t1 VALUES (0x00000000000000000000000000000000); |
|||
INSERT INTO t1 VALUES (0x00000000000000000000000000000001); |
|||
INSERT INTO t1 VALUES (0xffff0000000000000000000000000001); |
|||
INSERT INTO t1 VALUES (0xffff0000000000000000000000000002); |
|||
CREATE TABLE t2 (a INET6); |
|||
INSERT INTO t2 SELECT a FROM t1; |
|||
SELECT a FROM t2 ORDER BY a; |
|||
DROP TABLE t1,t2; |
|||
|
|||
|
|||
--echo # |
|||
--echo # CAST to other data types |
|||
--echo # |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CAST(CAST('::' AS INET6) AS DOUBLE); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CAST(CAST('::' AS INET6) AS DECIMAL); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CAST(CAST('::' AS INET6) AS SIGNED); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CAST(CAST('::' AS INET6) AS UNSIGNED); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CAST(CAST('::' AS INET6) AS TIME); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CAST(CAST('::' AS INET6) AS DATE); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CAST(CAST('::' AS INET6) AS DATETIME); |
|||
|
|||
SELECT CAST(CAST('::' AS INET6) AS CHAR); |
|||
CREATE TABLE t1 AS SELECT CAST(CAST('::' AS INET6) AS CHAR) AS a; |
|||
SHOW CREATE TABLE t1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Implicit conversion to other types in INSERT |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INT); |
|||
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD |
|||
INSERT INTO t1 VALUES (CAST('::' AS INET6)); |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a DOUBLE); |
|||
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD |
|||
INSERT INTO t1 VALUES (CAST('::' AS INET6)); |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a DECIMAL(32,0)); |
|||
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD |
|||
INSERT INTO t1 VALUES (CAST('::' AS INET6)); |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a VARCHAR(64)); |
|||
INSERT INTO t1 VALUES (CAST('::' AS INET6)); |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a TEXT); |
|||
INSERT INTO t1 VALUES (CAST('::' AS INET6)); |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
|
|||
--echo # |
|||
--echo # Boolean context |
|||
--echo # |
|||
|
|||
SELECT |
|||
CAST('::' AS INET6) IS TRUE, |
|||
CAST('::' AS INET6) IS FALSE, |
|||
CAST('::1' AS INET6) IS TRUE, |
|||
CAST('::1' AS INET6) IS FALSE; |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('::1'); |
|||
SELECT a, a IS TRUE, a IS FALSE FROM t1 ORDER BY a; |
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# TODO: Error looks like a bug. This should return rows where a<>'::'. |
|||
# The same problem is repeatable with GEOMETRY. |
|||
# |
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('::1'),('::2'); |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT * FROM t1 WHERE a; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # GROUP BY |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('::'); |
|||
INSERT INTO t1 VALUES ('::1'),('::01'),('::0001'); |
|||
INSERT INTO t1 VALUES ('::2'),('::2'),('::2'),('::2'); |
|||
SELECT a, COUNT(*) FROM t1 GROUP BY a; |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # Aggregate functions |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('::'); |
|||
INSERT INTO t1 VALUES ('::1'),('::01'),('::0001'); |
|||
INSERT INTO t1 VALUES ('::2'),('::2'),('::2'),('::2'); |
|||
SELECT MIN(a),MAX(a) FROM t1; |
|||
|
|||
CREATE TABLE t2 AS SELECT MIN(a), MAX(a) FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT AVG(a) FROM t1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT AVG(DISTINCT a) FROM t1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT SUM(a) FROM t1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT SUM(DISTINCT a) FROM t1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT STDDEV(a) FROM t1; |
|||
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1; |
|||
SELECT a, GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a; |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # Window functions |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::1'),('::2'),('::3'),('::4'); |
|||
SELECT |
|||
a, |
|||
LAG(a) OVER (ORDER BY a), |
|||
LEAD(a) OVER (ORDER BY a) |
|||
FROM t1 ORDER BY a; |
|||
|
|||
SELECT |
|||
a, |
|||
FIRST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING), |
|||
LAST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) |
|||
FROM t1 ORDER BY a; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Prepared statements |
|||
--echo # |
|||
|
|||
EXECUTE IMMEDIATE 'CREATE TABLE t1 AS SELECT ? AS a' USING CAST('::' AS INET6); |
|||
SHOW CREATE TABLE t1; |
|||
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING '::1'; |
|||
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING CAST('::2' AS INET6); |
|||
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING 0x00000000000000000000000000000003; |
|||
SELECT a FROM t1 ORDER BY a; |
|||
EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING '::1'; |
|||
EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING CAST('::2' AS INET6); |
|||
EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING 0x00000000000000000000000000000003; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Character set and collation aggregation |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
|
|||
CREATE TABLE t2 AS SELECT |
|||
CONCAT(a) AS c1, |
|||
CONCAT(CAST('::' AS INET6)) AS c2 |
|||
FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
|
|||
CREATE TABLE t2 AS SELECT |
|||
CONCAT(_utf8'1', a) AS c1, |
|||
CONCAT(_utf8'1', CAST('::1' AS INET6)) AS c2, |
|||
CONCAT(_utf8'1', COALESCE(a)) AS c3 |
|||
FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
|
|||
CREATE TABLE t2 AS SELECT |
|||
CONCAT(_latin1'1', a) AS c1, |
|||
CONCAT(_latin1'1', CAST('::1' AS INET6)) AS c2, |
|||
CONCAT(_latin1'1', COALESCE(a)) AS c3 |
|||
FROM t1; |
|||
SHOW CREATE TABLE t2; |
|||
DROP TABLE t2; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # UNION |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 AS SELECT CAST('::' AS INET6) AS c UNION SELECT CAST('::1' AS INET6); |
|||
SHOW CREATE TABLE t1; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 AS SELECT CAST('::' AS INET6) AS c UNION SELECT '::1'; |
|||
SHOW CREATE TABLE t1; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 AS SELECT '::' AS c UNION SELECT CAST('::1' AS INET6); |
|||
SHOW CREATE TABLE t1; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 AS SELECT CAST('::' AS INET6) AS c UNION SELECT 0x00000000000000000000000000000001; |
|||
SELECT * FROM t1; |
|||
DROP TABLE t1; |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
CREATE TABLE t1 AS SELECT CAST('::' AS INET6) AS c UNION SELECT 1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Unary operators |
|||
--echo # |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT -CAST('::' AS INET6); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT ABS(CAST('::' AS INET6)); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT ROUND(CAST('::' AS INET6)); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT CEILING(CAST('::' AS INET6)); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT FLOOR(CAST('::' AS INET6)); |
|||
|
|||
|
|||
--echo # |
|||
--echo # Arithmetic operators |
|||
--echo # |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT CAST('::' AS INET6) + 1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT CAST('::' AS INET6) - 1; |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT CAST('::' AS INET6) * 1; |
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT CAST('::' AS INET6) / 1; |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION |
|||
SELECT CAST('::' AS INET6) MOD 1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Misc |
|||
--echo # |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT RAND(CAST('::' AS INET6)); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT FROM_UNIXTIME(CAST('::' AS INET6)); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT HOUR(CAST('::' AS INET6)); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT YEAR(CAST('::' AS INET6)); |
|||
|
|||
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION |
|||
SELECT RELEASE_LOCK(CAST('::' AS INET6)); |
|||
|
|||
|
|||
SELECT JSON_LENGTH(CAST('::' AS INET6)); |
|||
|
|||
--echo # |
|||
--echo # Virtual columns |
|||
--echo # |
|||
|
|||
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED |
|||
CREATE TABLE t1 ( |
|||
a INT, |
|||
b INET6 GENERATED ALWAYS AS (CAST(CONCAT(RAND(),a) AS INET6)), INDEX(b) |
|||
); |
|||
|
|||
CREATE TABLE t1 ( |
|||
a INT, |
|||
b INET6 GENERATED ALWAYS AS (CAST(CONCAT('::',HEX(a)) AS INET6)), INDEX(b) |
|||
); |
|||
INSERT INTO t1 (a) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15); |
|||
SELECT * FROM t1; |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # VIEW |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INT DEFAULT 0); |
|||
INSERT INTO t1 (a) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15); |
|||
SELECT * FROM t1 ORDER BY a; |
|||
CREATE VIEW v1 AS SELECT (CAST(CONCAT('::',HEX(a)) AS INET6)) AS c FROM t1; |
|||
SELECT * FROM v1 ORDER BY c; |
|||
DROP VIEW v1; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a INET6 DEFAULT '::'); |
|||
CREATE VIEW v1 AS SELECT * FROM t1; |
|||
SHOW CREATE VIEW v1; |
|||
DESCRIBE v1; |
|||
INSERT INTO v1 VALUES ('::'),('::1'),('::2'); |
|||
SELECT * FROM t1; |
|||
DROP VIEW v1; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1 (a INET6 DEFAULT CAST('::' AS INET6)); |
|||
CREATE VIEW v1 AS SELECT * FROM t1; |
|||
SHOW CREATE VIEW v1; |
|||
DESCRIBE v1; |
|||
INSERT INTO v1 VALUES ('::'),('::1'),('::2'); |
|||
SELECT * FROM t1; |
|||
DROP VIEW v1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Subqueries |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::'),('::1'),('::2'); |
|||
SELECT * FROM t1 WHERE a=(SELECT MIN(a) FROM t1) ORDER BY a; |
|||
SELECT * FROM t1 WHERE a=(SELECT MAX(a) FROM t1) ORDER BY a; |
|||
SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 WHERE a>'::') ORDER BY a; |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # Stored routines |
|||
--echo # |
|||
|
|||
DELIMITER $$; |
|||
CREATE PROCEDURE p1(a INET6) |
|||
BEGIN |
|||
DECLARE b INET6 DEFAULT CONCAT('1', a); |
|||
SELECT a, b; |
|||
END; |
|||
$$ |
|||
DELIMITER ;$$ |
|||
CALL p1('::1'); |
|||
CALL p1(CAST('::2' AS INET6)); |
|||
DROP PROCEDURE p1; |
|||
|
|||
DELIMITER $$; |
|||
CREATE FUNCTION f1(a INET6) RETURNS INET6 |
|||
BEGIN |
|||
RETURN CONCAT('1',a); |
|||
END; |
|||
$$ |
|||
DELIMITER ;$$ |
|||
SELECT f1('::1'); |
|||
SELECT f1(CAST('::1' AS INET6)); |
|||
DROP FUNCTION f1; |
|||
|
|||
--echo # |
|||
--echo # Anchored data types in SP variables |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
INSERT INTO t1 VALUES ('::1'); |
|||
DELIMITER $$; |
|||
CREATE PROCEDURE p1() |
|||
BEGIN |
|||
DECLARE va TYPE OF t1.a; |
|||
SELECT MAX(a) INTO va FROM t1; |
|||
SELECT va; |
|||
END; |
|||
$$ |
|||
DELIMITER ;$$ |
|||
CALL p1; |
|||
DROP PROCEDURE p1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
CREATE TABLE t1 (a INET6, b INET6); |
|||
INSERT INTO t1 VALUES ('::a', '::b'); |
|||
DELIMITER $$; |
|||
CREATE PROCEDURE p1() |
|||
BEGIN |
|||
DECLARE va ROW TYPE OF t1; |
|||
SELECT MAX(a), MAX(b) INTO va FROM t1; |
|||
SELECT va.a, va.b; |
|||
END; |
|||
$$ |
|||
DELIMITER ;$$ |
|||
CALL p1; |
|||
DROP PROCEDURE p1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Optimizer: make_const_item_for_comparison |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (id INT, a INET6); |
|||
INSERT INTO t1 VALUES (1,'::1'),(2,'::2'); |
|||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=COALESCE(CAST('::1' AS INET6)) AND id>0; |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # Optimizer: equal field propagation |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (id INT, a INET6); |
|||
INSERT INTO t1 VALUES (1,'::1'),(2,'::2'); |
|||
EXPLAIN EXTENDED SELECT * FROM t1 |
|||
WHERE a=COALESCE(CAST('::1' AS INET6)) |
|||
AND LENGTH(CONCAT(a,RAND()))>1; |
|||
EXPLAIN EXTENDED SELECT * FROM t1 |
|||
WHERE a=COALESCE(CAST('::1' AS INET6)) |
|||
AND LENGTH(a)>1; |
|||
DROP TABLE t1; |
|||
|
|||
|
|||
--echo # |
|||
--echo # Optimizer: equal expression propagation |
|||
--echo # |
|||
|
|||
|
|||
CREATE TABLE t1 (id INT, a INET6); |
|||
INSERT INTO t1 VALUES (1,'::1'),(2,'::2'); |
|||
EXPLAIN EXTENDED SELECT * FROM t1 |
|||
WHERE COALESCE(a)='::1' AND COALESCE(a)=CONCAT(a); |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # Subquery materialization |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6, b VARCHAR(32), KEY (a), KEY(b)) ; |
|||
INSERT INTO t1 VALUES ('::a','::a'),('::a','::b'); |
|||
SET @@optimizer_switch='semijoin=off,materialization=on,in_to_exists=off,subquery_cache=off'; |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT a AS a_inner FROM t1 GROUP BY a_inner); |
|||
EXPLAIN SELECT * FROM t1 WHERE b IN (SELECT a AS a_inner FROM t1 GROUP BY a_inner); |
|||
SET @@optimizer_switch=DEFAULT; |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # IS_IPV4_MAPPED(), IS_IPV4_COMPAT() now understand text notation |
|||
--echo # |
|||
CREATE TABLE t1 (id SERIAL, a VARCHAR(32)); |
|||
INSERT INTO t1 (a) VALUES ('::192.168.0.1'),('::192.168.10.111'),('::ffff:10.10.0.1'),('::ffff:192.168.0.1'); |
|||
--echo # This is a text notation |
|||
SELECT id, length(a), a, IS_IPV4_MAPPED(a) FROM t1 ORDER BY id; |
|||
SELECT id, length(a), a, IS_IPV4_COMPAT(a) FROM t1 ORDER BY id; |
|||
--echo # This is not a text notation: it is a binary input only looking like text notation |
|||
SELECT id, length(a), a, IS_IPV4_MAPPED(BINARY a) FROM t1 ORDER BY id; |
|||
SELECT id, length(a), a, IS_IPV4_COMPAT(BINARY a) FROM t1 ORDER BY id; |
|||
DROP TABLE t1; |
|||
|
|||
--echo # |
|||
--echo # Limit clause parameter |
|||
--echo # TODO: this should fail. |
|||
--echo # The test for a valid data type should be moved |
|||
--echo # from parse time to fix_fields() time, and performed |
|||
--echo # for both Item_splocal and Item_param. |
|||
--echo # |
|||
|
|||
EXECUTE IMMEDIATE 'SELECT 1 FROM DUAL LIMIT ?' USING CAST('::' AS INET6); |
|||
|
|||
|
|||
## TODO: |
|||
## - Add hooks to run mysql_client_test with pluggable data types |
|||
## |
|||
## - This should fail with the "illegal data type" error: |
|||
##SELECT CAST('::' AS INET6) DIV 1; |
|||
## |
|||
## - This should fail with the "illegal data type" error: |
|||
## EXTRACT(MINUTE...) |
|||
## |
|||
@ -0,0 +1,38 @@ |
|||
--echo # |
|||
--echo # Range optimizer |
|||
--echo # |
|||
|
|||
CREATE TABLE t1 (a INET6, INDEX(a)); |
|||
SHOW CREATE TABLE t1; |
|||
|
|||
DELIMITER $$; |
|||
FOR i IN 0..255 |
|||
DO |
|||
INSERT INTO t1 VALUES (CONCAT('::', HEX(i))); |
|||
END FOR |
|||
$$ |
|||
DELIMITER ;$$ |
|||
SELECT * FROM t1 WHERE a='::ff'; |
|||
EXPLAIN SELECT * FROM t1 WHERE a='::ff'; |
|||
SELECT * FROM t1 WHERE a='garbage'; |
|||
EXPLAIN SELECT * FROM t1 WHERE a='garbage'; |
|||
|
|||
SELECT * FROM t1 WHERE a>='::fe'; |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='::fe'; |
|||
SELECT * FROM t1 WHERE a>='garbage'; |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='garbage'; |
|||
|
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
|
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
|
|||
SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
|
|||
DROP TABLE t1; |
|||
@ -0,0 +1,104 @@ |
|||
# |
|||
# Start of 10.5 tests |
|||
# |
|||
# |
|||
# MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
# |
|||
SET default_storage_engine=InnoDB; |
|||
# |
|||
# Range optimizer |
|||
# |
|||
CREATE TABLE t1 (a INET6, INDEX(a)); |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`a` inet6 DEFAULT NULL, |
|||
KEY `a` (`a`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
FOR i IN 0..255 |
|||
DO |
|||
INSERT INTO t1 VALUES (CONCAT('::', HEX(i))); |
|||
END FOR |
|||
$$ |
|||
SELECT * FROM t1 WHERE a='::ff'; |
|||
a |
|||
::ff |
|||
EXPLAIN SELECT * FROM t1 WHERE a='::ff'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 ref a a 17 const 1 Using where; Using index |
|||
SELECT * FROM t1 WHERE a='garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a='garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a>='::fe'; |
|||
a |
|||
::fe |
|||
::ff |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='::fe'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 2 Using where; Using index |
|||
SELECT * FROM t1 WHERE a>='garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
a |
|||
::80 |
|||
::a0 |
|||
::f0 |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 3 Using where; Using index |
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
a |
|||
::80 |
|||
::a0 |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 2 Using where; Using index |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
a |
|||
::80 |
|||
::81 |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 2 Using where; Using index |
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
a |
|||
::ff |
|||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
id select_type table type possible_keys key key_len ref rows filtered Extra |
|||
1 SIMPLE t1 ref a a 17 const 1 100.00 Using where; Using index |
|||
Warnings: |
|||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET6'::ff' |
|||
DROP TABLE t1; |
|||
# |
|||
# End of 10.5 tests |
|||
# |
|||
@ -0,0 +1,18 @@ |
|||
--source include/have_innodb.inc |
|||
|
|||
--echo # |
|||
--echo # Start of 10.5 tests |
|||
--echo # |
|||
|
|||
--echo # |
|||
--echo # MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
--echo # |
|||
|
|||
|
|||
SET default_storage_engine=InnoDB; |
|||
--source type_inet6_engines.inc |
|||
|
|||
|
|||
--echo # |
|||
--echo # End of 10.5 tests |
|||
--echo # |
|||
@ -0,0 +1,163 @@ |
|||
# |
|||
# Start of 10.5 tests |
|||
# |
|||
# |
|||
# MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
# |
|||
SET default_storage_engine=MEMORY; |
|||
# |
|||
# Range optimizer |
|||
# |
|||
CREATE TABLE t1 (a INET6, INDEX(a)); |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`a` inet6 DEFAULT NULL, |
|||
KEY `a` (`a`) |
|||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 |
|||
FOR i IN 0..255 |
|||
DO |
|||
INSERT INTO t1 VALUES (CONCAT('::', HEX(i))); |
|||
END FOR |
|||
$$ |
|||
SELECT * FROM t1 WHERE a='::ff'; |
|||
a |
|||
::ff |
|||
EXPLAIN SELECT * FROM t1 WHERE a='::ff'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 ref a a 17 const 2 Using where |
|||
SELECT * FROM t1 WHERE a='garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a='garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a>='::fe'; |
|||
a |
|||
::fe |
|||
::ff |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='::fe'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where |
|||
SELECT * FROM t1 WHERE a>='garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where |
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
a |
|||
::80 |
|||
::a0 |
|||
::f0 |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 6 Using where |
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
a |
|||
::80 |
|||
::a0 |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 4 Using where |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
a |
|||
::80 |
|||
::81 |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where |
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where |
|||
SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
a |
|||
::ff |
|||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
id select_type table type possible_keys key key_len ref rows filtered Extra |
|||
1 SIMPLE t1 ref a a 17 const 2 100.00 Using where |
|||
Warnings: |
|||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET6'::ff' |
|||
DROP TABLE t1; |
|||
# |
|||
# End of 10.5 tests |
|||
# |
|||
@ -0,0 +1,18 @@ |
|||
--source include/have_innodb.inc |
|||
|
|||
--echo # |
|||
--echo # Start of 10.5 tests |
|||
--echo # |
|||
|
|||
--echo # |
|||
--echo # MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
--echo # |
|||
|
|||
|
|||
SET default_storage_engine=MEMORY; |
|||
--source type_inet6_engines.inc |
|||
|
|||
|
|||
--echo # |
|||
--echo # End of 10.5 tests |
|||
--echo # |
|||
@ -0,0 +1,104 @@ |
|||
# |
|||
# Start of 10.5 tests |
|||
# |
|||
# |
|||
# MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
# |
|||
SET default_storage_engine=MyISAM; |
|||
# |
|||
# Range optimizer |
|||
# |
|||
CREATE TABLE t1 (a INET6, INDEX(a)); |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`a` inet6 DEFAULT NULL, |
|||
KEY `a` (`a`) |
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
|||
FOR i IN 0..255 |
|||
DO |
|||
INSERT INTO t1 VALUES (CONCAT('::', HEX(i))); |
|||
END FOR |
|||
$$ |
|||
SELECT * FROM t1 WHERE a='::ff'; |
|||
a |
|||
::ff |
|||
EXPLAIN SELECT * FROM t1 WHERE a='::ff'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 ref a a 17 const 1 Using where; Using index |
|||
SELECT * FROM t1 WHERE a='garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a='garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a>='::fe'; |
|||
a |
|||
::fe |
|||
::ff |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='::fe'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 2 Using where; Using index |
|||
SELECT * FROM t1 WHERE a>='garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a>='garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
a |
|||
::80 |
|||
::a0 |
|||
::f0 |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','::f0'); |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 3 Using where; Using index |
|||
SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
a |
|||
::80 |
|||
::a0 |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a IN ('::80','::a0','garbage'); |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 2 Using where; Using index |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
a |
|||
::80 |
|||
::81 |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND '::81'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t1 range a a 17 NULL 2 Using where; Using index |
|||
SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
a |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '::80' AND 'garbage'; |
|||
id select_type table type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables |
|||
Warnings: |
|||
Warning 1292 Incorrect inet6 value: 'garbage' for column `test`.`t1`.`a` at row 1 |
|||
SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
a |
|||
::ff |
|||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('::ff' AS INET6); |
|||
id select_type table type possible_keys key key_len ref rows filtered Extra |
|||
1 SIMPLE t1 ref a a 17 const 1 100.00 Using where; Using index |
|||
Warnings: |
|||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET6'::ff' |
|||
DROP TABLE t1; |
|||
# |
|||
# End of 10.5 tests |
|||
# |
|||
@ -0,0 +1,18 @@ |
|||
--source include/have_innodb.inc |
|||
|
|||
--echo # |
|||
--echo # Start of 10.5 tests |
|||
--echo # |
|||
|
|||
--echo # |
|||
--echo # MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
--echo # |
|||
|
|||
|
|||
SET default_storage_engine=MyISAM; |
|||
--source type_inet6_engines.inc |
|||
|
|||
|
|||
--echo # |
|||
--echo # End of 10.5 tests |
|||
--echo # |
|||
@ -0,0 +1,15 @@ |
|||
CREATE TABLE t1 (a INET6); |
|||
Field 1: `a` |
|||
Catalog: `def` |
|||
Database: `test` |
|||
Table: `t1` |
|||
Org_table: `t1` |
|||
Type: STRING |
|||
Collation: latin1_swedish_ci (8) |
|||
Length: 39 |
|||
Max_length: 0 |
|||
Decimals: 0 |
|||
Flags: UNSIGNED BINARY |
|||
|
|||
|
|||
DROP TABLE t1; |
|||
@ -0,0 +1,6 @@ |
|||
-- source include/have_working_dns.inc |
|||
-- source include/not_embedded.inc |
|||
|
|||
CREATE TABLE t1 (a INET6); |
|||
--exec $MYSQL -t test --column-type-info -e "SELECT * FROM t1" 2>&1 |
|||
DROP TABLE t1; |
|||
@ -0,0 +1,31 @@ |
|||
# |
|||
# Start of 10.5 tests |
|||
# |
|||
# |
|||
# MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
# |
|||
SELECT |
|||
PLUGIN_NAME, |
|||
PLUGIN_VERSION, |
|||
PLUGIN_STATUS, |
|||
PLUGIN_TYPE, |
|||
PLUGIN_AUTHOR, |
|||
PLUGIN_DESCRIPTION, |
|||
PLUGIN_LICENSE, |
|||
PLUGIN_MATURITY, |
|||
PLUGIN_AUTH_VERSION |
|||
FROM INFORMATION_SCHEMA.PLUGINS |
|||
WHERE PLUGIN_TYPE='DATA TYPE' |
|||
AND PLUGIN_NAME='inet6'; |
|||
PLUGIN_NAME inet6 |
|||
PLUGIN_VERSION 1.0 |
|||
PLUGIN_STATUS ACTIVE |
|||
PLUGIN_TYPE DATA TYPE |
|||
PLUGIN_AUTHOR MariaDB Corporation |
|||
PLUGIN_DESCRIPTION Data type TEST_INT8 |
|||
PLUGIN_LICENSE GPL |
|||
PLUGIN_MATURITY Experimental |
|||
PLUGIN_AUTH_VERSION 1.0 |
|||
# |
|||
# End of 10.5 tests |
|||
# |
|||
@ -0,0 +1,27 @@ |
|||
--echo # |
|||
--echo # Start of 10.5 tests |
|||
--echo # |
|||
|
|||
--echo # |
|||
--echo # MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB |
|||
--echo # |
|||
|
|||
--vertical_results |
|||
SELECT |
|||
PLUGIN_NAME, |
|||
PLUGIN_VERSION, |
|||
PLUGIN_STATUS, |
|||
PLUGIN_TYPE, |
|||
PLUGIN_AUTHOR, |
|||
PLUGIN_DESCRIPTION, |
|||
PLUGIN_LICENSE, |
|||
PLUGIN_MATURITY, |
|||
PLUGIN_AUTH_VERSION |
|||
FROM INFORMATION_SCHEMA.PLUGINS |
|||
WHERE PLUGIN_TYPE='DATA TYPE' |
|||
AND PLUGIN_NAME='inet6'; |
|||
--horizontal_results |
|||
|
|||
--echo # |
|||
--echo # End of 10.5 tests |
|||
--echo # |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue