mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
A fix and a test case for Bug#11172 "mysql_stmt_attr_set
CURSOR_TYPE_READ_ONLY date/datetime filter server crash".
The fix adds support for Item_change_list in cursors (proper rollback
of the modified item tree).
sql/sql_class.cc:
No need to call fatal_error() twice.
sql/sql_prepare.cc:
- implement proper cleanup of the prepared statement in mysql_stmt_reset
if there is a cursor.
- take into account thd->change_list when fetching data through a
cursor.
sql/sql_select.cc:
- take into account thd->change_list when fetching data from a cursor:
grab it when we open a cursor, and rollback the changes to the parsed
tree when we close it.
sql/sql_select.h:
- Cursor::change_list added
tests/mysql_client_test.c:
- a test case for Bug#11172 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY date/datetime
filter server crash"
This commit is contained in:
@@ -390,6 +390,7 @@ class Cursor: public Sql_alloc, public Query_arena
|
||||
/* List of items created during execution */
|
||||
query_id_t query_id;
|
||||
public:
|
||||
Item_change_list change_list;
|
||||
select_send result;
|
||||
|
||||
/* Temporary implementation as now we replace THD state by value */
|
||||
@@ -402,7 +403,8 @@ public:
|
||||
void fetch(ulong num_rows);
|
||||
void reset() { join= 0; }
|
||||
bool is_open() const { return join != 0; }
|
||||
void close();
|
||||
|
||||
void close(bool is_active);
|
||||
|
||||
void set_unit(SELECT_LEX_UNIT *unit_arg) { unit= unit_arg; }
|
||||
Cursor(THD *thd);
|
||||
|
||||
Reference in New Issue
Block a user