Skip to content

Commit

Permalink
Misc: vers_select_conds_t::init_from_sysvar()
Browse files Browse the repository at this point in the history
  • Loading branch information
kevgs authored and midenok committed May 5, 2017
1 parent 352d835 commit 21e8b22
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 18 deletions.
43 changes: 25 additions & 18 deletions sql/sql_select.cc
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,29 @@ setup_without_group(THD *thd, Ref_ptr_array ref_pointer_array,
DBUG_RETURN(res);
}

bool vers_select_conds_t::init_from_sysvar(THD *thd)
{
const char var[]= "temporal_current_timestamp";
sys_var *sv= intern_find_sys_var(var, sizeof(var) - 1);
DBUG_ASSERT(sv);
const char *data= *(char **)sv->option.value;
DBUG_ASSERT(data);
if (0 == strcmp(data, "all"))
{
init(FOR_SYSTEM_TIME_ALL, UNIT_TIMESTAMP);
}
else if (0 != strcmp(data, "now"))
{
Item *ts=
create_temporal_literal(thd, data, strlen(data), system_charset_info,
MYSQL_TYPE_DATETIME, true);
if (!ts)
return true;
init(FOR_SYSTEM_TIME_AS_OF, UNIT_TIMESTAMP, ts);
}
return false;
}

int vers_setup_select(THD *thd, TABLE_LIST *tables, COND **where_expr,
SELECT_LEX *slex)
{
Expand Down Expand Up @@ -778,24 +801,8 @@ int vers_setup_select(THD *thd, TABLE_LIST *tables, COND **where_expr,

if (vers_conditions.type == FOR_SYSTEM_TIME_UNSPECIFIED)
{
const char var[]= "temporal_current_timestamp";
sys_var *sv= intern_find_sys_var(var, sizeof(var) - 1);
DBUG_ASSERT(sv);
const char *data= *(char **)sv->option.value;
DBUG_ASSERT(data);
if (0 == strcmp(data, "all"))
{
vers_conditions.init(FOR_SYSTEM_TIME_ALL, UNIT_TIMESTAMP);
}
else if (0 != strcmp(data, "now"))
{
Item *ts= create_temporal_literal(thd, data, strlen(data),
system_charset_info,
MYSQL_TYPE_DATETIME, true);
if (!ts)
DBUG_RETURN(-1);
vers_conditions.init(FOR_SYSTEM_TIME_AS_OF, UNIT_TIMESTAMP, ts);
}
if (vers_conditions.init_from_sysvar(thd))
DBUG_RETURN(-1);
}

if (vers_conditions.type != FOR_SYSTEM_TIME_UNSPECIFIED)
Expand Down
2 changes: 2 additions & 0 deletions sql/table.h
Original file line number Diff line number Diff line change
Expand Up @@ -1882,6 +1882,8 @@ struct vers_select_conds_t
start= s;
end= e;
}

bool init_from_sysvar(THD *thd);
};

struct LEX;
Expand Down

0 comments on commit 21e8b22

Please sign in to comment.