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
ec5ceeca
Commit
ec5ceeca
authored
Aug 10, 2005
by
dlenev@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/dlenev/src/mysql-5.0-bg12280
parents
5e65456c
51537c05
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
57 additions
and
9 deletions
+57
-9
mysql-test/r/sp-error.result
mysql-test/r/sp-error.result
+2
-2
mysql-test/r/trigger.result
mysql-test/r/trigger.result
+16
-0
mysql-test/t/sp-error.test
mysql-test/t/sp-error.test
+2
-2
mysql-test/t/trigger.test
mysql-test/t/trigger.test
+20
-0
sql/share/errmsg.txt
sql/share/errmsg.txt
+2
-2
sql/sql_parse.cc
sql/sql_parse.cc
+7
-0
sql/sql_yacc.yy
sql/sql_yacc.yy
+8
-3
No files found.
mysql-test/r/sp-error.result
View file @
ec5ceeca
...
...
@@ -247,7 +247,7 @@ end|
ERROR 42000: Duplicate cursor: c
create procedure u()
use sptmp|
ERROR
42000: USE is not allowed in a stored procedure
ERROR
0A000: USE is not allowed in stored procedures
create procedure p()
begin
declare c cursor for select * from t1;
...
...
@@ -616,7 +616,7 @@ begin
flush tables;
return 5;
end|
ERROR 0A000: FLUSH is not allowed in stored
procedures
ERROR 0A000: FLUSH is not allowed in stored
function or trigger
create procedure bug9529_90123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123()
begin
end|
...
...
mysql-test/r/trigger.result
View file @
ec5ceeca
...
...
@@ -2,6 +2,7 @@ drop table if exists t1, t2, t3;
drop view if exists v1;
drop database if exists mysqltest;
drop function if exists f1;
drop procedure if exists p1;
create table t1 (i int);
create trigger trg before insert on t1 for each row set @a:=1;
set @a:=0;
...
...
@@ -635,3 +636,18 @@ show triggers;
Trigger Event Table Statement Timing Created sql_mode
t1_bi INSERT t1 set new.a = '2004-01-00' BEFORE #
drop table t1;
create table t1 (id int);
create trigger t1_ai after insert on t1 for each row flush tables;
ERROR 0A000: FLUSH is not allowed in stored function or trigger
create trigger t1_ai after insert on t1 for each row flush privileges;
ERROR 0A000: FLUSH is not allowed in stored function or trigger
create procedure p1() flush tables;
create trigger t1_ai after insert on t1 for each row call p1();
insert into t1 values (0);
ERROR 0A000: FLUSH is not allowed in stored function or trigger
drop procedure p1;
create procedure p1() flush privileges;
insert into t1 values (0);
ERROR 0A000: FLUSH is not allowed in stored function or trigger
drop procedure p1;
drop table t1;
mysql-test/t/sp-error.test
View file @
ec5ceeca
...
...
@@ -334,7 +334,7 @@ begin
end
|
# USE is not allowed
--
error
1336
--
error
ER_SP_BADSTATEMENT
create
procedure
u
()
use
sptmp
|
...
...
@@ -885,7 +885,7 @@ create procedure bug10537()
--
disable_warnings
drop
function
if
exists
bug8409
|
--
enable_warnings
--
error
ER_S
P_BADSTATEMENT
--
error
ER_S
TMT_NOT_ALLOWED_IN_SF_OR_TRG
create
function
bug8409
()
returns
int
begin
...
...
mysql-test/t/trigger.test
View file @
ec5ceeca
...
...
@@ -7,6 +7,7 @@ drop table if exists t1, t2, t3;
drop
view
if
exists
v1
;
drop
database
if
exists
mysqltest
;
drop
function
if
exists
f1
;
drop
procedure
if
exists
p1
;
--
enable_warnings
create
table
t1
(
i
int
);
...
...
@@ -642,3 +643,22 @@ show create table t1;
--
replace_column
6
#
show
triggers
;
drop
table
t1
;
# Test for bug #12280 "Triggers: crash if flush tables"
# FLUSH TABLES and FLUSH PRIVILEGES should be disallowed inside
# of functions and triggers.
create
table
t1
(
id
int
);
--
error
ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create
trigger
t1_ai
after
insert
on
t1
for
each
row
flush
tables
;
--
error
ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create
trigger
t1_ai
after
insert
on
t1
for
each
row
flush
privileges
;
create
procedure
p1
()
flush
tables
;
create
trigger
t1_ai
after
insert
on
t1
for
each
row
call
p1
();
--
error
ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
insert
into
t1
values
(
0
);
drop
procedure
p1
;
create
procedure
p1
()
flush
privileges
;
--
error
ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
insert
into
t1
values
(
0
);
drop
procedure
p1
;
drop
table
t1
;
sql/share/errmsg.txt
View file @
ec5ceeca
...
...
@@ -5137,8 +5137,8 @@ ER_SP_CANT_ALTER
eng "Failed to ALTER %s %s"
ER_SP_SUBSELECT_NYI 0A000
eng "Subselect value not supported"
ER_S
P_NO_USE 42000
eng "USE is not allowed in a stored procedure
"
ER_S
TMT_NOT_ALLOWED_IN_SF_OR_TRG 0A000
eng "%s is not allowed in stored function or trigger
"
ER_SP_VARCOND_AFTER_CURSHNDLR 42000
eng "Variable or condition declaration after cursor or handler declaration"
ER_SP_CURSOR_AFTER_HANDLER 42000
...
...
sql/sql_parse.cc
View file @
ec5ceeca
...
...
@@ -6391,6 +6391,13 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
bool
result
=
0
;
select_errors
=
0
;
/* Write if more errors */
bool
tmp_write_to_binlog
=
1
;
if
(
thd
->
in_sub_stmt
)
{
my_error
(
ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
,
MYF
(
0
),
"FLUSH"
);
return
1
;
}
#ifndef NO_EMBEDDED_ACCESS_CHECKS
if
(
options
&
REFRESH_GRANT
)
{
...
...
sql/sql_yacc.yy
View file @
ec5ceeca
...
...
@@ -1960,7 +1960,7 @@ sp_proc_stmt:
}
if (lex->sql_command == SQLCOM_CHANGE_DB)
{ /* "USE db" doesn't work in a procedure */
my_
message(ER_SP_NO_USE, ER(ER_SP_NO_USE), MYF(0)
);
my_
error(ER_SP_BADSTATEMENT, MYF(0), "USE"
);
YYABORT;
}
/*
...
...
@@ -6642,9 +6642,14 @@ flush:
FLUSH_SYM opt_no_write_to_binlog
{
LEX *lex=Lex;
if (lex->sphead && lex->sphead->m_type
== TYPE_ENUM_FUNCTION
)
if (lex->sphead && lex->sphead->m_type
!= TYPE_ENUM_PROCEDURE
)
{
my_error(ER_SP_BADSTATEMENT, MYF(0), "FLUSH");
/*
Note that both FLUSH TABLES and FLUSH PRIVILEGES will break
execution in prelocked mode. So it is better to disable
FLUSH in stored functions and triggers completely.
*/
my_error(ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG, MYF(0), "FLUSH");
YYABORT;
}
lex->sql_command= SQLCOM_FLUSH; lex->type=0;
...
...
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