Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
SQL: CREATE VIEW with view_list from versioned table [fixes #151]
  • Loading branch information
kevgs authored and midenok committed May 5, 2017
1 parent 4782b74 commit a37cf52
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
2 changes: 2 additions & 0 deletions mysql-test/suite/versioning/r/view.result
Expand Up @@ -110,6 +110,8 @@ x
1
select * from vvvt1 for system_time all;
x
create or replace table t1 (x int) with system versioning;
create or replace view vt1(c) as select x from t1;
drop view vvvt1;
drop view vvt1;
drop view vt1;
Expand Down
3 changes: 3 additions & 0 deletions mysql-test/suite/versioning/t/view.test
Expand Up @@ -70,6 +70,9 @@ select * from vt1 for system_time all;
select * from vvt1 for system_time all;
select * from vvvt1 for system_time all;

create or replace table t1 (x int) with system versioning;
create or replace view vt1(c) as select x from t1;

drop view vvvt1;
drop view vvt1;
drop view vt1;
Expand Down
21 changes: 17 additions & 4 deletions sql/sql_view.cc
Expand Up @@ -463,12 +463,25 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views,
TABLE_SHARE *s= tl->table->s;
if (s->versioned)
{
const char *start= s->vers_start_field()->field_name;
const char *end = s->vers_end_field()->field_name;

select_lex->item_list.push_back(new (thd->mem_root) Item_field(
thd, &select_lex->context, NULL, NULL,
s->vers_start_field()->field_name));
thd, &select_lex->context, NULL, NULL, start));
select_lex->item_list.push_back(new (thd->mem_root) Item_field(
thd, &select_lex->context, NULL, NULL,
s->vers_end_field()->field_name));
thd, &select_lex->context, NULL, NULL, end));

if (lex->view_list.elements)
{
if (LEX_STRING *s= thd->make_lex_string(start, strlen(start)))
lex->view_list.push_back(s);
else
goto err;
if (LEX_STRING *s= thd->make_lex_string(end, strlen(end)))
lex->view_list.push_back(s);
else
goto err;
}
}
}
}
Expand Down

0 comments on commit a37cf52

Please sign in to comment.