diff options
author | unknown <davi@endora.local> | 2007-10-30 20:51:04 -0200 |
---|---|---|
committer | unknown <davi@endora.local> | 2007-10-30 20:51:04 -0200 |
commit | bf18f6d4b863b1c45467ea55b0662f4155ccc8fb (patch) | |
tree | 473be656c420dac24421d5f9c73cfc7f6bbf5ca0 /mysql-test/r/sp-error.result | |
parent | 1430f4ded275728ed747ebe48005c01b40cd3bab (diff) | |
download | mariadb-git-bf18f6d4b863b1c45467ea55b0662f4155ccc8fb.tar.gz |
Bug#30904 SET PASSWORD statement is non-transactional
The SET PASSWORD statement is non-transactional (no explicit transaction
boundaries) in nature and hence is forbidden inside stored functions and
triggers, but it weren't being effectively forbidden.
The implemented fix is to issue a implicit commit with every SET PASSWORD
statement, effectively prohibiting these statements in stored functions
and triggers.
mysql-test/r/sp-error.result:
Add test case result for Bug#30904
mysql-test/t/sp-error.test:
Add test case for Bug#30904
sql/sql_lex.h:
Add variable to set that a statement with SET PASSWORD causes a implicit
commit.
sql/sql_parse.cc:
End active transaction in SET PASSWORD.
sql/sql_yacc.yy:
Set the correct flag on SET PASSWORD if inside a SP, thus effectively
prohibiting SET PASSWORD statements in stored functions and triggers.
Diffstat (limited to 'mysql-test/r/sp-error.result')
-rw-r--r-- | mysql-test/r/sp-error.result | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/mysql-test/r/sp-error.result b/mysql-test/r/sp-error.result index 1b14d75cd9c..300fa42f3ad 100644 --- a/mysql-test/r/sp-error.result +++ b/mysql-test/r/sp-error.result @@ -1523,3 +1523,13 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp SELECT ..inexistent(); ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.inexistent()' at line 1 USE test; +create function f1() returns int +begin +set @test = 1, password = password('foo'); +return 1; +end| +ERROR HY000: Not allowed to set autocommit from a stored function or trigger +create trigger t1 +before insert on t2 for each row set password = password('foo'); +delimiter ;| +ERROR HY000: Not allowed to set autocommit from a stored function or trigger |