|
|
|
@ -395,16 +395,26 @@ public: |
|
|
|
bool field_in_partition_expr(Field *field) const; |
|
|
|
|
|
|
|
bool vers_init_info(THD *thd); |
|
|
|
bool vers_set_interval(Item *item, interval_type int_type, my_time_t start) |
|
|
|
bool vers_set_interval(THD *thd, Item *item, |
|
|
|
interval_type int_type, my_time_t start) |
|
|
|
{ |
|
|
|
DBUG_ASSERT(part_type == VERSIONING_PARTITION); |
|
|
|
vers_info->interval.type= int_type; |
|
|
|
vers_info->interval.start= start; |
|
|
|
return get_interval_value(item, int_type, &vers_info->interval.step) || |
|
|
|
if (item->fix_fields_if_needed_for_scalar(thd, &item)) |
|
|
|
return true; |
|
|
|
bool error= get_interval_value(item, int_type, &vers_info->interval.step) || |
|
|
|
vers_info->interval.step.neg || vers_info->interval.step.second_part || |
|
|
|
!(vers_info->interval.step.year || vers_info->interval.step.month || |
|
|
|
vers_info->interval.step.day || vers_info->interval.step.hour || |
|
|
|
vers_info->interval.step.minute || vers_info->interval.step.second); |
|
|
|
if (error) |
|
|
|
{ |
|
|
|
my_error(ER_PART_WRONG_VALUE, MYF(0), |
|
|
|
thd->lex->create_last_non_select_table->table_name.str, |
|
|
|
"INTERVAL"); |
|
|
|
} |
|
|
|
return error; |
|
|
|
} |
|
|
|
bool vers_set_limit(ulonglong limit) |
|
|
|
{ |
|
|
|
|