diff options
author | unknown <dlenev@mysql.com> | 2006-04-22 11:56:15 +0400 |
---|---|---|
committer | unknown <dlenev@mysql.com> | 2006-04-22 11:56:15 +0400 |
commit | 2efefe689057a83cf9d3eefecd05740aa06bd4f2 (patch) | |
tree | 96693cf69e0bf0c8eec73c8e4e7b431c504ad89a /sql | |
parent | 10eac46a520351d47ffbe74aeb14fdd7c6fecd87 (diff) | |
parent | dc526db887e3ab68020d7d010f45fb9ce5d3ad14 (diff) | |
download | mariadb-git-2efefe689057a83cf9d3eefecd05740aa06bd4f2.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into mysql.com:/home/dlenev/mysql-5.0-bg15153-2
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_view.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sql/sql_view.cc b/sql/sql_view.cc index cdb6c581565..0fb043430a4 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -1057,15 +1057,23 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table) !old_lex->can_not_use_merged()) { List_iterator_fast<TABLE_LIST> ti(view_select->top_join_list); + /* + Currently 'view_main_select_tables' differs from 'view_tables' + only then view has CONVERT_TZ() function in its select list. + This may change in future, for example if we enable merging + of views with subqueries in select list. + */ + TABLE_LIST *view_main_select_tables= + (TABLE_LIST*)lex->select_lex.table_list.first; /* lex should contain at least one table */ - DBUG_ASSERT(view_tables != 0); + DBUG_ASSERT(view_main_select_tables != 0); table->effective_algorithm= VIEW_ALGORITHM_MERGE; DBUG_PRINT("info", ("algorithm: MERGE")); table->updatable= (table->updatable_view != 0); table->effective_with_check= old_lex->get_effective_with_check(table); - table->merge_underlying_list= view_tables; + table->merge_underlying_list= view_main_select_tables; /* Let us set proper lock type for tables of the view's main select since we may want to perform update or insert on view. This won't @@ -1081,7 +1089,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table) } /* prepare view context */ - lex->select_lex.context.resolve_in_table_list_only(view_tables); + lex->select_lex.context.resolve_in_table_list_only(view_main_select_tables); lex->select_lex.context.outer_context= 0; lex->select_lex.context.select_lex= table->select_lex; lex->select_lex.select_n_having_items+= @@ -1097,7 +1105,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table) tbl->select_lex= table->select_lex; { - if (view_tables->next_local) + if (view_main_select_tables->next_local) { table->multitable_view= TRUE; if (table->belong_to_view) |