diff options
author | Rinat Ibragimov <ri@tempesta-tech.com> | 2020-10-21 23:34:36 +0300 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2020-10-22 00:18:33 +0300 |
commit | 709ba7dcae871e365697f67677c908b55ad4a964 (patch) | |
tree | dde2860dddbc468d6f1a4484b8e109baff7226a5 /sql/sql_yacc.yy | |
parent | ac8d20579512e05001f9bf8193187e47c870d35a (diff) | |
download | mariadb-git-709ba7dcae871e365697f67677c908b55ad4a964.tar.gz |
MDEV-20945: BACKUP UNLOCK + FTWRL assertion failure
MDEV-20945: BACKUP UNLOCK + FTWRL assertion failure | SIGSEGV in I_P_List
from MDL_context::release_lock on INSERT w/ BACKUP LOCK (on optimized
builds) | Assertion `ticket->m_duration == MDL_EXPLICIT' failed
BACKUP LOCK behavior is modified so it won't be used wrong:
- BACKUP LOCK should commit any active transactions.
- BACKUP LOCK should not be allowed in stored procedures.
- When BACKUP LOCK is active, don't allow any DDL's for that connection.
- FTWRL is forbidden on the same connection while BACKUP LOCK is active.
Reviewed-by: monty@mariadb.com
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 83323e3f7e3..8c58d703e41 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -14868,6 +14868,8 @@ backup_statements: } | LOCK_SYM { + if (unlikely(Lex->sphead)) + my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "BACKUP LOCK")); if (Lex->main_select_push()) MYSQL_YYABORT; } @@ -14881,6 +14883,8 @@ backup_statements: } | UNLOCK_SYM { + if (unlikely(Lex->sphead)) + my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "BACKUP UNLOCK")); /* Table list is empty for unlock */ Lex->sql_command= SQLCOM_BACKUP_LOCK; } |