Commit 6f707430 authored by Sergei Golubchik's avatar Sergei Golubchik

cleanup: copy RAII helpers from 10.5, cleanup test

parent 4568a72c
call mtr.add_suppression("table or database name 't-1'"); call mtr.add_suppression("table or database name 't-1'");
drop table if exists t1,t2,t3,t4,t5;
drop database if exists mysqltest;
drop view if exists v1;
create table t1 (b char(0)); create table t1 (b char(0));
insert into t1 values (""),(null); insert into t1 values (""),(null);
select * from t1; select * from t1;
...@@ -2066,10 +2063,21 @@ alter table t1 add ...@@ -2066,10 +2063,21 @@ alter table t1 add
key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'; key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';
ERROR HY000: Cannot create table `t1`: index information is too long. Decrease number of indexes or use shorter index names or shorter comments. ERROR HY000: Cannot create table `t1`: index information is too long. Decrease number of indexes or use shorter index names or shorter comments.
drop table t1; drop table t1;
End of 5.5 tests #
# End of 5.5 tests
#
#
# MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS
#
create table t1; create table t1;
ERROR 42000: A table must have at least 1 column ERROR 42000: A table must have at least 1 column
#
# MDEV-11231 Server crashes in check_duplicate_key on CREATE TABLE ... SELECT
#
create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j; create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j;
Warnings: Warnings:
Note 1831 Duplicate index `i_2`. This is deprecated and will be disallowed in a future release Note 1831 Duplicate index `i_2`. This is deprecated and will be disallowed in a future release
drop table t1; drop table t1;
#
# End of 10.0 tests
#
...@@ -5,12 +5,6 @@ call mtr.add_suppression("table or database name 't-1'"); ...@@ -5,12 +5,6 @@ call mtr.add_suppression("table or database name 't-1'");
# Check some special create statements. # Check some special create statements.
# #
--disable_warnings
drop table if exists t1,t2,t3,t4,t5;
drop database if exists mysqltest;
drop view if exists v1;
--enable_warnings
create table t1 (b char(0)); create table t1 (b char(0));
insert into t1 values (""),(null); insert into t1 values (""),(null);
select * from t1; select * from t1;
...@@ -29,30 +23,30 @@ drop table t1; ...@@ -29,30 +23,30 @@ drop table t1;
# Test of some CREATE TABLE'S that should fail # Test of some CREATE TABLE'S that should fail
# #
--error 1146 --error ER_NO_SUCH_TABLE
create table t2 engine=heap select * from t1; create table t2 engine=heap select * from t1;
--error 1146 --error ER_NO_SUCH_TABLE
create table t2 select auto+1 from t1; create table t2 select auto+1 from t1;
drop table if exists t1,t2; drop table if exists t1,t2;
--error 1167 --error ER_WRONG_KEY_COLUMN
create table t1 (b char(0) not null, index(b)); create table t1 (b char(0) not null, index(b));
--error 1163 --error ER_TABLE_CANT_HANDLE_BLOB
create table t1 (a int not null,b text) engine=heap; create table t1 (a int not null,b text) engine=heap;
drop table if exists t1; drop table if exists t1;
--error 1075 --error ER_WRONG_AUTO_KEY
create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap; create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap;
-- error 1049 --error ER_BAD_DB_ERROR
create table not_existing_database.test (a int); create table not_existing_database.test (a int);
create table `a/a` (a int); create table `a/a` (a int);
show create table `a/a`; show create table `a/a`;
create table t1 like `a/a`; create table t1 like `a/a`;
drop table `a/a`; drop table `a/a`;
drop table `t1`; drop table `t1`;
--error 1103 --error ER_WRONG_TABLE_NAME
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int); create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int);
--error 1059 --error ER_TOO_LONG_IDENT
create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int); create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int);
# #
...@@ -62,17 +56,17 @@ create table t1 (a datetime default now()); ...@@ -62,17 +56,17 @@ create table t1 (a datetime default now());
drop table t1; drop table t1;
create table t1 (a datetime on update now()); create table t1 (a datetime on update now());
drop table t1; drop table t1;
--error 1067 --error ER_INVALID_DEFAULT
create table t1 (a int default 100 auto_increment); create table t1 (a int default 100 auto_increment);
--error 1067 --error ER_INVALID_DEFAULT
create table t1 (a tinyint default 1000); create table t1 (a tinyint default 1000);
--error 1067 --error ER_INVALID_DEFAULT
create table t1 (a varchar(5) default 'abcdef'); create table t1 (a varchar(5) default 'abcdef');
create table t1 (a varchar(5) default 'abcde'); create table t1 (a varchar(5) default 'abcde');
insert into t1 values(); insert into t1 values();
select * from t1; select * from t1;
--error 1067 --error ER_INVALID_DEFAULT
SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR
alter table t1 alter column a set default 'abcdef'; alter table t1 alter column a set default 'abcdef';
drop table t1; drop table t1;
...@@ -97,13 +91,13 @@ create table mysqltest.test2$ (a int); ...@@ -97,13 +91,13 @@ create table mysqltest.test2$ (a int);
drop table mysqltest.test2$; drop table mysqltest.test2$;
drop database mysqltest; drop database mysqltest;
--error 1103 --error ER_WRONG_TABLE_NAME
create table `` (a int); create table `` (a int);
--error 1103 --error ER_WRONG_TABLE_NAME
drop table if exists ``; drop table if exists ``;
--error 1166 --error ER_WRONG_COLUMN_NAME
create table t1 (`` int); create table t1 (`` int);
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
create table t1 (i int, index `` (i)); create table t1 (i int, index `` (i));
# #
...@@ -158,13 +152,13 @@ create table t2 (a int) select * from t1; ...@@ -158,13 +152,13 @@ create table t2 (a int) select * from t1;
describe t1; describe t1;
describe t2; describe t2;
drop table if exists t2; drop table if exists t2;
--error 1060 --error ER_DUP_FIELDNAME
create table t2 (a int, a float) select * from t1; create table t2 (a int, a float) select * from t1;
drop table if exists t2; drop table if exists t2;
--error 1060 --error ER_DUP_FIELDNAME
create table t2 (a int) select a as b, a+1 as b from t1; create table t2 (a int) select a as b, a+1 as b from t1;
drop table if exists t2; drop table if exists t2;
--error 1060 --error ER_DUP_FIELDNAME
create table t2 (b int) select a as b, a+1 as b from t1; create table t2 (b int) select a as b, a+1 as b from t1;
drop table if exists t1,t2; drop table if exists t1,t2;
...@@ -176,7 +170,7 @@ CREATE TABLE t1 (a int not null); ...@@ -176,7 +170,7 @@ CREATE TABLE t1 (a int not null);
INSERT INTO t1 values (1),(2),(1); INSERT INTO t1 values (1),(2),(1);
--error ER_DUP_ENTRY --error ER_DUP_ENTRY
CREATE TABLE t2 (primary key(a)) SELECT * FROM t1; CREATE TABLE t2 (primary key(a)) SELECT * FROM t1;
--error 1146 --error ER_NO_SUCH_TABLE
SELECT * from t2; SELECT * from t2;
DROP TABLE t1; DROP TABLE t1;
DROP TABLE IF EXISTS t2; DROP TABLE IF EXISTS t2;
...@@ -202,7 +196,7 @@ SELECT @@storage_engine; ...@@ -202,7 +196,7 @@ SELECT @@storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
show create table t1; show create table t1;
drop table t1; drop table t1;
--error 1286 --error ER_UNKNOWN_STORAGE_ENGINE
SET SESSION storage_engine="gemini"; SET SESSION storage_engine="gemini";
SELECT @@storage_engine; SELECT @@storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
...@@ -216,11 +210,11 @@ drop table t1; ...@@ -216,11 +210,11 @@ drop table t1;
# #
create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2)); create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2));
insert into t1 values ("a", 1), ("b", 2); insert into t1 values ("a", 1), ("b", 2);
--error 1048 --error ER_BAD_NULL_ERROR
insert into t1 values ("c", NULL); insert into t1 values ("c", NULL);
--error 1048 --error ER_BAD_NULL_ERROR
insert into t1 values (NULL, 3); insert into t1 values (NULL, 3);
--error 1048 --error ER_BAD_NULL_ERROR
insert into t1 values (NULL, NULL); insert into t1 values (NULL, NULL);
drop table t1; drop table t1;
...@@ -262,11 +256,11 @@ drop table t1; ...@@ -262,11 +256,11 @@ drop table t1;
# "Table truncated when creating another table name with Spaces" # "Table truncated when creating another table name with Spaces"
# #
--error 1103 --error ER_WRONG_TABLE_NAME
create table `t1 `(a int); create table `t1 `(a int);
--error 1102 --error ER_WRONG_DB_NAME
create database `db1 `; create database `db1 `;
--error 1166 --error ER_WRONG_COLUMN_NAME
create table t1(`a ` int); create table t1(`a ` int);
# #
...@@ -274,11 +268,11 @@ create table t1(`a ` int); ...@@ -274,11 +268,11 @@ create table t1(`a ` int);
# "Parser permits multiple commas without syntax error" # "Parser permits multiple commas without syntax error"
# #
--error 1064 --error ER_PARSE_ERROR
create table t1 (a int,); create table t1 (a int,);
--error 1064 --error ER_PARSE_ERROR
create table t1 (a int,,b int); create table t1 (a int,,b int);
--error 1064 --error ER_PARSE_ERROR
create table t1 (,b int); create table t1 (,b int);
# #
...@@ -320,13 +314,13 @@ create table t2 like t3; ...@@ -320,13 +314,13 @@ create table t2 like t3;
show create table t2; show create table t2;
select * from t2; select * from t2;
create table t3 like t1; create table t3 like t1;
--error 1050 --error ER_TABLE_EXISTS_ERROR
create table t3 like mysqltest.t3; create table t3 like mysqltest.t3;
--error 1049 --error ER_BAD_DB_ERROR
create table non_existing_database.t1 like t1; create table non_existing_database.t1 like t1;
--error ER_NO_SUCH_TABLE --error ER_NO_SUCH_TABLE
create table t3 like non_existing_table; create table t3 like non_existing_table;
--error 1050 --error ER_TABLE_EXISTS_ERROR
create temporary table t3 like t1; create temporary table t3 like t1;
drop table t1, t2, t3; drop table t1, t2, t3;
drop table t3; drop table t3;
...@@ -360,7 +354,7 @@ SELECT @@storage_engine; ...@@ -360,7 +354,7 @@ SELECT @@storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
show create table t1; show create table t1;
drop table t1; drop table t1;
--error 1286 --error ER_UNKNOWN_STORAGE_ENGINE
SET SESSION storage_engine="gemini"; SET SESSION storage_engine="gemini";
SELECT @@storage_engine; SELECT @@storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
...@@ -464,9 +458,9 @@ use test; ...@@ -464,9 +458,9 @@ use test;
# Test for Bug 856 'Naming a key "Primary" causes trouble' # Test for Bug 856 'Naming a key "Primary" causes trouble'
# #
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
create table t1 (a int, index `primary` (a)); create table t1 (a int, index `primary` (a));
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
create table t1 (a int, index `PRIMARY` (a)); create table t1 (a int, index `PRIMARY` (a));
create table t1 (`primary` int, index(`primary`)); create table t1 (`primary` int, index(`primary`));
...@@ -475,9 +469,9 @@ create table t2 (`PRIMARY` int, index(`PRIMARY`)); ...@@ -475,9 +469,9 @@ create table t2 (`PRIMARY` int, index(`PRIMARY`));
show create table t2; show create table t2;
create table t3 (a int); create table t3 (a int);
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
alter table t3 add index `primary` (a); alter table t3 add index `primary` (a);
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
alter table t3 add index `PRIMARY` (a); alter table t3 add index `PRIMARY` (a);
create table t4 (`primary` int); create table t4 (`primary` int);
...@@ -532,11 +526,11 @@ drop table t1; ...@@ -532,11 +526,11 @@ drop table t1;
# #
# Bug#10413: Invalid column name is not rejected # Bug#10413: Invalid column name is not rejected
# #
--error 1103 --error ER_WRONG_TABLE_NAME
create table t1(column.name int); create table t1(column.name int);
--error 1103 --error ER_WRONG_TABLE_NAME
create table t1(test.column.name int); create table t1(test.column.name int);
--error 1102 --error ER_WRONG_DB_NAME
create table t1(xyz.t1.name int); create table t1(xyz.t1.name int);
create table t1(t1.name int); create table t1(t1.name int);
create table t2(test.t2.name int); create table t2(test.t2.name int);
...@@ -575,7 +569,7 @@ drop table if exists test.t1; ...@@ -575,7 +569,7 @@ drop table if exists test.t1;
create database mysqltest; create database mysqltest;
use mysqltest; use mysqltest;
create view v1 as select 'foo' from dual; create view v1 as select 'foo' from dual;
--error 1347 --error ER_WRONG_OBJECT
create table t1 like v1; create table t1 like v1;
drop view v1; drop view v1;
drop database mysqltest; drop database mysqltest;
...@@ -696,7 +690,7 @@ drop table t1, t2; ...@@ -696,7 +690,7 @@ drop table t1, t2;
# #
# Bug #15316 SET value having comma not correctly handled # Bug #15316 SET value having comma not correctly handled
# #
--error 1367 --error ER_ILLEGAL_VALUE_FOR_TYPE
create table t1(a set("a,b","c,d") not null); create table t1(a set("a,b","c,d") not null);
# End of 4.1 tests # End of 4.1 tests
...@@ -894,9 +888,9 @@ INSERT IGNORE INTO t1 (b) VALUES (5); ...@@ -894,9 +888,9 @@ INSERT IGNORE INTO t1 (b) VALUES (5);
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
SELECT a FROM t1; SELECT a FROM t1;
--error 1062 --error ER_DUP_ENTRY
INSERT INTO t2 SELECT a FROM t1; INSERT INTO t2 SELECT a FROM t1;
--error 1062 --error ER_DUP_ENTRY
INSERT INTO t2 SELECT a FROM t1; INSERT INTO t2 SELECT a FROM t1;
DROP TABLE t1, t2; DROP TABLE t1, t2;
...@@ -956,24 +950,24 @@ drop table t1,t2; ...@@ -956,24 +950,24 @@ drop table t1,t2;
# Test incorrect database names # Test incorrect database names
# #
--error 1102 --error ER_WRONG_DB_NAME
CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
--error 1102 --error ER_WRONG_DB_NAME
DROP DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; DROP DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# TODO: enable these tests when RENAME DATABASE is implemented. # TODO: enable these tests when RENAME DATABASE is implemented.
# --error 1049 # --error ER_BAD_DB_ERROR
# RENAME DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TO a; # RENAME DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TO a;
# --error 1102 # --error ER_WRONG_DB_NAME
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; # RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# create database mysqltest; # create database mysqltest;
# --error 1102 # --error ER_WRONG_DB_NAME
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; # RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# drop database mysqltest; # drop database mysqltest;
--error 1102 --error ER_WRONG_DB_NAME
USE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; USE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
--error 1102 --error ER_WRONG_DB_NAME
SHOW CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; SHOW CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# #
...@@ -1025,11 +1019,11 @@ before insert on имя_таблицы_в_кодировке_утф8_длино ...@@ -1025,11 +1019,11 @@ before insert on имя_таблицы_в_кодировке_утф8_длино
select TRIGGER_NAME from information_schema.triggers where select TRIGGER_NAME from information_schema.triggers where
trigger_schema='test'; trigger_schema='test';
drop trigger имя_триггера_в_кодировке_утф8_длиной_больше_чем_49; drop trigger имя_триггера_в_кодировке_утф8_длиной_больше_чем_49;
--error 1059 --error ER_TOO_LONG_IDENT
create trigger create trigger
очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66 очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
before insert on имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48 for each row set @a:=1; before insert on имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48 for each row set @a:=1;
--error 1059 --error ER_TOO_LONG_IDENT
drop trigger очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66; drop trigger очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66;
create procedure имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50() create procedure имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50()
...@@ -1038,7 +1032,7 @@ end; ...@@ -1038,7 +1032,7 @@ end;
select ROUTINE_NAME from information_schema.routines where select ROUTINE_NAME from information_schema.routines where
routine_schema='test'; routine_schema='test';
drop procedure имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50; drop procedure имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50;
--error 1059 --error ER_TOO_LONG_IDENT
create procedure очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66() create procedure очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66()
begin begin
end; end;
...@@ -1049,7 +1043,7 @@ return 0; ...@@ -1049,7 +1043,7 @@ return 0;
select ROUTINE_NAME from information_schema.routines where select ROUTINE_NAME from information_schema.routines where
routine_schema='test'; routine_schema='test';
drop function имя_функции_в_кодировке_утф8_длиной_больше_чем_49; drop function имя_функции_в_кодировке_утф8_длиной_больше_чем_49;
--error 1059 --error ER_TOO_LONG_IDENT
create function очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66() create function очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66()
returns int returns int
return 0; return 0;
...@@ -1917,16 +1911,22 @@ alter table t1 add ...@@ -1917,16 +1911,22 @@ alter table t1 add
key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'; key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';
drop table t1; drop table t1;
--echo End of 5.5 tests --echo #
--echo # End of 5.5 tests
--echo #
# --echo #
# MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS --echo # MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS
# --echo #
--error ER_TABLE_MUST_HAVE_COLUMNS --error ER_TABLE_MUST_HAVE_COLUMNS
create table t1; create table t1;
# --echo #
# MDEV-11231 Server crashes in check_duplicate_key on CREATE TABLE ... SELECT --echo # MDEV-11231 Server crashes in check_duplicate_key on CREATE TABLE ... SELECT
# --echo #
create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j; create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j;
drop table t1; drop table t1;
--echo #
--echo # End of 10.0 tests
--echo #
...@@ -5997,6 +5997,38 @@ class Sql_mode_save ...@@ -5997,6 +5997,38 @@ class Sql_mode_save
sql_mode_t old_mode; // SQL mode saved at construction time. sql_mode_t old_mode; // SQL mode saved at construction time.
}; };
class Abort_on_warning_instant_set
{
THD *m_thd;
bool m_save_abort_on_warning;
public:
Abort_on_warning_instant_set(THD *thd, bool temporary_value)
:m_thd(thd), m_save_abort_on_warning(thd->abort_on_warning)
{
thd->abort_on_warning= temporary_value;
}
~Abort_on_warning_instant_set()
{
m_thd->abort_on_warning= m_save_abort_on_warning;
}
};
class Check_level_instant_set
{
THD *m_thd;
enum_check_fields m_check_level;
public:
Check_level_instant_set(THD *thd, enum_check_fields temporary_value)
:m_thd(thd), m_check_level(thd->count_cuted_fields)
{
thd->count_cuted_fields= temporary_value;
}
~Check_level_instant_set()
{
m_thd->count_cuted_fields= m_check_level;
}
};
class Switch_to_definer_security_ctx class Switch_to_definer_security_ctx
{ {
public: public:
......
...@@ -944,7 +944,7 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options, ...@@ -944,7 +944,7 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options,
TABLE table; TABLE table;
TABLE_SHARE share; TABLE_SHARE share;
Create_field *field; Create_field *field;
enum_check_fields old_count_cuted_fields= thd->count_cuted_fields; Check_level_instant_set old_count_cuted_fields(thd, CHECK_FIELD_WARN);
DBUG_ENTER("make_empty_rec"); DBUG_ENTER("make_empty_rec");
/* We need a table to generate columns for default values */ /* We need a table to generate columns for default values */
...@@ -963,7 +963,6 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options, ...@@ -963,7 +963,6 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options,
null_pos= buff; null_pos= buff;
List_iterator<Create_field> it(create_fields); List_iterator<Create_field> it(create_fields);
thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong default values
while ((field=it++)) while ((field=it++))
{ {
/* regfield don't have to be deleted as it's allocated on THD::mem_root */ /* regfield don't have to be deleted as it's allocated on THD::mem_root */
...@@ -1039,6 +1038,5 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options, ...@@ -1039,6 +1038,5 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options,
*(null_pos + null_count / 8)|= ~(((uchar) 1 << (null_count & 7)) - 1); *(null_pos + null_count / 8)|= ~(((uchar) 1 << (null_count & 7)) - 1);
err: err:
thd->count_cuted_fields= old_count_cuted_fields;
DBUG_RETURN(error); DBUG_RETURN(error);
} /* make_empty_rec */ } /* make_empty_rec */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment