mirror of
https://github.com/MariaDB/server.git
synced 2026-05-09 16:44:29 +02:00
Fix for bug #29444: crash with partition refering to table in create-select
Problem: creating a partitioned table during name resolution for the partition function we search for column names in all parts of the CREATE TABLE query. It is superfluous (and wrong) sometimes. Fix: launch name resolution for the partition function against the table we're creating. mysql-test/r/partition.result: Fix for bug #29444: crash with partition refering to table in create-select - test result. mysql-test/t/partition.test: Fix for bug #29444: crash with partition refering to table in create-select - test result. sql/item.cc: Fix for bug #29444: crash with partition refering to table in create-select - LEX::use_only_table_context introduced, which is used in the Item_field::fix_fields() to resolve names only against context->first_name_resolution_table/last_name_resolution_table. sql/sql_lex.cc: Fix for bug #29444: crash with partition refering to table in create-select - LEX::use_only_table_context introduced, which is used in the Item_field::fix_fields() to resolve names only against context->first_name_resolution_table/last_name_resolution_table. sql/sql_lex.h: Fix for bug #29444: crash with partition refering to table in create-select - LEX::use_only_table_context introduced, which is used in the Item_field::fix_fields() to resolve names only against context->first_name_resolution_table/last_name_resolution_table. sql/sql_partition.cc: Fix for bug #29444: crash with partition refering to table in create-select - set the lex->use_only_table_context before the func_expr->fix_fields() call to ensure we're resolving names against the table we're creating; then restore it back after the call.
This commit is contained in:
parent
6b957bcba4
commit
8ae794bbd6
6 changed files with 59 additions and 1 deletions
|
|
@ -1693,6 +1693,14 @@ typedef struct st_lex : public Query_tables_list
|
|||
*/
|
||||
const char *fname_start;
|
||||
const char *fname_end;
|
||||
|
||||
/**
|
||||
During name resolution search only in the table list given by
|
||||
Name_resolution_context::first_name_resolution_table and
|
||||
Name_resolution_context::last_name_resolution_table
|
||||
(see Item_field::fix_fields()).
|
||||
*/
|
||||
bool use_only_table_context;
|
||||
|
||||
LEX_STRING view_body_utf8;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue