Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
6f707430
Commit
6f707430
authored
Jan 09, 2021
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cleanup: copy RAII helpers from 10.5, cleanup test
parent
4568a72c
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
114 additions
and
76 deletions
+114
-76
mysql-test/r/create.result
mysql-test/r/create.result
+12
-4
mysql-test/t/create.test
mysql-test/t/create.test
+69
-69
sql/sql_class.h
sql/sql_class.h
+32
-0
sql/unireg.cc
sql/unireg.cc
+1
-3
No files found.
mysql-test/r/create.result
View file @
6f707430
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));
insert into t1 values (""),(null);
select * from t1;
...
...
@@ -2066,10 +2063,21 @@ alter table t1 add
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.
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;
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;
Warnings:
Note 1831 Duplicate index `i_2`. This is deprecated and will be disallowed in a future release
drop table t1;
#
# End of 10.0 tests
#
mysql-test/t/create.test
View file @
6f707430
...
...
@@ -5,12 +5,6 @@ call mtr.add_suppression("table or database name 't-1'");
# 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
));
insert
into
t1
values
(
""
),(
null
);
select
*
from
t1
;
...
...
@@ -29,30 +23,30 @@ drop table t1;
# Test of some CREATE TABLE'S that should fail
#
--
error
1146
--
error
ER_NO_SUCH_TABLE
create
table
t2
engine
=
heap
select
*
from
t1
;
--
error
1146
--
error
ER_NO_SUCH_TABLE
create
table
t2
select
auto
+
1
from
t1
;
drop
table
if
exists
t1
,
t2
;
--
error
1167
--
error
ER_WRONG_KEY_COLUMN
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
;
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
;
--
error
1049
--
error
ER_BAD_DB_ERROR
create
table
not_existing_database
.
test
(
a
int
);
create
table
`a/a`
(
a
int
);
show
create
table
`a/a`
;
create
table
t1
like
`a/a`
;
drop
table
`a/a`
;
drop
table
`t1`
;
--
error
1103
--
error
ER_WRONG_TABLE_NAME
create
table
`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`
(
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
int
);
--
error
1059
--
error
ER_TOO_LONG_IDENT
create
table
a
(
`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`
int
);
#
...
...
@@ -62,17 +56,17 @@ create table t1 (a datetime default now());
drop
table
t1
;
create
table
t1
(
a
datetime
on
update
now
());
drop
table
t1
;
--
error
1067
--
error
ER_INVALID_DEFAULT
create
table
t1
(
a
int
default
100
auto_increment
);
--
error
1067
--
error
ER_INVALID_DEFAULT
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
'abcde'
);
insert
into
t1
values
();
select
*
from
t1
;
--
error
1067
--
error
ER_INVALID_DEFAULT
SET
STATEMENT
sql_mode
=
'NO_ENGINE_SUBSTITUTION'
FOR
alter
table
t1
alter
column
a
set
default
'abcdef'
;
drop
table
t1
;
...
...
@@ -97,13 +91,13 @@ create table mysqltest.test2$ (a int);
drop
table
mysqltest
.
test2
$
;
drop
database
mysqltest
;
--
error
1103
--
error
ER_WRONG_TABLE_NAME
create
table
``
(
a
int
);
--
error
1103
--
error
ER_WRONG_TABLE_NAME
drop
table
if
exists
``
;
--
error
1166
--
error
ER_WRONG_COLUMN_NAME
create
table
t1
(
``
int
);
--
error
1280
--
error
ER_WRONG_NAME_FOR_INDEX
create
table
t1
(
i
int
,
index
``
(
i
));
#
...
...
@@ -158,13 +152,13 @@ create table t2 (a int) select * from t1;
describe
t1
;
describe
t2
;
drop
table
if
exists
t2
;
--
error
1060
--
error
ER_DUP_FIELDNAME
create
table
t2
(
a
int
,
a
float
)
select
*
from
t1
;
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
;
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
;
drop
table
if
exists
t1
,
t2
;
...
...
@@ -176,7 +170,7 @@ CREATE TABLE t1 (a int not null);
INSERT
INTO
t1
values
(
1
),(
2
),(
1
);
--
error
ER_DUP_ENTRY
CREATE
TABLE
t2
(
primary
key
(
a
))
SELECT
*
FROM
t1
;
--
error
1146
--
error
ER_NO_SUCH_TABLE
SELECT
*
from
t2
;
DROP
TABLE
t1
;
DROP
TABLE
IF
EXISTS
t2
;
...
...
@@ -202,7 +196,7 @@ SELECT @@storage_engine;
CREATE
TABLE
t1
(
a
int
not
null
);
show
create
table
t1
;
drop
table
t1
;
--
error
1286
--
error
ER_UNKNOWN_STORAGE_ENGINE
SET
SESSION
storage_engine
=
"gemini"
;
SELECT
@@
storage_engine
;
CREATE
TABLE
t1
(
a
int
not
null
);
...
...
@@ -216,11 +210,11 @@ drop table t1;
#
create
table
t1
(
k1
varchar
(
2
),
k2
int
,
primary
key
(
k1
,
k2
));
insert
into
t1
values
(
"a"
,
1
),
(
"b"
,
2
);
--
error
1048
--
error
ER_BAD_NULL_ERROR
insert
into
t1
values
(
"c"
,
NULL
);
--
error
1048
--
error
ER_BAD_NULL_ERROR
insert
into
t1
values
(
NULL
,
3
);
--
error
1048
--
error
ER_BAD_NULL_ERROR
insert
into
t1
values
(
NULL
,
NULL
);
drop
table
t1
;
...
...
@@ -262,11 +256,11 @@ drop table t1;
# "Table truncated when creating another table name with Spaces"
#
--
error
1103
--
error
ER_WRONG_TABLE_NAME
create
table
`t1 `
(
a
int
);
--
error
1102
--
error
ER_WRONG_DB_NAME
create
database
`db1 `
;
--
error
1166
--
error
ER_WRONG_COLUMN_NAME
create
table
t1
(
`a `
int
);
#
...
...
@@ -274,11 +268,11 @@ create table t1(`a ` int);
# "Parser permits multiple commas without syntax error"
#
--
error
1064
--
error
ER_PARSE_ERROR
create
table
t1
(
a
int
,);
--
error
1064
--
error
ER_PARSE_ERROR
create
table
t1
(
a
int
,,
b
int
);
--
error
1064
--
error
ER_PARSE_ERROR
create
table
t1
(,
b
int
);
#
...
...
@@ -320,13 +314,13 @@ create table t2 like t3;
show
create
table
t2
;
select
*
from
t2
;
create
table
t3
like
t1
;
--
error
1050
--
error
ER_TABLE_EXISTS_ERROR
create
table
t3
like
mysqltest
.
t3
;
--
error
1049
--
error
ER_BAD_DB_ERROR
create
table
non_existing_database
.
t1
like
t1
;
--
error
ER_NO_SUCH_TABLE
create
table
t3
like
non_existing_table
;
--
error
1050
--
error
ER_TABLE_EXISTS_ERROR
create
temporary
table
t3
like
t1
;
drop
table
t1
,
t2
,
t3
;
drop
table
t3
;
...
...
@@ -360,7 +354,7 @@ SELECT @@storage_engine;
CREATE
TABLE
t1
(
a
int
not
null
);
show
create
table
t1
;
drop
table
t1
;
--
error
1286
--
error
ER_UNKNOWN_STORAGE_ENGINE
SET
SESSION
storage_engine
=
"gemini"
;
SELECT
@@
storage_engine
;
CREATE
TABLE
t1
(
a
int
not
null
);
...
...
@@ -464,9 +458,9 @@ use test;
# 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
));
--
error
1280
--
error
ER_WRONG_NAME_FOR_INDEX
create
table
t1
(
a
int
,
index
`PRIMARY`
(
a
));
create
table
t1
(
`primary`
int
,
index
(
`primary`
));
...
...
@@ -475,9 +469,9 @@ create table t2 (`PRIMARY` int, index(`PRIMARY`));
show
create
table
t2
;
create
table
t3
(
a
int
);
--
error
1280
--
error
ER_WRONG_NAME_FOR_INDEX
alter
table
t3
add
index
`primary`
(
a
);
--
error
1280
--
error
ER_WRONG_NAME_FOR_INDEX
alter
table
t3
add
index
`PRIMARY`
(
a
);
create
table
t4
(
`primary`
int
);
...
...
@@ -532,11 +526,11 @@ drop table t1;
#
# Bug#10413: Invalid column name is not rejected
#
--
error
1103
--
error
ER_WRONG_TABLE_NAME
create
table
t1
(
column
.
name
int
);
--
error
1103
--
error
ER_WRONG_TABLE_NAME
create
table
t1
(
test
.
column
.
name
int
);
--
error
1102
--
error
ER_WRONG_DB_NAME
create
table
t1
(
xyz
.
t1
.
name
int
);
create
table
t1
(
t1
.
name
int
);
create
table
t2
(
test
.
t2
.
name
int
);
...
...
@@ -575,7 +569,7 @@ drop table if exists test.t1;
create
database
mysqltest
;
use
mysqltest
;
create
view
v1
as
select
'foo'
from
dual
;
--
error
1347
--
error
ER_WRONG_OBJECT
create
table
t1
like
v1
;
drop
view
v1
;
drop
database
mysqltest
;
...
...
@@ -696,7 +690,7 @@ drop table t1, t2;
#
# 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
);
# End of 4.1 tests
...
...
@@ -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
)
SELECT
a
FROM
t1
;
--
error
1062
--
error
ER_DUP_ENTRY
INSERT
INTO
t2
SELECT
a
FROM
t1
;
--
error
1062
--
error
ER_DUP_ENTRY
INSERT
INTO
t2
SELECT
a
FROM
t1
;
DROP
TABLE
t1
,
t2
;
...
...
@@ -956,24 +950,24 @@ drop table t1,t2;
# Test incorrect database names
#
--
error
1102
--
error
ER_WRONG_DB_NAME
CREATE
DATABASE
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
;
--
error
1102
--
error
ER_WRONG_DB_NAME
DROP
DATABASE
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
;
# TODO: enable these tests when RENAME DATABASE is implemented.
# --error
1049
# --error
ER_BAD_DB_ERROR
# RENAME DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TO a;
# --error
1102
# --error
ER_WRONG_DB_NAME
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# create database mysqltest;
# --error
1102
# --error
ER_WRONG_DB_NAME
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# drop database mysqltest;
--
error
1102
--
error
ER_WRONG_DB_NAME
USE
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
;
--
error
1102
--
error
ER_WRONG_DB_NAME
SHOW
CREATE
DATABASE
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
;
#
...
...
@@ -1025,11 +1019,11 @@ before insert on имя_таблицы_в_кодировке_утф8_длино
select
TRIGGER_NAME
from
information_schema
.
triggers
where
trigger_schema
=
'test'
;
drop
trigger
имя_триггера_в_кодировке_утф8_длиной_больше_чем_49
;
--
error
1059
--
error
ER_TOO_LONG_IDENT
create
trigger
очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
before
insert
on
имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48
for
each
row
set
@
a
:=
1
;
--
error
1059
--
error
ER_TOO_LONG_IDENT
drop
trigger
очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
;
create
procedure
имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50
()
...
...
@@ -1038,7 +1032,7 @@ end;
select
ROUTINE_NAME
from
information_schema
.
routines
where
routine_schema
=
'test'
;
drop
procedure
имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50
;
--
error
1059
--
error
ER_TOO_LONG_IDENT
create
procedure
очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
()
begin
end
;
...
...
@@ -1049,7 +1043,7 @@ return 0;
select
ROUTINE_NAME
from
information_schema
.
routines
where
routine_schema
=
'test'
;
drop
function
имя_функции_в_кодировке_утф8_длиной_больше_чем_49
;
--
error
1059
--
error
ER_TOO_LONG_IDENT
create
function
очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
()
returns
int
return
0
;
...
...
@@ -1917,16 +1911,22 @@ alter table t1 add
key
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064
(
f64
)
comment
'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
;
drop
table
t1
;
--
echo
End
of
5.5
tests
--
echo
#
--
echo
# End of 5.5 tests
--
echo
#
#
# MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS
#
--
echo
#
--
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
create
table
t1
;
#
# MDEV-11231 Server crashes in check_duplicate_key on CREATE TABLE ... SELECT
#
--
echo
#
--
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
;
drop
table
t1
;
--
echo
#
--
echo
# End of 10.0 tests
--
echo
#
sql/sql_class.h
View file @
6f707430
...
...
@@ -5997,6 +5997,38 @@ class Sql_mode_save
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
{
public:
...
...
sql/unireg.cc
View file @
6f707430
...
...
@@ -944,7 +944,7 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options,
TABLE
table
;
TABLE_SHARE
share
;
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"
);
/* 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,
null_pos
=
buff
;
List_iterator
<
Create_field
>
it
(
create_fields
);
thd
->
count_cuted_fields
=
CHECK_FIELD_WARN
;
// To find wrong default values
while
((
field
=
it
++
))
{
/* 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,
*
(
null_pos
+
null_count
/
8
)
|=
~
(((
uchar
)
1
<<
(
null_count
&
7
))
-
1
);
err:
thd
->
count_cuted_fields
=
old_count_cuted_fields
;
DBUG_RETURN
(
error
);
}
/* make_empty_rec */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment