mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-18918 SQL mode EMPTY_STRING_IS_NULL breaks RBR upon CREATE TABLE .. SELECT
The 10.5 version of the patch. Removing DEFAULT from INFORMATION_SCHEMA columns. DEFAULT in read-only tables is rather meaningless. Upgrade should go smoothly. Also fixes: MDEV-20254 Problems with EMPTY_STRING_IS_NULL and I_S tables
This commit is contained in:
@ -227,7 +227,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
|
||||
Insert_priv enum('N','Y') utf8_general_ci NO N select,insert,update,references
|
||||
show full columns from v1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c varchar(64) utf8_general_ci NO select,insert,update,references
|
||||
c varchar(64) utf8_general_ci NO NULL select,insert,update,references
|
||||
select * from information_schema.COLUMNS where table_name="t1"
|
||||
and column_name= "a";
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT IS_GENERATED GENERATION_EXPRESSION
|
||||
@ -605,19 +605,19 @@ drop table t1;
|
||||
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
|
||||
Table Create Table
|
||||
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT 0
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
|
||||
`DESCRIPTION` varchar(60) NOT NULL,
|
||||
`MAXLEN` bigint(3) NOT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
set names latin2;
|
||||
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
|
||||
Table Create Table
|
||||
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT 0
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
|
||||
`DESCRIPTION` varchar(60) NOT NULL,
|
||||
`MAXLEN` bigint(3) NOT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
set names latin1;
|
||||
create table t1 select * from information_schema.CHARACTER_SETS
|
||||
@ -629,10 +629,10 @@ alter table t1 default character set utf8;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT 0
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
|
||||
`DESCRIPTION` varchar(60) NOT NULL,
|
||||
`MAXLEN` bigint(3) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
drop table t1;
|
||||
create view v1 as select * from information_schema.TABLES;
|
||||
@ -2367,5 +2367,30 @@ select * from t1 where (name, len) in (select name, len from information_schema
|
||||
name len
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-20254 Problems with EMPTY_STRING_IS_NULL and I_S tables
|
||||
#
|
||||
SET SQL_MODE= 'EMPTY_STRING_IS_NULL';
|
||||
CREATE OR REPLACE TABLE t1 AS SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE 1 = 0;
|
||||
SHOW returned: CREATE TABLE `t1` (
|
||||
`TABLE_NAME` varchar(64) CHARACTER SET utf8 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE `t1` (
|
||||
`TABLE_NAME` varchar(64) CHARACTER SET utf8 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`TABLE_NAME` varchar(64) CHARACTER SET utf8 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
SET SQL_MODE=DEFAULT;
|
||||
SET SQL_MODE= 'EMPTY_STRING_IS_NULL';
|
||||
CREATE OR REPLACE TABLE t1 AS SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE 1 = 0;
|
||||
DROP TABLE t1;
|
||||
# Executing the statement returned from SHOW CREATE TABLE
|
||||
DROP TABLE t1;
|
||||
SET SQL_MODE=DEFAULT;
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
|
Reference in New Issue
Block a user