Skip to content

Commit 291411c

Browse files
committed
MDEV-13132 Information Schema does not show whether column default is expression or literal
Fix INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT to be standard-compliant, but keep SHOW COLUMNS backward-compatibly unchanged.
1 parent 0559f12 commit 291411c

18 files changed

+872
-871
lines changed

mysql-test/r/client_xml.result

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ set @@global.concurrent_insert= 0;
33
drop table if exists t1;
44
create table t1 (
55
`a&b` int,
6-
`a<b` int,
6+
`a<b` int NOT NULL,
77
`a>b` text
88
);
99
insert into t1 values (1, 2, 'a&b a<b a>b');
@@ -21,9 +21,9 @@ insert into t1 values (1, 2, 'a&b a<b a>b');
2121
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2222
<database name="test">
2323
<table_structure name="t1">
24-
<field Field="a&amp;b" Type="int(11)" Null="YES" Key="" Extra="" Comment="" />
25-
<field Field="a&lt;b" Type="int(11)" Null="YES" Key="" Extra="" Comment="" />
26-
<field Field="a&gt;b" Type="text" Null="YES" Key="" Extra="" Comment="" />
24+
<field Field="a&amp;b" Type="int(11)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
25+
<field Field="a&lt;b" Type="int(11)" Null="NO" Key="" Extra="" Comment="" />
26+
<field Field="a&gt;b" Type="text" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
2727
</table_structure>
2828
<table_data name="t1">
2929
<row>

mysql-test/r/information_schema.result

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1344,13 +1344,13 @@ DROP TABLE IF EXISTS bug23037;
13441344
DROP FUNCTION IF EXISTS get_value;
13451345
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
13461346
COLUMN_NAME MD5(COLUMN_DEFAULT) LENGTH(COLUMN_DEFAULT)
1347-
fld1 7cf7a6782be951a1f2464a350da926a5 65532
1347+
fld1 85ea6a55b8f0058e640b3de141a3a9d9 65534
13481348
SELECT MD5(get_value());
13491349
MD5(get_value())
1350-
7cf7a6782be951a1f2464a350da926a5
1350+
76176d2daa20c582375b8dcfc18033cd
13511351
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT), COLUMN_DEFAULT=get_value() FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
13521352
COLUMN_NAME MD5(COLUMN_DEFAULT) LENGTH(COLUMN_DEFAULT) COLUMN_DEFAULT=get_value()
1353-
fld1 7cf7a6782be951a1f2464a350da926a5 65532 1
1353+
fld1 85ea6a55b8f0058e640b3de141a3a9d9 65534 0
13541354
DROP TABLE bug23037;
13551355
DROP FUNCTION get_value;
13561356
set @tmp_optimizer_switch=@@optimizer_switch;
@@ -1437,12 +1437,12 @@ select column_default from information_schema.columns where table_name= 't1';
14371437
column_default
14381438
NULL
14391439
NULL
1440-
1440+
''
14411441
NULL
14421442
NULL
14431443
10
14441444
NULL
1445-
2006-01-01 00:00:00
1445+
'2006-01-01 00:00:00'
14461446
show columns from t1;
14471447
Field Type Null Key Default Extra
14481448
f1 varchar(50) YES NULL

mysql-test/r/information_schema_parameters.result

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ TABLE_SCHEMA information_schema
2929
TABLE_NAME PARAMETERS
3030
COLUMN_NAME SPECIFIC_CATALOG
3131
ORDINAL_POSITION 1
32-
COLUMN_DEFAULT
32+
COLUMN_DEFAULT ''
3333
IS_NULLABLE NO
3434
DATA_TYPE varchar
3535
CHARACTER_MAXIMUM_LENGTH 512
@@ -51,7 +51,7 @@ TABLE_SCHEMA information_schema
5151
TABLE_NAME PARAMETERS
5252
COLUMN_NAME SPECIFIC_SCHEMA
5353
ORDINAL_POSITION 2
54-
COLUMN_DEFAULT
54+
COLUMN_DEFAULT ''
5555
IS_NULLABLE NO
5656
DATA_TYPE varchar
5757
CHARACTER_MAXIMUM_LENGTH 64
@@ -73,7 +73,7 @@ TABLE_SCHEMA information_schema
7373
TABLE_NAME PARAMETERS
7474
COLUMN_NAME SPECIFIC_NAME
7575
ORDINAL_POSITION 3
76-
COLUMN_DEFAULT
76+
COLUMN_DEFAULT ''
7777
IS_NULLABLE NO
7878
DATA_TYPE varchar
7979
CHARACTER_MAXIMUM_LENGTH 64
@@ -161,7 +161,7 @@ TABLE_SCHEMA information_schema
161161
TABLE_NAME PARAMETERS
162162
COLUMN_NAME DATA_TYPE
163163
ORDINAL_POSITION 7
164-
COLUMN_DEFAULT
164+
COLUMN_DEFAULT ''
165165
IS_NULLABLE NO
166166
DATA_TYPE varchar
167167
CHARACTER_MAXIMUM_LENGTH 64
@@ -337,7 +337,7 @@ TABLE_SCHEMA information_schema
337337
TABLE_NAME PARAMETERS
338338
COLUMN_NAME DTD_IDENTIFIER
339339
ORDINAL_POSITION 15
340-
COLUMN_DEFAULT
340+
COLUMN_DEFAULT ''
341341
IS_NULLABLE NO
342342
DATA_TYPE longtext
343343
CHARACTER_MAXIMUM_LENGTH 4294967295
@@ -359,7 +359,7 @@ TABLE_SCHEMA information_schema
359359
TABLE_NAME PARAMETERS
360360
COLUMN_NAME ROUTINE_TYPE
361361
ORDINAL_POSITION 16
362-
COLUMN_DEFAULT
362+
COLUMN_DEFAULT ''
363363
IS_NULLABLE NO
364364
DATA_TYPE varchar
365365
CHARACTER_MAXIMUM_LENGTH 9

mysql-test/r/information_schema_routines.result

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ TABLE_SCHEMA information_schema
4646
TABLE_NAME ROUTINES
4747
COLUMN_NAME SPECIFIC_NAME
4848
ORDINAL_POSITION 1
49-
COLUMN_DEFAULT
49+
COLUMN_DEFAULT ''
5050
IS_NULLABLE NO
5151
DATA_TYPE varchar
5252
CHARACTER_MAXIMUM_LENGTH 64
@@ -68,7 +68,7 @@ TABLE_SCHEMA information_schema
6868
TABLE_NAME ROUTINES
6969
COLUMN_NAME ROUTINE_CATALOG
7070
ORDINAL_POSITION 2
71-
COLUMN_DEFAULT
71+
COLUMN_DEFAULT ''
7272
IS_NULLABLE NO
7373
DATA_TYPE varchar
7474
CHARACTER_MAXIMUM_LENGTH 512
@@ -90,7 +90,7 @@ TABLE_SCHEMA information_schema
9090
TABLE_NAME ROUTINES
9191
COLUMN_NAME ROUTINE_SCHEMA
9292
ORDINAL_POSITION 3
93-
COLUMN_DEFAULT
93+
COLUMN_DEFAULT ''
9494
IS_NULLABLE NO
9595
DATA_TYPE varchar
9696
CHARACTER_MAXIMUM_LENGTH 64
@@ -112,7 +112,7 @@ TABLE_SCHEMA information_schema
112112
TABLE_NAME ROUTINES
113113
COLUMN_NAME ROUTINE_NAME
114114
ORDINAL_POSITION 4
115-
COLUMN_DEFAULT
115+
COLUMN_DEFAULT ''
116116
IS_NULLABLE NO
117117
DATA_TYPE varchar
118118
CHARACTER_MAXIMUM_LENGTH 64
@@ -134,7 +134,7 @@ TABLE_SCHEMA information_schema
134134
TABLE_NAME ROUTINES
135135
COLUMN_NAME ROUTINE_TYPE
136136
ORDINAL_POSITION 5
137-
COLUMN_DEFAULT
137+
COLUMN_DEFAULT ''
138138
IS_NULLABLE NO
139139
DATA_TYPE varchar
140140
CHARACTER_MAXIMUM_LENGTH 9
@@ -156,7 +156,7 @@ TABLE_SCHEMA information_schema
156156
TABLE_NAME ROUTINES
157157
COLUMN_NAME DATA_TYPE
158158
ORDINAL_POSITION 6
159-
COLUMN_DEFAULT
159+
COLUMN_DEFAULT ''
160160
IS_NULLABLE NO
161161
DATA_TYPE varchar
162162
CHARACTER_MAXIMUM_LENGTH 64
@@ -354,7 +354,7 @@ TABLE_SCHEMA information_schema
354354
TABLE_NAME ROUTINES
355355
COLUMN_NAME ROUTINE_BODY
356356
ORDINAL_POSITION 15
357-
COLUMN_DEFAULT
357+
COLUMN_DEFAULT ''
358358
IS_NULLABLE NO
359359
DATA_TYPE varchar
360360
CHARACTER_MAXIMUM_LENGTH 8
@@ -442,7 +442,7 @@ TABLE_SCHEMA information_schema
442442
TABLE_NAME ROUTINES
443443
COLUMN_NAME PARAMETER_STYLE
444444
ORDINAL_POSITION 19
445-
COLUMN_DEFAULT
445+
COLUMN_DEFAULT ''
446446
IS_NULLABLE NO
447447
DATA_TYPE varchar
448448
CHARACTER_MAXIMUM_LENGTH 8
@@ -464,7 +464,7 @@ TABLE_SCHEMA information_schema
464464
TABLE_NAME ROUTINES
465465
COLUMN_NAME IS_DETERMINISTIC
466466
ORDINAL_POSITION 20
467-
COLUMN_DEFAULT
467+
COLUMN_DEFAULT ''
468468
IS_NULLABLE NO
469469
DATA_TYPE varchar
470470
CHARACTER_MAXIMUM_LENGTH 3
@@ -486,7 +486,7 @@ TABLE_SCHEMA information_schema
486486
TABLE_NAME ROUTINES
487487
COLUMN_NAME SQL_DATA_ACCESS
488488
ORDINAL_POSITION 21
489-
COLUMN_DEFAULT
489+
COLUMN_DEFAULT ''
490490
IS_NULLABLE NO
491491
DATA_TYPE varchar
492492
CHARACTER_MAXIMUM_LENGTH 64
@@ -530,7 +530,7 @@ TABLE_SCHEMA information_schema
530530
TABLE_NAME ROUTINES
531531
COLUMN_NAME SECURITY_TYPE
532532
ORDINAL_POSITION 23
533-
COLUMN_DEFAULT
533+
COLUMN_DEFAULT ''
534534
IS_NULLABLE NO
535535
DATA_TYPE varchar
536536
CHARACTER_MAXIMUM_LENGTH 7
@@ -552,7 +552,7 @@ TABLE_SCHEMA information_schema
552552
TABLE_NAME ROUTINES
553553
COLUMN_NAME CREATED
554554
ORDINAL_POSITION 24
555-
COLUMN_DEFAULT 0000-00-00 00:00:00
555+
COLUMN_DEFAULT '0000-00-00 00:00:00'
556556
IS_NULLABLE NO
557557
DATA_TYPE datetime
558558
CHARACTER_MAXIMUM_LENGTH NULL
@@ -574,7 +574,7 @@ TABLE_SCHEMA information_schema
574574
TABLE_NAME ROUTINES
575575
COLUMN_NAME LAST_ALTERED
576576
ORDINAL_POSITION 25
577-
COLUMN_DEFAULT 0000-00-00 00:00:00
577+
COLUMN_DEFAULT '0000-00-00 00:00:00'
578578
IS_NULLABLE NO
579579
DATA_TYPE datetime
580580
CHARACTER_MAXIMUM_LENGTH NULL
@@ -596,7 +596,7 @@ TABLE_SCHEMA information_schema
596596
TABLE_NAME ROUTINES
597597
COLUMN_NAME SQL_MODE
598598
ORDINAL_POSITION 26
599-
COLUMN_DEFAULT
599+
COLUMN_DEFAULT ''
600600
IS_NULLABLE NO
601601
DATA_TYPE varchar
602602
CHARACTER_MAXIMUM_LENGTH 8192
@@ -618,7 +618,7 @@ TABLE_SCHEMA information_schema
618618
TABLE_NAME ROUTINES
619619
COLUMN_NAME ROUTINE_COMMENT
620620
ORDINAL_POSITION 27
621-
COLUMN_DEFAULT
621+
COLUMN_DEFAULT ''
622622
IS_NULLABLE NO
623623
DATA_TYPE longtext
624624
CHARACTER_MAXIMUM_LENGTH 4294967295
@@ -640,7 +640,7 @@ TABLE_SCHEMA information_schema
640640
TABLE_NAME ROUTINES
641641
COLUMN_NAME DEFINER
642642
ORDINAL_POSITION 28
643-
COLUMN_DEFAULT
643+
COLUMN_DEFAULT ''
644644
IS_NULLABLE NO
645645
DATA_TYPE varchar
646646
CHARACTER_MAXIMUM_LENGTH 189
@@ -662,7 +662,7 @@ TABLE_SCHEMA information_schema
662662
TABLE_NAME ROUTINES
663663
COLUMN_NAME CHARACTER_SET_CLIENT
664664
ORDINAL_POSITION 29
665-
COLUMN_DEFAULT
665+
COLUMN_DEFAULT ''
666666
IS_NULLABLE NO
667667
DATA_TYPE varchar
668668
CHARACTER_MAXIMUM_LENGTH 32
@@ -684,7 +684,7 @@ TABLE_SCHEMA information_schema
684684
TABLE_NAME ROUTINES
685685
COLUMN_NAME COLLATION_CONNECTION
686686
ORDINAL_POSITION 30
687-
COLUMN_DEFAULT
687+
COLUMN_DEFAULT ''
688688
IS_NULLABLE NO
689689
DATA_TYPE varchar
690690
CHARACTER_MAXIMUM_LENGTH 32
@@ -706,7 +706,7 @@ TABLE_SCHEMA information_schema
706706
TABLE_NAME ROUTINES
707707
COLUMN_NAME DATABASE_COLLATION
708708
ORDINAL_POSITION 31
709-
COLUMN_DEFAULT
709+
COLUMN_DEFAULT ''
710710
IS_NULLABLE NO
711711
DATA_TYPE varchar
712712
CHARACTER_MAXIMUM_LENGTH 32

mysql-test/r/join.result

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -757,8 +757,8 @@ statistics.TABLE_NAME, statistics.COLUMN_NAME, statistics.TABLE_CATALOG, statist
757757
columns.TABLE_CATALOG, columns.TABLE_SCHEMA, columns.COLUMN_DEFAULT, columns.IS_NULLABLE, columns.DATA_TYPE, columns.CHARACTER_MAXIMUM_LENGTH, columns.CHARACTER_OCTET_LENGTH, columns.NUMERIC_PRECISION, columns.NUMERIC_SCALE, columns.CHARACTER_SET_NAME, columns.COLLATION_NAME, columns.COLUMN_TYPE, columns.COLUMN_KEY, columns.EXTRA, columns.COLUMN_COMMENT
758758
from information_schema.statistics join information_schema.columns using(table_name,column_name) where table_name='user';
759759
TABLE_NAME COLUMN_NAME TABLE_CATALOG TABLE_SCHEMA NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLLATION SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA COLUMN_COMMENT
760-
user Host def mysql 0 mysql PRIMARY 1 A NULL NULL BTREE def mysql NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
761-
user User def mysql 0 mysql PRIMARY 2 A NULL NULL BTREE def mysql NO char 80 240 NULL NULL utf8 utf8_bin char(80) PRI
760+
user Host def mysql 0 mysql PRIMARY 1 A NULL NULL BTREE def mysql '' NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
761+
user User def mysql 0 mysql PRIMARY 2 A NULL NULL BTREE def mysql '' NO char 80 240 NULL NULL utf8 utf8_bin char(80) PRI
762762
Warnings:
763763
Warning 1286 Unknown storage engine 'InnoDB'
764764
Warning 1286 Unknown storage engine 'InnoDB'

0 commit comments

Comments
 (0)