diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index 2c75d901f34..e69736748bd 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -748,7 +748,7 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived) // Leading versioning table specified explicitly // (i.e. if at least one system field is selected) TABLE_LIST *expli_table= NULL; - const LString_i *impli_start, *impli_end; + LEX_CSTRING impli_start, impli_end; Item_field *expli_start= NULL, *expli_end= NULL; for (TABLE_LIST *table= sl->table_list.first; table; table= table->next_local) @@ -761,8 +761,8 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived) if (!impli_table) { impli_table= table; - impli_start= &table_start; - impli_end= &table_end; + impli_start= table_start; + impli_end= table_end; } /* Implicitly add versioning fields if needed */ @@ -809,7 +809,7 @@ expli_table_err: else expli_table= table; expli_start= fld; - impli_end= &table_end; + impli_end= table_end; } else if (table_end == fld->field_name) { @@ -833,7 +833,7 @@ expli_table_err: else expli_table= table; expli_end= fld; - impli_start= &table_start; + impli_start= table_start; } } // while ((item= it++)) } // for (TABLE_LIST *table) @@ -844,9 +844,9 @@ expli_table_err: if (impli_table) { Query_arena_stmt on_stmt_arena(thd); - if (!expli_start && (res= sl->vers_push_field(thd, impli_table, *impli_start))) + if (!expli_start && (res= sl->vers_push_field(thd, impli_table, impli_start))) goto exit; - if (!expli_end && (res= sl->vers_push_field(thd, impli_table, *impli_end))) + if (!expli_end && (res= sl->vers_push_field(thd, impli_table, impli_end))) goto exit; if (impli_table->vers_conditions) diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index e70edbe326b..e288a845c06 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -7441,6 +7441,7 @@ Item *LEX::make_item_func_replace(THD *thd, bool SELECT_LEX::vers_push_field(THD *thd, TABLE_LIST *table, const LEX_CSTRING field_name) { + DBUG_ASSERT(field_name.str); Item_field *fld= new (thd->mem_root) Item_field(thd, &context, table->db, table->alias, &field_name); if (!fld) diff --git a/sql/sql_view.cc b/sql/sql_view.cc index 9fc64761d72..f427e2e4ab8 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -466,7 +466,7 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views, // Leading versioning table specified explicitly // (i.e. if at least one system field is selected) TABLE_LIST *expli_table= NULL; - const LString_i *impli_start, *impli_end; + LEX_CSTRING impli_start, impli_end; Item_field *expli_start= NULL, *expli_end= NULL; for (TABLE_LIST *table= tables; table; table= table->next_local) @@ -496,8 +496,8 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views, if (!impli_table) { impli_table= table; - impli_start= &table_start; - impli_end= &table_end; + impli_start= table_start; + impli_end= table_end; } /* Implicitly add versioning fields if needed */ @@ -546,7 +546,7 @@ expli_table_err: else expli_table= table; expli_start= fld; - impli_end= &table_end; + impli_end= table_end; } else if (table_end == fld->field_name) { @@ -571,7 +571,7 @@ expli_table_err: else expli_table= table; expli_end= fld; - impli_start= &table_start; + impli_start= table_start; } } // while ((item= it++)) } // for (TABLE_LIST *table) @@ -581,9 +581,9 @@ expli_table_err: if (impli_table) { - if (!expli_start && sl->vers_push_field(thd, impli_table, *impli_start)) + if (!expli_start && sl->vers_push_field(thd, impli_table, impli_start)) goto err; - if (!expli_end && sl->vers_push_field(thd, impli_table, *impli_end)) + if (!expli_end && sl->vers_push_field(thd, impli_table, impli_end)) goto err; } #pragma GCC diagnostic pop