mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Merge 10.5 into 10.6
The changes to galera.galear_var_replicate_myisam_on in commitd9b933bec6
are omitted due to conflicts with commit27d66d644c
.
This commit is contained in:
@ -8200,11 +8200,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)
|
||||
@ -8264,8 +8264,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;
|
||||
}
|
||||
@ -8420,7 +8420,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;
|
||||
}
|
||||
}
|
||||
@ -8534,13 +8534,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)
|
||||
@ -8686,6 +8686,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
|
||||
@ -8694,18 +8695,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();
|
||||
|
||||
@ -8715,10 +8719,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,
|
||||
|
Reference in New Issue
Block a user