mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Misc: vers_select_conds_t::init_from_sysvar()
This commit is contained in:
@@ -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)
|
||||
{
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user