297 lines
11 KiB
Plaintext
297 lines
11 KiB
Plaintext
#
|
|
# Test for the DDL rewrite plugin.
|
|
#
|
|
#
|
|
# Create a table with a DATA DIRECTORY clause, to be dumped and
|
|
# restored when the plugin is installed.
|
|
#
|
|
CREATE TABLE t(i int) DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp';;
|
|
SHOW CREATE TABLE t;
|
|
Table Create Table
|
|
t CREATE TABLE `t` (
|
|
`i` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/'
|
|
INSERT INTO t VALUES (1);
|
|
#
|
|
# Install plugin.
|
|
#
|
|
INSTALL PLUGIN ddl_rewriter SONAME 'ddl_rewriter.xxx';
|
|
SELECT PLUGIN_NAME, PLUGIN_TYPE, PLUGIN_VERSION, PLUGIN_TYPE_VERSION
|
|
FROM information_schema.plugins
|
|
WHERE plugin_name LIKE 'ddl_rewriter';
|
|
PLUGIN_NAME PLUGIN_TYPE PLUGIN_VERSION PLUGIN_TYPE_VERSION
|
|
ddl_rewriter AUDIT 1.0 4.1
|
|
#
|
|
# Restore dump file.
|
|
#
|
|
DROP TABLE t;
|
|
SHOW CREATE TABLE t;
|
|
Table Create Table
|
|
t CREATE TABLE `t` (
|
|
`i` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
include/assert.inc [Expected table contents]
|
|
DROP TABLE t;
|
|
#
|
|
# False positives.
|
|
#
|
|
CREATE TABLE t(i int) /* data directory = 'x' */ ;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) /* data directory = 'x' */' rewritten to 'CREATE TABLE t(i int) /* */' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int, `j encryption='n'j` int);
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int, `j encryption='n'j` int)' rewritten to 'CREATE TABLE t(i int, `j j` int)' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
#
|
|
# Prefix comments make the statement not be rewritten.
|
|
#
|
|
/* */ CREATE TABLE t(i int) /* data directory = 'x' */ ;
|
|
DROP TABLE t;
|
|
/* */
|
|
CREATE TABLE t(i int) /* data directory = 'x' */ ;
|
|
DROP TABLE t;
|
|
#
|
|
# Double quotes.
|
|
#
|
|
CREATE TABLE t(i int) DATA DIRECTORY = "/tmp";
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) DATA DIRECTORY = "/tmp"' rewritten to 'CREATE TABLE t(i int) ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = "n";
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = "n"' rewritten to 'CREATE TABLE t(i int) ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
#
|
|
# Multi-statement queries are separated before pre-parse,
|
|
# so a second non-CREATE TABLE statement will be treated
|
|
# separately.
|
|
#
|
|
CREATE SCHEMA s;
|
|
CREATE TABLE s.t(i int) DATA DIRECTORY = '/tmp';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE s.t(i int) DATA DIRECTORY = '/tmp'' rewritten to 'CREATE TABLE s.t(i int) ' by a query rewrite plugin
|
|
DROP SCHEMA s;
|
|
CREATE TABLE t(i int);
|
|
CREATE SCHEMA s /* DATA DIRECTORY = '/tmp' */;
|
|
DROP SCHEMA s;
|
|
DROP TABLE t;
|
|
#
|
|
# Statements with prefix != 'CREATE TABLE' are not rewritten.
|
|
#
|
|
CREATE SCHEMA s /* data directory = 'x' */ ;
|
|
DROP SCHEMA s;
|
|
CREATE SCHEMA `s encryption='n' s`;
|
|
DROP SCHEMA `s encryption='n' s`;
|
|
#
|
|
# Case sensitivity.
|
|
#
|
|
CREATE TABLE t(i int) DATA DIRECTORY = '/tmp', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) DATA DIRECTORY = '/tmp', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
create table t(i int) DATA DIRECTORY = '/tmp', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'create table t(i int) DATA DIRECTORY = '/tmp', ENGINE = MyISAM' rewritten to 'create table t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) data directory = '/tmp', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) data directory = '/tmp', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) INDEX DIRECTORY = '/tmp', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) INDEX DIRECTORY = '/tmp', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) index directory = '/tmp', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) index directory = '/tmp', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'N', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'N', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) encryption = 'n', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) encryption = 'n', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'Y', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'Y', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'y', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'y', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
#
|
|
# Optional preceding comma with optional surrounding whitespace.
|
|
#
|
|
CREATE TABLE t(i int) ENGINE = MyISAM ENCRYPTION = 'N';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENGINE = MyISAM ENCRYPTION = 'N'' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENGINE = MyISAM,ENCRYPTION = 'N';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENGINE = MyISAM,ENCRYPTION = 'N'' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENGINE = MyISAM, ENCRYPTION = 'N';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENGINE = MyISAM, ENCRYPTION = 'N'' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENGINE = MyISAM ,ENCRYPTION = 'N';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENGINE = MyISAM ,ENCRYPTION = 'N'' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENGINE = MyISAM , ENCRYPTION = 'N';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENGINE = MyISAM , ENCRYPTION = 'N'' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
#
|
|
# Optional succeeding comma with optional surrounding whitespace.
|
|
#
|
|
CREATE TABLE t(i int) ENCRYPTION = 'N' ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'N' ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'N',ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'N',ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'N', ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'N', ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'N' ,ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'N' ,ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'N' , ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'N' , ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
#
|
|
# Optional assignment operator with optional surrounding whitespace.
|
|
#
|
|
CREATE TABLE t(i int) ENCRYPTION 'N' ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION 'N' ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION='N' ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION='N' ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION= 'N' ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION= 'N' ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION ='N' ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION ='N' ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
CREATE TABLE t(i int) ENCRYPTION = 'N' ENGINE = MyISAM;
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION = 'N' ENGINE = MyISAM' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
#
|
|
# Multi line statements.
|
|
#
|
|
CREATE TABLE t(i int) ENCRYPTION ='N'
|
|
,ENGINE = MyISAM
|
|
DATA
|
|
DIRECTORY = '/tmp'
|
|
DEFAULT CHARSET latin1
|
|
INDEX
|
|
DIRECTORY '/t
|
|
mp';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t(i int) ENCRYPTION ='N'
|
|
,ENGINE = MyISAM
|
|
DATA
|
|
DIRECTORY = '/tmp'
|
|
DEFAULT CHARSET latin1
|
|
INDEX
|
|
DIRECTORY '/t
|
|
mp'' rewritten to 'CREATE TABLE t(i int) ENGINE = MyISAM DEFAULT CHARSET latin1 ' by a query rewrite plugin
|
|
DROP TABLE t;
|
|
#
|
|
# Partitioned tables.
|
|
#
|
|
CREATE TABLE t (
|
|
i int NOT NULL AUTO_INCREMENT,
|
|
mt mediumtext NOT NULL,
|
|
c varchar(10) NOT NULL,
|
|
ti tinyint(1) unsigned NOT NULL,
|
|
PRIMARY KEY (i, ti)
|
|
)
|
|
ENGINE = InnoDB AUTO_INCREMENT = 0
|
|
DEFAULT CHARSET = latin1, DATA DIRECTORY = '/tmp'
|
|
PARTITION BY LIST (ti) (
|
|
PARTITION p0 VALUES IN (0) ENGINE = InnoDB,
|
|
PARTITION p1 VALUES IN (1) DATA DIRECTORY = '/tmp' ,ENGINE = InnoDB
|
|
);
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE t (
|
|
i int NOT NULL AUTO_INCREMENT,
|
|
mt mediumtext NOT NULL,
|
|
c varchar(10) NOT NULL,
|
|
ti tinyint(1) unsigned NOT NULL,
|
|
PRIMARY KEY (i, ti)
|
|
)
|
|
ENGINE = InnoDB AUTO_INCREMENT = 0
|
|
DEFAULT CHARSET = latin1, DATA DIRECTORY = '/tmp'
|
|
PARTITION BY LIST (ti) (
|
|
PARTITION p0 VALUES IN (0) ENGINE = InnoDB,
|
|
PARTITION p1 VALUES IN (1) DATA DIRECTORY = '/tmp' ,ENGINE = InnoDB
|
|
)' rewritten to 'CREATE TABLE t (
|
|
i int NOT NULL AUTO_INCREMENT,
|
|
mt mediumtext NOT NULL,
|
|
c varchar(10) NOT NULL,
|
|
ti tinyint(1
|
|
Warning 1681 Integer display width is deprecated and will be removed in a future release.
|
|
SHOW CREATE TABLE t;
|
|
Table Create Table
|
|
t CREATE TABLE `t` (
|
|
`i` int(11) NOT NULL AUTO_INCREMENT,
|
|
`mt` mediumtext NOT NULL,
|
|
`c` varchar(10) NOT NULL,
|
|
`ti` tinyint(1) unsigned NOT NULL,
|
|
PRIMARY KEY (`i`,`ti`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
/*!50100 PARTITION BY LIST (`ti`)
|
|
(PARTITION p0 VALUES IN (0) ENGINE = InnoDB,
|
|
PARTITION p1 VALUES IN (1) ENGINE = InnoDB) */
|
|
DROP TABLE t;
|
|
#
|
|
# Stored programs.
|
|
#
|
|
CREATE PROCEDURE p() CREATE TABLE test.t(i int) ENCRYPTION = 'N';
|
|
CALL p();
|
|
SHOW CREATE TABLE test.t;
|
|
Table Create Table
|
|
t CREATE TABLE `t` (
|
|
`i` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
DROP TABLE test.t;
|
|
DROP PROCEDURE p;
|
|
#
|
|
# Prepared statements.
|
|
#
|
|
PREPARE stmt FROM 'CREATE TABLE test.t(i int) ENCRYPTION = "N"';
|
|
Warnings:
|
|
Note 1105 Query 'CREATE TABLE test.t(i int) ENCRYPTION = "N"' rewritten to 'CREATE TABLE test.t(i int) ' by a query rewrite plugin
|
|
EXECUTE stmt;
|
|
SHOW CREATE TABLE test.t;
|
|
Table Create Table
|
|
t CREATE TABLE `t` (
|
|
`i` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
DROP TABLE test.t;
|
|
DROP PREPARE stmt;
|
|
#
|
|
# Uninstall plugin and verify that queries are not rewritten anymore.
|
|
#
|
|
UNINSTALL PLUGIN ddl_rewriter;
|
|
Warnings:
|
|
Warning 1620 Plugin is busy and will be uninstalled on shutdown
|
|
CREATE TABLE t(i int) /* data directory = 'x' */ ;
|
|
DROP TABLE t;
|