mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
This commit is contained in:
commit
7dbcdf9a64
17 changed files with 170 additions and 125 deletions
|
@ -54,7 +54,7 @@ SHOW FULL COLUMNS FROM t1;
|
|||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
GROUP_ID int(10) unsigned NULL NO PRI 0 #
|
||||
LANG_ID smallint(5) unsigned NULL NO PRI 0 #
|
||||
NAME char(80) latin1_swedish_ci NO MUL #
|
||||
NAME char(80) latin1_swedish_ci NO MUL NULL #
|
||||
DROP TABLE t1;
|
||||
create table t1 (n int);
|
||||
insert into t1 values(9),(3),(12),(10);
|
||||
|
@ -1125,7 +1125,7 @@ INDEX(`int_field`)
|
|||
);
|
||||
DESCRIBE t1;
|
||||
Field Type Null Key Default Extra
|
||||
int_field int(10) unsigned NO MUL
|
||||
int_field int(10) unsigned NO MUL NULL
|
||||
char_field char(10) YES NULL
|
||||
SHOW INDEXES FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
|
@ -1146,16 +1146,16 @@ unsigned_int_field char_field
|
|||
5 pet
|
||||
DESCRIBE t2;
|
||||
Field Type Null Key Default Extra
|
||||
unsigned_int_field int(10) unsigned NO MUL
|
||||
unsigned_int_field int(10) unsigned NO MUL NULL
|
||||
char_field char(10) YES NULL
|
||||
DESCRIBE t2;
|
||||
Field Type Null Key Default Extra
|
||||
unsigned_int_field int(10) unsigned NO MUL
|
||||
unsigned_int_field int(10) unsigned NO MUL NULL
|
||||
char_field char(10) YES NULL
|
||||
ALTER TABLE t2 MODIFY unsigned_int_field BIGINT UNSIGNED NOT NULL;
|
||||
DESCRIBE t2;
|
||||
Field Type Null Key Default Extra
|
||||
unsigned_int_field bigint(20) unsigned NO MUL
|
||||
unsigned_int_field bigint(20) unsigned NO MUL NULL
|
||||
char_field char(10) YES NULL
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
|
||||
|
|
|
@ -443,7 +443,7 @@ d date YES NULL
|
|||
e varchar(1) NO
|
||||
f datetime YES NULL
|
||||
g time YES NULL
|
||||
h longblob NO
|
||||
h longblob NO NULL
|
||||
dd time YES NULL
|
||||
select * from t2;
|
||||
a b c d e f g h dd
|
||||
|
|
|
@ -488,7 +488,7 @@ t1 CREATE TABLE `t1` (
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW FIELDS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
latin1_f char(32) NO
|
||||
latin1_f char(32) NO NULL
|
||||
ALTER TABLE t1 CHANGE latin1_f
|
||||
latin1_f CHAR(32) CHARACTER SET latin1 COLLATE latin1_bin;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
|
|
@ -54,7 +54,7 @@ Table Create Table
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='ËÏÍÍÅÎÔÁÒÉÊ ÔÁÂÌÉÃÙ'
|
||||
SHOW FIELDS FROM ÔÁÂÌÉÃÁ;
|
||||
Field Type Null Key Default Extra
|
||||
ÐÏÌÅ char(32) NO
|
||||
ÐÏÌÅ char(32) NO NULL
|
||||
SET CHARACTER SET cp1251;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
|
@ -66,7 +66,7 @@ Table Create Table
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='êîììåíòàðèé òàáëèöû'
|
||||
SHOW FIELDS FROM òàáëèöà;
|
||||
Field Type Null Key Default Extra
|
||||
ïîëå char(32) NO
|
||||
ïîëå char(32) NO NULL
|
||||
SET CHARACTER SET utf8;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
|
@ -78,7 +78,7 @@ Table Create Table
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='комментарий таблицы'
|
||||
SHOW FIELDS FROM таблица;
|
||||
Field Type Null Key Default Extra
|
||||
поле char(32) NO
|
||||
поле char(32) NO NULL
|
||||
SET CHARACTER SET koi8r;
|
||||
DROP TABLE ÔÁÂÌÉÃÁ;
|
||||
SET CHARACTER SET default;
|
||||
|
|
|
@ -115,7 +115,7 @@ Warning 1364 Field 'd' doesn't have a default value
|
|||
desc bug20691;
|
||||
Field Type Null Key Default Extra
|
||||
i int(11) YES NULL
|
||||
d datetime NO
|
||||
d datetime NO NULL
|
||||
dn datetime NO 0000-00-00 00:00:00
|
||||
insert into bug20691 values (3, DEFAULT, DEFAULT), (3, '1975-07-10 07:10:03', '1978-01-13 14:08:51'), (3, DEFAULT, DEFAULT);
|
||||
Warnings:
|
||||
|
|
|
@ -9,35 +9,35 @@ CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMET
|
|||
CREATE TABLE gis_geometry (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY);
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g point YES NULL
|
||||
SHOW FIELDS FROM gis_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g linestring YES NULL
|
||||
SHOW FIELDS FROM gis_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g polygon YES NULL
|
||||
SHOW FIELDS FROM gis_multi_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g multipoint YES NULL
|
||||
SHOW FIELDS FROM gis_multi_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g multilinestring YES NULL
|
||||
SHOW FIELDS FROM gis_multi_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g multipolygon YES NULL
|
||||
SHOW FIELDS FROM gis_geometrycollection;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g geometrycollection YES NULL
|
||||
SHOW FIELDS FROM gis_geometry;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g geometry YES NULL
|
||||
INSERT INTO gis_point VALUES
|
||||
(101, PointFromText('POINT(10 10)')),
|
||||
|
@ -430,7 +430,7 @@ mln multilinestring YES NULL
|
|||
mpg multipolygon YES NULL
|
||||
gc geometrycollection YES NULL
|
||||
gm geometry YES NULL
|
||||
fid int(11) NO
|
||||
fid int(11) NO NULL
|
||||
DROP TABLE t1;
|
||||
SELECT AsText(GeometryFromWKB(AsWKB(GeometryFromText('POINT(1 4)'))));
|
||||
AsText(GeometryFromWKB(AsWKB(GeometryFromText('POINT(1 4)'))))
|
||||
|
|
|
@ -1036,7 +1036,7 @@ b NULL
|
|||
use test;
|
||||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO
|
||||
a int(11) NO NULL
|
||||
b int(11) YES NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
|
@ -1434,6 +1434,37 @@ where event_object_table='t1';
|
|||
trigger_name
|
||||
drop user mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
create table t1 (
|
||||
f1 varchar(50),
|
||||
f2 varchar(50) not null,
|
||||
f3 varchar(50) default '',
|
||||
f4 varchar(50) default NULL,
|
||||
f5 bigint not null,
|
||||
f6 bigint not null default 10,
|
||||
f7 datetime not null,
|
||||
f8 datetime default '2006-01-01'
|
||||
);
|
||||
select column_default from information_schema.columns where table_name= 't1';
|
||||
column_default
|
||||
NULL
|
||||
NULL
|
||||
|
||||
NULL
|
||||
NULL
|
||||
10
|
||||
NULL
|
||||
2006-01-01 00:00:00
|
||||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
f1 varchar(50) YES NULL
|
||||
f2 varchar(50) NO NULL
|
||||
f3 varchar(50) YES
|
||||
f4 varchar(50) YES NULL
|
||||
f5 bigint(20) NO NULL
|
||||
f6 bigint(20) NO 10
|
||||
f7 datetime NO NULL
|
||||
f8 datetime YES 2006-01-01 00:00:00
|
||||
drop table t1;
|
||||
End of 5.0 tests.
|
||||
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
|
|
|
@ -336,8 +336,8 @@ UNIQUE i1idx (i1),
|
|||
UNIQUE i2idx (i2));
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
i1 int(11) NO PRI
|
||||
i2 int(11) NO UNI
|
||||
i1 int(11) NO PRI NULL
|
||||
i2 int(11) NO UNI NULL
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
@ -392,27 +392,27 @@ drop table t1;
|
|||
create table t1 (a int not null primary key, b varchar(20) not null unique);
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b varchar(20) NO UNI
|
||||
a int(11) NO PRI NULL
|
||||
b varchar(20) NO UNI NULL
|
||||
drop table t1;
|
||||
create table t1 (a int not null primary key, b int not null unique);
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b int(11) NO UNI
|
||||
a int(11) NO PRI NULL
|
||||
b int(11) NO UNI NULL
|
||||
drop table t1;
|
||||
create table t1 (a int not null primary key, b varchar(20) not null, unique (b(10)));
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b varchar(20) NO UNI
|
||||
a int(11) NO PRI NULL
|
||||
b varchar(20) NO UNI NULL
|
||||
drop table t1;
|
||||
create table t1 (a int not null primary key, b varchar(20) not null, c varchar(20) not null, unique(b(10),c(10)));
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b varchar(20) NO MUL
|
||||
c varchar(20) NO
|
||||
a int(11) NO PRI NULL
|
||||
b varchar(20) NO MUL NULL
|
||||
c varchar(20) NO NULL
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
c1 int,
|
||||
|
|
|
@ -74,16 +74,16 @@ slow_log CREATE TABLE `slow_log` (
|
|||
show fields from mysql.slow_log;
|
||||
Field Type Null Key Default Extra
|
||||
start_time timestamp NO CURRENT_TIMESTAMP
|
||||
user_host mediumtext NO
|
||||
query_time time NO
|
||||
lock_time time NO
|
||||
rows_sent int(11) NO
|
||||
rows_examined int(11) NO
|
||||
user_host mediumtext NO NULL
|
||||
query_time time NO NULL
|
||||
lock_time time NO NULL
|
||||
rows_sent int(11) NO NULL
|
||||
rows_examined int(11) NO NULL
|
||||
db varchar(512) YES NULL
|
||||
last_insert_id int(11) YES NULL
|
||||
insert_id int(11) YES NULL
|
||||
server_id int(11) YES NULL
|
||||
sql_text mediumtext NO
|
||||
sql_text mediumtext NO NULL
|
||||
flush logs;
|
||||
flush tables;
|
||||
SET GLOBAL GENERAL_LOG=ON;
|
||||
|
|
|
@ -91,7 +91,7 @@ i j k
|
|||
NULL 1 NULL
|
||||
Field Type Null Key Default Extra
|
||||
i int(11) YES NULL
|
||||
j int(11) NO
|
||||
j int(11) NO NULL
|
||||
k int(11) YES NULL
|
||||
+------+---+------+
|
||||
| i | j | k |
|
||||
|
@ -102,7 +102,7 @@ k int(11) YES NULL
|
|||
| Field | Type | Null | Key | Default | Extra |
|
||||
+-------+---------+------+-----+---------+-------+
|
||||
| i | int(11) | YES | | NULL | |
|
||||
| j | int(11) | NO | | | |
|
||||
| j | int(11) | NO | | NULL | |
|
||||
| k | int(11) | YES | | NULL | |
|
||||
+-------+---------+------+-----+---------+-------+
|
||||
i s1
|
||||
|
|
|
@ -269,7 +269,7 @@ prepare stmt4 from ' show columns from t2 where field in (select ?) ';
|
|||
SET @arg00="a";
|
||||
execute stmt4 using @arg00;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
a int(11) NO PRI NULL
|
||||
SET @arg00="b";
|
||||
execute stmt4 using @arg00;
|
||||
Field Type Null Key Default Extra
|
||||
|
@ -280,7 +280,7 @@ Field Type Null Key Default Extra
|
|||
prepare stmt4 from ' show columns from t2 from test like ''a%'' ';
|
||||
execute stmt4;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
a int(11) NO PRI NULL
|
||||
create index t2_idx on t2(b);
|
||||
prepare stmt4 from ' show index from t2 from test ';
|
||||
execute stmt4;
|
||||
|
@ -389,7 +389,7 @@ drop database mysqltest ;
|
|||
prepare stmt3 from ' describe t2 ';
|
||||
execute stmt3;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
a int(11) NO PRI NULL
|
||||
b char(10) YES MUL NULL
|
||||
drop table t2 ;
|
||||
execute stmt3;
|
||||
|
|
|
@ -228,7 +228,7 @@ show full columns from t1;
|
|||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
test_set set('val1','val2','val3') latin1_swedish_ci NO select,insert,update,references
|
||||
name char(20) latin1_swedish_ci YES O'Brien select,insert,update,references O'Brien as default
|
||||
c int(11) NULL NO select,insert,update,references int column
|
||||
c int(11) NULL NO NULL select,insert,update,references int column
|
||||
c-b int(11) NULL YES NULL select,insert,update,references name with a minus
|
||||
space 2 int(11) NULL YES NULL select,insert,update,references name with a space
|
||||
drop table t1;
|
||||
|
@ -1000,7 +1000,7 @@ def COLUMNS COLUMN_KEY Key 253 9 3 N 1 0 33
|
|||
def COLUMNS COLUMN_DEFAULT Default 252 589815 0 Y 16 0 33
|
||||
def COLUMNS EXTRA Extra 253 60 0 N 1 0 33
|
||||
Field Type Null Key Default Extra
|
||||
c int(11) NO PRI
|
||||
c int(11) NO PRI NULL
|
||||
----------------------------------------------------------------
|
||||
SHOW TRIGGERS LIKE 't1';
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
|
|
|
@ -2469,7 +2469,7 @@ Database (foo)
|
|||
Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
data int(11) NO NULL
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
|
@ -2523,7 +2523,7 @@ Database (foo)
|
|||
Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
data int(11) NO NULL
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
|
|
|
@ -1675,7 +1675,7 @@ t1 CREATE TABLE `t1` (
|
|||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) YES 1
|
||||
b enum('value','öäü_value','ÊÃÕ') NO
|
||||
b enum('value','öäü_value','ÊÃÕ') NO NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (c enum('a', 'A') BINARY);
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
|
|
|
@ -63,9 +63,9 @@ time_field time NULL YES NULL #
|
|||
date_time datetime NULL YES NULL #
|
||||
blob_col blob NULL YES NULL #
|
||||
tinyblob_col tinyblob NULL YES NULL #
|
||||
mediumblob_col mediumblob NULL NO #
|
||||
longblob_col longblob NULL NO #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL #
|
||||
mediumblob_col mediumblob NULL NO NULL #
|
||||
longblob_col longblob NULL NO NULL #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL NULL #
|
||||
flags set('one','two','tree') latin1_swedish_ci NO #
|
||||
show keys from t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
|
@ -214,7 +214,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
|
|||
auto int(5) unsigned NULL NO MUL NULL auto_increment #
|
||||
string char(10) latin1_swedish_ci YES newdefault #
|
||||
tiny tinyint(4) NULL NO MUL 0 #
|
||||
short smallint(6) NULL NO MUL #
|
||||
short smallint(6) NULL NO MUL NULL #
|
||||
medium mediumint(8) NULL NO MUL 0 #
|
||||
long_int int(11) NULL NO 0 #
|
||||
longlong bigint(13) NULL NO MUL 0 #
|
||||
|
@ -231,8 +231,8 @@ time_field time NULL YES NULL #
|
|||
date_time datetime NULL YES NULL #
|
||||
new_blob_col varchar(20) latin1_swedish_ci YES NULL #
|
||||
tinyblob_col tinyblob NULL YES NULL #
|
||||
mediumblob_col mediumblob NULL NO #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL #
|
||||
mediumblob_col mediumblob NULL NO NULL #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL NULL #
|
||||
flags set('one','two','tree') latin1_swedish_ci NO #
|
||||
new_field char(10) latin1_swedish_ci NO new #
|
||||
show full columns from t2;
|
||||
|
@ -240,7 +240,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
|
|||
auto int(5) unsigned NULL NO 0 #
|
||||
string char(10) latin1_swedish_ci YES newdefault #
|
||||
tiny tinyint(4) NULL NO 0 #
|
||||
short smallint(6) NULL NO #
|
||||
short smallint(6) NULL NO NULL #
|
||||
medium mediumint(8) NULL NO 0 #
|
||||
long_int int(11) NULL NO 0 #
|
||||
longlong bigint(13) NULL NO 0 #
|
||||
|
@ -257,8 +257,8 @@ time_field time NULL YES NULL #
|
|||
date_time datetime NULL YES NULL #
|
||||
new_blob_col varchar(20) latin1_swedish_ci YES NULL #
|
||||
tinyblob_col tinyblob NULL YES NULL #
|
||||
mediumblob_col mediumblob NULL NO #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO #
|
||||
mediumblob_col mediumblob NULL NO NULL #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO NULL #
|
||||
flags set('one','two','tree') latin1_swedish_ci NO #
|
||||
new_field char(10) latin1_swedish_ci NO new #
|
||||
select t1.auto,t2.auto from t1,t2 where t1.auto=t2.auto and ((t1.string<>t2.string and (t1.string is not null or t2.string is not null)) or (t1.tiny<>t2.tiny and (t1.tiny is not null or t2.tiny is not null)) or (t1.short<>t2.short and (t1.short is not null or t2.short is not null)) or (t1.medium<>t2.medium and (t1.medium is not null or t2.medium is not null)) or (t1.long_int<>t2.long_int and (t1.long_int is not null or t2.long_int is not null)) or (t1.longlong<>t2.longlong and (t1.longlong is not null or t2.longlong is not null)) or (t1.real_float<>t2.real_float and (t1.real_float is not null or t2.real_float is not null)) or (t1.real_double<>t2.real_double and (t1.real_double is not null or t2.real_double is not null)) or (t1.utiny<>t2.utiny and (t1.utiny is not null or t2.utiny is not null)) or (t1.ushort<>t2.ushort and (t1.ushort is not null or t2.ushort is not null)) or (t1.umedium<>t2.umedium and (t1.umedium is not null or t2.umedium is not null)) or (t1.ulong<>t2.ulong and (t1.ulong is not null or t2.ulong is not null)) or (t1.ulonglong<>t2.ulonglong and (t1.ulonglong is not null or t2.ulonglong is not null)) or (t1.time_stamp<>t2.time_stamp and (t1.time_stamp is not null or t2.time_stamp is not null)) or (t1.date_field<>t2.date_field and (t1.date_field is not null or t2.date_field is not null)) or (t1.time_field<>t2.time_field and (t1.time_field is not null or t2.time_field is not null)) or (t1.date_time<>t2.date_time and (t1.date_time is not null or t2.date_time is not null)) or (t1.new_blob_col<>t2.new_blob_col and (t1.new_blob_col is not null or t2.new_blob_col is not null)) or (t1.tinyblob_col<>t2.tinyblob_col and (t1.tinyblob_col is not null or t2.tinyblob_col is not null)) or (t1.mediumblob_col<>t2.mediumblob_col and (t1.mediumblob_col is not null or t2.mediumblob_col is not null)) or (t1.options<>t2.options and (t1.options is not null or t2.options is not null)) or (t1.flags<>t2.flags and (t1.flags is not null or t2.flags is not null)) or (t1.new_field<>t2.new_field and (t1.new_field is not null or t2.new_field is not null)));
|
||||
|
@ -276,8 +276,8 @@ t1 int(1) NULL NO 0 #
|
|||
t2 varchar(1) latin1_swedish_ci NO #
|
||||
t3 varchar(256) latin1_swedish_ci NO #
|
||||
t4 varbinary(256) NULL NO #
|
||||
t5 longtext latin1_swedish_ci NO #
|
||||
t6 longblob NULL NO #
|
||||
t5 longtext latin1_swedish_ci NO NULL #
|
||||
t6 longblob NULL NO NULL #
|
||||
t7 char(0) latin1_swedish_ci NO #
|
||||
t8 binary(0) NULL NO #
|
||||
select t1,t2,length(t3),length(t4),length(t5),length(t6),t7,t8 from t2;
|
||||
|
|
|
@ -1072,6 +1072,23 @@ connection default;
|
|||
drop user mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# Bug#27747 database metadata doesn't return sufficient column default info
|
||||
#
|
||||
create table t1 (
|
||||
f1 varchar(50),
|
||||
f2 varchar(50) not null,
|
||||
f3 varchar(50) default '',
|
||||
f4 varchar(50) default NULL,
|
||||
f5 bigint not null,
|
||||
f6 bigint not null default 10,
|
||||
f7 datetime not null,
|
||||
f8 datetime default '2006-01-01'
|
||||
);
|
||||
select column_default from information_schema.columns where table_name= 't1';
|
||||
show columns from t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
#
|
||||
# Show engines
|
||||
|
|
129
sql/sql_show.cc
129
sql/sql_show.cc
|
@ -975,6 +975,60 @@ static void append_directory(THD *thd, String *packet, const char *dir_type,
|
|||
|
||||
#define LIST_PROCESS_HOST_LEN 64
|
||||
|
||||
static bool get_field_default_value(THD *thd, TABLE *table,
|
||||
Field *field, String *def_value,
|
||||
bool quoted)
|
||||
{
|
||||
bool has_default;
|
||||
bool has_now_default;
|
||||
|
||||
/*
|
||||
We are using CURRENT_TIMESTAMP instead of NOW because it is
|
||||
more standard
|
||||
*/
|
||||
has_now_default= table->timestamp_field == field &&
|
||||
field->unireg_check != Field::TIMESTAMP_UN_FIELD;
|
||||
|
||||
has_default= (field->type() != FIELD_TYPE_BLOB &&
|
||||
!(field->flags & NO_DEFAULT_VALUE_FLAG) &&
|
||||
field->unireg_check != Field::NEXT_NUMBER &&
|
||||
!((thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40))
|
||||
&& has_now_default));
|
||||
|
||||
def_value->length(0);
|
||||
if (has_default)
|
||||
{
|
||||
if (has_now_default)
|
||||
def_value->append(STRING_WITH_LEN("CURRENT_TIMESTAMP"));
|
||||
else if (!field->is_null())
|
||||
{ // Not null by default
|
||||
char tmp[MAX_FIELD_WIDTH];
|
||||
String type(tmp, sizeof(tmp), field->charset());
|
||||
field->val_str(&type);
|
||||
if (type.length())
|
||||
{
|
||||
String def_val;
|
||||
uint dummy_errors;
|
||||
/* convert to system_charset_info == utf8 */
|
||||
def_val.copy(type.ptr(), type.length(), field->charset(),
|
||||
system_charset_info, &dummy_errors);
|
||||
if (quoted)
|
||||
append_unescaped(def_value, def_val.ptr(), def_val.length());
|
||||
else
|
||||
def_value->append(def_val.ptr(), def_val.length());
|
||||
}
|
||||
else if (quoted)
|
||||
def_value->append(STRING_WITH_LEN("''"));
|
||||
}
|
||||
else if (field->maybe_null() && quoted)
|
||||
def_value->append(STRING_WITH_LEN("NULL")); // Null as default
|
||||
else
|
||||
return 0;
|
||||
|
||||
}
|
||||
return has_default;
|
||||
}
|
||||
|
||||
/*
|
||||
Build a CREATE TABLE statement for a table.
|
||||
|
||||
|
@ -989,11 +1043,11 @@ static void append_directory(THD *thd, String *packet, const char *dir_type,
|
|||
to tailor the format of the statement. Can be
|
||||
NULL, in which case only SQL_MODE is considered
|
||||
when building the statement.
|
||||
|
||||
|
||||
NOTE
|
||||
Currently always return 0, but might return error code in the
|
||||
future.
|
||||
|
||||
|
||||
RETURN
|
||||
0 OK
|
||||
*/
|
||||
|
@ -1002,9 +1056,10 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
|
|||
HA_CREATE_INFO *create_info_arg)
|
||||
{
|
||||
List<Item> field_list;
|
||||
char tmp[MAX_FIELD_WIDTH], *for_str, buff[128];
|
||||
char tmp[MAX_FIELD_WIDTH], *for_str, buff[128], def_value_buf[MAX_FIELD_WIDTH];
|
||||
const char *alias;
|
||||
String type(tmp, sizeof(tmp), system_charset_info);
|
||||
String def_value(def_value_buf, sizeof(def_value_buf), system_charset_info);
|
||||
Field **ptr,*field;
|
||||
uint primary_key;
|
||||
KEY *key_info;
|
||||
|
@ -1057,8 +1112,6 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
|
|||
|
||||
for (ptr=table->field ; (field= *ptr); ptr++)
|
||||
{
|
||||
bool has_default;
|
||||
bool has_now_default;
|
||||
uint flags = field->flags;
|
||||
|
||||
if (ptr != table->field)
|
||||
|
@ -1106,44 +1159,10 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
|
|||
packet->append(STRING_WITH_LEN(" NULL"));
|
||||
}
|
||||
|
||||
/*
|
||||
Again we are using CURRENT_TIMESTAMP instead of NOW because it is
|
||||
more standard
|
||||
*/
|
||||
has_now_default= table->timestamp_field == field &&
|
||||
field->unireg_check != Field::TIMESTAMP_UN_FIELD;
|
||||
|
||||
has_default= (field->type() != MYSQL_TYPE_BLOB &&
|
||||
!(field->flags & NO_DEFAULT_VALUE_FLAG) &&
|
||||
field->unireg_check != Field::NEXT_NUMBER &&
|
||||
!((thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40))
|
||||
&& has_now_default));
|
||||
|
||||
if (has_default)
|
||||
if (get_field_default_value(thd, table, field, &def_value, 1))
|
||||
{
|
||||
packet->append(STRING_WITH_LEN(" DEFAULT "));
|
||||
if (has_now_default)
|
||||
packet->append(STRING_WITH_LEN("CURRENT_TIMESTAMP"));
|
||||
else if (!field->is_null())
|
||||
{ // Not null by default
|
||||
type.set(tmp, sizeof(tmp), field->charset());
|
||||
field->val_str(&type);
|
||||
if (type.length())
|
||||
{
|
||||
String def_val;
|
||||
uint dummy_errors;
|
||||
/* convert to system_charset_info == utf8 */
|
||||
def_val.copy(type.ptr(), type.length(), field->charset(),
|
||||
system_charset_info, &dummy_errors);
|
||||
append_unescaped(packet, def_val.ptr(), def_val.length());
|
||||
}
|
||||
else
|
||||
packet->append(STRING_WITH_LEN("''"));
|
||||
}
|
||||
else if (field->maybe_null())
|
||||
packet->append(STRING_WITH_LEN("NULL")); // Null as default
|
||||
else
|
||||
packet->append(tmp);
|
||||
packet->append(def_value.ptr(), def_value.length(), system_charset_info);
|
||||
}
|
||||
|
||||
if (!limited_mysql_mode && table->timestamp_field == field &&
|
||||
|
@ -3599,7 +3618,6 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
|
|||
bool is_blob;
|
||||
uint flags=field->flags;
|
||||
char tmp[MAX_FIELD_WIDTH];
|
||||
char tmp1[MAX_FIELD_WIDTH];
|
||||
String type(tmp,sizeof(tmp), system_charset_info);
|
||||
char *end;
|
||||
int decimals, field_length;
|
||||
|
@ -3645,31 +3663,10 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
|
|||
table->field[7]->store(type.ptr(),
|
||||
(tmp_buff ? tmp_buff - type.ptr() :
|
||||
type.length()), cs);
|
||||
if (show_table->timestamp_field == field &&
|
||||
field->unireg_check != Field::TIMESTAMP_UN_FIELD)
|
||||
|
||||
if (get_field_default_value(thd, show_table, field, &type, 0))
|
||||
{
|
||||
table->field[5]->store(STRING_WITH_LEN("CURRENT_TIMESTAMP"), cs);
|
||||
table->field[5]->set_notnull();
|
||||
}
|
||||
else if (field->unireg_check != Field::NEXT_NUMBER &&
|
||||
!field->is_null() &&
|
||||
!(field->flags & NO_DEFAULT_VALUE_FLAG))
|
||||
{
|
||||
String def(tmp1,sizeof(tmp1), cs);
|
||||
type.set(tmp, sizeof(tmp), field->charset());
|
||||
field->val_str(&type);
|
||||
uint dummy_errors;
|
||||
def.copy(type.ptr(), type.length(), type.charset(), cs, &dummy_errors);
|
||||
table->field[5]->store(def.ptr(), def.length(), def.charset());
|
||||
table->field[5]->set_notnull();
|
||||
}
|
||||
else if (field->unireg_check == Field::NEXT_NUMBER ||
|
||||
lex->sql_command != SQLCOM_SHOW_FIELDS ||
|
||||
field->maybe_null())
|
||||
table->field[5]->set_null(); // Null as default
|
||||
else
|
||||
{
|
||||
table->field[5]->store("",0, cs);
|
||||
table->field[5]->store(type.ptr(), type.length(), cs);
|
||||
table->field[5]->set_notnull();
|
||||
}
|
||||
pos=(uchar*) ((flags & NOT_NULL_FLAG) ? "NO" : "YES");
|
||||
|
|
Loading…
Add table
Reference in a new issue