From f130a5ea3c1cc504acecbad7615fb27c6e28dbfa Mon Sep 17 00:00:00 2001 From: Oleksandr Byelkin Date: Wed, 13 Apr 2022 15:37:46 +0200 Subject: MDEV-28266 Crash in Field_string::type_handler when calling procedures on_table_fill_finished() should always be done at the end of open() even if result is not Select_materialize but (for example) Select_fetch_into_spvars. --- sql/sql_cursor.cc | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'sql/sql_cursor.cc') diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc index 8f41fe7c70d..7d66bd69228 100644 --- a/sql/sql_cursor.cc +++ b/sql/sql_cursor.cc @@ -80,19 +80,7 @@ public: Select_materialize(THD *thd_arg, select_result *result_arg): select_unit(thd_arg), result(result_arg), materialized_cursor(0) {} virtual bool send_result_set_metadata(List &list, uint flags); - bool send_eof() - { - if (materialized_cursor) - materialized_cursor->on_table_fill_finished(); - return false; - } - - void abort_result_set() - { - if (materialized_cursor) - materialized_cursor->on_table_fill_finished(); - } - + bool send_eof() { return false; } bool view_structure_only() const { return result->view_structure_only(); @@ -334,6 +322,8 @@ int Materialized_cursor::open(JOIN *join __attribute__((unused))) result->abort_result_set(); } + on_table_fill_finished(); + return rc; } -- cgit v1.2.1