1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +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:
Alexander Barkov
2021-12-28 17:43:40 +04:00
parent e4b302e436
commit 62e320c86d
82 changed files with 2374 additions and 2319 deletions

View File

@ -5,37 +5,37 @@ USE INFORMATION_SCHEMA;
SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES;
Table Create Table
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
`SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
`ROUTINE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
`ROUTINE_TYPE` varchar(13) NOT NULL DEFAULT '',
`DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
`CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
`CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
`NUMERIC_PRECISION` int(21) DEFAULT NULL,
`NUMERIC_SCALE` int(21) DEFAULT NULL,
`DATETIME_PRECISION` bigint(21) unsigned DEFAULT NULL,
`CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
`COLLATION_NAME` varchar(64) DEFAULT NULL,
`DTD_IDENTIFIER` longtext DEFAULT NULL,
`ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
`ROUTINE_DEFINITION` longtext DEFAULT NULL,
`EXTERNAL_NAME` varchar(64) DEFAULT NULL,
`EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
`PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
`IS_DETERMINISTIC` varchar(3) NOT NULL DEFAULT '',
`SQL_DATA_ACCESS` varchar(64) NOT NULL DEFAULT '',
`SQL_PATH` varchar(64) DEFAULT NULL,
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
`ROUTINE_COMMENT` longtext NOT NULL DEFAULT '',
`DEFINER` varchar(189) NOT NULL DEFAULT '',
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
`SPECIFIC_NAME` varchar(64) NOT NULL,
`ROUTINE_CATALOG` varchar(512) NOT NULL,
`ROUTINE_SCHEMA` varchar(64) NOT NULL,
`ROUTINE_NAME` varchar(64) NOT NULL,
`ROUTINE_TYPE` varchar(13) NOT NULL,
`DATA_TYPE` varchar(64) NOT NULL,
`CHARACTER_MAXIMUM_LENGTH` int(21),
`CHARACTER_OCTET_LENGTH` int(21),
`NUMERIC_PRECISION` int(21),
`NUMERIC_SCALE` int(21),
`DATETIME_PRECISION` bigint(21) unsigned,
`CHARACTER_SET_NAME` varchar(64),
`COLLATION_NAME` varchar(64),
`DTD_IDENTIFIER` longtext,
`ROUTINE_BODY` varchar(8) NOT NULL,
`ROUTINE_DEFINITION` longtext,
`EXTERNAL_NAME` varchar(64),
`EXTERNAL_LANGUAGE` varchar(64),
`PARAMETER_STYLE` varchar(8) NOT NULL,
`IS_DETERMINISTIC` varchar(3) NOT NULL,
`SQL_DATA_ACCESS` varchar(64) NOT NULL,
`SQL_PATH` varchar(64),
`SECURITY_TYPE` varchar(7) NOT NULL,
`CREATED` datetime NOT NULL,
`LAST_ALTERED` datetime NOT NULL,
`SQL_MODE` varchar(8192) NOT NULL,
`ROUTINE_COMMENT` longtext NOT NULL,
`DEFINER` varchar(189) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
`COLLATION_CONNECTION` varchar(32) NOT NULL,
`DATABASE_COLLATION` varchar(32) NOT NULL
) DEFAULT CHARSET=utf8
SELECT * FROM information_schema.columns
WHERE table_schema = 'information_schema'
@ -46,7 +46,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME SPECIFIC_NAME
ORDINAL_POSITION 1
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 64
@ -68,7 +68,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME ROUTINE_CATALOG
ORDINAL_POSITION 2
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 512
@ -90,7 +90,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME ROUTINE_SCHEMA
ORDINAL_POSITION 3
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 64
@ -112,7 +112,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME ROUTINE_NAME
ORDINAL_POSITION 4
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 64
@ -134,7 +134,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME ROUTINE_TYPE
ORDINAL_POSITION 5
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 13
@ -156,7 +156,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME DATA_TYPE
ORDINAL_POSITION 6
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 64
@ -354,7 +354,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME ROUTINE_BODY
ORDINAL_POSITION 15
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 8
@ -442,7 +442,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME PARAMETER_STYLE
ORDINAL_POSITION 19
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 8
@ -464,7 +464,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME IS_DETERMINISTIC
ORDINAL_POSITION 20
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 3
@ -486,7 +486,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME SQL_DATA_ACCESS
ORDINAL_POSITION 21
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 64
@ -530,7 +530,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME SECURITY_TYPE
ORDINAL_POSITION 23
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 7
@ -552,7 +552,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME CREATED
ORDINAL_POSITION 24
COLUMN_DEFAULT '0000-00-00 00:00:00'
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE datetime
CHARACTER_MAXIMUM_LENGTH NULL
@ -574,7 +574,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME LAST_ALTERED
ORDINAL_POSITION 25
COLUMN_DEFAULT '0000-00-00 00:00:00'
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE datetime
CHARACTER_MAXIMUM_LENGTH NULL
@ -596,7 +596,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME SQL_MODE
ORDINAL_POSITION 26
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 8192
@ -618,7 +618,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME ROUTINE_COMMENT
ORDINAL_POSITION 27
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE longtext
CHARACTER_MAXIMUM_LENGTH 4294967295
@ -640,7 +640,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME DEFINER
ORDINAL_POSITION 28
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 189
@ -662,7 +662,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME CHARACTER_SET_CLIENT
ORDINAL_POSITION 29
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 32
@ -684,7 +684,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME COLLATION_CONNECTION
ORDINAL_POSITION 30
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 32
@ -706,7 +706,7 @@ TABLE_SCHEMA information_schema
TABLE_NAME ROUTINES
COLUMN_NAME DATABASE_COLLATION
ORDINAL_POSITION 31
COLUMN_DEFAULT ''
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
CHARACTER_MAXIMUM_LENGTH 32
@ -725,12 +725,12 @@ IS_GENERATED NEVER
GENERATION_EXPRESSION NULL
DESCRIBE INFORMATION_SCHEMA.ROUTINES;
Field Type Null Key Default Extra
SPECIFIC_NAME varchar(64) NO
ROUTINE_CATALOG varchar(512) NO
ROUTINE_SCHEMA varchar(64) NO
ROUTINE_NAME varchar(64) NO
ROUTINE_TYPE varchar(13) NO
DATA_TYPE varchar(64) NO
SPECIFIC_NAME varchar(64) NO NULL
ROUTINE_CATALOG varchar(512) NO NULL
ROUTINE_SCHEMA varchar(64) NO NULL
ROUTINE_NAME varchar(64) NO NULL
ROUTINE_TYPE varchar(13) NO NULL
DATA_TYPE varchar(64) NO NULL
CHARACTER_MAXIMUM_LENGTH int(21) YES NULL
CHARACTER_OCTET_LENGTH int(21) YES NULL
NUMERIC_PRECISION int(21) YES NULL
@ -739,23 +739,23 @@ DATETIME_PRECISION bigint(21) unsigned YES NULL
CHARACTER_SET_NAME varchar(64) YES NULL
COLLATION_NAME varchar(64) YES NULL
DTD_IDENTIFIER longtext YES NULL
ROUTINE_BODY varchar(8) NO
ROUTINE_BODY varchar(8) NO NULL
ROUTINE_DEFINITION longtext YES NULL
EXTERNAL_NAME varchar(64) YES NULL
EXTERNAL_LANGUAGE varchar(64) YES NULL
PARAMETER_STYLE varchar(8) NO
IS_DETERMINISTIC varchar(3) NO
SQL_DATA_ACCESS varchar(64) NO
PARAMETER_STYLE varchar(8) NO NULL
IS_DETERMINISTIC varchar(3) NO NULL
SQL_DATA_ACCESS varchar(64) NO NULL
SQL_PATH varchar(64) YES NULL
SECURITY_TYPE varchar(7) NO
CREATED datetime NO 0000-00-00 00:00:00
LAST_ALTERED datetime NO 0000-00-00 00:00:00
SQL_MODE varchar(8192) NO
ROUTINE_COMMENT longtext NO
DEFINER varchar(189) NO
CHARACTER_SET_CLIENT varchar(32) NO
COLLATION_CONNECTION varchar(32) NO
DATABASE_COLLATION varchar(32) NO
SECURITY_TYPE varchar(7) NO NULL
CREATED datetime NO NULL
LAST_ALTERED datetime NO NULL
SQL_MODE varchar(8192) NO NULL
ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(189) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
COLLATION_CONNECTION varchar(32) NO NULL
DATABASE_COLLATION varchar(32) NO NULL
# ========== routines.2 ==========
DROP DATABASE IF EXISTS i_s_routines_test;
CREATE DATABASE i_s_routines_test;