Merge 10.4 into 10.5
This commit is contained in:
commit
1c58748196
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2012, 2017, MariaDB Corporation.
|
Copyright (c) 2012, 2020, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -278,6 +278,7 @@ struct st_vio
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
HANDLE hPipe;
|
HANDLE hPipe;
|
||||||
OVERLAPPED overlapped;
|
OVERLAPPED overlapped;
|
||||||
|
int shutdown_flag;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
#endif /* vio_violite_h_ */
|
#endif /* vio_violite_h_ */
|
||||||
|
@ -194,12 +194,12 @@ show create table t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
select hex(concat(ceiling(0.5)));
|
select hex(concat(ceiling(0.5)));
|
||||||
create table t1 as select concat(ceiling(0.5)) as c1;
|
create table t1 as select ceiling(0.5) as c0, concat(ceiling(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
select hex(concat(floor(0.5)));
|
select hex(concat(floor(0.5)));
|
||||||
create table t1 as select concat(floor(0.5)) as c1;
|
create table t1 as select floor(0.5) as c0, concat(floor(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
@ -345,21 +345,23 @@ drop table t1;
|
|||||||
select hex(concat(ceiling(0.5)));
|
select hex(concat(ceiling(0.5)));
|
||||||
hex(concat(ceiling(0.5)))
|
hex(concat(ceiling(0.5)))
|
||||||
31
|
31
|
||||||
create table t1 as select concat(ceiling(0.5)) as c1;
|
create table t1 as select ceiling(0.5) as c0, concat(ceiling(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varbinary(4) DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varbinary(3) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(floor(0.5)));
|
select hex(concat(floor(0.5)));
|
||||||
hex(concat(floor(0.5)))
|
hex(concat(floor(0.5)))
|
||||||
30
|
30
|
||||||
create table t1 as select concat(floor(0.5)) as c1;
|
create table t1 as select floor(0.5) as c0, concat(floor(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varbinary(4) DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varbinary(3) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(round(0.5)));
|
select hex(concat(round(0.5)));
|
||||||
|
@ -757,21 +757,23 @@ drop table t1;
|
|||||||
select hex(concat(ceiling(0.5)));
|
select hex(concat(ceiling(0.5)));
|
||||||
hex(concat(ceiling(0.5)))
|
hex(concat(ceiling(0.5)))
|
||||||
31
|
31
|
||||||
create table t1 as select concat(ceiling(0.5)) as c1;
|
create table t1 as select ceiling(0.5) as c0, concat(ceiling(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) CHARACTER SET cp1251 DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) CHARACTER SET cp1251 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(floor(0.5)));
|
select hex(concat(floor(0.5)));
|
||||||
hex(concat(floor(0.5)))
|
hex(concat(floor(0.5)))
|
||||||
30
|
30
|
||||||
create table t1 as select concat(floor(0.5)) as c1;
|
create table t1 as select floor(0.5) as c0, concat(floor(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) CHARACTER SET cp1251 DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) CHARACTER SET cp1251 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(round(0.5)));
|
select hex(concat(round(0.5)));
|
||||||
|
@ -22,6 +22,13 @@ SELECT @a:=CONVERT('aя' USING filename) AS `@a`, BINARY @a, REVERSE(@a), HEX(@a
|
|||||||
@a BINARY @a REVERSE(@a) HEX(@a) HEX(REVERSE(@a))
|
@a BINARY @a REVERSE(@a) HEX(@a) HEX(REVERSE(@a))
|
||||||
aя a@r1 яa 61407231 40723161
|
aя a@r1 яa 61407231 40723161
|
||||||
#
|
#
|
||||||
|
# MDEV-22022 Various mangled SQL statements will crash 10.3 to 10.5 debug builds
|
||||||
|
#
|
||||||
|
SET CHARACTER_SET_CLIENT=17;
|
||||||
|
SELECT doc.`Children`.0 FROM t1;
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?Children??0?FROM?t1' at line 1
|
||||||
|
SET NAMES latin1;
|
||||||
|
#
|
||||||
# Start of 10.5 tests
|
# Start of 10.5 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -29,6 +29,16 @@ SET NAMES utf8;
|
|||||||
SELECT @a:=CONVERT('aя' USING filename) AS `@a`, BINARY @a, REVERSE(@a), HEX(@a), HEX(REVERSE(@a));
|
SELECT @a:=CONVERT('aя' USING filename) AS `@a`, BINARY @a, REVERSE(@a), HEX(@a), HEX(REVERSE(@a));
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-22022 Various mangled SQL statements will crash 10.3 to 10.5 debug builds
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET CHARACTER_SET_CLIENT=17;
|
||||||
|
--error ER_PARSE_ERROR
|
||||||
|
SELECT doc.`Children`.0 FROM t1;
|
||||||
|
SET NAMES latin1;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Start of 10.5 tests
|
--echo # Start of 10.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1066,21 +1066,23 @@ drop table t1;
|
|||||||
select hex(concat(ceiling(0.5)));
|
select hex(concat(ceiling(0.5)));
|
||||||
hex(concat(ceiling(0.5)))
|
hex(concat(ceiling(0.5)))
|
||||||
31
|
31
|
||||||
create table t1 as select concat(ceiling(0.5)) as c1;
|
create table t1 as select ceiling(0.5) as c0, concat(ceiling(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(floor(0.5)));
|
select hex(concat(floor(0.5)));
|
||||||
hex(concat(floor(0.5)))
|
hex(concat(floor(0.5)))
|
||||||
30
|
30
|
||||||
create table t1 as select concat(floor(0.5)) as c1;
|
create table t1 as select floor(0.5) as c0, concat(floor(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(round(0.5)));
|
select hex(concat(round(0.5)));
|
||||||
|
@ -1950,21 +1950,23 @@ drop table t1;
|
|||||||
select hex(concat(ceiling(0.5)));
|
select hex(concat(ceiling(0.5)));
|
||||||
hex(concat(ceiling(0.5)))
|
hex(concat(ceiling(0.5)))
|
||||||
0031
|
0031
|
||||||
create table t1 as select concat(ceiling(0.5)) as c1;
|
create table t1 as select ceiling(0.5) as c0, concat(ceiling(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) CHARACTER SET ucs2 DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(floor(0.5)));
|
select hex(concat(floor(0.5)));
|
||||||
hex(concat(floor(0.5)))
|
hex(concat(floor(0.5)))
|
||||||
0030
|
0030
|
||||||
create table t1 as select concat(floor(0.5)) as c1;
|
create table t1 as select floor(0.5) as c0, concat(floor(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) CHARACTER SET ucs2 DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(round(0.5)));
|
select hex(concat(round(0.5)));
|
||||||
|
@ -2817,21 +2817,23 @@ drop table t1;
|
|||||||
select hex(concat(ceiling(0.5)));
|
select hex(concat(ceiling(0.5)));
|
||||||
hex(concat(ceiling(0.5)))
|
hex(concat(ceiling(0.5)))
|
||||||
31
|
31
|
||||||
create table t1 as select concat(ceiling(0.5)) as c1;
|
create table t1 as select ceiling(0.5) as c0, concat(ceiling(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) CHARACTER SET utf8 DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) CHARACTER SET utf8 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(floor(0.5)));
|
select hex(concat(floor(0.5)));
|
||||||
hex(concat(floor(0.5)))
|
hex(concat(floor(0.5)))
|
||||||
30
|
30
|
||||||
create table t1 as select concat(floor(0.5)) as c1;
|
create table t1 as select floor(0.5) as c0, concat(floor(0.5)) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(4) CHARACTER SET utf8 DEFAULT NULL
|
`c0` int(3) NOT NULL,
|
||||||
|
`c1` varchar(3) CHARACTER SET utf8 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(round(0.5)));
|
select hex(concat(round(0.5)));
|
||||||
|
@ -1080,7 +1080,7 @@ Create Table CREATE TABLE `t2` (
|
|||||||
`a` decimal(38,0) DEFAULT NULL,
|
`a` decimal(38,0) DEFAULT NULL,
|
||||||
`b` decimal(38,0) unsigned DEFAULT NULL,
|
`b` decimal(38,0) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(38,0) DEFAULT NULL,
|
`fa` decimal(38,0) DEFAULT NULL,
|
||||||
`fb` decimal(38,0) DEFAULT NULL
|
`fb` decimal(38,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999999999999999999
|
a 99999999999999999999999999999999999999
|
||||||
b 99999999999999999999999999999999999999
|
b 99999999999999999999999999999999999999
|
||||||
@ -1090,8 +1090,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,1) DEFAULT NULL,
|
`a` decimal(38,1) DEFAULT NULL,
|
||||||
`b` decimal(38,1) unsigned DEFAULT NULL,
|
`b` decimal(38,1) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(37,0) DEFAULT NULL,
|
`fa` decimal(38,0) DEFAULT NULL,
|
||||||
`fb` decimal(37,0) DEFAULT NULL
|
`fb` decimal(37,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999999999999999999.9
|
a 9999999999999999999999999999999999999.9
|
||||||
b 9999999999999999999999999999999999999.9
|
b 9999999999999999999999999999999999999.9
|
||||||
@ -1101,8 +1101,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,2) DEFAULT NULL,
|
`a` decimal(38,2) DEFAULT NULL,
|
||||||
`b` decimal(38,2) unsigned DEFAULT NULL,
|
`b` decimal(38,2) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(36,0) DEFAULT NULL,
|
`fa` decimal(37,0) DEFAULT NULL,
|
||||||
`fb` decimal(36,0) DEFAULT NULL
|
`fb` decimal(36,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999999999999999.99
|
a 999999999999999999999999999999999999.99
|
||||||
b 999999999999999999999999999999999999.99
|
b 999999999999999999999999999999999999.99
|
||||||
@ -1112,8 +1112,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,3) DEFAULT NULL,
|
`a` decimal(38,3) DEFAULT NULL,
|
||||||
`b` decimal(38,3) unsigned DEFAULT NULL,
|
`b` decimal(38,3) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(35,0) DEFAULT NULL,
|
`fa` decimal(36,0) DEFAULT NULL,
|
||||||
`fb` decimal(35,0) DEFAULT NULL
|
`fb` decimal(35,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999999999999999.999
|
a 99999999999999999999999999999999999.999
|
||||||
b 99999999999999999999999999999999999.999
|
b 99999999999999999999999999999999999.999
|
||||||
@ -1123,8 +1123,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,4) DEFAULT NULL,
|
`a` decimal(38,4) DEFAULT NULL,
|
||||||
`b` decimal(38,4) unsigned DEFAULT NULL,
|
`b` decimal(38,4) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(34,0) DEFAULT NULL,
|
`fa` decimal(35,0) DEFAULT NULL,
|
||||||
`fb` decimal(34,0) DEFAULT NULL
|
`fb` decimal(34,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999999999999999.9999
|
a 9999999999999999999999999999999999.9999
|
||||||
b 9999999999999999999999999999999999.9999
|
b 9999999999999999999999999999999999.9999
|
||||||
@ -1134,8 +1134,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,5) DEFAULT NULL,
|
`a` decimal(38,5) DEFAULT NULL,
|
||||||
`b` decimal(38,5) unsigned DEFAULT NULL,
|
`b` decimal(38,5) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(33,0) DEFAULT NULL,
|
`fa` decimal(34,0) DEFAULT NULL,
|
||||||
`fb` decimal(33,0) DEFAULT NULL
|
`fb` decimal(33,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999999999999.99999
|
a 999999999999999999999999999999999.99999
|
||||||
b 999999999999999999999999999999999.99999
|
b 999999999999999999999999999999999.99999
|
||||||
@ -1145,8 +1145,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,6) DEFAULT NULL,
|
`a` decimal(38,6) DEFAULT NULL,
|
||||||
`b` decimal(38,6) unsigned DEFAULT NULL,
|
`b` decimal(38,6) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(32,0) DEFAULT NULL,
|
`fa` decimal(33,0) DEFAULT NULL,
|
||||||
`fb` decimal(32,0) DEFAULT NULL
|
`fb` decimal(32,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999999999999.999999
|
a 99999999999999999999999999999999.999999
|
||||||
b 99999999999999999999999999999999.999999
|
b 99999999999999999999999999999999.999999
|
||||||
@ -1156,8 +1156,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,7) DEFAULT NULL,
|
`a` decimal(38,7) DEFAULT NULL,
|
||||||
`b` decimal(38,7) unsigned DEFAULT NULL,
|
`b` decimal(38,7) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(31,0) DEFAULT NULL,
|
`fa` decimal(32,0) DEFAULT NULL,
|
||||||
`fb` decimal(31,0) DEFAULT NULL
|
`fb` decimal(31,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999999999999.9999999
|
a 9999999999999999999999999999999.9999999
|
||||||
b 9999999999999999999999999999999.9999999
|
b 9999999999999999999999999999999.9999999
|
||||||
@ -1167,8 +1167,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,8) DEFAULT NULL,
|
`a` decimal(38,8) DEFAULT NULL,
|
||||||
`b` decimal(38,8) unsigned DEFAULT NULL,
|
`b` decimal(38,8) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(30,0) DEFAULT NULL,
|
`fa` decimal(31,0) DEFAULT NULL,
|
||||||
`fb` decimal(30,0) DEFAULT NULL
|
`fb` decimal(30,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999999999.99999999
|
a 999999999999999999999999999999.99999999
|
||||||
b 999999999999999999999999999999.99999999
|
b 999999999999999999999999999999.99999999
|
||||||
@ -1178,8 +1178,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,9) DEFAULT NULL,
|
`a` decimal(38,9) DEFAULT NULL,
|
||||||
`b` decimal(38,9) unsigned DEFAULT NULL,
|
`b` decimal(38,9) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(29,0) DEFAULT NULL,
|
`fa` decimal(30,0) DEFAULT NULL,
|
||||||
`fb` decimal(29,0) DEFAULT NULL
|
`fb` decimal(29,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999999999.999999999
|
a 99999999999999999999999999999.999999999
|
||||||
b 99999999999999999999999999999.999999999
|
b 99999999999999999999999999999.999999999
|
||||||
@ -1189,8 +1189,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,10) DEFAULT NULL,
|
`a` decimal(38,10) DEFAULT NULL,
|
||||||
`b` decimal(38,10) unsigned DEFAULT NULL,
|
`b` decimal(38,10) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(28,0) DEFAULT NULL,
|
`fa` decimal(29,0) DEFAULT NULL,
|
||||||
`fb` decimal(28,0) DEFAULT NULL
|
`fb` decimal(28,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999999999.9999999999
|
a 9999999999999999999999999999.9999999999
|
||||||
b 9999999999999999999999999999.9999999999
|
b 9999999999999999999999999999.9999999999
|
||||||
@ -1200,8 +1200,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,11) DEFAULT NULL,
|
`a` decimal(38,11) DEFAULT NULL,
|
||||||
`b` decimal(38,11) unsigned DEFAULT NULL,
|
`b` decimal(38,11) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(27,0) DEFAULT NULL,
|
`fa` decimal(28,0) DEFAULT NULL,
|
||||||
`fb` decimal(27,0) DEFAULT NULL
|
`fb` decimal(27,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999999.99999999999
|
a 999999999999999999999999999.99999999999
|
||||||
b 999999999999999999999999999.99999999999
|
b 999999999999999999999999999.99999999999
|
||||||
@ -1211,8 +1211,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,12) DEFAULT NULL,
|
`a` decimal(38,12) DEFAULT NULL,
|
||||||
`b` decimal(38,12) unsigned DEFAULT NULL,
|
`b` decimal(38,12) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(26,0) DEFAULT NULL,
|
`fa` decimal(27,0) DEFAULT NULL,
|
||||||
`fb` decimal(26,0) DEFAULT NULL
|
`fb` decimal(26,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999999.999999999999
|
a 99999999999999999999999999.999999999999
|
||||||
b 99999999999999999999999999.999999999999
|
b 99999999999999999999999999.999999999999
|
||||||
@ -1222,8 +1222,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,13) DEFAULT NULL,
|
`a` decimal(38,13) DEFAULT NULL,
|
||||||
`b` decimal(38,13) unsigned DEFAULT NULL,
|
`b` decimal(38,13) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(25,0) DEFAULT NULL,
|
`fa` decimal(26,0) DEFAULT NULL,
|
||||||
`fb` decimal(25,0) DEFAULT NULL
|
`fb` decimal(25,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999999.9999999999999
|
a 9999999999999999999999999.9999999999999
|
||||||
b 9999999999999999999999999.9999999999999
|
b 9999999999999999999999999.9999999999999
|
||||||
@ -1233,8 +1233,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,14) DEFAULT NULL,
|
`a` decimal(38,14) DEFAULT NULL,
|
||||||
`b` decimal(38,14) unsigned DEFAULT NULL,
|
`b` decimal(38,14) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(24,0) DEFAULT NULL,
|
`fa` decimal(25,0) DEFAULT NULL,
|
||||||
`fb` decimal(24,0) DEFAULT NULL
|
`fb` decimal(24,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999.99999999999999
|
a 999999999999999999999999.99999999999999
|
||||||
b 999999999999999999999999.99999999999999
|
b 999999999999999999999999.99999999999999
|
||||||
@ -1244,8 +1244,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,15) DEFAULT NULL,
|
`a` decimal(38,15) DEFAULT NULL,
|
||||||
`b` decimal(38,15) unsigned DEFAULT NULL,
|
`b` decimal(38,15) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(23,0) DEFAULT NULL,
|
`fa` decimal(24,0) DEFAULT NULL,
|
||||||
`fb` decimal(23,0) DEFAULT NULL
|
`fb` decimal(23,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999.999999999999999
|
a 99999999999999999999999.999999999999999
|
||||||
b 99999999999999999999999.999999999999999
|
b 99999999999999999999999.999999999999999
|
||||||
@ -1255,8 +1255,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,16) DEFAULT NULL,
|
`a` decimal(38,16) DEFAULT NULL,
|
||||||
`b` decimal(38,16) unsigned DEFAULT NULL,
|
`b` decimal(38,16) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(22,0) DEFAULT NULL,
|
`fa` decimal(23,0) DEFAULT NULL,
|
||||||
`fb` decimal(22,0) DEFAULT NULL
|
`fb` decimal(22,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999.9999999999999999
|
a 9999999999999999999999.9999999999999999
|
||||||
b 9999999999999999999999.9999999999999999
|
b 9999999999999999999999.9999999999999999
|
||||||
@ -1266,8 +1266,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,17) DEFAULT NULL,
|
`a` decimal(38,17) DEFAULT NULL,
|
||||||
`b` decimal(38,17) unsigned DEFAULT NULL,
|
`b` decimal(38,17) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(21,0) DEFAULT NULL,
|
`fa` decimal(22,0) DEFAULT NULL,
|
||||||
`fb` decimal(21,0) DEFAULT NULL
|
`fb` decimal(21,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999.99999999999999999
|
a 999999999999999999999.99999999999999999
|
||||||
b 999999999999999999999.99999999999999999
|
b 999999999999999999999.99999999999999999
|
||||||
@ -1277,8 +1277,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,18) DEFAULT NULL,
|
`a` decimal(38,18) DEFAULT NULL,
|
||||||
`b` decimal(38,18) unsigned DEFAULT NULL,
|
`b` decimal(38,18) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(20,0) DEFAULT NULL,
|
`fa` decimal(21,0) DEFAULT NULL,
|
||||||
`fb` decimal(20,0) DEFAULT NULL
|
`fb` decimal(20,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999.999999999999999999
|
a 99999999999999999999.999999999999999999
|
||||||
b 99999999999999999999.999999999999999999
|
b 99999999999999999999.999999999999999999
|
||||||
@ -1288,8 +1288,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,19) DEFAULT NULL,
|
`a` decimal(38,19) DEFAULT NULL,
|
||||||
`b` decimal(38,19) unsigned DEFAULT NULL,
|
`b` decimal(38,19) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(19,0) DEFAULT NULL,
|
`fa` decimal(20,0) DEFAULT NULL,
|
||||||
`fb` decimal(19,0) DEFAULT NULL
|
`fb` decimal(19,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999.9999999999999999999
|
a 9999999999999999999.9999999999999999999
|
||||||
b 9999999999999999999.9999999999999999999
|
b 9999999999999999999.9999999999999999999
|
||||||
@ -1299,8 +1299,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,20) DEFAULT NULL,
|
`a` decimal(38,20) DEFAULT NULL,
|
||||||
`b` decimal(38,20) unsigned DEFAULT NULL,
|
`b` decimal(38,20) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(18,0) DEFAULT NULL,
|
`fa` decimal(19,0) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(18) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999.99999999999999999999
|
a 999999999999999999.99999999999999999999
|
||||||
b 999999999999999999.99999999999999999999
|
b 999999999999999999.99999999999999999999
|
||||||
@ -1310,7 +1310,7 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,21) DEFAULT NULL,
|
`a` decimal(38,21) DEFAULT NULL,
|
||||||
`b` decimal(38,21) unsigned DEFAULT NULL,
|
`b` decimal(38,21) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(19) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(17) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999.999999999999999999999
|
a 99999999999999999.999999999999999999999
|
||||||
@ -1321,8 +1321,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,22) DEFAULT NULL,
|
`a` decimal(38,22) DEFAULT NULL,
|
||||||
`b` decimal(38,22) unsigned DEFAULT NULL,
|
`b` decimal(38,22) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(18) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(16) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999.9999999999999999999999
|
a 9999999999999999.9999999999999999999999
|
||||||
b 9999999999999999.9999999999999999999999
|
b 9999999999999999.9999999999999999999999
|
||||||
@ -1333,7 +1333,7 @@ Create Table CREATE TABLE `t2` (
|
|||||||
`a` decimal(38,23) DEFAULT NULL,
|
`a` decimal(38,23) DEFAULT NULL,
|
||||||
`b` decimal(38,23) unsigned DEFAULT NULL,
|
`b` decimal(38,23) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(17) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(15) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999.99999999999999999999999
|
a 999999999999999.99999999999999999999999
|
||||||
b 999999999999999.99999999999999999999999
|
b 999999999999999.99999999999999999999999
|
||||||
@ -1343,8 +1343,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,24) DEFAULT NULL,
|
`a` decimal(38,24) DEFAULT NULL,
|
||||||
`b` decimal(38,24) unsigned DEFAULT NULL,
|
`b` decimal(38,24) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(16) DEFAULT NULL,
|
||||||
`fb` bigint(16) unsigned DEFAULT NULL
|
`fb` bigint(14) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999.999999999999999999999999
|
a 99999999999999.999999999999999999999999
|
||||||
b 99999999999999.999999999999999999999999
|
b 99999999999999.999999999999999999999999
|
||||||
@ -1354,8 +1354,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,25) DEFAULT NULL,
|
`a` decimal(38,25) DEFAULT NULL,
|
||||||
`b` decimal(38,25) unsigned DEFAULT NULL,
|
`b` decimal(38,25) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(16) DEFAULT NULL,
|
`fa` bigint(15) DEFAULT NULL,
|
||||||
`fb` bigint(15) unsigned DEFAULT NULL
|
`fb` bigint(13) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999.9999999999999999999999999
|
a 9999999999999.9999999999999999999999999
|
||||||
b 9999999999999.9999999999999999999999999
|
b 9999999999999.9999999999999999999999999
|
||||||
@ -1365,8 +1365,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,26) DEFAULT NULL,
|
`a` decimal(38,26) DEFAULT NULL,
|
||||||
`b` decimal(38,26) unsigned DEFAULT NULL,
|
`b` decimal(38,26) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(15) DEFAULT NULL,
|
`fa` bigint(14) DEFAULT NULL,
|
||||||
`fb` bigint(14) unsigned DEFAULT NULL
|
`fb` bigint(12) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999.99999999999999999999999999
|
a 999999999999.99999999999999999999999999
|
||||||
b 999999999999.99999999999999999999999999
|
b 999999999999.99999999999999999999999999
|
||||||
@ -1376,8 +1376,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,27) DEFAULT NULL,
|
`a` decimal(38,27) DEFAULT NULL,
|
||||||
`b` decimal(38,27) unsigned DEFAULT NULL,
|
`b` decimal(38,27) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(14) DEFAULT NULL,
|
`fa` bigint(13) DEFAULT NULL,
|
||||||
`fb` bigint(13) unsigned DEFAULT NULL
|
`fb` bigint(11) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999.999999999999999999999999999
|
a 99999999999.999999999999999999999999999
|
||||||
b 99999999999.999999999999999999999999999
|
b 99999999999.999999999999999999999999999
|
||||||
@ -1387,8 +1387,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,28) DEFAULT NULL,
|
`a` decimal(38,28) DEFAULT NULL,
|
||||||
`b` decimal(38,28) unsigned DEFAULT NULL,
|
`b` decimal(38,28) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(13) DEFAULT NULL,
|
`fa` bigint(12) DEFAULT NULL,
|
||||||
`fb` bigint(12) unsigned DEFAULT NULL
|
`fb` bigint(10) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999.9999999999999999999999999999
|
a 9999999999.9999999999999999999999999999
|
||||||
b 9999999999.9999999999999999999999999999
|
b 9999999999.9999999999999999999999999999
|
||||||
@ -1398,8 +1398,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,29) DEFAULT NULL,
|
`a` decimal(38,29) DEFAULT NULL,
|
||||||
`b` decimal(38,29) unsigned DEFAULT NULL,
|
`b` decimal(38,29) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(12) DEFAULT NULL,
|
`fa` bigint(11) DEFAULT NULL,
|
||||||
`fb` bigint(11) unsigned DEFAULT NULL
|
`fb` int(9) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999.99999999999999999999999999999
|
a 999999999.99999999999999999999999999999
|
||||||
b 999999999.99999999999999999999999999999
|
b 999999999.99999999999999999999999999999
|
||||||
@ -1409,8 +1409,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(38,30) DEFAULT NULL,
|
`a` decimal(38,30) DEFAULT NULL,
|
||||||
`b` decimal(38,30) unsigned DEFAULT NULL,
|
`b` decimal(38,30) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(11) DEFAULT NULL,
|
`fa` int(10) DEFAULT NULL,
|
||||||
`fb` bigint(10) unsigned DEFAULT NULL
|
`fb` int(8) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999.999999999999999999999999999999
|
a 99999999.999999999999999999999999999999
|
||||||
b 99999999.999999999999999999999999999999
|
b 99999999.999999999999999999999999999999
|
||||||
@ -1422,7 +1422,7 @@ Create Table CREATE TABLE `t2` (
|
|||||||
`a` decimal(30,0) DEFAULT NULL,
|
`a` decimal(30,0) DEFAULT NULL,
|
||||||
`b` decimal(30,0) unsigned DEFAULT NULL,
|
`b` decimal(30,0) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(30,0) DEFAULT NULL,
|
`fa` decimal(30,0) DEFAULT NULL,
|
||||||
`fb` decimal(31,0) unsigned DEFAULT NULL
|
`fb` decimal(30,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999999999
|
a 999999999999999999999999999999
|
||||||
b 999999999999999999999999999999
|
b 999999999999999999999999999999
|
||||||
@ -1432,8 +1432,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,1) DEFAULT NULL,
|
`a` decimal(30,1) DEFAULT NULL,
|
||||||
`b` decimal(30,1) unsigned DEFAULT NULL,
|
`b` decimal(30,1) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(29,0) DEFAULT NULL,
|
`fa` decimal(30,0) DEFAULT NULL,
|
||||||
`fb` decimal(30,0) unsigned DEFAULT NULL
|
`fb` decimal(29,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999999999.9
|
a 99999999999999999999999999999.9
|
||||||
b 99999999999999999999999999999.9
|
b 99999999999999999999999999999.9
|
||||||
@ -1443,8 +1443,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,2) DEFAULT NULL,
|
`a` decimal(30,2) DEFAULT NULL,
|
||||||
`b` decimal(30,2) unsigned DEFAULT NULL,
|
`b` decimal(30,2) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(28,0) DEFAULT NULL,
|
`fa` decimal(29,0) DEFAULT NULL,
|
||||||
`fb` decimal(29,0) unsigned DEFAULT NULL
|
`fb` decimal(28,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999999999.99
|
a 9999999999999999999999999999.99
|
||||||
b 9999999999999999999999999999.99
|
b 9999999999999999999999999999.99
|
||||||
@ -1454,8 +1454,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,3) DEFAULT NULL,
|
`a` decimal(30,3) DEFAULT NULL,
|
||||||
`b` decimal(30,3) unsigned DEFAULT NULL,
|
`b` decimal(30,3) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(27,0) DEFAULT NULL,
|
`fa` decimal(28,0) DEFAULT NULL,
|
||||||
`fb` decimal(28,0) unsigned DEFAULT NULL
|
`fb` decimal(27,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999999.999
|
a 999999999999999999999999999.999
|
||||||
b 999999999999999999999999999.999
|
b 999999999999999999999999999.999
|
||||||
@ -1465,8 +1465,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,4) DEFAULT NULL,
|
`a` decimal(30,4) DEFAULT NULL,
|
||||||
`b` decimal(30,4) unsigned DEFAULT NULL,
|
`b` decimal(30,4) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(26,0) DEFAULT NULL,
|
`fa` decimal(27,0) DEFAULT NULL,
|
||||||
`fb` decimal(27,0) unsigned DEFAULT NULL
|
`fb` decimal(26,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999999.9999
|
a 99999999999999999999999999.9999
|
||||||
b 99999999999999999999999999.9999
|
b 99999999999999999999999999.9999
|
||||||
@ -1476,8 +1476,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,5) DEFAULT NULL,
|
`a` decimal(30,5) DEFAULT NULL,
|
||||||
`b` decimal(30,5) unsigned DEFAULT NULL,
|
`b` decimal(30,5) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(25,0) DEFAULT NULL,
|
`fa` decimal(26,0) DEFAULT NULL,
|
||||||
`fb` decimal(26,0) unsigned DEFAULT NULL
|
`fb` decimal(25,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999999.99999
|
a 9999999999999999999999999.99999
|
||||||
b 9999999999999999999999999.99999
|
b 9999999999999999999999999.99999
|
||||||
@ -1487,8 +1487,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,6) DEFAULT NULL,
|
`a` decimal(30,6) DEFAULT NULL,
|
||||||
`b` decimal(30,6) unsigned DEFAULT NULL,
|
`b` decimal(30,6) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(24,0) DEFAULT NULL,
|
`fa` decimal(25,0) DEFAULT NULL,
|
||||||
`fb` decimal(25,0) unsigned DEFAULT NULL
|
`fb` decimal(24,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999999.999999
|
a 999999999999999999999999.999999
|
||||||
b 999999999999999999999999.999999
|
b 999999999999999999999999.999999
|
||||||
@ -1498,8 +1498,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,7) DEFAULT NULL,
|
`a` decimal(30,7) DEFAULT NULL,
|
||||||
`b` decimal(30,7) unsigned DEFAULT NULL,
|
`b` decimal(30,7) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(23,0) DEFAULT NULL,
|
`fa` decimal(24,0) DEFAULT NULL,
|
||||||
`fb` decimal(24,0) unsigned DEFAULT NULL
|
`fb` decimal(23,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999999.9999999
|
a 99999999999999999999999.9999999
|
||||||
b 99999999999999999999999.9999999
|
b 99999999999999999999999.9999999
|
||||||
@ -1509,8 +1509,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,8) DEFAULT NULL,
|
`a` decimal(30,8) DEFAULT NULL,
|
||||||
`b` decimal(30,8) unsigned DEFAULT NULL,
|
`b` decimal(30,8) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(22,0) DEFAULT NULL,
|
`fa` decimal(23,0) DEFAULT NULL,
|
||||||
`fb` decimal(23,0) unsigned DEFAULT NULL
|
`fb` decimal(22,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999999.99999999
|
a 9999999999999999999999.99999999
|
||||||
b 9999999999999999999999.99999999
|
b 9999999999999999999999.99999999
|
||||||
@ -1520,8 +1520,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,9) DEFAULT NULL,
|
`a` decimal(30,9) DEFAULT NULL,
|
||||||
`b` decimal(30,9) unsigned DEFAULT NULL,
|
`b` decimal(30,9) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(21,0) DEFAULT NULL,
|
`fa` decimal(22,0) DEFAULT NULL,
|
||||||
`fb` decimal(22,0) unsigned DEFAULT NULL
|
`fb` decimal(21,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999999.999999999
|
a 999999999999999999999.999999999
|
||||||
b 999999999999999999999.999999999
|
b 999999999999999999999.999999999
|
||||||
@ -1531,8 +1531,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,10) DEFAULT NULL,
|
`a` decimal(30,10) DEFAULT NULL,
|
||||||
`b` decimal(30,10) unsigned DEFAULT NULL,
|
`b` decimal(30,10) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(20,0) DEFAULT NULL,
|
`fa` decimal(21,0) DEFAULT NULL,
|
||||||
`fb` decimal(21,0) unsigned DEFAULT NULL
|
`fb` decimal(20,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999999.9999999999
|
a 99999999999999999999.9999999999
|
||||||
b 99999999999999999999.9999999999
|
b 99999999999999999999.9999999999
|
||||||
@ -1542,8 +1542,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,11) DEFAULT NULL,
|
`a` decimal(30,11) DEFAULT NULL,
|
||||||
`b` decimal(30,11) unsigned DEFAULT NULL,
|
`b` decimal(30,11) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(19,0) DEFAULT NULL,
|
`fa` decimal(20,0) DEFAULT NULL,
|
||||||
`fb` decimal(20,0) unsigned DEFAULT NULL
|
`fb` decimal(19,0) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999999.99999999999
|
a 9999999999999999999.99999999999
|
||||||
b 9999999999999999999.99999999999
|
b 9999999999999999999.99999999999
|
||||||
@ -1553,8 +1553,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,12) DEFAULT NULL,
|
`a` decimal(30,12) DEFAULT NULL,
|
||||||
`b` decimal(30,12) unsigned DEFAULT NULL,
|
`b` decimal(30,12) unsigned DEFAULT NULL,
|
||||||
`fa` decimal(18,0) DEFAULT NULL,
|
`fa` decimal(19,0) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(18) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999999.999999999999
|
a 999999999999999999.999999999999
|
||||||
b 999999999999999999.999999999999
|
b 999999999999999999.999999999999
|
||||||
@ -1564,7 +1564,7 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,13) DEFAULT NULL,
|
`a` decimal(30,13) DEFAULT NULL,
|
||||||
`b` decimal(30,13) unsigned DEFAULT NULL,
|
`b` decimal(30,13) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(19) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(17) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999999.9999999999999
|
a 99999999999999999.9999999999999
|
||||||
@ -1575,8 +1575,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,14) DEFAULT NULL,
|
`a` decimal(30,14) DEFAULT NULL,
|
||||||
`b` decimal(30,14) unsigned DEFAULT NULL,
|
`b` decimal(30,14) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(18) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(16) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999999.99999999999999
|
a 9999999999999999.99999999999999
|
||||||
b 9999999999999999.99999999999999
|
b 9999999999999999.99999999999999
|
||||||
@ -1587,7 +1587,7 @@ Create Table CREATE TABLE `t2` (
|
|||||||
`a` decimal(30,15) DEFAULT NULL,
|
`a` decimal(30,15) DEFAULT NULL,
|
||||||
`b` decimal(30,15) unsigned DEFAULT NULL,
|
`b` decimal(30,15) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(17) DEFAULT NULL,
|
||||||
`fb` bigint(17) unsigned DEFAULT NULL
|
`fb` bigint(15) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999999.999999999999999
|
a 999999999999999.999999999999999
|
||||||
b 999999999999999.999999999999999
|
b 999999999999999.999999999999999
|
||||||
@ -1597,8 +1597,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,16) DEFAULT NULL,
|
`a` decimal(30,16) DEFAULT NULL,
|
||||||
`b` decimal(30,16) unsigned DEFAULT NULL,
|
`b` decimal(30,16) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(17) DEFAULT NULL,
|
`fa` bigint(16) DEFAULT NULL,
|
||||||
`fb` bigint(16) unsigned DEFAULT NULL
|
`fb` bigint(14) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999999.9999999999999999
|
a 99999999999999.9999999999999999
|
||||||
b 99999999999999.9999999999999999
|
b 99999999999999.9999999999999999
|
||||||
@ -1608,8 +1608,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,17) DEFAULT NULL,
|
`a` decimal(30,17) DEFAULT NULL,
|
||||||
`b` decimal(30,17) unsigned DEFAULT NULL,
|
`b` decimal(30,17) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(16) DEFAULT NULL,
|
`fa` bigint(15) DEFAULT NULL,
|
||||||
`fb` bigint(15) unsigned DEFAULT NULL
|
`fb` bigint(13) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999999.99999999999999999
|
a 9999999999999.99999999999999999
|
||||||
b 9999999999999.99999999999999999
|
b 9999999999999.99999999999999999
|
||||||
@ -1619,8 +1619,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,18) DEFAULT NULL,
|
`a` decimal(30,18) DEFAULT NULL,
|
||||||
`b` decimal(30,18) unsigned DEFAULT NULL,
|
`b` decimal(30,18) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(15) DEFAULT NULL,
|
`fa` bigint(14) DEFAULT NULL,
|
||||||
`fb` bigint(14) unsigned DEFAULT NULL
|
`fb` bigint(12) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999999.999999999999999999
|
a 999999999999.999999999999999999
|
||||||
b 999999999999.999999999999999999
|
b 999999999999.999999999999999999
|
||||||
@ -1630,8 +1630,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,19) DEFAULT NULL,
|
`a` decimal(30,19) DEFAULT NULL,
|
||||||
`b` decimal(30,19) unsigned DEFAULT NULL,
|
`b` decimal(30,19) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(14) DEFAULT NULL,
|
`fa` bigint(13) DEFAULT NULL,
|
||||||
`fb` bigint(13) unsigned DEFAULT NULL
|
`fb` bigint(11) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999999.9999999999999999999
|
a 99999999999.9999999999999999999
|
||||||
b 99999999999.9999999999999999999
|
b 99999999999.9999999999999999999
|
||||||
@ -1641,8 +1641,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,20) DEFAULT NULL,
|
`a` decimal(30,20) DEFAULT NULL,
|
||||||
`b` decimal(30,20) unsigned DEFAULT NULL,
|
`b` decimal(30,20) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(13) DEFAULT NULL,
|
`fa` bigint(12) DEFAULT NULL,
|
||||||
`fb` bigint(12) unsigned DEFAULT NULL
|
`fb` bigint(10) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999999.99999999999999999999
|
a 9999999999.99999999999999999999
|
||||||
b 9999999999.99999999999999999999
|
b 9999999999.99999999999999999999
|
||||||
@ -1652,8 +1652,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,21) DEFAULT NULL,
|
`a` decimal(30,21) DEFAULT NULL,
|
||||||
`b` decimal(30,21) unsigned DEFAULT NULL,
|
`b` decimal(30,21) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(12) DEFAULT NULL,
|
`fa` bigint(11) DEFAULT NULL,
|
||||||
`fb` bigint(11) unsigned DEFAULT NULL
|
`fb` int(9) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999999.999999999999999999999
|
a 999999999.999999999999999999999
|
||||||
b 999999999.999999999999999999999
|
b 999999999.999999999999999999999
|
||||||
@ -1663,8 +1663,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,22) DEFAULT NULL,
|
`a` decimal(30,22) DEFAULT NULL,
|
||||||
`b` decimal(30,22) unsigned DEFAULT NULL,
|
`b` decimal(30,22) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(11) DEFAULT NULL,
|
`fa` int(10) DEFAULT NULL,
|
||||||
`fb` bigint(10) unsigned DEFAULT NULL
|
`fb` int(8) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999999.9999999999999999999999
|
a 99999999.9999999999999999999999
|
||||||
b 99999999.9999999999999999999999
|
b 99999999.9999999999999999999999
|
||||||
@ -1674,8 +1674,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,23) DEFAULT NULL,
|
`a` decimal(30,23) DEFAULT NULL,
|
||||||
`b` decimal(30,23) unsigned DEFAULT NULL,
|
`b` decimal(30,23) unsigned DEFAULT NULL,
|
||||||
`fa` bigint(10) DEFAULT NULL,
|
`fa` int(9) DEFAULT NULL,
|
||||||
`fb` int(9) unsigned DEFAULT NULL
|
`fb` int(7) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999999.99999999999999999999999
|
a 9999999.99999999999999999999999
|
||||||
b 9999999.99999999999999999999999
|
b 9999999.99999999999999999999999
|
||||||
@ -1685,8 +1685,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,24) DEFAULT NULL,
|
`a` decimal(30,24) DEFAULT NULL,
|
||||||
`b` decimal(30,24) unsigned DEFAULT NULL,
|
`b` decimal(30,24) unsigned DEFAULT NULL,
|
||||||
`fa` int(9) DEFAULT NULL,
|
`fa` int(8) DEFAULT NULL,
|
||||||
`fb` int(8) unsigned DEFAULT NULL
|
`fb` int(6) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999999.999999999999999999999999
|
a 999999.999999999999999999999999
|
||||||
b 999999.999999999999999999999999
|
b 999999.999999999999999999999999
|
||||||
@ -1696,8 +1696,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,25) DEFAULT NULL,
|
`a` decimal(30,25) DEFAULT NULL,
|
||||||
`b` decimal(30,25) unsigned DEFAULT NULL,
|
`b` decimal(30,25) unsigned DEFAULT NULL,
|
||||||
`fa` int(8) DEFAULT NULL,
|
`fa` int(7) DEFAULT NULL,
|
||||||
`fb` int(7) unsigned DEFAULT NULL
|
`fb` int(5) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99999.9999999999999999999999999
|
a 99999.9999999999999999999999999
|
||||||
b 99999.9999999999999999999999999
|
b 99999.9999999999999999999999999
|
||||||
@ -1707,8 +1707,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,26) DEFAULT NULL,
|
`a` decimal(30,26) DEFAULT NULL,
|
||||||
`b` decimal(30,26) unsigned DEFAULT NULL,
|
`b` decimal(30,26) unsigned DEFAULT NULL,
|
||||||
`fa` int(7) DEFAULT NULL,
|
`fa` int(6) DEFAULT NULL,
|
||||||
`fb` int(6) unsigned DEFAULT NULL
|
`fb` int(4) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9999.99999999999999999999999999
|
a 9999.99999999999999999999999999
|
||||||
b 9999.99999999999999999999999999
|
b 9999.99999999999999999999999999
|
||||||
@ -1718,8 +1718,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,27) DEFAULT NULL,
|
`a` decimal(30,27) DEFAULT NULL,
|
||||||
`b` decimal(30,27) unsigned DEFAULT NULL,
|
`b` decimal(30,27) unsigned DEFAULT NULL,
|
||||||
`fa` int(6) DEFAULT NULL,
|
`fa` int(5) DEFAULT NULL,
|
||||||
`fb` int(5) unsigned DEFAULT NULL
|
`fb` int(3) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 999.999999999999999999999999999
|
a 999.999999999999999999999999999
|
||||||
b 999.999999999999999999999999999
|
b 999.999999999999999999999999999
|
||||||
@ -1729,8 +1729,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,28) DEFAULT NULL,
|
`a` decimal(30,28) DEFAULT NULL,
|
||||||
`b` decimal(30,28) unsigned DEFAULT NULL,
|
`b` decimal(30,28) unsigned DEFAULT NULL,
|
||||||
`fa` int(5) DEFAULT NULL,
|
`fa` int(4) DEFAULT NULL,
|
||||||
`fb` int(4) unsigned DEFAULT NULL
|
`fb` int(2) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 99.9999999999999999999999999999
|
a 99.9999999999999999999999999999
|
||||||
b 99.9999999999999999999999999999
|
b 99.9999999999999999999999999999
|
||||||
@ -1740,8 +1740,8 @@ Table t2
|
|||||||
Create Table CREATE TABLE `t2` (
|
Create Table CREATE TABLE `t2` (
|
||||||
`a` decimal(30,29) DEFAULT NULL,
|
`a` decimal(30,29) DEFAULT NULL,
|
||||||
`b` decimal(30,29) unsigned DEFAULT NULL,
|
`b` decimal(30,29) unsigned DEFAULT NULL,
|
||||||
`fa` int(4) DEFAULT NULL,
|
`fa` int(3) DEFAULT NULL,
|
||||||
`fb` int(3) unsigned DEFAULT NULL
|
`fb` int(1) unsigned DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
a 9.99999999999999999999999999999
|
a 9.99999999999999999999999999999
|
||||||
b 9.99999999999999999999999999999
|
b 9.99999999999999999999999999999
|
||||||
@ -2295,7 +2295,7 @@ FORMAT(-1e308,2)
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`FORMAT(-1e308,2)` varchar(416) DEFAULT NULL
|
`FORMAT(-1e308,2)` varchar(417) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE OR REPLACE TABLE t1 AS SELECT FORMAT('-1e308',2);
|
CREATE OR REPLACE TABLE t1 AS SELECT FORMAT('-1e308',2);
|
||||||
@ -2305,7 +2305,7 @@ FORMAT('-1e308',2)
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`FORMAT('-1e308',2)` varchar(416) DEFAULT NULL
|
`FORMAT('-1e308',2)` varchar(417) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE OR REPLACE TABLE t1 AS SELECT FORMAT(DATE'20191231',0),FORMAT(TIME'99:05:00',0),FORMAT(TIMESTAMP'2019-12-31 23:59:59.123456',0);
|
CREATE OR REPLACE TABLE t1 AS SELECT FORMAT(DATE'20191231',0),FORMAT(TIME'99:05:00',0),FORMAT(TIMESTAMP'2019-12-31 23:59:59.123456',0);
|
||||||
@ -2317,7 +2317,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`FORMAT(DATE'20191231',0)` varchar(11) DEFAULT NULL,
|
`FORMAT(DATE'20191231',0)` varchar(11) DEFAULT NULL,
|
||||||
`FORMAT(TIME'99:05:00',0)` varchar(10) DEFAULT NULL,
|
`FORMAT(TIME'99:05:00',0)` varchar(10) DEFAULT NULL,
|
||||||
`FORMAT(TIMESTAMP'2019-12-31 23:59:59.123456',0)` varchar(19) DEFAULT NULL
|
`FORMAT(TIMESTAMP'2019-12-31 23:59:59.123456',0)` varchar(21) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE OR REPLACE TABLE t1 (y YEAR);
|
CREATE OR REPLACE TABLE t1 (y YEAR);
|
||||||
@ -3549,7 +3549,7 @@ FORMAT(f,0)
|
|||||||
SHOW CREATE TABLE t2;
|
SHOW CREATE TABLE t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`FORMAT(f,0)` varchar(53) DEFAULT NULL
|
`FORMAT(f,0)` varchar(54) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
|
@ -2708,7 +2708,7 @@ create table t1(a float);
|
|||||||
insert into t1 values (1.33);
|
insert into t1 values (1.33);
|
||||||
select format(a, 2) from t1;
|
select format(a, 2) from t1;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def format(a, 2) 253 56 4 Y 0 39 8
|
def format(a, 2) 253 57 4 Y 0 39 8
|
||||||
format(a, 2)
|
format(a, 2)
|
||||||
1.33
|
1.33
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -2773,6 +2773,24 @@ root@localhost
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP USER dummy@localhost;
|
DROP USER dummy@localhost;
|
||||||
#
|
#
|
||||||
|
# MDEV-23082: ER_TABLEACCESS_DENIED_ERROR error message is truncated, and
|
||||||
|
# inaccurately
|
||||||
|
#
|
||||||
|
CREATE USER foo;
|
||||||
|
CREATE DATABASE db;
|
||||||
|
CREATE TABLE db.t (a INT);
|
||||||
|
connect con1,localhost,foo,,;
|
||||||
|
GRANT ALL ON db.t TO foo;
|
||||||
|
ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW ... command denied to user 'foo'@'localhost' for table 't'
|
||||||
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, REFERENCES,
|
||||||
|
INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON db.t TO foo;
|
||||||
|
ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW ... command denied to user 'foo'@'localhost' for table 't'
|
||||||
|
connection default;
|
||||||
|
disconnect con1;
|
||||||
|
DROP USER foo;
|
||||||
|
DROP TABLE db.t;
|
||||||
|
DROP DATABASE db;
|
||||||
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -2259,6 +2259,31 @@ SELECT * FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP USER dummy@localhost;
|
DROP USER dummy@localhost;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23082: ER_TABLEACCESS_DENIED_ERROR error message is truncated, and
|
||||||
|
--echo # inaccurately
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE USER foo;
|
||||||
|
CREATE DATABASE db;
|
||||||
|
CREATE TABLE db.t (a INT);
|
||||||
|
|
||||||
|
--connect (con1,localhost,foo,,)
|
||||||
|
|
||||||
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
|
GRANT ALL ON db.t TO foo;
|
||||||
|
|
||||||
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, REFERENCES,
|
||||||
|
INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON db.t TO foo;
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
--disconnect con1
|
||||||
|
|
||||||
|
DROP USER foo;
|
||||||
|
DROP TABLE db.t;
|
||||||
|
DROP DATABASE db;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2219,6 +2219,21 @@ SCHEMA_NAME
|
|||||||
# End of 10.1 tests
|
# End of 10.1 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
# Start of 10.2 Test
|
||||||
|
#
|
||||||
|
# MDEV-14836: Assertion `m_status == DA_ERROR' failed in
|
||||||
|
# Diagnostics_area::sql_errno upon query from I_S with LIMIT ROWS EXAMINED
|
||||||
|
#
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.`COLUMNS` LIMIT ROWS EXAMINED 10;
|
||||||
|
ERROR HY000: Unknown error
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Error 1105 Unknown error
|
||||||
|
Warning 1931 Query execution was interrupted. The query examined at least 11 rows, which exceeds LIMIT ROWS EXAMINED (10). The query result may be incomplete
|
||||||
|
#
|
||||||
|
# End of 10.2 Test
|
||||||
|
#
|
||||||
|
#
|
||||||
# MDEV-21201:No records produced in information_schema query,
|
# MDEV-21201:No records produced in information_schema query,
|
||||||
# depending on projection
|
# depending on projection
|
||||||
#
|
#
|
||||||
|
@ -1921,6 +1921,20 @@ SELECT SCHEMA_NAME from information_schema.schemata where schema_name=REPEAT('a'
|
|||||||
--echo # End of 10.1 tests
|
--echo # End of 10.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.2 Test
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-14836: Assertion `m_status == DA_ERROR' failed in
|
||||||
|
--echo # Diagnostics_area::sql_errno upon query from I_S with LIMIT ROWS EXAMINED
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--error ER_UNKNOWN_ERROR
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.`COLUMNS` LIMIT ROWS EXAMINED 10;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.2 Test
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-21201:No records produced in information_schema query,
|
--echo # MDEV-21201:No records produced in information_schema query,
|
||||||
|
@ -85,6 +85,15 @@ END IF|
|
|||||||
#
|
#
|
||||||
# Testing with explicit timezonefile
|
# Testing with explicit timezonefile
|
||||||
#
|
#
|
||||||
|
\d |
|
||||||
|
IF (select count(*) from information_schema.global_variables where
|
||||||
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
||||||
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
||||||
|
END IF|
|
||||||
|
\d ;
|
||||||
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
||||||
SET @time_zone_id= LAST_INSERT_ID();
|
SET @time_zone_id= LAST_INSERT_ID();
|
||||||
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
|
||||||
@ -106,6 +115,15 @@ END IF|
|
|||||||
\d |
|
\d |
|
||||||
IF (select count(*) from information_schema.global_variables where
|
IF (select count(*) from information_schema.global_variables where
|
||||||
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
||||||
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
||||||
|
END IF|
|
||||||
|
\d ;
|
||||||
|
\d |
|
||||||
|
IF (select count(*) from information_schema.global_variables where
|
||||||
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
||||||
ALTER TABLE time_zone_leap_second ENGINE=InnoDB;
|
ALTER TABLE time_zone_leap_second ENGINE=InnoDB;
|
||||||
END IF|
|
END IF|
|
||||||
\d ;
|
\d ;
|
||||||
|
@ -66,20 +66,6 @@
|
|||||||
sort-buffer-size 2097152
|
sort-buffer-size 2097152
|
||||||
sql-mode STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
sql-mode STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||||
sql-safe-updates FALSE
|
sql-safe-updates FALSE
|
||||||
@@ -1741,10 +1752,10 @@
|
|
||||||
sync-relay-log-info 10000
|
|
||||||
sysdate-is-now FALSE
|
|
||||||
system-versioning-alter-history ERROR
|
|
||||||
-table-cache 421
|
|
||||||
+table-cache 2000
|
|
||||||
table-definition-cache 400
|
|
||||||
-table-open-cache 421
|
|
||||||
-table-open-cache-instances 1
|
|
||||||
+table-open-cache 2000
|
|
||||||
+table-open-cache-instances 8
|
|
||||||
tc-heuristic-recover OFF
|
|
||||||
tcp-keepalive-interval 0
|
|
||||||
tcp-keepalive-probes 0
|
|
||||||
@@ -1753,6 +1764,8 @@
|
@@ -1753,6 +1764,8 @@
|
||||||
thread-cache-size 151
|
thread-cache-size 151
|
||||||
thread-pool-idle-timeout 60
|
thread-pool-idle-timeout 60
|
||||||
|
@ -1594,7 +1594,6 @@ max-binlog-cache-size 18446744073709547520
|
|||||||
max-binlog-size 1073741824
|
max-binlog-size 1073741824
|
||||||
max-binlog-stmt-cache-size 18446744073709547520
|
max-binlog-stmt-cache-size 18446744073709547520
|
||||||
max-connect-errors 100
|
max-connect-errors 100
|
||||||
max-connections 151
|
|
||||||
max-delayed-threads 20
|
max-delayed-threads 20
|
||||||
max-digest-length 1024
|
max-digest-length 1024
|
||||||
max-error-count 64
|
max-error-count 64
|
||||||
@ -1797,10 +1796,7 @@ sync-relay-log 10000
|
|||||||
sync-relay-log-info 10000
|
sync-relay-log-info 10000
|
||||||
sysdate-is-now FALSE
|
sysdate-is-now FALSE
|
||||||
system-versioning-alter-history ERROR
|
system-versioning-alter-history ERROR
|
||||||
table-cache 421
|
|
||||||
table-definition-cache 400
|
table-definition-cache 400
|
||||||
table-open-cache 421
|
|
||||||
table-open-cache-instances 1
|
|
||||||
tc-heuristic-recover OFF
|
tc-heuristic-recover OFF
|
||||||
tcp-keepalive-interval 0
|
tcp-keepalive-interval 0
|
||||||
tcp-keepalive-probes 0
|
tcp-keepalive-probes 0
|
||||||
|
@ -23,7 +23,9 @@ perl;
|
|||||||
log-slow-queries pid-file slow-query-log-file log-basename
|
log-slow-queries pid-file slow-query-log-file log-basename
|
||||||
datadir slave-load-tmpdir tmpdir socket thread-pool-size
|
datadir slave-load-tmpdir tmpdir socket thread-pool-size
|
||||||
large-files-support lower-case-file-system system-time-zone
|
large-files-support lower-case-file-system system-time-zone
|
||||||
collation-server character-set-server log-tc-size tls-version version.*/;
|
collation-server character-set-server log-tc-size table-cache
|
||||||
|
table-open-cache table-open-cache-instances max-connections
|
||||||
|
tls-version version.*/;
|
||||||
|
|
||||||
# Plugins which may or may not be there:
|
# Plugins which may or may not be there:
|
||||||
@plugins=qw/innodb archive blackhole federated partition s3
|
@plugins=qw/innodb archive blackhole federated partition s3
|
||||||
|
@ -1801,6 +1801,13 @@ SELECT @@GLOBAL.password;
|
|||||||
ERROR HY000: Unknown system variable 'password'
|
ERROR HY000: Unknown system variable 'password'
|
||||||
SELECT @@GLOBAL.role;
|
SELECT @@GLOBAL.role;
|
||||||
ERROR HY000: Unknown system variable 'role'
|
ERROR HY000: Unknown system variable 'role'
|
||||||
|
#
|
||||||
|
# MDEV-22022 Various mangled SQL statements will crash 10.3 to 10.5 debug builds
|
||||||
|
#
|
||||||
|
EXECUTE IMMEDIATE 'if(`systeminfo /FO LIST';
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`systeminfo /FO LIST' at line 1
|
||||||
|
EXECUTE IMMEDIATE 'if(`systeminfo';
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`systeminfo' at line 1
|
||||||
End of 10.3 tests
|
End of 10.3 tests
|
||||||
#
|
#
|
||||||
# MDEV-19540: 10.4 allow lock options with SELECT in brackets
|
# MDEV-19540: 10.4 allow lock options with SELECT in brackets
|
||||||
|
@ -1543,6 +1543,15 @@ SELECT @@GLOBAL.password;
|
|||||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||||
SELECT @@GLOBAL.role;
|
SELECT @@GLOBAL.role;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-22022 Various mangled SQL statements will crash 10.3 to 10.5 debug builds
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--error ER_PARSE_ERROR
|
||||||
|
EXECUTE IMMEDIATE 'if(`systeminfo /FO LIST';
|
||||||
|
--error ER_PARSE_ERROR
|
||||||
|
EXECUTE IMMEDIATE 'if(`systeminfo';
|
||||||
|
|
||||||
--echo End of 10.3 tests
|
--echo End of 10.3 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2609,6 +2609,47 @@ Central America and the Caribbean 442 66422
|
|||||||
SET @@optimizer_switch= @save_optimizer_switch;
|
SET @@optimizer_switch= @save_optimizer_switch;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-9513: Assertion `join->group_list || !join->is_in_subquery()' failed in create_sort_index
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
INSERT INTO t2 VALUES (2),(3);
|
||||||
|
EXPLAIN
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY A ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
3 DEPENDENT UNION B ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
EXPLAIN
|
||||||
|
SELECT t1.a FROM t1 WHERE EXISTS (SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
|
2 SUBQUERY A ALL NULL NULL NULL NULL 2
|
||||||
|
3 UNION B ALL NULL NULL NULL NULL 2
|
||||||
|
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
|
||||||
|
SELECT t1.a FROM t1 WHERE EXISTS (SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
EXPLAIN
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION ALL SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY A ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
3 DEPENDENT UNION B ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION ALL SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
# end of 10.1 tests
|
||||||
|
#
|
||||||
# MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
# MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
||||||
#
|
#
|
||||||
SET @save_optimizer_switch=@@optimizer_switch;
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
@ -2620,6 +2661,31 @@ SELECT (SELECT DISTINCT t1i.b FROM t1 t1i GROUP BY t1i.a ORDER BY MAX(t1o.b)) FR
|
|||||||
0
|
0
|
||||||
SET @@optimizer_switch= @save_optimizer_switch;
|
SET @@optimizer_switch= @save_optimizer_switch;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-17066: Bytes lost or Assertion `status_var.local_memory_used == 0 after DELETE
|
||||||
|
# with subquery with ROLLUP
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i INT DEFAULT 0, c VARCHAR(2048));
|
||||||
|
INSERT INTO t1 SELECT 0, seq FROM seq_1_to_6000;
|
||||||
|
CREATE TABLE t2 (f VARCHAR(2048) DEFAULT '');
|
||||||
|
INSERT INTO t2 VALUES ('1'),('bar');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t2 WHERE f IN ( SELECT MAX(c) FROM t1 GROUP BY c WITH ROLLUP);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 6000 Using filesort
|
||||||
|
SELECT * FROM t2 WHERE f IN ( SELECT MAX(c) FROM t1 GROUP BY c WITH ROLLUP);
|
||||||
|
f
|
||||||
|
1
|
||||||
|
SELECT * FROM t2;
|
||||||
|
f
|
||||||
|
1
|
||||||
|
bar
|
||||||
|
DELETE FROM t2 WHERE f IN ( SELECT MAX(c) FROM t1 GROUP BY c WITH ROLLUP );
|
||||||
|
SELECT * FROM t2;
|
||||||
|
f
|
||||||
|
bar
|
||||||
|
DROP TABLE t1, t2;
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
# MDEV-19134: EXISTS() slower if ORDER BY is defined
|
# MDEV-19134: EXISTS() slower if ORDER BY is defined
|
||||||
|
@ -7,6 +7,8 @@ drop table if exists t0,t1,t2,t3,t4,t5,t6;
|
|||||||
drop view if exists v1, v2;
|
drop view if exists v1, v2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
--source include/have_sequence.inc
|
||||||
|
|
||||||
set @subselect4_tmp= @@optimizer_switch;
|
set @subselect4_tmp= @@optimizer_switch;
|
||||||
set optimizer_switch='semijoin=on,firstmatch=on,loosescan=on';
|
set optimizer_switch='semijoin=on,firstmatch=on,loosescan=on';
|
||||||
set optimizer_switch='semijoin_with_cache=on';
|
set optimizer_switch='semijoin_with_cache=on';
|
||||||
@ -2141,6 +2143,31 @@ SET @@optimizer_switch= @save_optimizer_switch;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-9513: Assertion `join->group_list || !join->is_in_subquery()' failed in create_sort_index
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
INSERT INTO t2 VALUES (2),(3);
|
||||||
|
EXPLAIN
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT t1.a FROM t1 WHERE EXISTS (SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
SELECT t1.a FROM t1 WHERE EXISTS (SELECT A.a FROM t1 A UNION SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION ALL SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
SELECT t1.a FROM t1 WHERE t1.a IN ( SELECT A.a FROM t1 A UNION ALL SELECT B.a FROM t2 B ORDER BY 1);
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo # end of 10.1 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
--echo # MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
||||||
--echo #
|
--echo #
|
||||||
@ -2153,6 +2180,27 @@ SELECT (SELECT DISTINCT t1i.b FROM t1 t1i GROUP BY t1i.a ORDER BY MAX(t1o.b)) FR
|
|||||||
SET @@optimizer_switch= @save_optimizer_switch;
|
SET @@optimizer_switch= @save_optimizer_switch;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-17066: Bytes lost or Assertion `status_var.local_memory_used == 0 after DELETE
|
||||||
|
--echo # with subquery with ROLLUP
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i INT DEFAULT 0, c VARCHAR(2048));
|
||||||
|
INSERT INTO t1 SELECT 0, seq FROM seq_1_to_6000;
|
||||||
|
|
||||||
|
CREATE TABLE t2 (f VARCHAR(2048) DEFAULT '');
|
||||||
|
INSERT INTO t2 VALUES ('1'),('bar');
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t2 WHERE f IN ( SELECT MAX(c) FROM t1 GROUP BY c WITH ROLLUP);
|
||||||
|
SELECT * FROM t2 WHERE f IN ( SELECT MAX(c) FROM t1 GROUP BY c WITH ROLLUP);
|
||||||
|
|
||||||
|
SELECT * FROM t2;
|
||||||
|
DELETE FROM t2 WHERE f IN ( SELECT MAX(c) FROM t1 GROUP BY c WITH ROLLUP );
|
||||||
|
SELECT * FROM t2;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1103,5 +1103,35 @@ t2 CREATE TABLE `t2` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t2,t1;
|
DROP TABLE t2,t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-23388 Assertion `args[0]->decimals == 0' failed in Item_func_round::fix_arg_int
|
||||||
|
#
|
||||||
|
SELECT ROUND(GREATEST('1', CAST('2020-12-12' AS DATE)));
|
||||||
|
ROUND(GREATEST('1', CAST('2020-12-12' AS DATE)))
|
||||||
|
20201212
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect datetime value: '1'
|
||||||
|
SELECT GREATEST('1', CAST('2020-12-12' AS DATE));
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def GREATEST('1', CAST('2020-12-12' AS DATE)) 10 10 10 Y 128 0 63
|
||||||
|
GREATEST('1', CAST('2020-12-12' AS DATE))
|
||||||
|
2020-12-12
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect datetime value: '1'
|
||||||
|
CREATE TABLE t1 (c_date DATE NOT NULL, c_int INT NOT NULL);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
GREATEST(c_date,c_date),
|
||||||
|
GREATEST(c_date,c_int),
|
||||||
|
GREATEST(c_int,c_date)
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`GREATEST(c_date,c_date)` date NOT NULL,
|
||||||
|
`GREATEST(c_date,c_int)` date DEFAULT NULL,
|
||||||
|
`GREATEST(c_int,c_date)` date DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# End of 10.4 tests
|
# End of 10.4 tests
|
||||||
#
|
#
|
||||||
|
@ -749,6 +749,28 @@ CREATE TABLE t2 AS SELECT FLOOR(a), CEIL(a),ROUND(a),TRUNCATE(a,0) FROM t1;
|
|||||||
SHOW CREATE TABLE t2;
|
SHOW CREATE TABLE t2;
|
||||||
DROP TABLE t2,t1;
|
DROP TABLE t2,t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23388 Assertion `args[0]->decimals == 0' failed in Item_func_round::fix_arg_int
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SELECT ROUND(GREATEST('1', CAST('2020-12-12' AS DATE)));
|
||||||
|
|
||||||
|
--disable_ps_protocol
|
||||||
|
--enable_metadata
|
||||||
|
SELECT GREATEST('1', CAST('2020-12-12' AS DATE));
|
||||||
|
--disable_metadata
|
||||||
|
--enable_ps_protocol
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c_date DATE NOT NULL, c_int INT NOT NULL);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
GREATEST(c_date,c_date),
|
||||||
|
GREATEST(c_date,c_int),
|
||||||
|
GREATEST(c_int,c_date)
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.4 tests
|
--echo # End of 10.4 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -990,5 +990,175 @@ Warnings:
|
|||||||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 1
|
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-23415 Server crash or Assertion `dec_length <= str_length' failed in Item_func_format::val_str_ascii
|
||||||
|
#
|
||||||
|
SELECT FORMAT('0', 50, 'de_DE');
|
||||||
|
FORMAT('0', 50, 'de_DE')
|
||||||
|
0,00000000000000000000000000000000000000
|
||||||
|
SELECT FORMAT(0e0, 50, 'de_DE');
|
||||||
|
FORMAT(0e0, 50, 'de_DE')
|
||||||
|
0,00000000000000000000000000000000000000
|
||||||
|
FOR d IN 0..50
|
||||||
|
DO
|
||||||
|
SELECT
|
||||||
|
d,
|
||||||
|
FORMAT(123456789.123456789e0, d, 'de_DE') AS fdbl,
|
||||||
|
FORMAT(123456789.123456789, d, 'de_DE') AS fdec;
|
||||||
|
END FOR;
|
||||||
|
$$
|
||||||
|
d 0
|
||||||
|
fdbl 123.456.789
|
||||||
|
fdec 123.456.789
|
||||||
|
d 1
|
||||||
|
fdbl 123.456.789,1
|
||||||
|
fdec 123.456.789,1
|
||||||
|
d 2
|
||||||
|
fdbl 123.456.789,12
|
||||||
|
fdec 123.456.789,12
|
||||||
|
d 3
|
||||||
|
fdbl 123.456.789,123
|
||||||
|
fdec 123.456.789,123
|
||||||
|
d 4
|
||||||
|
fdbl 123.456.789,1235
|
||||||
|
fdec 123.456.789,1235
|
||||||
|
d 5
|
||||||
|
fdbl 123.456.789,12346
|
||||||
|
fdec 123.456.789,12346
|
||||||
|
d 6
|
||||||
|
fdbl 123.456.789,123457
|
||||||
|
fdec 123.456.789,123457
|
||||||
|
d 7
|
||||||
|
fdbl 123.456.789,1234568
|
||||||
|
fdec 123.456.789,1234568
|
||||||
|
d 8
|
||||||
|
fdbl 123.456.789,12345680
|
||||||
|
fdec 123.456.789,12345679
|
||||||
|
d 9
|
||||||
|
fdbl 123.456.789,123456790
|
||||||
|
fdec 123.456.789,123456789
|
||||||
|
d 10
|
||||||
|
fdbl 123.456.789,1234567900
|
||||||
|
fdec 123.456.789,1234567890
|
||||||
|
d 11
|
||||||
|
fdbl 123.456.789,12345680000
|
||||||
|
fdec 123.456.789,12345678900
|
||||||
|
d 12
|
||||||
|
fdbl 123.456.789,123456790000
|
||||||
|
fdec 123.456.789,123456789000
|
||||||
|
d 13
|
||||||
|
fdbl 123.456.789,1234568000000
|
||||||
|
fdec 123.456.789,1234567890000
|
||||||
|
d 14
|
||||||
|
fdbl 123.456.789,12345679000000
|
||||||
|
fdec 123.456.789,12345678900000
|
||||||
|
d 15
|
||||||
|
fdbl 123.456.789,123456790000000
|
||||||
|
fdec 123.456.789,123456789000000
|
||||||
|
d 16
|
||||||
|
fdbl 123.456.789,1234567800000000
|
||||||
|
fdec 123.456.789,1234567890000000
|
||||||
|
d 17
|
||||||
|
fdbl 123.456.789,12345679000000000
|
||||||
|
fdec 123.456.789,12345678900000000
|
||||||
|
d 18
|
||||||
|
fdbl 123.456.789,123456790000000000
|
||||||
|
fdec 123.456.789,123456789000000000
|
||||||
|
d 19
|
||||||
|
fdbl 123.456.789,1234567900000000000
|
||||||
|
fdec 123.456.789,1234567890000000000
|
||||||
|
d 20
|
||||||
|
fdbl 123.456.789,12345679000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000
|
||||||
|
d 21
|
||||||
|
fdbl 123.456.789,123456800000000000000
|
||||||
|
fdec 123.456.789,123456789000000000000
|
||||||
|
d 22
|
||||||
|
fdbl 123.456.789,1234567900000000000000
|
||||||
|
fdec 123.456.789,1234567890000000000000
|
||||||
|
d 23
|
||||||
|
fdbl 123.456.789,12345680000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000
|
||||||
|
d 24
|
||||||
|
fdbl 123.456.789,123456790000000000000000
|
||||||
|
fdec 123.456.789,123456789000000000000000
|
||||||
|
d 25
|
||||||
|
fdbl 123.456.789,1234567900000000000000000
|
||||||
|
fdec 123.456.789,1234567890000000000000000
|
||||||
|
d 26
|
||||||
|
fdbl 123.456.789,12345679000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000
|
||||||
|
d 27
|
||||||
|
fdbl 123.456.789,123456780000000000000000000
|
||||||
|
fdec 123.456.789,123456789000000000000000000
|
||||||
|
d 28
|
||||||
|
fdbl 123.456.789,1234567900000000000000000000
|
||||||
|
fdec 123.456.789,1234567890000000000000000000
|
||||||
|
d 29
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000
|
||||||
|
d 30
|
||||||
|
fdbl 123.456.789,123456790000000000000000000000
|
||||||
|
fdec 123.456.789,123456789000000000000000000000
|
||||||
|
d 31
|
||||||
|
fdbl 123.456.789,1234567900000000000000000000000
|
||||||
|
fdec 123.456.789,1234567890000000000000000000000
|
||||||
|
d 32
|
||||||
|
fdbl 123.456.789,12345679000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000
|
||||||
|
d 33
|
||||||
|
fdbl 123.456.789,123456790000000000000000000000000
|
||||||
|
fdec 123.456.789,123456789000000000000000000000000
|
||||||
|
d 34
|
||||||
|
fdbl 123.456.789,1234567900000000000000000000000000
|
||||||
|
fdec 123.456.789,1234567890000000000000000000000000
|
||||||
|
d 35
|
||||||
|
fdbl 123.456.789,12345679000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000
|
||||||
|
d 36
|
||||||
|
fdbl 123.456.789,123456790000000000000000000000000000
|
||||||
|
fdec 123.456.789,123456789000000000000000000000000000
|
||||||
|
d 37
|
||||||
|
fdbl 123.456.789,1234567900000000000000000000000000000
|
||||||
|
fdec 123.456.789,1234567890000000000000000000000000000
|
||||||
|
d 38
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 39
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 40
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 41
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 42
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 43
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 44
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 45
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 46
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 47
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 48
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 49
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
d 50
|
||||||
|
fdbl 123.456.789,12345678000000000000000000000000000000
|
||||||
|
fdec 123.456.789,12345678900000000000000000000000000000
|
||||||
|
#
|
||||||
# End of 10.4 tests
|
# End of 10.4 tests
|
||||||
#
|
#
|
||||||
|
@ -680,6 +680,26 @@ EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE ?+a<=>1e0+a' USING 1e
|
|||||||
EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE 1e0+a<=>?+a' USING 1e0;
|
EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE 1e0+a<=>?+a' USING 1e0;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23415 Server crash or Assertion `dec_length <= str_length' failed in Item_func_format::val_str_ascii
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SELECT FORMAT('0', 50, 'de_DE');
|
||||||
|
SELECT FORMAT(0e0, 50, 'de_DE');
|
||||||
|
|
||||||
|
--vertical_results
|
||||||
|
DELIMITER $$;
|
||||||
|
FOR d IN 0..50
|
||||||
|
DO
|
||||||
|
SELECT
|
||||||
|
d,
|
||||||
|
FORMAT(123456789.123456789e0, d, 'de_DE') AS fdbl,
|
||||||
|
FORMAT(123456789.123456789, d, 'de_DE') AS fdec;
|
||||||
|
END FOR;
|
||||||
|
$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
--horizontal_results
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.4 tests
|
--echo # End of 10.4 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2340,6 +2340,53 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-23105 Cast number string with many leading zeros to decimal gives unexpected result
|
||||||
|
#
|
||||||
|
SELECT CAST(0000000000000000000000000000000000000000000000000000000000000000000000000000000020.01 AS DECIMAL(15,2)) as val;
|
||||||
|
val
|
||||||
|
20.01
|
||||||
|
SET sql_mode='';
|
||||||
|
CREATE TABLE t1 (a TEXT);
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.0'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.9'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.99'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.994'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.995'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.999'));
|
||||||
|
CREATE TABLE t2 (a TEXT, d DECIMAL(15,2));
|
||||||
|
INSERT IGNORE INTO t2 (a,d) SELECT a, a FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'd' at row 5
|
||||||
|
Note 1265 Data truncated for column 'd' at row 6
|
||||||
|
Note 1265 Data truncated for column 'd' at row 7
|
||||||
|
INSERT IGNORE INTO t2 (a,d) SELECT CONCAT('-',a), CONCAT('-',a) FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'd' at row 5
|
||||||
|
Note 1265 Data truncated for column 'd' at row 6
|
||||||
|
Note 1265 Data truncated for column 'd' at row 7
|
||||||
|
SELECT d, a FROM t2 ORDER BY d,a;
|
||||||
|
d a
|
||||||
|
-2.00 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.995
|
||||||
|
-2.00 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.999
|
||||||
|
-1.99 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.99
|
||||||
|
-1.99 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.994
|
||||||
|
-1.90 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.9
|
||||||
|
-1.00 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||||
|
-1.00 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.0
|
||||||
|
1.00 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||||
|
1.00 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.0
|
||||||
|
1.90 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.9
|
||||||
|
1.99 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.99
|
||||||
|
1.99 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.994
|
||||||
|
2.00 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.995
|
||||||
|
2.00 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.999
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET sql_mode=DEFAULT;
|
||||||
|
#
|
||||||
|
# End of 10.1 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
# Bug#18408499 UNSIGNED BIGINT HIGH VALUES
|
# Bug#18408499 UNSIGNED BIGINT HIGH VALUES
|
||||||
# WRONG NUMERICAL COMPARISON RESULTS
|
# WRONG NUMERICAL COMPARISON RESULTS
|
||||||
#
|
#
|
||||||
@ -2406,3 +2453,323 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Start of 10.4 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# MDEV-23032 FLOOR()/CEIL() incorrectly calculate the precision of a DECIMAL(M,D) column.
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE p1(prec INT, scale INT, suffix VARCHAR(32))
|
||||||
|
BEGIN
|
||||||
|
EXECUTE IMMEDIATE CONCAT('CREATE TABLE t1 (a decimal(',prec,',',scale,')',suffix,')');
|
||||||
|
INSERT IGNORE INTO t1 VALUES (-1e100), (+1e100);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
a,
|
||||||
|
FLOOR(a) AS fa,
|
||||||
|
CEILING(a) AS ca,
|
||||||
|
LENGTH(FLOOR(a)),
|
||||||
|
LENGTH(CEILING(a))
|
||||||
|
FROM t1 ORDER BY a;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
DROP TABLE t2, t1;
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
CALL p1(38,10,'');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(38,10) DEFAULT NULL,
|
||||||
|
`fa` decimal(29,0) DEFAULT NULL,
|
||||||
|
`ca` decimal(29,0) DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a -9999999999999999999999999999.9999999999
|
||||||
|
fa -10000000000000000000000000000
|
||||||
|
ca -9999999999999999999999999999
|
||||||
|
LENGTH(FLOOR(a)) 30
|
||||||
|
LENGTH(CEILING(a)) 29
|
||||||
|
a 9999999999999999999999999999.9999999999
|
||||||
|
fa 9999999999999999999999999999
|
||||||
|
ca 10000000000000000000000000000
|
||||||
|
LENGTH(FLOOR(a)) 28
|
||||||
|
LENGTH(CEILING(a)) 29
|
||||||
|
CALL p1(28,10,'');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(28,10) DEFAULT NULL,
|
||||||
|
`fa` decimal(19,0) DEFAULT NULL,
|
||||||
|
`ca` decimal(19,0) DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a -999999999999999999.9999999999
|
||||||
|
fa -1000000000000000000
|
||||||
|
ca -999999999999999999
|
||||||
|
LENGTH(FLOOR(a)) 20
|
||||||
|
LENGTH(CEILING(a)) 19
|
||||||
|
a 999999999999999999.9999999999
|
||||||
|
fa 999999999999999999
|
||||||
|
ca 1000000000000000000
|
||||||
|
LENGTH(FLOOR(a)) 18
|
||||||
|
LENGTH(CEILING(a)) 19
|
||||||
|
CALL p1(27,10,'');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(27,10) DEFAULT NULL,
|
||||||
|
`fa` bigint(19) DEFAULT NULL,
|
||||||
|
`ca` bigint(19) DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a -99999999999999999.9999999999
|
||||||
|
fa -100000000000000000
|
||||||
|
ca -99999999999999999
|
||||||
|
LENGTH(FLOOR(a)) 19
|
||||||
|
LENGTH(CEILING(a)) 18
|
||||||
|
a 99999999999999999.9999999999
|
||||||
|
fa 99999999999999999
|
||||||
|
ca 100000000000000000
|
||||||
|
LENGTH(FLOOR(a)) 17
|
||||||
|
LENGTH(CEILING(a)) 18
|
||||||
|
CALL p1(20,10,'');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(20,10) DEFAULT NULL,
|
||||||
|
`fa` bigint(12) DEFAULT NULL,
|
||||||
|
`ca` bigint(12) DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a -9999999999.9999999999
|
||||||
|
fa -10000000000
|
||||||
|
ca -9999999999
|
||||||
|
LENGTH(FLOOR(a)) 12
|
||||||
|
LENGTH(CEILING(a)) 11
|
||||||
|
a 9999999999.9999999999
|
||||||
|
fa 9999999999
|
||||||
|
ca 10000000000
|
||||||
|
LENGTH(FLOOR(a)) 10
|
||||||
|
LENGTH(CEILING(a)) 11
|
||||||
|
CALL p1(19,10,'');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(19,10) DEFAULT NULL,
|
||||||
|
`fa` bigint(11) DEFAULT NULL,
|
||||||
|
`ca` bigint(11) DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a -999999999.9999999999
|
||||||
|
fa -1000000000
|
||||||
|
ca -999999999
|
||||||
|
LENGTH(FLOOR(a)) 11
|
||||||
|
LENGTH(CEILING(a)) 10
|
||||||
|
a 999999999.9999999999
|
||||||
|
fa 999999999
|
||||||
|
ca 1000000000
|
||||||
|
LENGTH(FLOOR(a)) 9
|
||||||
|
LENGTH(CEILING(a)) 10
|
||||||
|
CALL p1(18,10,'');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(18,10) DEFAULT NULL,
|
||||||
|
`fa` int(10) DEFAULT NULL,
|
||||||
|
`ca` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a -99999999.9999999999
|
||||||
|
fa -100000000
|
||||||
|
ca -99999999
|
||||||
|
LENGTH(FLOOR(a)) 10
|
||||||
|
LENGTH(CEILING(a)) 9
|
||||||
|
a 99999999.9999999999
|
||||||
|
fa 99999999
|
||||||
|
ca 100000000
|
||||||
|
LENGTH(FLOOR(a)) 8
|
||||||
|
LENGTH(CEILING(a)) 9
|
||||||
|
CALL p1(10,10,'');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(10,10) DEFAULT NULL,
|
||||||
|
`fa` int(2) DEFAULT NULL,
|
||||||
|
`ca` int(2) DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a -0.9999999999
|
||||||
|
fa -1
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 2
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 0.9999999999
|
||||||
|
fa 0
|
||||||
|
ca 1
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
CALL p1(38,10,' UNSIGNED');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(38,10) unsigned DEFAULT NULL,
|
||||||
|
`fa` decimal(28,0) unsigned DEFAULT NULL,
|
||||||
|
`ca` decimal(29,0) unsigned DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a 0.0000000000
|
||||||
|
fa 0
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 9999999999999999999999999999.9999999999
|
||||||
|
fa 9999999999999999999999999999
|
||||||
|
ca 10000000000000000000000000000
|
||||||
|
LENGTH(FLOOR(a)) 28
|
||||||
|
LENGTH(CEILING(a)) 29
|
||||||
|
CALL p1(28,10,' UNSIGNED');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(28,10) unsigned DEFAULT NULL,
|
||||||
|
`fa` bigint(18) unsigned DEFAULT NULL,
|
||||||
|
`ca` decimal(19,0) unsigned DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a 0.0000000000
|
||||||
|
fa 0
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 999999999999999999.9999999999
|
||||||
|
fa 999999999999999999
|
||||||
|
ca 1000000000000000000
|
||||||
|
LENGTH(FLOOR(a)) 18
|
||||||
|
LENGTH(CEILING(a)) 19
|
||||||
|
CALL p1(27,10,' UNSIGNED');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(27,10) unsigned DEFAULT NULL,
|
||||||
|
`fa` bigint(17) unsigned DEFAULT NULL,
|
||||||
|
`ca` bigint(18) unsigned DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a 0.0000000000
|
||||||
|
fa 0
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 99999999999999999.9999999999
|
||||||
|
fa 99999999999999999
|
||||||
|
ca 100000000000000000
|
||||||
|
LENGTH(FLOOR(a)) 17
|
||||||
|
LENGTH(CEILING(a)) 18
|
||||||
|
CALL p1(20,10,' UNSIGNED');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(20,10) unsigned DEFAULT NULL,
|
||||||
|
`fa` bigint(10) unsigned DEFAULT NULL,
|
||||||
|
`ca` bigint(11) unsigned DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a 0.0000000000
|
||||||
|
fa 0
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 9999999999.9999999999
|
||||||
|
fa 9999999999
|
||||||
|
ca 10000000000
|
||||||
|
LENGTH(FLOOR(a)) 10
|
||||||
|
LENGTH(CEILING(a)) 11
|
||||||
|
CALL p1(19,10,' UNSIGNED');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(19,10) unsigned DEFAULT NULL,
|
||||||
|
`fa` int(9) unsigned DEFAULT NULL,
|
||||||
|
`ca` bigint(10) unsigned DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a 0.0000000000
|
||||||
|
fa 0
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 999999999.9999999999
|
||||||
|
fa 999999999
|
||||||
|
ca 1000000000
|
||||||
|
LENGTH(FLOOR(a)) 9
|
||||||
|
LENGTH(CEILING(a)) 10
|
||||||
|
CALL p1(18,10,' UNSIGNED');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(18,10) unsigned DEFAULT NULL,
|
||||||
|
`fa` int(8) unsigned DEFAULT NULL,
|
||||||
|
`ca` int(9) unsigned DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a 0.0000000000
|
||||||
|
fa 0
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 99999999.9999999999
|
||||||
|
fa 99999999
|
||||||
|
ca 100000000
|
||||||
|
LENGTH(FLOOR(a)) 8
|
||||||
|
LENGTH(CEILING(a)) 9
|
||||||
|
CALL p1(10,10,' UNSIGNED');
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(10,10) unsigned DEFAULT NULL,
|
||||||
|
`fa` int(1) unsigned DEFAULT NULL,
|
||||||
|
`ca` int(1) unsigned DEFAULT NULL,
|
||||||
|
`LENGTH(FLOOR(a))` int(10) DEFAULT NULL,
|
||||||
|
`LENGTH(CEILING(a))` int(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
a 0.0000000000
|
||||||
|
fa 0
|
||||||
|
ca 0
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
a 0.9999999999
|
||||||
|
fa 0
|
||||||
|
ca 1
|
||||||
|
LENGTH(FLOOR(a)) 1
|
||||||
|
LENGTH(CEILING(a)) 1
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
|
# MDEV-23118 FORMAT(d1,dec) where dec=0/38 and d1 is DECIMAL(38,38) gives incorrect results
|
||||||
|
#
|
||||||
|
CREATE OR REPLACE TABLE t1 (a DECIMAL(38,38));
|
||||||
|
INSERT INTO t1 VALUES (-0.9999999999999999999999999999999999999), (0.9999999999999999999999999999999999999);
|
||||||
|
SELECT a, FORMAT(a,0), FORMAT(a,38) FROM t1;
|
||||||
|
a -0.99999999999999999999999999999999999990
|
||||||
|
FORMAT(a,0) -1
|
||||||
|
FORMAT(a,38) -0.99999999999999999999999999999999999990
|
||||||
|
a 0.99999999999999999999999999999999999990
|
||||||
|
FORMAT(a,0) 1
|
||||||
|
FORMAT(a,38) 0.99999999999999999999999999999999999990
|
||||||
|
CREATE OR REPLACE TABLE t2 AS SELECT a, FORMAT(a,0), FORMAT(a,38) FROM t1;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
a -0.99999999999999999999999999999999999990
|
||||||
|
FORMAT(a,0) -1
|
||||||
|
FORMAT(a,38) -0.99999999999999999999999999999999999990
|
||||||
|
a 0.99999999999999999999999999999999999990
|
||||||
|
FORMAT(a,0) 1
|
||||||
|
FORMAT(a,38) 0.99999999999999999999999999999999999990
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table t2
|
||||||
|
Create Table CREATE TABLE `t2` (
|
||||||
|
`a` decimal(38,38) DEFAULT NULL,
|
||||||
|
`FORMAT(a,0)` varchar(2) DEFAULT NULL,
|
||||||
|
`FORMAT(a,38)` varchar(41) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2,t1;
|
||||||
|
#
|
||||||
|
# End of 10.4 tests
|
||||||
|
#
|
||||||
|
@ -1824,6 +1824,32 @@ CREATE TABLE t1 (a DECIMAL(2,1) DEFAULT 0.10001e0);
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23105 Cast number string with many leading zeros to decimal gives unexpected result
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SELECT CAST(0000000000000000000000000000000000000000000000000000000000000000000000000000000020.01 AS DECIMAL(15,2)) as val;
|
||||||
|
|
||||||
|
SET sql_mode='';
|
||||||
|
CREATE TABLE t1 (a TEXT);
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.0'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.9'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.99'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.994'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.995'));
|
||||||
|
INSERT INTO t1 VALUES (CONCAT(REPEAT('0',100),1,'.999'));
|
||||||
|
CREATE TABLE t2 (a TEXT, d DECIMAL(15,2));
|
||||||
|
INSERT IGNORE INTO t2 (a,d) SELECT a, a FROM t1;
|
||||||
|
INSERT IGNORE INTO t2 (a,d) SELECT CONCAT('-',a), CONCAT('-',a) FROM t1;
|
||||||
|
SELECT d, a FROM t2 ORDER BY d,a;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET sql_mode=DEFAULT;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.1 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#18408499 UNSIGNED BIGINT HIGH VALUES
|
--echo # Bug#18408499 UNSIGNED BIGINT HIGH VALUES
|
||||||
--echo # WRONG NUMERICAL COMPARISON RESULTS
|
--echo # WRONG NUMERICAL COMPARISON RESULTS
|
||||||
@ -1871,3 +1897,70 @@ drop table t1;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.4 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23032 FLOOR()/CEIL() incorrectly calculate the precision of a DECIMAL(M,D) column.
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
DELIMITER $$;
|
||||||
|
CREATE PROCEDURE p1(prec INT, scale INT, suffix VARCHAR(32))
|
||||||
|
BEGIN
|
||||||
|
EXECUTE IMMEDIATE CONCAT('CREATE TABLE t1 (a decimal(',prec,',',scale,')',suffix,')');
|
||||||
|
INSERT IGNORE INTO t1 VALUES (-1e100), (+1e100);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
a,
|
||||||
|
FLOOR(a) AS fa,
|
||||||
|
CEILING(a) AS ca,
|
||||||
|
LENGTH(FLOOR(a)),
|
||||||
|
LENGTH(CEILING(a))
|
||||||
|
FROM t1 ORDER BY a;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
DROP TABLE t2, t1;
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
|
||||||
|
--vertical_results
|
||||||
|
CALL p1(38,10,'');
|
||||||
|
CALL p1(28,10,'');
|
||||||
|
CALL p1(27,10,'');
|
||||||
|
CALL p1(20,10,'');
|
||||||
|
CALL p1(19,10,'');
|
||||||
|
CALL p1(18,10,'');
|
||||||
|
CALL p1(10,10,'');
|
||||||
|
|
||||||
|
CALL p1(38,10,' UNSIGNED');
|
||||||
|
CALL p1(28,10,' UNSIGNED');
|
||||||
|
CALL p1(27,10,' UNSIGNED');
|
||||||
|
CALL p1(20,10,' UNSIGNED');
|
||||||
|
CALL p1(19,10,' UNSIGNED');
|
||||||
|
CALL p1(18,10,' UNSIGNED');
|
||||||
|
CALL p1(10,10,' UNSIGNED');
|
||||||
|
|
||||||
|
--horizontal_results
|
||||||
|
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23118 FORMAT(d1,dec) where dec=0/38 and d1 is DECIMAL(38,38) gives incorrect results
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--vertical_results
|
||||||
|
CREATE OR REPLACE TABLE t1 (a DECIMAL(38,38));
|
||||||
|
INSERT INTO t1 VALUES (-0.9999999999999999999999999999999999999), (0.9999999999999999999999999999999999999);
|
||||||
|
SELECT a, FORMAT(a,0), FORMAT(a,38) FROM t1;
|
||||||
|
CREATE OR REPLACE TABLE t2 AS SELECT a, FORMAT(a,0), FORMAT(a,38) FROM t1;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2,t1;
|
||||||
|
--horizontal_results
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.4 tests
|
||||||
|
--echo #
|
||||||
|
@ -3851,6 +3851,22 @@ ERROR 42000: Too big scale 56 specified for 'rank() over w1'. Maximum is 38
|
|||||||
SELECT cast((rank() over w1) as decimal (53,30));
|
SELECT cast((rank() over w1) as decimal (53,30));
|
||||||
ERROR HY000: Window specification with name 'w1' is not defined
|
ERROR HY000: Window specification with name 'w1' is not defined
|
||||||
#
|
#
|
||||||
|
# MDEV-15180: server crashed with NTH_VALUE()
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i1 int, a int);
|
||||||
|
INSERT INTO t1 VALUES (1, 1), (2, 2),(3, 3);
|
||||||
|
CREATE TABLE t2 (i2 int);
|
||||||
|
INSERT INTO t2 VALUES (1),(2),(5),(1),(7),(4),(3);
|
||||||
|
CREATE VIEW v1 AS (SELECT * FROM t1,t2 WHERE t1.i1=t2.i2) ;
|
||||||
|
SELECT NTH_VALUE(i1, i1) OVER (PARTITION BY i1) FROM v1;
|
||||||
|
NTH_VALUE(i1, i1) OVER (PARTITION BY i1)
|
||||||
|
1
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -2505,6 +2505,22 @@ SELECT cast((rank() over w1) as decimal (53,56));
|
|||||||
--error ER_WRONG_WINDOW_SPEC_NAME
|
--error ER_WRONG_WINDOW_SPEC_NAME
|
||||||
SELECT cast((rank() over w1) as decimal (53,30));
|
SELECT cast((rank() over w1) as decimal (53,30));
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-15180: server crashed with NTH_VALUE()
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i1 int, a int);
|
||||||
|
INSERT INTO t1 VALUES (1, 1), (2, 2),(3, 3);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (i2 int);
|
||||||
|
INSERT INTO t2 VALUES (1),(2),(5),(1),(7),(4),(3);
|
||||||
|
|
||||||
|
CREATE VIEW v1 AS (SELECT * FROM t1,t2 WHERE t1.i1=t2.i2) ;
|
||||||
|
SELECT NTH_VALUE(i1, i1) OVER (PARTITION BY i1) FROM v1;
|
||||||
|
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -15,6 +15,7 @@ GCF-939 : MDEV-21520 galera.GCF-939
|
|||||||
MDEV-16509 : MDEV-21523 galera.MDEV-16509
|
MDEV-16509 : MDEV-21523 galera.MDEV-16509
|
||||||
MDEV-20225 : MDEV-20886 galera.MDEV-20225
|
MDEV-20225 : MDEV-20886 galera.MDEV-20225
|
||||||
MW-286 : MDEV-18464 Killing thread can cause mutex deadlock if done concurrently with Galera/replication victim kill
|
MW-286 : MDEV-18464 Killing thread can cause mutex deadlock if done concurrently with Galera/replication victim kill
|
||||||
|
MW-328A : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002
|
||||||
MW-329 : MDEV-19962 Galera test failure on MW-329
|
MW-329 : MDEV-19962 Galera test failure on MW-329
|
||||||
galera.galera_defaults : MDEV-21494 Galera test sporadic failure on galera.galera_defaults
|
galera.galera_defaults : MDEV-21494 Galera test sporadic failure on galera.galera_defaults
|
||||||
galera_as_slave_replication_bundle : MDEV-15785 OPTION_GTID_BEGIN is set in Gtid_log_event::do_apply_event()
|
galera_as_slave_replication_bundle : MDEV-15785 OPTION_GTID_BEGIN is set in Gtid_log_event::do_apply_event()
|
||||||
|
@ -6,24 +6,41 @@ connection node_1;
|
|||||||
call mtr.add_suppression("WSREP: Trying to continue unpaused monitor");
|
call mtr.add_suppression("WSREP: Trying to continue unpaused monitor");
|
||||||
CREATE TABLE t1 ENGINE=InnoDB select 1 as a, 1 as b union select 2, 2;
|
CREATE TABLE t1 ENGINE=InnoDB select 1 as a, 1 as b union select 2, 2;
|
||||||
ALTER TABLE t1 add primary key(a);
|
ALTER TABLE t1 add primary key(a);
|
||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1(repeat_count INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE current_num int;
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION rollback;
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION rollback;
|
||||||
WHILE 1 DO
|
SET current_num = 0;
|
||||||
|
WHILE current_num < repeat_count DO
|
||||||
start transaction;
|
start transaction;
|
||||||
update t1 set b=connection_id() where a=1;
|
update t1 set b=connection_id() where a=1;
|
||||||
commit;
|
commit;
|
||||||
|
SET current_num = current_num + 1;
|
||||||
END WHILE;
|
END WHILE;
|
||||||
END|
|
END|
|
||||||
|
connection node_2;
|
||||||
connect node_1_p1, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
connect node_1_p1, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
call p1(1000);
|
||||||
connect node_1_p2, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
connect node_1_p2, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
call p1(1000);
|
||||||
connect node_2_p1, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
connect node_2_p1, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
||||||
call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
call p1(1000);
|
||||||
connect node_2_p2, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
connect node_2_p2, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
||||||
call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
call p1(1000);
|
||||||
connection node_1;
|
connection node_1;
|
||||||
checking error log for 'BF lock wait long' message for 10 times every 10 seconds ...
|
checking error log for 'BF lock wait long' message for 10 times every 10 seconds ...
|
||||||
|
connection node_1_p1;
|
||||||
|
connection node_1_p2;
|
||||||
|
connection node_2_p1;
|
||||||
|
connection node_2_p2;
|
||||||
|
connection node_1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop procedure p1;
|
drop procedure p1;
|
||||||
|
disconnect node_1_p1;
|
||||||
|
disconnect node_1_p2;
|
||||||
|
disconnect node_2_p1;
|
||||||
|
disconnect node_2_p2;
|
||||||
|
@ -13,27 +13,39 @@ ALTER TABLE t1 add primary key(a);
|
|||||||
|
|
||||||
DELIMITER |;
|
DELIMITER |;
|
||||||
|
|
||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1(repeat_count INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE current_num int;
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION rollback;
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION rollback;
|
||||||
WHILE 1 DO
|
SET current_num = 0;
|
||||||
|
|
||||||
|
WHILE current_num < repeat_count DO
|
||||||
start transaction;
|
start transaction;
|
||||||
update t1 set b=connection_id() where a=1;
|
update t1 set b=connection_id() where a=1;
|
||||||
commit;
|
commit;
|
||||||
|
SET current_num = current_num + 1;
|
||||||
END WHILE;
|
END WHILE;
|
||||||
END|
|
END|
|
||||||
|
|
||||||
|
|
||||||
DELIMITER ;|
|
DELIMITER ;|
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = 'p1'
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--connect node_1_p1, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
--connect node_1_p1, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
send call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
send call p1(1000);
|
||||||
--connect node_1_p2, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
--connect node_1_p2, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
send call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
send call p1(1000);
|
||||||
--connect node_2_p1, 127.0.0.1, root, , test, $NODE_MYPORT_2
|
--connect node_2_p1, 127.0.0.1, root, , test, $NODE_MYPORT_2
|
||||||
send call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
send call p1(1000);
|
||||||
--connect node_2_p2, 127.0.0.1, root, , test, $NODE_MYPORT_2
|
--connect node_2_p2, 127.0.0.1, root, , test, $NODE_MYPORT_2
|
||||||
send call p1;
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
send call p1(1000);
|
||||||
|
|
||||||
connection node_1;
|
connection node_1;
|
||||||
let $counter=10;
|
let $counter=10;
|
||||||
@ -54,6 +66,25 @@ while($counter > 0)
|
|||||||
dec $counter;
|
dec $counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
--connection node_1_p1
|
||||||
|
--error 0,1213
|
||||||
|
--reap
|
||||||
|
--connection node_1_p2
|
||||||
|
--error 0,1213
|
||||||
|
--reap
|
||||||
|
--connection node_2_p1
|
||||||
|
--error 0,1213
|
||||||
|
--reap
|
||||||
|
--connection node_2_p2
|
||||||
|
--error 0,1213
|
||||||
|
--reap
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop procedure p1;
|
drop procedure p1;
|
||||||
|
|
||||||
|
--disconnect node_1_p1
|
||||||
|
--disconnect node_1_p2
|
||||||
|
--disconnect node_2_p1
|
||||||
|
--disconnect node_2_p2
|
||||||
|
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
connection node_2;
|
connection node_2;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
|
call mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg\\(\\).*");
|
||||||
CREATE TABLE t1 (f1 INTEGER);
|
CREATE TABLE t1 (f1 INTEGER);
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
||||||
connection node_2;
|
connection node_2;
|
||||||
|
SET SESSION wsrep_sync_wait=0;
|
||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
||||||
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
|
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
|
||||||
connection node_3;
|
connection node_3;
|
||||||
|
SET SESSION wsrep_sync_wait=0;
|
||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
||||||
SET SESSION wsrep_sync_wait = 0;
|
SET SESSION wsrep_sync_wait = 0;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
call mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg\\(\\).*");
|
||||||
|
|
||||||
CREATE TABLE t1 (f1 INTEGER);
|
CREATE TABLE t1 (f1 INTEGER);
|
||||||
|
|
||||||
# Force all nodes to become non-primary
|
# Force all nodes to become non-primary
|
||||||
@ -13,13 +15,19 @@ CREATE TABLE t1 (f1 INTEGER);
|
|||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
||||||
|
|
||||||
--connection node_2
|
--connection node_2
|
||||||
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
||||||
|
|
||||||
--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
|
--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
|
||||||
--connection node_3
|
--connection node_3
|
||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--sleep 10
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
||||||
|
|
||||||
# Node #2 should be non-primary
|
# Node #2 should be non-primary
|
||||||
SET SESSION wsrep_sync_wait = 0;
|
SET SESSION wsrep_sync_wait = 0;
|
||||||
@ -44,7 +52,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
# Reconnect all nodes
|
# Reconnect all nodes
|
||||||
--connection node_2
|
--connection node_2
|
||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
||||||
--sleep 10
|
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
@ -67,7 +75,7 @@ SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
|||||||
|
|
||||||
--connection node_3
|
--connection node_3
|
||||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
||||||
--sleep 10
|
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
|
@ -85,6 +85,15 @@ END IF|
|
|||||||
#
|
#
|
||||||
# Testing with explicit timezonefile
|
# Testing with explicit timezonefile
|
||||||
#
|
#
|
||||||
|
\d |
|
||||||
|
IF (select count(*) from information_schema.global_variables where
|
||||||
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
||||||
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
||||||
|
END IF|
|
||||||
|
\d ;
|
||||||
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
||||||
SET @time_zone_id= LAST_INSERT_ID();
|
SET @time_zone_id= LAST_INSERT_ID();
|
||||||
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
|
||||||
@ -106,6 +115,15 @@ END IF|
|
|||||||
\d |
|
\d |
|
||||||
IF (select count(*) from information_schema.global_variables where
|
IF (select count(*) from information_schema.global_variables where
|
||||||
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
||||||
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
||||||
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
||||||
|
END IF|
|
||||||
|
\d ;
|
||||||
|
\d |
|
||||||
|
IF (select count(*) from information_schema.global_variables where
|
||||||
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
||||||
ALTER TABLE time_zone_leap_second ENGINE=InnoDB;
|
ALTER TABLE time_zone_leap_second ENGINE=InnoDB;
|
||||||
END IF|
|
END IF|
|
||||||
\d ;
|
\d ;
|
||||||
|
@ -2245,35 +2245,54 @@ bool Item_func_bit_neg::fix_length_and_dec()
|
|||||||
|
|
||||||
void Item_func_int_val::fix_length_and_dec_int_or_decimal()
|
void Item_func_int_val::fix_length_and_dec_int_or_decimal()
|
||||||
{
|
{
|
||||||
|
DBUG_ASSERT(args[0]->cmp_type() == DECIMAL_RESULT);
|
||||||
|
DBUG_ASSERT(args[0]->max_length <= DECIMAL_MAX_STR_LENGTH);
|
||||||
/*
|
/*
|
||||||
The INT branch of this code should be revised.
|
FLOOR() for negative numbers can increase length: floor(-9.9) -> -10
|
||||||
It creates too large data types, e.g.
|
CEILING() for positive numbers can increase length: ceil(9.9) -> 10
|
||||||
CREATE OR REPLACE TABLE t2 AS SELECT FLOOR(9999999.999) AS fa;
|
|
||||||
results in a BININT(10) column, while INT(7) should probably be enough.
|
|
||||||
*/
|
*/
|
||||||
ulonglong tmp_max_length= (ulonglong ) args[0]->max_length -
|
decimal_round_mode mode= round_mode();
|
||||||
(args[0]->decimals ? args[0]->decimals + 1 : 0) + 2;
|
uint length_increase= args[0]->decimals > 0 &&
|
||||||
max_length= tmp_max_length > (ulonglong) UINT_MAX32 ?
|
(mode == CEILING ||
|
||||||
(uint32) UINT_MAX32 : (uint32) tmp_max_length;
|
(mode == FLOOR && !args[0]->unsigned_flag)) ? 1 : 0;
|
||||||
uint tmp= float_length(decimals);
|
uint precision= args[0]->decimal_int_part() + length_increase;
|
||||||
set_if_smaller(max_length,tmp);
|
set_if_bigger(precision, 1);
|
||||||
decimals= 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
-2 because in most high position can't be used any digit for longlong
|
The BIGINT data type can store:
|
||||||
and one position for increasing value during operation
|
UNSIGNED BIGINT: 0..18446744073709551615 - up to 19 digits
|
||||||
|
SIGNED BIGINT: -9223372036854775808..9223372036854775807 - up to 18 digits
|
||||||
|
|
||||||
|
The INT data type can store:
|
||||||
|
UNSIGNED INT: 0..4294967295 - up to 9 digits
|
||||||
|
SIGNED INT: -2147483648..2147483647 - up to 9 digits
|
||||||
*/
|
*/
|
||||||
if (args[0]->max_length - args[0]->decimals >= DECIMAL_LONGLONG_DIGITS - 2)
|
if (precision > 18)
|
||||||
{
|
{
|
||||||
|
unsigned_flag= args[0]->unsigned_flag;
|
||||||
fix_char_length(
|
fix_char_length(
|
||||||
my_decimal_precision_to_length_no_truncation(
|
my_decimal_precision_to_length_no_truncation(precision, 0,
|
||||||
args[0]->decimal_int_part(), 0, false));
|
unsigned_flag));
|
||||||
set_handler(&type_handler_newdecimal);
|
set_handler(&type_handler_newdecimal);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
unsigned_flag= args[0]->unsigned_flag;
|
uint sign_length= (unsigned_flag= args[0]->unsigned_flag) ? 0 : 1;
|
||||||
set_handler(type_handler_long_or_longlong());
|
fix_char_length(precision + sign_length);
|
||||||
|
if (precision > 9)
|
||||||
|
{
|
||||||
|
if (unsigned_flag)
|
||||||
|
set_handler(&type_handler_ulonglong);
|
||||||
|
else
|
||||||
|
set_handler(&type_handler_slonglong);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (unsigned_flag)
|
||||||
|
set_handler(&type_handler_ulong);
|
||||||
|
else
|
||||||
|
set_handler(&type_handler_slong);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1838,6 +1838,7 @@ public:
|
|||||||
Item_func_int_val(THD *thd, Item *a): Item_func_hybrid_field_type(thd, a) {}
|
Item_func_int_val(THD *thd, Item *a): Item_func_hybrid_field_type(thd, a) {}
|
||||||
bool check_partition_func_processor(void *int_arg) { return FALSE; }
|
bool check_partition_func_processor(void *int_arg) { return FALSE; }
|
||||||
bool check_vcol_func_processor(void *arg) { return FALSE; }
|
bool check_vcol_func_processor(void *arg) { return FALSE; }
|
||||||
|
virtual decimal_round_mode round_mode() const= 0;
|
||||||
void fix_length_and_dec_double();
|
void fix_length_and_dec_double();
|
||||||
void fix_length_and_dec_int_or_decimal();
|
void fix_length_and_dec_int_or_decimal();
|
||||||
void fix_length_and_dec_time()
|
void fix_length_and_dec_time()
|
||||||
@ -1866,6 +1867,7 @@ class Item_func_ceiling :public Item_func_int_val
|
|||||||
public:
|
public:
|
||||||
Item_func_ceiling(THD *thd, Item *a): Item_func_int_val(thd, a) {}
|
Item_func_ceiling(THD *thd, Item *a): Item_func_int_val(thd, a) {}
|
||||||
const char *func_name() const { return "ceiling"; }
|
const char *func_name() const { return "ceiling"; }
|
||||||
|
decimal_round_mode round_mode() const { return CEILING; }
|
||||||
longlong int_op();
|
longlong int_op();
|
||||||
double real_op();
|
double real_op();
|
||||||
my_decimal *decimal_op(my_decimal *);
|
my_decimal *decimal_op(my_decimal *);
|
||||||
@ -1881,6 +1883,7 @@ class Item_func_floor :public Item_func_int_val
|
|||||||
public:
|
public:
|
||||||
Item_func_floor(THD *thd, Item *a): Item_func_int_val(thd, a) {}
|
Item_func_floor(THD *thd, Item *a): Item_func_int_val(thd, a) {}
|
||||||
const char *func_name() const { return "floor"; }
|
const char *func_name() const { return "floor"; }
|
||||||
|
decimal_round_mode round_mode() const { return FLOOR; }
|
||||||
longlong int_op();
|
longlong int_op();
|
||||||
double real_op();
|
double real_op();
|
||||||
my_decimal *decimal_op(my_decimal *);
|
my_decimal *decimal_op(my_decimal *);
|
||||||
|
@ -2642,18 +2642,42 @@ String *Item_func_soundex::val_str(String *str)
|
|||||||
This should be 'internationalized' sometimes.
|
This should be 'internationalized' sometimes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const int FORMAT_MAX_DECIMALS= 30;
|
/*
|
||||||
|
The maximum supported decimal scale:
|
||||||
|
38 - starting from 10.2.1
|
||||||
|
30 - before 10.2.1
|
||||||
|
*/
|
||||||
|
const int FORMAT_MAX_DECIMALS= 38;
|
||||||
|
|
||||||
|
|
||||||
bool Item_func_format::fix_length_and_dec()
|
bool Item_func_format::fix_length_and_dec()
|
||||||
{
|
{
|
||||||
uint32 char_length= args[0]->type_handler()->Item_decimal_notation_int_digits(args[0]);
|
uint32 char_length= args[0]->type_handler()->Item_decimal_notation_int_digits(args[0]);
|
||||||
uint dec= FORMAT_MAX_DECIMALS;
|
uint dec= FORMAT_MAX_DECIMALS;
|
||||||
if (args[1]->const_item() && !args[1]->is_expensive() && !args[1]->null_value)
|
/*
|
||||||
|
Format can require one more integer digit if rounding happens:
|
||||||
|
FORMAT(9.9,0) -> '10'
|
||||||
|
Set need_extra_digit_for_rounding to true by default
|
||||||
|
if args[0] has some decimals: if args[1] is not
|
||||||
|
a constant, then format can potentially reduce
|
||||||
|
the number of decimals and round to the next integer.
|
||||||
|
*/
|
||||||
|
bool need_extra_digit_for_rounding= args[0]->decimals > 0;
|
||||||
|
if (args[1]->const_item() && !args[1]->is_expensive())
|
||||||
{
|
{
|
||||||
Longlong_hybrid tmp= args[1]->to_longlong_hybrid();
|
Longlong_hybrid tmp= args[1]->to_longlong_hybrid();
|
||||||
|
if (!args[1]->null_value)
|
||||||
|
{
|
||||||
dec= tmp.to_uint(FORMAT_MAX_DECIMALS);
|
dec= tmp.to_uint(FORMAT_MAX_DECIMALS);
|
||||||
|
need_extra_digit_for_rounding= (dec < args[0]->decimals);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
In case of a data type with zero integer digits, e.g. DECIMAL(4,4),
|
||||||
|
we'll print at least one integer digit.
|
||||||
|
*/
|
||||||
|
if (need_extra_digit_for_rounding || !char_length)
|
||||||
|
char_length++;
|
||||||
uint32 max_sep_count= (char_length / 3) + (dec ? 1 : 0) + /*sign*/1;
|
uint32 max_sep_count= (char_length / 3) + (dec ? 1 : 0) + /*sign*/1;
|
||||||
collation.set(default_charset());
|
collation.set(default_charset());
|
||||||
fix_char_length(char_length + max_sep_count + dec);
|
fix_char_length(char_length + max_sep_count + dec);
|
||||||
@ -2709,7 +2733,7 @@ String *Item_func_format::val_str_ascii(String *str)
|
|||||||
if ((null_value=args[0]->null_value))
|
if ((null_value=args[0]->null_value))
|
||||||
return 0; /* purecov: inspected */
|
return 0; /* purecov: inspected */
|
||||||
nr= my_double_round(nr, (longlong) dec, FALSE, FALSE);
|
nr= my_double_round(nr, (longlong) dec, FALSE, FALSE);
|
||||||
str->set_real(nr, dec, &my_charset_numeric);
|
str->set_fcvt(nr, dec);
|
||||||
if (!std::isfinite(nr))
|
if (!std::isfinite(nr))
|
||||||
return str;
|
return str;
|
||||||
str_length=str->length();
|
str_length=str->length();
|
||||||
|
@ -149,6 +149,10 @@ public:
|
|||||||
Item_subselect(THD *thd);
|
Item_subselect(THD *thd);
|
||||||
|
|
||||||
virtual subs_type substype() { return UNKNOWN_SUBS; }
|
virtual subs_type substype() { return UNKNOWN_SUBS; }
|
||||||
|
bool is_exists_predicate()
|
||||||
|
{
|
||||||
|
return substype() == Item_subselect::EXISTS_SUBS;
|
||||||
|
}
|
||||||
bool is_in_predicate()
|
bool is_in_predicate()
|
||||||
{
|
{
|
||||||
return get_IN_subquery() != NULL;
|
return get_IN_subquery() != NULL;
|
||||||
|
@ -350,12 +350,9 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
|
|||||||
|
|
||||||
|
|
||||||
void end_read_record(READ_RECORD *info)
|
void end_read_record(READ_RECORD *info)
|
||||||
{ /* free cache if used */
|
{
|
||||||
if (info->cache)
|
/* free cache if used */
|
||||||
{
|
free_cache(info);
|
||||||
my_free_lock(info->cache);
|
|
||||||
info->cache=0;
|
|
||||||
}
|
|
||||||
if (info->table)
|
if (info->table)
|
||||||
{
|
{
|
||||||
if (info->table->is_created())
|
if (info->table->is_created())
|
||||||
@ -366,6 +363,17 @@ void end_read_record(READ_RECORD *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void free_cache(READ_RECORD *info)
|
||||||
|
{
|
||||||
|
if (info->cache)
|
||||||
|
{
|
||||||
|
my_free_lock(info->cache);
|
||||||
|
info->cache=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int rr_handle_error(READ_RECORD *info, int error)
|
static int rr_handle_error(READ_RECORD *info, int error)
|
||||||
{
|
{
|
||||||
if (info->thd->killed)
|
if (info->thd->killed)
|
||||||
|
@ -31,6 +31,7 @@ class SORT_INFO;
|
|||||||
struct READ_RECORD;
|
struct READ_RECORD;
|
||||||
|
|
||||||
void end_read_record(READ_RECORD *info);
|
void end_read_record(READ_RECORD *info);
|
||||||
|
void free_cache(READ_RECORD *info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
A context for reading through a single table using a chosen access method:
|
A context for reading through a single table using a chosen access method:
|
||||||
|
@ -3244,25 +3244,25 @@ ER_NONEXISTING_GRANT 42000
|
|||||||
swe "Det finns inget privilegium definierat för användare '%-.48s' på '%-.64s'"
|
swe "Det finns inget privilegium definierat för användare '%-.48s' på '%-.64s'"
|
||||||
ukr "Повноважень не визначено для користувача '%-.48s' з хосту '%-.64s'"
|
ukr "Повноважень не визначено для користувача '%-.48s' з хосту '%-.64s'"
|
||||||
ER_TABLEACCESS_DENIED_ERROR 42000
|
ER_TABLEACCESS_DENIED_ERROR 42000
|
||||||
cze "%-.32s příkaz nepřístupný pro uživatele: '%s'@'%s' pro tabulku '%-.192s'"
|
cze "%-.100T příkaz nepřístupný pro uživatele: '%s'@'%s' pro tabulku '%-.192s'"
|
||||||
dan "%-.32s-kommandoen er ikke tilladt for brugeren '%s'@'%s' for tabellen '%-.192s'"
|
dan "%-.100T-kommandoen er ikke tilladt for brugeren '%s'@'%s' for tabellen '%-.192s'"
|
||||||
nla "%-.32s commando geweigerd voor gebruiker: '%s'@'%s' voor tabel '%-.192s'"
|
nla "%-.100T commando geweigerd voor gebruiker: '%s'@'%s' voor tabel '%-.192s'"
|
||||||
eng "%-.32s command denied to user '%s'@'%s' for table '%-.192s'"
|
eng "%-.100T command denied to user '%s'@'%s' for table '%-.192s'"
|
||||||
jps "コマンド %-.32s は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません",
|
jps "コマンド %-.100T は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません",
|
||||||
est "%-.32s käsk ei ole lubatud kasutajale '%s'@'%s' tabelis '%-.192s'"
|
est "%-.100T käsk ei ole lubatud kasutajale '%s'@'%s' tabelis '%-.192s'"
|
||||||
fre "La commande '%-.32s' est interdite à l'utilisateur: '%s'@'%s' sur la table '%-.192s'"
|
fre "La commande '%-.100T' est interdite à l'utilisateur: '%s'@'%s' sur la table '%-.192s'"
|
||||||
ger "%-.32s Befehl nicht erlaubt für Benutzer '%s'@'%s' auf Tabelle '%-.192s'"
|
ger "%-.100T Befehl nicht erlaubt für Benutzer '%s'@'%s' auf Tabelle '%-.192s'"
|
||||||
hun "%-.32s parancs a '%s'@'%s' felhasznalo szamara nem engedelyezett a '%-.192s' tablaban"
|
hun "%-.100T parancs a '%s'@'%s' felhasznalo szamara nem engedelyezett a '%-.192s' tablaban"
|
||||||
ita "Comando %-.32s negato per l'utente: '%s'@'%s' sulla tabella '%-.192s'"
|
ita "Comando %-.100T negato per l'utente: '%s'@'%s' sulla tabella '%-.192s'"
|
||||||
jpn "コマンド %-.32s は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません"
|
jpn "コマンド %-.100T は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません"
|
||||||
kor "'%-.32s' 명령은 다음 사용자에게 거부되었습니다. : '%s'@'%s' for 테이블 '%-.192s'"
|
kor "'%-.100T' 명령은 다음 사용자에게 거부되었습니다. : '%s'@'%s' for 테이블 '%-.192s'"
|
||||||
por "Comando '%-.32s' negado para o usuário '%s'@'%s' na tabela '%-.192s'"
|
por "Comando '%-.100T' negado para o usuário '%s'@'%s' na tabela '%-.192s'"
|
||||||
rum "Comanda %-.32s interzisa utilizatorului: '%s'@'%s' pentru tabela '%-.192s'"
|
rum "Comanda %-.100T interzisa utilizatorului: '%s'@'%s' pentru tabela '%-.192s'"
|
||||||
rus "Команда %-.32s запрещена пользователю '%s'@'%s' для таблицы '%-.192s'"
|
rus "Команда %-.100T запрещена пользователю '%s'@'%s' для таблицы '%-.192s'"
|
||||||
serbian "%-.32s komanda zabranjena za korisnika '%s'@'%s' za tabelu '%-.192s'"
|
serbian "%-.100T komanda zabranjena za korisnika '%s'@'%s' za tabelu '%-.192s'"
|
||||||
spa "%-.32s comando negado para usuario: '%s'@'%s' para tabla '%-.192s'"
|
spa "%-.100T comando negado para usuario: '%s'@'%s' para tabla '%-.192s'"
|
||||||
swe "%-.32s ej tillåtet för '%s'@'%s' för tabell '%-.192s'"
|
swe "%-.100T ej tillåtet för '%s'@'%s' för tabell '%-.192s'"
|
||||||
ukr "%-.32s команда заборонена користувачу: '%s'@'%s' у таблиці '%-.192s'"
|
ukr "%-.100T команда заборонена користувачу: '%s'@'%s' у таблиці '%-.192s'"
|
||||||
ER_COLUMNACCESS_DENIED_ERROR 42000
|
ER_COLUMNACCESS_DENIED_ERROR 42000
|
||||||
cze "%-.32s příkaz nepřístupný pro uživatele: '%s'@'%s' pro sloupec '%-.192s' v tabulce '%-.192s'"
|
cze "%-.32s příkaz nepřístupný pro uživatele: '%s'@'%s' pro sloupec '%-.192s' v tabulce '%-.192s'"
|
||||||
dan "%-.32s-kommandoen er ikke tilladt for brugeren '%s'@'%s' for kolonne '%-.192s' in tabellen '%-.192s'"
|
dan "%-.32s-kommandoen er ikke tilladt for brugeren '%s'@'%s' for kolonne '%-.192s' in tabellen '%-.192s'"
|
||||||
|
@ -2812,8 +2812,17 @@ int Lex_input_stream::scan_ident_delimited(THD *thd,
|
|||||||
uchar c;
|
uchar c;
|
||||||
DBUG_ASSERT(m_ptr == m_tok_start + 1);
|
DBUG_ASSERT(m_ptr == m_tok_start + 1);
|
||||||
|
|
||||||
while ((c= yyGet()))
|
for ( ; ; )
|
||||||
{
|
{
|
||||||
|
if (!(c= yyGet()))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
End-of-query or straight 0x00 inside a delimited identifier.
|
||||||
|
Return the quote character, to have the parser fail on syntax error.
|
||||||
|
*/
|
||||||
|
m_ptr= (char *) m_tok_start + 1;
|
||||||
|
return quote_char;
|
||||||
|
}
|
||||||
int var_length= cs->charlen(get_ptr() - 1, get_end_of_query());
|
int var_length= cs->charlen(get_ptr() - 1, get_end_of_query());
|
||||||
if (var_length == 1)
|
if (var_length == 1)
|
||||||
{
|
{
|
||||||
|
@ -13885,24 +13885,7 @@ void JOIN::cleanup(bool full)
|
|||||||
for (tab= first_linear_tab(this, WITH_BUSH_ROOTS, WITH_CONST_TABLES); tab;
|
for (tab= first_linear_tab(this, WITH_BUSH_ROOTS, WITH_CONST_TABLES); tab;
|
||||||
tab= next_linear_tab(this, tab, WITH_BUSH_ROOTS))
|
tab= next_linear_tab(this, tab, WITH_BUSH_ROOTS))
|
||||||
{
|
{
|
||||||
if (!tab->table)
|
tab->partial_cleanup();
|
||||||
continue;
|
|
||||||
DBUG_PRINT("info", ("close index: %s.%s alias: %s",
|
|
||||||
tab->table->s->db.str,
|
|
||||||
tab->table->s->table_name.str,
|
|
||||||
tab->table->alias.c_ptr()));
|
|
||||||
if (tab->table->is_created())
|
|
||||||
{
|
|
||||||
tab->table->file->ha_index_or_rnd_end();
|
|
||||||
if (tab->aggr)
|
|
||||||
{
|
|
||||||
int tmp= 0;
|
|
||||||
if ((tmp= tab->table->file->extra(HA_EXTRA_NO_CACHE)))
|
|
||||||
tab->table->file->print_error(tmp, MYF(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delete tab->filesort_result;
|
|
||||||
tab->filesort_result= NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -29035,6 +29018,40 @@ void JOIN::handle_implicit_grouping_with_window_funcs()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
@brief
|
||||||
|
Perform a partial cleanup for the JOIN_TAB structure
|
||||||
|
|
||||||
|
@note
|
||||||
|
this is used to cleanup resources for the re-execution of correlated
|
||||||
|
subqueries.
|
||||||
|
*/
|
||||||
|
void JOIN_TAB::partial_cleanup()
|
||||||
|
{
|
||||||
|
if (!table)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (table->is_created())
|
||||||
|
{
|
||||||
|
table->file->ha_index_or_rnd_end();
|
||||||
|
DBUG_PRINT("info", ("close index: %s.%s alias: %s",
|
||||||
|
table->s->db.str,
|
||||||
|
table->s->table_name.str,
|
||||||
|
table->alias.c_ptr()));
|
||||||
|
if (aggr)
|
||||||
|
{
|
||||||
|
int tmp= 0;
|
||||||
|
if ((tmp= table->file->extra(HA_EXTRA_NO_CACHE)))
|
||||||
|
table->file->print_error(tmp, MYF(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete filesort_result;
|
||||||
|
filesort_result= NULL;
|
||||||
|
free_cache(&read_record);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief
|
@brief
|
||||||
Look for provision of the select_handler interface by a foreign engine
|
Look for provision of the select_handler interface by a foreign engine
|
||||||
|
@ -673,6 +673,8 @@ typedef struct st_join_table {
|
|||||||
bool use_order() const; ///< Use ordering provided by chosen index?
|
bool use_order() const; ///< Use ordering provided by chosen index?
|
||||||
bool sort_table();
|
bool sort_table();
|
||||||
bool remove_duplicates();
|
bool remove_duplicates();
|
||||||
|
|
||||||
|
void partial_cleanup();
|
||||||
void add_keyuses_for_splitting();
|
void add_keyuses_for_splitting();
|
||||||
SplM_plan_info *choose_best_splitting(double record_count,
|
SplM_plan_info *choose_best_splitting(double record_count,
|
||||||
table_map remaining_tables);
|
table_map remaining_tables);
|
||||||
|
@ -4620,7 +4620,7 @@ fill_schema_table_by_open(THD *thd, MEM_ROOT *mem_root,
|
|||||||
Again we don't do this for SHOW COLUMNS/KEYS because
|
Again we don't do this for SHOW COLUMNS/KEYS because
|
||||||
of backward compatibility.
|
of backward compatibility.
|
||||||
*/
|
*/
|
||||||
if (!is_show_fields_or_keys && result &&
|
if (!is_show_fields_or_keys && result && thd->is_error() &&
|
||||||
(thd->get_stmt_da()->sql_errno() == ER_NO_SUCH_TABLE ||
|
(thd->get_stmt_da()->sql_errno() == ER_NO_SUCH_TABLE ||
|
||||||
thd->get_stmt_da()->sql_errno() == ER_WRONG_OBJECT ||
|
thd->get_stmt_da()->sql_errno() == ER_WRONG_OBJECT ||
|
||||||
thd->get_stmt_da()->sql_errno() == ER_NOT_SEQUENCE))
|
thd->get_stmt_da()->sql_errno() == ER_NOT_SEQUENCE))
|
||||||
@ -5932,12 +5932,12 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
|
|||||||
I.e. we are in SELECT FROM INFORMATION_SCHEMA.COLUMS
|
I.e. we are in SELECT FROM INFORMATION_SCHEMA.COLUMS
|
||||||
rather than in SHOW COLUMNS
|
rather than in SHOW COLUMNS
|
||||||
*/
|
*/
|
||||||
|
if (thd->is_error())
|
||||||
convert_error_to_warning(thd);
|
convert_error_to_warning(thd);
|
||||||
res= 0;
|
res= 0;
|
||||||
}
|
}
|
||||||
DBUG_RETURN(res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
show_table= tables->table;
|
show_table= tables->table;
|
||||||
count= 0;
|
count= 0;
|
||||||
ptr= show_table->field;
|
ptr= show_table->field;
|
||||||
|
@ -183,6 +183,17 @@ bool Binary_string::set_hex(const char *str, uint32 len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Binary_string::set_fcvt(double num, uint decimals)
|
||||||
|
{
|
||||||
|
// Assert that `decimals` is small enough to fit into FLOATING_POINT_BUFFER
|
||||||
|
DBUG_ASSERT(decimals < DECIMAL_NOT_SPECIFIED);
|
||||||
|
if (alloc(FLOATING_POINT_BUFFER))
|
||||||
|
return true;
|
||||||
|
length(my_fcvt(num, decimals, Ptr, NULL));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool String::set_real(double num,uint decimals, CHARSET_INFO *cs)
|
bool String::set_real(double num,uint decimals, CHARSET_INFO *cs)
|
||||||
{
|
{
|
||||||
char buff[FLOATING_POINT_BUFFER];
|
char buff[FLOATING_POINT_BUFFER];
|
||||||
|
@ -524,6 +524,7 @@ public:
|
|||||||
|
|
||||||
bool set_hex(ulonglong num);
|
bool set_hex(ulonglong num);
|
||||||
bool set_hex(const char *str, uint32 len);
|
bool set_hex(const char *str, uint32 len);
|
||||||
|
bool set_fcvt(double num, uint decimals);
|
||||||
|
|
||||||
bool copy(); // Alloc string if not alloced
|
bool copy(); // Alloc string if not alloced
|
||||||
bool copy(const Binary_string &s); // Allocate new string
|
bool copy(const Binary_string &s); // Allocate new string
|
||||||
@ -781,6 +782,11 @@ public:
|
|||||||
bool set(longlong num, CHARSET_INFO *cs) { return set_int(num, false, cs); }
|
bool set(longlong num, CHARSET_INFO *cs) { return set_int(num, false, cs); }
|
||||||
bool set(ulonglong num, CHARSET_INFO *cs) { return set_int((longlong)num, true, cs); }
|
bool set(ulonglong num, CHARSET_INFO *cs) { return set_int((longlong)num, true, cs); }
|
||||||
bool set_real(double num,uint decimals, CHARSET_INFO *cs);
|
bool set_real(double num,uint decimals, CHARSET_INFO *cs);
|
||||||
|
bool set_fcvt(double num, uint decimals)
|
||||||
|
{
|
||||||
|
set_charset(&my_charset_latin1);
|
||||||
|
return Binary_string::set_fcvt(num, decimals);
|
||||||
|
}
|
||||||
|
|
||||||
bool set_hex(ulonglong num)
|
bool set_hex(ulonglong num)
|
||||||
{
|
{
|
||||||
|
@ -4647,6 +4647,7 @@ bool Type_handler_temporal_result::
|
|||||||
Item_func_min_max_fix_attributes(THD *thd, Item_func_min_max *func,
|
Item_func_min_max_fix_attributes(THD *thd, Item_func_min_max *func,
|
||||||
Item **items, uint nitems) const
|
Item **items, uint nitems) const
|
||||||
{
|
{
|
||||||
|
DBUG_ASSERT(func->field_type() != MYSQL_TYPE_DATE);
|
||||||
bool rc= Type_handler::Item_func_min_max_fix_attributes(thd, func,
|
bool rc= Type_handler::Item_func_min_max_fix_attributes(thd, func,
|
||||||
items, nitems);
|
items, nitems);
|
||||||
bool is_time= func->field_type() == MYSQL_TYPE_TIME;
|
bool is_time= func->field_type() == MYSQL_TYPE_TIME;
|
||||||
@ -4701,7 +4702,6 @@ bool Type_handler_temporal_result::
|
|||||||
DATETIME DATETIME no conversion
|
DATETIME DATETIME no conversion
|
||||||
DATETIME TIMESTAMP safe conversion
|
DATETIME TIMESTAMP safe conversion
|
||||||
DATETIME DATE safe conversion
|
DATETIME DATE safe conversion
|
||||||
DATE DATE no conversion
|
|
||||||
TIME TIME no conversion
|
TIME TIME no conversion
|
||||||
|
|
||||||
Note, a function cannot return TIMESTAMP if it has non-TIMESTAMP
|
Note, a function cannot return TIMESTAMP if it has non-TIMESTAMP
|
||||||
@ -4718,9 +4718,6 @@ bool Type_handler_temporal_result::
|
|||||||
-------------------- ------------- -------
|
-------------------- ------------- -------
|
||||||
TIMESTAMP TIME Not possible
|
TIMESTAMP TIME Not possible
|
||||||
DATETIME TIME depends on OLD_MODE_ZERO_DATE_TIME_CAST
|
DATETIME TIME depends on OLD_MODE_ZERO_DATE_TIME_CAST
|
||||||
DATE TIMESTAMP Not possible
|
|
||||||
DATE DATETIME Not possible
|
|
||||||
DATE TIME Not possible
|
|
||||||
TIME TIMESTAMP Not possible
|
TIME TIMESTAMP Not possible
|
||||||
TIME DATETIME Not possible
|
TIME DATETIME Not possible
|
||||||
TIME DATE Not possible
|
TIME DATE Not possible
|
||||||
@ -4743,6 +4740,30 @@ bool Type_handler_temporal_result::
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Type_handler_date_common::
|
||||||
|
Item_func_min_max_fix_attributes(THD *thd, Item_func_min_max *func,
|
||||||
|
Item **items, uint nitems) const
|
||||||
|
{
|
||||||
|
func->fix_attributes_date();
|
||||||
|
if (func->maybe_null)
|
||||||
|
return false;
|
||||||
|
/*
|
||||||
|
We cannot trust the generic maybe_null value calculated during fix_fields().
|
||||||
|
If a conversion from non-temoral types to DATE happens,
|
||||||
|
then the result can be NULL (even if all arguments are not NULL).
|
||||||
|
*/
|
||||||
|
for (uint i= 0; i < nitems; i++)
|
||||||
|
{
|
||||||
|
if (items[i]->type_handler()->cmp_type() != TIME_RESULT)
|
||||||
|
{
|
||||||
|
func->maybe_null= true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Type_handler_real_result::
|
bool Type_handler_real_result::
|
||||||
Item_func_min_max_fix_attributes(THD *thd, Item_func_min_max *func,
|
Item_func_min_max_fix_attributes(THD *thd, Item_func_min_max *func,
|
||||||
Item **items, uint nitems) const
|
Item **items, uint nitems) const
|
||||||
|
@ -6145,8 +6145,11 @@ public:
|
|||||||
const char *name,
|
const char *name,
|
||||||
Type_handler_hybrid_field_type *,
|
Type_handler_hybrid_field_type *,
|
||||||
Type_all_attributes *atrr,
|
Type_all_attributes *atrr,
|
||||||
Item **items, uint nitems)
|
Item **items, uint nitems) const
|
||||||
const override;
|
override;
|
||||||
|
bool Item_func_min_max_fix_attributes(THD *thd, Item_func_min_max *func,
|
||||||
|
Item **items, uint nitems) const
|
||||||
|
override;
|
||||||
void Item_param_set_param_func(Item_param *param,
|
void Item_param_set_param_func(Item_param *param,
|
||||||
uchar **pos, ulong len) const override;
|
uchar **pos, ulong len) const override;
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2017, Corporation
|
Copyright (c) 2010, 2020, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -1364,6 +1364,25 @@ bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
|
|||||||
found_rows_for_union= first_sl->options & OPTION_FOUND_ROWS;
|
found_rows_for_union= first_sl->options & OPTION_FOUND_ROWS;
|
||||||
is_union_select= is_unit_op() || fake_select_lex || single_tvc;
|
is_union_select= is_unit_op() || fake_select_lex || single_tvc;
|
||||||
|
|
||||||
|
/*
|
||||||
|
If we are reading UNION output and the UNION is in the
|
||||||
|
IN/ANY/ALL/EXISTS subquery, then ORDER BY is redundant and hence should
|
||||||
|
be removed.
|
||||||
|
Example:
|
||||||
|
select ... col IN (select col2 FROM t1 union select col3 from t2 ORDER BY 1)
|
||||||
|
|
||||||
|
(as for ORDER BY ... LIMIT, it currently not supported inside
|
||||||
|
IN/ALL/ANY subqueries)
|
||||||
|
(For non-UNION this removal of ORDER BY clause is done in
|
||||||
|
check_and_do_in_subquery_rewrites())
|
||||||
|
*/
|
||||||
|
if (item && is_unit_op() &&
|
||||||
|
(item->is_in_predicate() || item->is_exists_predicate()))
|
||||||
|
{
|
||||||
|
global_parameters()->order_list.first= NULL;
|
||||||
|
global_parameters()->order_list.elements= 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* will only optimize once */
|
/* will only optimize once */
|
||||||
if (!bag_set_op_optimized && !is_recursive)
|
if (!bag_set_op_optimized && !is_recursive)
|
||||||
{
|
{
|
||||||
@ -1390,6 +1409,7 @@ bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Global option */
|
/* Global option */
|
||||||
|
|
||||||
if (is_union_select || is_recursive)
|
if (is_union_select || is_recursive)
|
||||||
|
13
sql/table.h
13
sql/table.h
@ -1388,9 +1388,16 @@ public:
|
|||||||
/* number of select if it is derived table */
|
/* number of select if it is derived table */
|
||||||
uint derived_select_number;
|
uint derived_select_number;
|
||||||
/*
|
/*
|
||||||
0 or JOIN_TYPE_{LEFT|RIGHT}. Currently this is only compared to 0.
|
Possible values:
|
||||||
If maybe_null !=0, this table is inner w.r.t. some outer join operation,
|
- 0 by default
|
||||||
and null_row may be true.
|
- JOIN_TYPE_{LEFT|RIGHT} if the table is inner w.r.t an outer join
|
||||||
|
operation
|
||||||
|
- 1 if the SELECT has mixed_implicit_grouping=1. example:
|
||||||
|
select max(col1), col2 from t1. In this case, the query produces
|
||||||
|
one row with all columns having NULL values.
|
||||||
|
|
||||||
|
Interpetation: If maybe_null!=0, all fields of the table are considered
|
||||||
|
NULLable (and have NULL values when null_row=true)
|
||||||
*/
|
*/
|
||||||
uint maybe_null;
|
uint maybe_null;
|
||||||
int current_lock; /* Type of lock on table */
|
int current_lock; /* Type of lock on table */
|
||||||
|
@ -2719,6 +2719,7 @@ main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (opt_skip_write_binlog)
|
if (opt_skip_write_binlog)
|
||||||
|
{
|
||||||
/* If skip_write_binlog is set and wsrep is compiled in we disable
|
/* If skip_write_binlog is set and wsrep is compiled in we disable
|
||||||
sql_log_bin and wsrep_on to avoid Galera replicating below
|
sql_log_bin and wsrep_on to avoid Galera replicating below
|
||||||
truncate table clauses. This will allow user to set different
|
truncate table clauses. This will allow user to set different
|
||||||
@ -2726,14 +2727,8 @@ main(int argc, char **argv)
|
|||||||
printf("set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION SQL_LOG_BIN=?, WSREP_ON=OFF;', 'do ?');\n"
|
printf("set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION SQL_LOG_BIN=?, WSREP_ON=OFF;', 'do ?');\n"
|
||||||
"prepare set_wsrep_write_binlog from @prep1;\n"
|
"prepare set_wsrep_write_binlog from @prep1;\n"
|
||||||
"set @toggle=0; execute set_wsrep_write_binlog using @toggle;\n");
|
"set @toggle=0; execute set_wsrep_write_binlog using @toggle;\n");
|
||||||
|
}
|
||||||
if (argc == 1 && !opt_leap)
|
else
|
||||||
{
|
|
||||||
/* Argument is timezonedir */
|
|
||||||
|
|
||||||
root_name_end= strmake_buf(fullname, argv[0]);
|
|
||||||
|
|
||||||
if(!opt_skip_write_binlog)
|
|
||||||
{
|
{
|
||||||
// Alter time zone tables to InnoDB if wsrep_on is enabled
|
// Alter time zone tables to InnoDB if wsrep_on is enabled
|
||||||
// to allow changes to them to replicate with Galera
|
// to allow changes to them to replicate with Galera
|
||||||
@ -2748,6 +2743,12 @@ main(int argc, char **argv)
|
|||||||
"\\d ;\n");
|
"\\d ;\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argc == 1 && !opt_leap)
|
||||||
|
{
|
||||||
|
/* Argument is timezonedir */
|
||||||
|
|
||||||
|
root_name_end= strmake_buf(fullname, argv[0]);
|
||||||
|
|
||||||
printf("TRUNCATE TABLE time_zone;\n");
|
printf("TRUNCATE TABLE time_zone;\n");
|
||||||
printf("TRUNCATE TABLE time_zone_name;\n");
|
printf("TRUNCATE TABLE time_zone_name;\n");
|
||||||
printf("TRUNCATE TABLE time_zone_transition;\n");
|
printf("TRUNCATE TABLE time_zone_transition;\n");
|
||||||
|
@ -41,9 +41,6 @@ Modified Jan Lindström jan.lindstrom@mariadb.com
|
|||||||
#include "fil0pagecompress.h"
|
#include "fil0pagecompress.h"
|
||||||
#include <my_crypt.h>
|
#include <my_crypt.h>
|
||||||
|
|
||||||
/** Mutex for keys */
|
|
||||||
static ib_mutex_t fil_crypt_key_mutex;
|
|
||||||
|
|
||||||
static bool fil_crypt_threads_inited = false;
|
static bool fil_crypt_threads_inited = false;
|
||||||
|
|
||||||
/** Is encryption enabled/disabled */
|
/** Is encryption enabled/disabled */
|
||||||
@ -105,8 +102,6 @@ UNIV_INTERN
|
|||||||
void
|
void
|
||||||
fil_space_crypt_init()
|
fil_space_crypt_init()
|
||||||
{
|
{
|
||||||
mutex_create(LATCH_ID_FIL_CRYPT_MUTEX, &fil_crypt_key_mutex);
|
|
||||||
|
|
||||||
fil_crypt_throttle_sleep_event = os_event_create(0);
|
fil_crypt_throttle_sleep_event = os_event_create(0);
|
||||||
|
|
||||||
mutex_create(LATCH_ID_FIL_CRYPT_STAT_MUTEX, &crypt_stat_mutex);
|
mutex_create(LATCH_ID_FIL_CRYPT_STAT_MUTEX, &crypt_stat_mutex);
|
||||||
@ -120,7 +115,6 @@ void
|
|||||||
fil_space_crypt_cleanup()
|
fil_space_crypt_cleanup()
|
||||||
{
|
{
|
||||||
os_event_destroy(fil_crypt_throttle_sleep_event);
|
os_event_destroy(fil_crypt_throttle_sleep_event);
|
||||||
mutex_free(&fil_crypt_key_mutex);
|
|
||||||
mutex_free(&crypt_stat_mutex);
|
mutex_free(&crypt_stat_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1455,6 +1449,94 @@ fil_crypt_return_iops(
|
|||||||
fil_crypt_update_total_stat(state);
|
fil_crypt_update_total_stat(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return the next tablespace from rotation_list.
|
||||||
|
@param space previous tablespace (NULL to start from the start)
|
||||||
|
@param recheck whether the removal condition needs to be rechecked after
|
||||||
|
the encryption parameters were changed
|
||||||
|
@param encrypt expected state of innodb_encrypt_tables
|
||||||
|
@return the next tablespace to process (n_pending_ops incremented)
|
||||||
|
@retval NULL if this was the last */
|
||||||
|
inline fil_space_t *fil_system_t::keyrotate_next(fil_space_t *space,
|
||||||
|
bool recheck, bool encrypt)
|
||||||
|
{
|
||||||
|
ut_ad(mutex_own(&mutex));
|
||||||
|
|
||||||
|
sized_ilist<fil_space_t, rotation_list_tag_t>::iterator it=
|
||||||
|
space ? space : rotation_list.begin();
|
||||||
|
const sized_ilist<fil_space_t, rotation_list_tag_t>::iterator end=
|
||||||
|
rotation_list.end();
|
||||||
|
|
||||||
|
if (space)
|
||||||
|
{
|
||||||
|
while (++it != end && (!UT_LIST_GET_LEN(it->chain) || it->is_stopping()));
|
||||||
|
|
||||||
|
/* If one of the encryption threads already started the encryption
|
||||||
|
of the table then don't remove the unencrypted spaces from rotation list
|
||||||
|
|
||||||
|
If there is a change in innodb_encrypt_tables variables value then
|
||||||
|
don't remove the last processed tablespace from the rotation list. */
|
||||||
|
space->release();
|
||||||
|
|
||||||
|
if (!space->referenced() &&
|
||||||
|
(!recheck || space->crypt_data) && !encrypt == !srv_encrypt_tables &&
|
||||||
|
space->is_in_rotation_list)
|
||||||
|
{
|
||||||
|
ut_a(!rotation_list.empty());
|
||||||
|
rotation_list.remove(*space);
|
||||||
|
space->is_in_rotation_list= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (it == end)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
space= &*it;
|
||||||
|
space->acquire();
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return the next tablespace.
|
||||||
|
@param space previous tablespace (NULL to start from the beginning)
|
||||||
|
@param recheck whether the removal condition needs to be rechecked after
|
||||||
|
the encryption parameters were changed
|
||||||
|
@param encrypt expected state of innodb_encrypt_tables
|
||||||
|
@return pointer to the next tablespace (with n_pending_ops incremented)
|
||||||
|
@retval NULL if this was the last */
|
||||||
|
static fil_space_t *fil_space_next(fil_space_t *space, bool recheck,
|
||||||
|
bool encrypt)
|
||||||
|
{
|
||||||
|
mutex_enter(&fil_system.mutex);
|
||||||
|
|
||||||
|
if (!srv_fil_crypt_rotate_key_age)
|
||||||
|
space= fil_system.keyrotate_next(space, recheck, encrypt);
|
||||||
|
else if (!space)
|
||||||
|
{
|
||||||
|
space= UT_LIST_GET_FIRST(fil_system.space_list);
|
||||||
|
/* We can trust that space is not NULL because at least the
|
||||||
|
system tablespace is always present and loaded first. */
|
||||||
|
space->acquire();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Move on to the next fil_space_t */
|
||||||
|
space->release();
|
||||||
|
space= UT_LIST_GET_NEXT(space_list, space);
|
||||||
|
|
||||||
|
/* Skip abnormal tablespaces or those that are being created by
|
||||||
|
fil_ibd_create(), or being dropped. */
|
||||||
|
while (space &&
|
||||||
|
(UT_LIST_GET_LEN(space->chain) == 0 ||
|
||||||
|
space->is_stopping() || space->purpose != FIL_TYPE_TABLESPACE))
|
||||||
|
space= UT_LIST_GET_NEXT(space_list, space);
|
||||||
|
|
||||||
|
if (space)
|
||||||
|
space->acquire();
|
||||||
|
}
|
||||||
|
|
||||||
|
mutex_exit(&fil_system.mutex);
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
/** Search for a space needing rotation
|
/** Search for a space needing rotation
|
||||||
@param[in,out] key_state Key state
|
@param[in,out] key_state Key state
|
||||||
@param[in,out] state Rotation state
|
@param[in,out] state Rotation state
|
||||||
@ -1487,13 +1569,8 @@ static bool fil_crypt_find_space_to_rotate(
|
|||||||
state->space = NULL;
|
state->space = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If key rotation is enabled (default) we iterate all tablespaces.
|
state->space = fil_space_next(state->space, *recheck,
|
||||||
If key rotation is not enabled we iterate only the tablespaces
|
key_state->key_version != 0);
|
||||||
added to keyrotation list. */
|
|
||||||
state->space = srv_fil_crypt_rotate_key_age
|
|
||||||
? fil_space_next(state->space)
|
|
||||||
: fil_system.keyrotate_next(state->space, *recheck,
|
|
||||||
key_state->key_version);
|
|
||||||
|
|
||||||
while (!state->should_shutdown() && state->space) {
|
while (!state->should_shutdown() && state->space) {
|
||||||
/* If there is no crypt data and we have not yet read
|
/* If there is no crypt data and we have not yet read
|
||||||
@ -1511,13 +1588,16 @@ static bool fil_crypt_find_space_to_rotate(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
state->space = srv_fil_crypt_rotate_key_age
|
state->space = fil_space_next(state->space, *recheck,
|
||||||
? fil_space_next(state->space)
|
key_state->key_version != 0);
|
||||||
: fil_system.keyrotate_next(state->space, *recheck,
|
|
||||||
key_state->key_version);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we didn't find any space return iops */
|
if (state->space) {
|
||||||
|
state->space->release();
|
||||||
|
state->space = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* no work to do; release our allocation of I/O capacity */
|
||||||
fil_crypt_return_iops(state);
|
fil_crypt_return_iops(state);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -2172,13 +2252,11 @@ static void fil_crypt_rotation_list_fill()
|
|||||||
if (!space->size) {
|
if (!space->size) {
|
||||||
/* Protect the tablespace while we may
|
/* Protect the tablespace while we may
|
||||||
release fil_system.mutex. */
|
release fil_system.mutex. */
|
||||||
space->n_pending_ops++;
|
ut_d(space->acquire());
|
||||||
#ifndef DBUG_OFF
|
|
||||||
ut_d(const fil_space_t* s=)
|
ut_d(const fil_space_t* s=)
|
||||||
fil_system.read_page0(space->id);
|
fil_system.read_page0(space->id);
|
||||||
ut_ad(!s || s == space);
|
ut_ad(!s || s == space);
|
||||||
#endif
|
ut_d(space->release());
|
||||||
space->n_pending_ops--;
|
|
||||||
if (!space->size) {
|
if (!space->size) {
|
||||||
/* Page 0 was not loaded.
|
/* Page 0 was not loaded.
|
||||||
Skip this tablespace. */
|
Skip this tablespace. */
|
||||||
|
@ -4395,120 +4395,6 @@ test_make_filepath()
|
|||||||
#endif /* UNIV_ENABLE_UNIT_TEST_MAKE_FILEPATH */
|
#endif /* UNIV_ENABLE_UNIT_TEST_MAKE_FILEPATH */
|
||||||
/* @} */
|
/* @} */
|
||||||
|
|
||||||
/** Return the next fil_space_t.
|
|
||||||
Once started, the caller must keep calling this until it returns NULL.
|
|
||||||
fil_space_t::acquire() and fil_space_t::release() are invoked here which
|
|
||||||
blocks a concurrent operation from dropping the tablespace.
|
|
||||||
@param[in] prev_space Pointer to the previous fil_space_t.
|
|
||||||
If NULL, use the first fil_space_t on fil_system.space_list.
|
|
||||||
@return pointer to the next fil_space_t.
|
|
||||||
@retval NULL if this was the last*/
|
|
||||||
fil_space_t*
|
|
||||||
fil_space_next(fil_space_t* prev_space)
|
|
||||||
{
|
|
||||||
fil_space_t* space=prev_space;
|
|
||||||
|
|
||||||
mutex_enter(&fil_system.mutex);
|
|
||||||
|
|
||||||
if (!space) {
|
|
||||||
space = UT_LIST_GET_FIRST(fil_system.space_list);
|
|
||||||
} else {
|
|
||||||
ut_a(space->referenced());
|
|
||||||
|
|
||||||
/* Move on to the next fil_space_t */
|
|
||||||
space->release();
|
|
||||||
space = UT_LIST_GET_NEXT(space_list, space);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Skip spaces that are being created by
|
|
||||||
fil_ibd_create(), or dropped, or !tablespace. */
|
|
||||||
while (space != NULL
|
|
||||||
&& (UT_LIST_GET_LEN(space->chain) == 0
|
|
||||||
|| space->is_stopping()
|
|
||||||
|| space->purpose != FIL_TYPE_TABLESPACE)) {
|
|
||||||
space = UT_LIST_GET_NEXT(space_list, space);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (space != NULL) {
|
|
||||||
space->acquire();
|
|
||||||
}
|
|
||||||
|
|
||||||
mutex_exit(&fil_system.mutex);
|
|
||||||
|
|
||||||
return(space);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Remove space from key rotation list if there are no more
|
|
||||||
pending operations.
|
|
||||||
@param[in,out] space Tablespace */
|
|
||||||
static
|
|
||||||
void
|
|
||||||
fil_space_remove_from_keyrotation(fil_space_t* space)
|
|
||||||
{
|
|
||||||
ut_ad(mutex_own(&fil_system.mutex));
|
|
||||||
ut_ad(space);
|
|
||||||
|
|
||||||
if (!space->referenced() && space->is_in_rotation_list) {
|
|
||||||
space->is_in_rotation_list = false;
|
|
||||||
ut_a(!fil_system.rotation_list.empty());
|
|
||||||
fil_system.rotation_list.remove(*space);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Return the next fil_space_t from key rotation list.
|
|
||||||
Once started, the caller must keep calling this until it returns NULL.
|
|
||||||
fil_space_t::acquire() and fil_space_t::release() are invoked here which
|
|
||||||
blocks a concurrent operation from dropping the tablespace.
|
|
||||||
@param[in] prev_space Pointer to the previous fil_space_t.
|
|
||||||
If NULL, use the first fil_space_t on fil_system.space_list.
|
|
||||||
@param[in] recheck recheck of the tablespace is needed or
|
|
||||||
still encryption thread does write page0 for it
|
|
||||||
@param[in] key_version key version of the key state thread
|
|
||||||
@return pointer to the next fil_space_t.
|
|
||||||
@retval NULL if this was the last */
|
|
||||||
fil_space_t *fil_system_t::keyrotate_next(fil_space_t *prev_space,
|
|
||||||
bool recheck, uint key_version)
|
|
||||||
{
|
|
||||||
mutex_enter(&fil_system.mutex);
|
|
||||||
|
|
||||||
/* If one of the encryption threads already started the encryption
|
|
||||||
of the table then don't remove the unencrypted spaces from rotation list
|
|
||||||
|
|
||||||
If there is a change in innodb_encrypt_tables variables value then
|
|
||||||
don't remove the last processed tablespace from the rotation list. */
|
|
||||||
const bool remove= (!recheck || prev_space->crypt_data) &&
|
|
||||||
!key_version == !srv_encrypt_tables;
|
|
||||||
sized_ilist<fil_space_t, rotation_list_tag_t>::iterator it=
|
|
||||||
prev_space ? prev_space : fil_system.rotation_list.end();
|
|
||||||
|
|
||||||
if (it == fil_system.rotation_list.end())
|
|
||||||
it= fil_system.rotation_list.begin();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Move on to the next fil_space_t */
|
|
||||||
prev_space->release();
|
|
||||||
|
|
||||||
++it;
|
|
||||||
|
|
||||||
while (it != fil_system.rotation_list.end() &&
|
|
||||||
(UT_LIST_GET_LEN(it->chain) == 0 || it->is_stopping()))
|
|
||||||
++it;
|
|
||||||
|
|
||||||
if (remove)
|
|
||||||
fil_space_remove_from_keyrotation(prev_space);
|
|
||||||
}
|
|
||||||
|
|
||||||
fil_space_t *space= it == fil_system.rotation_list.end() ? NULL : &*it;
|
|
||||||
|
|
||||||
if (space)
|
|
||||||
space->acquire();
|
|
||||||
|
|
||||||
mutex_exit(&fil_system.mutex);
|
|
||||||
return space;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Determine the block size of the data file.
|
/** Determine the block size of the data file.
|
||||||
@param[in] space tablespace
|
@param[in] space tablespace
|
||||||
@param[in] offset page number
|
@param[in] offset page number
|
||||||
|
@ -1308,24 +1308,15 @@ public:
|
|||||||
@retval NULL if the tablespace does not exist or cannot be read */
|
@retval NULL if the tablespace does not exist or cannot be read */
|
||||||
fil_space_t* read_page0(ulint id);
|
fil_space_t* read_page0(ulint id);
|
||||||
|
|
||||||
/** Return the next fil_space_t from key rotation list.
|
/** Return the next tablespace from rotation_list.
|
||||||
Once started, the caller must keep calling this until it returns NULL.
|
@param space previous tablespace (NULL to start from the start)
|
||||||
fil_space_acquire() and fil_space_t::release() are invoked here, which
|
@param recheck whether the removal condition needs to be rechecked after
|
||||||
blocks a concurrent operation from dropping the tablespace.
|
the encryption parameters were changed
|
||||||
@param[in] prev_space Previous tablespace or NULL to start
|
@param encrypt expected state of innodb_encrypt_tables
|
||||||
from beginning of fil_system->rotation
|
@return the next tablespace to process (n_pending_ops incremented)
|
||||||
list
|
|
||||||
@param[in] recheck recheck of the tablespace is needed or
|
|
||||||
still encryption thread does write page0
|
|
||||||
for it
|
|
||||||
@param[in] key_version key version of the key state thread
|
|
||||||
If NULL, use the first fil_space_t on fil_system->space_list.
|
|
||||||
@return pointer to the next fil_space_t.
|
|
||||||
@retval NULL if this was the last */
|
@retval NULL if this was the last */
|
||||||
fil_space_t* keyrotate_next(
|
inline fil_space_t* keyrotate_next(fil_space_t *space, bool recheck,
|
||||||
fil_space_t* prev_space,
|
bool encrypt);
|
||||||
bool remove,
|
|
||||||
uint key_version);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** The tablespace memory cache. */
|
/** The tablespace memory cache. */
|
||||||
@ -1493,33 +1484,6 @@ when it could be dropped concurrently.
|
|||||||
fil_space_t*
|
fil_space_t*
|
||||||
fil_space_acquire_for_io(ulint id);
|
fil_space_acquire_for_io(ulint id);
|
||||||
|
|
||||||
/** Return the next fil_space_t.
|
|
||||||
Once started, the caller must keep calling this until it returns NULL.
|
|
||||||
fil_space_acquire() and fil_space_t::release() are invoked here which
|
|
||||||
blocks a concurrent operation from dropping the tablespace.
|
|
||||||
@param[in,out] prev_space Pointer to the previous fil_space_t.
|
|
||||||
If NULL, use the first fil_space_t on fil_system.space_list.
|
|
||||||
@return pointer to the next fil_space_t.
|
|
||||||
@retval NULL if this was the last */
|
|
||||||
fil_space_t*
|
|
||||||
fil_space_next(
|
|
||||||
fil_space_t* prev_space)
|
|
||||||
MY_ATTRIBUTE((warn_unused_result));
|
|
||||||
|
|
||||||
/** Return the next fil_space_t from key rotation list.
|
|
||||||
Once started, the caller must keep calling this until it returns NULL.
|
|
||||||
fil_space_acquire() and fil_space_t::release() are invoked here which
|
|
||||||
blocks a concurrent operation from dropping the tablespace.
|
|
||||||
@param[in,out] prev_space Pointer to the previous fil_space_t.
|
|
||||||
If NULL, use the first fil_space_t on fil_system.space_list.
|
|
||||||
@param[in] remove Whether to remove the previous tablespace from
|
|
||||||
the rotation list
|
|
||||||
@return pointer to the next fil_space_t.
|
|
||||||
@retval NULL if this was the last*/
|
|
||||||
fil_space_t*
|
|
||||||
fil_space_keyrotate_next(fil_space_t* prev_space, bool remove)
|
|
||||||
MY_ATTRIBUTE((warn_unused_result));
|
|
||||||
|
|
||||||
/** Replay a file rename operation if possible.
|
/** Replay a file rename operation if possible.
|
||||||
@param[in] space_id tablespace identifier
|
@param[in] space_id tablespace identifier
|
||||||
@param[in] name old file name
|
@param[in] name old file name
|
||||||
|
@ -357,7 +357,6 @@ enum latch_id_t {
|
|||||||
LATCH_ID_SCRUB_STAT_MUTEX,
|
LATCH_ID_SCRUB_STAT_MUTEX,
|
||||||
LATCH_ID_DEFRAGMENT_MUTEX,
|
LATCH_ID_DEFRAGMENT_MUTEX,
|
||||||
LATCH_ID_BTR_DEFRAGMENT_MUTEX,
|
LATCH_ID_BTR_DEFRAGMENT_MUTEX,
|
||||||
LATCH_ID_FIL_CRYPT_MUTEX,
|
|
||||||
LATCH_ID_FIL_CRYPT_STAT_MUTEX,
|
LATCH_ID_FIL_CRYPT_STAT_MUTEX,
|
||||||
LATCH_ID_FIL_CRYPT_DATA_MUTEX,
|
LATCH_ID_FIL_CRYPT_DATA_MUTEX,
|
||||||
LATCH_ID_FIL_CRYPT_THREADS_MUTEX,
|
LATCH_ID_FIL_CRYPT_THREADS_MUTEX,
|
||||||
|
@ -730,7 +730,7 @@ lock_rec_has_to_wait(
|
|||||||
/* if BF thread is locking and has conflict with another BF
|
/* if BF thread is locking and has conflict with another BF
|
||||||
thread, we need to look at trx ordering and lock types */
|
thread, we need to look at trx ordering and lock types */
|
||||||
if (wsrep_thd_is_BF(trx->mysql_thd, FALSE)
|
if (wsrep_thd_is_BF(trx->mysql_thd, FALSE)
|
||||||
&& wsrep_thd_is_BF(lock2->trx->mysql_thd, TRUE)) {
|
&& wsrep_thd_is_BF(lock2->trx->mysql_thd, FALSE)) {
|
||||||
mtr_t mtr;
|
mtr_t mtr;
|
||||||
|
|
||||||
if (UNIV_UNLIKELY(wsrep_debug)) {
|
if (UNIV_UNLIKELY(wsrep_debug)) {
|
||||||
@ -1078,7 +1078,7 @@ wsrep_kill_victim(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
my_bool bf_other = wsrep_thd_is_BF(lock->trx->mysql_thd, TRUE);
|
my_bool bf_other = wsrep_thd_is_BF(lock->trx->mysql_thd, FALSE);
|
||||||
mtr_t mtr;
|
mtr_t mtr;
|
||||||
|
|
||||||
if ((!bf_other) ||
|
if ((!bf_other) ||
|
||||||
@ -1402,7 +1402,7 @@ lock_rec_create_low(
|
|||||||
lock_t *hash = (lock_t *)c_lock->hash;
|
lock_t *hash = (lock_t *)c_lock->hash;
|
||||||
lock_t *prev = NULL;
|
lock_t *prev = NULL;
|
||||||
|
|
||||||
while (hash && wsrep_thd_is_BF(hash->trx->mysql_thd, TRUE)
|
while (hash && wsrep_thd_is_BF(hash->trx->mysql_thd, FALSE)
|
||||||
&& wsrep_thd_order_before(hash->trx->mysql_thd,
|
&& wsrep_thd_order_before(hash->trx->mysql_thd,
|
||||||
trx->mysql_thd)) {
|
trx->mysql_thd)) {
|
||||||
prev = hash;
|
prev = hash;
|
||||||
@ -1798,11 +1798,9 @@ lock_rec_add_to_queue(
|
|||||||
= lock_rec_other_has_expl_req(
|
= lock_rec_other_has_expl_req(
|
||||||
mode, block, false, heap_no, trx);
|
mode, block, false, heap_no, trx);
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
//ut_a(!other_lock || (wsrep_thd_is_BF(trx->mysql_thd, FALSE) &&
|
|
||||||
// wsrep_thd_is_BF(other_lock->trx->mysql_thd, TRUE)));
|
|
||||||
if (other_lock && trx->is_wsrep() &&
|
if (other_lock && trx->is_wsrep() &&
|
||||||
!wsrep_thd_is_BF(trx->mysql_thd, FALSE) &&
|
!wsrep_thd_is_BF(trx->mysql_thd, FALSE) &&
|
||||||
!wsrep_thd_is_BF(other_lock->trx->mysql_thd, TRUE)) {
|
!wsrep_thd_is_BF(other_lock->trx->mysql_thd, FALSE)) {
|
||||||
|
|
||||||
ib::info() << "WSREP BF lock conflict for my lock:\n BF:" <<
|
ib::info() << "WSREP BF lock conflict for my lock:\n BF:" <<
|
||||||
((wsrep_thd_is_BF(trx->mysql_thd, FALSE)) ? "BF" : "normal") << " exec: " <<
|
((wsrep_thd_is_BF(trx->mysql_thd, FALSE)) ? "BF" : "normal") << " exec: " <<
|
||||||
@ -2013,6 +2011,7 @@ lock_rec_has_to_wait_in_queue(
|
|||||||
ulint bit_offset;
|
ulint bit_offset;
|
||||||
hash_table_t* hash;
|
hash_table_t* hash;
|
||||||
|
|
||||||
|
ut_ad(wait_lock);
|
||||||
ut_ad(lock_mutex_own());
|
ut_ad(lock_mutex_own());
|
||||||
ut_ad(lock_get_wait(wait_lock));
|
ut_ad(lock_get_wait(wait_lock));
|
||||||
ut_ad(lock_get_type_low(wait_lock) == LOCK_REC);
|
ut_ad(lock_get_type_low(wait_lock) == LOCK_REC);
|
||||||
@ -2027,9 +2026,11 @@ lock_rec_has_to_wait_in_queue(
|
|||||||
hash = lock_hash_get(wait_lock->type_mode);
|
hash = lock_hash_get(wait_lock->type_mode);
|
||||||
|
|
||||||
for (lock = lock_rec_get_first_on_page_addr(hash, space, page_no);
|
for (lock = lock_rec_get_first_on_page_addr(hash, space, page_no);
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
lock &&
|
||||||
|
#endif
|
||||||
lock != wait_lock;
|
lock != wait_lock;
|
||||||
lock = lock_rec_get_next_on_page_const(lock)) {
|
lock = lock_rec_get_next_on_page_const(lock)) {
|
||||||
|
|
||||||
const byte* p = (const byte*) &lock[1];
|
const byte* p = (const byte*) &lock[1];
|
||||||
|
|
||||||
if (heap_no < lock_rec_get_n_bits(lock)
|
if (heap_no < lock_rec_get_n_bits(lock)
|
||||||
@ -2037,7 +2038,8 @@ lock_rec_has_to_wait_in_queue(
|
|||||||
&& lock_has_to_wait(wait_lock, lock)) {
|
&& lock_has_to_wait(wait_lock, lock)) {
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (wsrep_thd_is_BF(wait_lock->trx->mysql_thd, FALSE) &&
|
if (wsrep_thd_is_BF(wait_lock->trx->mysql_thd, FALSE) &&
|
||||||
wsrep_thd_is_BF(lock->trx->mysql_thd, TRUE)) {
|
wsrep_thd_is_BF(lock->trx->mysql_thd, FALSE)) {
|
||||||
|
|
||||||
if (UNIV_UNLIKELY(wsrep_debug)) {
|
if (UNIV_UNLIKELY(wsrep_debug)) {
|
||||||
mtr_t mtr;
|
mtr_t mtr;
|
||||||
ib::info() << "WSREP: waiting BF trx: " << ib::hex(wait_lock->trx->id)
|
ib::info() << "WSREP: waiting BF trx: " << ib::hex(wait_lock->trx->id)
|
||||||
@ -6565,7 +6567,7 @@ DeadlockChecker::select_victim() const
|
|||||||
/* The joining transaction is 'smaller',
|
/* The joining transaction is 'smaller',
|
||||||
choose it as the victim and roll it back. */
|
choose it as the victim and roll it back. */
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (wsrep_thd_is_BF(m_start->mysql_thd, TRUE)) {
|
if (wsrep_thd_is_BF(m_start->mysql_thd, FALSE)) {
|
||||||
return(m_wait_lock->trx);
|
return(m_wait_lock->trx);
|
||||||
}
|
}
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
@ -6573,7 +6575,7 @@ DeadlockChecker::select_victim() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (wsrep_thd_is_BF(m_wait_lock->trx->mysql_thd, TRUE)) {
|
if (wsrep_thd_is_BF(m_wait_lock->trx->mysql_thd, FALSE)) {
|
||||||
return(m_start);
|
return(m_start);
|
||||||
}
|
}
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
|
@ -1449,8 +1449,6 @@ sync_latch_meta_init()
|
|||||||
PFS_NOT_INSTRUMENTED);
|
PFS_NOT_INSTRUMENTED);
|
||||||
LATCH_ADD_MUTEX(BTR_DEFRAGMENT_MUTEX, SYNC_NO_ORDER_CHECK,
|
LATCH_ADD_MUTEX(BTR_DEFRAGMENT_MUTEX, SYNC_NO_ORDER_CHECK,
|
||||||
PFS_NOT_INSTRUMENTED);
|
PFS_NOT_INSTRUMENTED);
|
||||||
LATCH_ADD_MUTEX(FIL_CRYPT_MUTEX, SYNC_NO_ORDER_CHECK,
|
|
||||||
PFS_NOT_INSTRUMENTED);
|
|
||||||
LATCH_ADD_MUTEX(FIL_CRYPT_STAT_MUTEX, SYNC_NO_ORDER_CHECK,
|
LATCH_ADD_MUTEX(FIL_CRYPT_STAT_MUTEX, SYNC_NO_ORDER_CHECK,
|
||||||
PFS_NOT_INSTRUMENTED);
|
PFS_NOT_INSTRUMENTED);
|
||||||
LATCH_ADD_MUTEX(FIL_CRYPT_DATA_MUTEX, SYNC_NO_ORDER_CHECK,
|
LATCH_ADD_MUTEX(FIL_CRYPT_DATA_MUTEX, SYNC_NO_ORDER_CHECK,
|
||||||
|
@ -812,6 +812,24 @@ internal_str2dec(const char *from, decimal_t *to, char **end, my_bool fixed)
|
|||||||
while (s < end_of_string && my_isdigit(&my_charset_latin1, *s))
|
while (s < end_of_string && my_isdigit(&my_charset_latin1, *s))
|
||||||
s++;
|
s++;
|
||||||
intg= (int) (s-s1);
|
intg= (int) (s-s1);
|
||||||
|
/*
|
||||||
|
If the integer part is long enough and it has multiple leading zeros,
|
||||||
|
let's trim them, so this expression can return 1 without overflowing:
|
||||||
|
CAST(CONCAT(REPEAT('0',90),'1') AS DECIMAL(10))
|
||||||
|
*/
|
||||||
|
if (intg > DIG_PER_DEC1 && s1[0] == '0' && s1[1] == '0')
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Keep at least one digit, to avoid an empty string.
|
||||||
|
So we trim '0000' to '0' rather than to ''.
|
||||||
|
Otherwise the below code (converting digits to to->buf)
|
||||||
|
would fail on a fatal error.
|
||||||
|
*/
|
||||||
|
const char *iend= s - 1;
|
||||||
|
for ( ; s1 < iend && *s1 == '0'; s1++)
|
||||||
|
{ }
|
||||||
|
intg= (int) (s-s1);
|
||||||
|
}
|
||||||
if (s < end_of_string && *s=='.')
|
if (s < end_of_string && *s=='.')
|
||||||
{
|
{
|
||||||
endp= s+1;
|
endp= s+1;
|
||||||
|
@ -78,6 +78,7 @@ static my_bool has_no_data(Vio *vio __attribute__((unused)))
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int vio_pipe_shutdown(Vio *vio, int how)
|
int vio_pipe_shutdown(Vio *vio, int how)
|
||||||
{
|
{
|
||||||
|
vio->shutdown_flag= how;
|
||||||
return CancelIoEx(vio->hPipe, NULL);
|
return CancelIoEx(vio->hPipe, NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -75,6 +75,9 @@ size_t vio_read_pipe(Vio *vio, uchar *buf, size_t count)
|
|||||||
size_t ret= (size_t) -1;
|
size_t ret= (size_t) -1;
|
||||||
DBUG_ENTER("vio_read_pipe");
|
DBUG_ENTER("vio_read_pipe");
|
||||||
|
|
||||||
|
if (vio->shutdown_flag)
|
||||||
|
return ret;
|
||||||
|
|
||||||
disable_iocp_notification(&vio->overlapped);
|
disable_iocp_notification(&vio->overlapped);
|
||||||
|
|
||||||
/* Attempt to read from the pipe (overlapped I/O). */
|
/* Attempt to read from the pipe (overlapped I/O). */
|
||||||
@ -85,8 +88,11 @@ size_t vio_read_pipe(Vio *vio, uchar *buf, size_t count)
|
|||||||
}
|
}
|
||||||
/* Read operation is pending completion asynchronously? */
|
/* Read operation is pending completion asynchronously? */
|
||||||
else if (GetLastError() == ERROR_IO_PENDING)
|
else if (GetLastError() == ERROR_IO_PENDING)
|
||||||
|
{
|
||||||
|
if (vio->shutdown_flag)
|
||||||
|
CancelIo(vio->hPipe);
|
||||||
ret= wait_overlapped_result(vio, vio->read_timeout);
|
ret= wait_overlapped_result(vio, vio->read_timeout);
|
||||||
|
}
|
||||||
enable_iocp_notification(&vio->overlapped);
|
enable_iocp_notification(&vio->overlapped);
|
||||||
|
|
||||||
DBUG_RETURN(ret);
|
DBUG_RETURN(ret);
|
||||||
@ -99,6 +105,8 @@ size_t vio_write_pipe(Vio *vio, const uchar *buf, size_t count)
|
|||||||
size_t ret= (size_t) -1;
|
size_t ret= (size_t) -1;
|
||||||
DBUG_ENTER("vio_write_pipe");
|
DBUG_ENTER("vio_write_pipe");
|
||||||
|
|
||||||
|
if (vio->shutdown_flag == SHUT_RDWR)
|
||||||
|
return ret;
|
||||||
disable_iocp_notification(&vio->overlapped);
|
disable_iocp_notification(&vio->overlapped);
|
||||||
/* Attempt to write to the pipe (overlapped I/O). */
|
/* Attempt to write to the pipe (overlapped I/O). */
|
||||||
if (WriteFile(vio->hPipe, buf, (DWORD)count, &transferred, &vio->overlapped))
|
if (WriteFile(vio->hPipe, buf, (DWORD)count, &transferred, &vio->overlapped))
|
||||||
@ -108,8 +116,11 @@ size_t vio_write_pipe(Vio *vio, const uchar *buf, size_t count)
|
|||||||
}
|
}
|
||||||
/* Write operation is pending completion asynchronously? */
|
/* Write operation is pending completion asynchronously? */
|
||||||
else if (GetLastError() == ERROR_IO_PENDING)
|
else if (GetLastError() == ERROR_IO_PENDING)
|
||||||
|
{
|
||||||
|
if (vio->shutdown_flag == SHUT_RDWR)
|
||||||
|
CancelIo(vio->hPipe);
|
||||||
ret= wait_overlapped_result(vio, vio->write_timeout);
|
ret= wait_overlapped_result(vio, vio->write_timeout);
|
||||||
|
}
|
||||||
enable_iocp_notification(&vio->overlapped);
|
enable_iocp_notification(&vio->overlapped);
|
||||||
DBUG_RETURN(ret);
|
DBUG_RETURN(ret);
|
||||||
}
|
}
|
||||||
@ -129,7 +140,6 @@ int vio_close_pipe(Vio *vio)
|
|||||||
BOOL ret;
|
BOOL ret;
|
||||||
DBUG_ENTER("vio_close_pipe");
|
DBUG_ENTER("vio_close_pipe");
|
||||||
|
|
||||||
CancelIo(vio->hPipe);
|
|
||||||
CloseHandle(vio->overlapped.hEvent);
|
CloseHandle(vio->overlapped.hEvent);
|
||||||
ret= CloseHandle(vio->hPipe);
|
ret= CloseHandle(vio->hPipe);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user