summaryrefslogtreecommitdiff
path: root/sql/handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/handler.cc')
-rw-r--r--sql/handler.cc35
1 files changed, 18 insertions, 17 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index d49a695f197..2fad0dca954 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -7852,11 +7852,11 @@ bool Vers_parse_info::is_end(const char *name) const
}
bool Vers_parse_info::is_start(const Create_field &f) const
{
- return f.flags & VERS_SYS_START_FLAG;
+ return f.flags & VERS_ROW_START;
}
bool Vers_parse_info::is_end(const Create_field &f) const
{
- return f.flags & VERS_SYS_END_FLAG;
+ return f.flags & VERS_ROW_END;
}
static Create_field *vers_init_sys_field(THD *thd, const char *field_name, int flags, bool integer)
@@ -7916,8 +7916,8 @@ bool Vers_parse_info::fix_implicit(THD *thd, Alter_info *alter_info)
period= start_end_t(default_start, default_end);
as_row= period;
- if (vers_create_sys_field(thd, default_start, alter_info, VERS_SYS_START_FLAG) ||
- vers_create_sys_field(thd, default_end, alter_info, VERS_SYS_END_FLAG))
+ if (vers_create_sys_field(thd, default_start, alter_info, VERS_ROW_START) ||
+ vers_create_sys_field(thd, default_end, alter_info, VERS_ROW_END))
{
return true;
}
@@ -8072,7 +8072,7 @@ bool Vers_parse_info::fix_alter_info(THD *thd, Alter_info *alter_info,
return true;
}
my_error(ER_VERS_DUPLICATE_ROW_START_END, MYF(0),
- f->flags & VERS_SYS_START_FLAG ? "START" : "END", f->field_name.str);
+ f->flags & VERS_ROW_START ? "START" : "END", f->field_name.str);
return true;
}
}
@@ -8186,13 +8186,13 @@ Vers_parse_info::fix_create_like(Alter_info &alter_info, HA_CREATE_INFO &create_
while ((f= it++))
{
- if (f->flags & VERS_SYS_START_FLAG)
+ if (f->flags & VERS_ROW_START)
{
f_start= f;
if (f_end)
break;
}
- else if (f->flags & VERS_SYS_END_FLAG)
+ else if (f->flags & VERS_ROW_END)
{
f_end= f;
if (f_start)
@@ -8338,6 +8338,7 @@ bool Vers_type_trx::check_sys_fields(const LEX_CSTRING &table_name,
return false;
}
+
bool Vers_parse_info::check_sys_fields(const Lex_table_name &table_name,
const Lex_table_name &db,
Alter_info *alter_info) const
@@ -8346,18 +8347,21 @@ bool Vers_parse_info::check_sys_fields(const Lex_table_name &table_name,
return true;
List_iterator<Create_field> it(alter_info->create_list);
- const Create_field *row_start= NULL;
- const Create_field *row_end= NULL;
+ const Create_field *row_start= nullptr;
+ const Create_field *row_end= nullptr;
while (const Create_field *f= it++)
{
- if (f->flags & VERS_SYS_START_FLAG && !row_start)
+ if (f->flags & VERS_ROW_START && !row_start)
row_start= f;
- if (f->flags & VERS_SYS_END_FLAG && !row_end)
+ if (f->flags & VERS_ROW_END && !row_end)
row_end= f;
}
- DBUG_ASSERT(row_start);
- DBUG_ASSERT(row_end);
+ if (!row_start || !row_end)
+ {
+ my_error(ER_VERS_PERIOD_COLUMNS, MYF(0), as_row.start.str, as_row.end.str);
+ return true;
+ }
const Vers_type_handler *row_start_vers= row_start->type_handler()->vers();
@@ -8367,10 +8371,7 @@ bool Vers_parse_info::check_sys_fields(const Lex_table_name &table_name,
return true;
}
- if (row_start_vers->check_sys_fields(table_name, row_start, row_end))
- return true;
-
- return false;
+ return row_start_vers->check_sys_fields(table_name, row_start, row_end);
}
bool Table_period_info::check_field(const Create_field* f,