Skip to content

MDEV-37335: crash on re-parsing an sp_instr_set that does not own its LEX - #5643

Open
KhaledR57 wants to merge 1 commit into
11.4from
11.4-MDEV-37335
Open

MDEV-37335: crash on re-parsing an sp_instr_set that does not own its LEX#5643
KhaledR57 wants to merge 1 commit into
11.4from
11.4-MDEV-37335

Conversation

@KhaledR57

Copy link
Copy Markdown
Contributor

A DECLARE of several variables with a common DEFAULT expression creates one sp_instr_set per variable, all sharing a single LEX that only the last of them owns. On re-parsing after a metadata change, a non-owning instruction still has its LEX, and both parse_expr() and validate_lex_and_exec_core() took a non-null LEX to mean a cursor LEX. The cursor-only code then dereferenced the nullptr returned by get_lex_for_cursor() and the re-parsed LEX was never adopted.

Branch on whether the LEX is a cursor LEX instead of whether it is non-null.

… LEX

A DECLARE of several variables with a common DEFAULT expression creates one
sp_instr_set per variable, all sharing a single LEX that only the last of
them owns. On re-parsing after a metadata change, a non-owning instruction
still has its LEX, and both parse_expr() and validate_lex_and_exec_core()
took a non-null LEX to mean a cursor LEX. The cursor-only code then
dereferenced the nullptr returned by get_lex_for_cursor() and the re-parsed
LEX was never adopted.

Branch on whether the LEX is a cursor LEX instead of whether it is non-null.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

1 participant