mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix for BUG#21774: Column count doesn't match value count at row x
The cause of the bug was an incomplete fix for bug 18080. The problem was that setup_tables() unconditionally reset the name resolution context to its 'tables' argument, which pointed to the first table of an SQL statement. The bug fix limits resetting of the name resolution context in setup_tables() only in the cases when the context was not set by earlier parser/optimizer phases.
This commit is contained in:
@ -4453,7 +4453,20 @@ bool setup_tables(THD *thd, Name_resolution_context *context,
|
||||
uint tablenr= 0;
|
||||
DBUG_ENTER("setup_tables");
|
||||
|
||||
context->table_list= context->first_name_resolution_table= tables;
|
||||
/*
|
||||
Due to the various call paths that lead to setup_tables() it may happen
|
||||
that context->table_list and context->first_name_resolution_table can be
|
||||
NULL (this is typically done when creating TABLE_LISTs internally).
|
||||
TODO:
|
||||
Investigate all cases when this my happen, initialize the name resolution
|
||||
context correctly in all those places, and remove the context reset below.
|
||||
*/
|
||||
if (!context->table_list || !context->first_name_resolution_table)
|
||||
{
|
||||
/* Test whether the context is in a consistent state. */
|
||||
DBUG_ASSERT(!context->first_name_resolution_table && !context->table_list);
|
||||
context->table_list= context->first_name_resolution_table= tables;
|
||||
}
|
||||
|
||||
/*
|
||||
this is used for INSERT ... SELECT.
|
||||
|
Reference in New Issue
Block a user