mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Revert "MDEV-29841 More descriptive text for ER_PARTITION_WRONG_TYPE"
This reverts commit 6f8fb41f21
because it broke cmake -DPLUGIN_PARTITION=NO
This commit is contained in:
@ -150,7 +150,7 @@ partition by system_time limit 1;
|
|||||||
alter table t1 change x big int;
|
alter table t1 change x big int;
|
||||||
create or replace table t1 (i int) engine myisam partition by hash(i) partitions 2;
|
create or replace table t1 (i int) engine myisam partition by hash(i) partitions 2;
|
||||||
alter table t1 add partition (partition px history);
|
alter table t1 add partition (partition px history);
|
||||||
ERROR HY000: Wrong partition type `SYSTEM_TIME` for partitioning by `HASH`
|
ERROR HY000: Wrong partitioning type, expected type: `SYSTEM_TIME`
|
||||||
## INSERT, UPDATE, DELETE
|
## INSERT, UPDATE, DELETE
|
||||||
create or replace table t1 (x int)
|
create or replace table t1 (x int)
|
||||||
with system versioning
|
with system versioning
|
||||||
@ -1105,7 +1105,7 @@ drop table t1;
|
|||||||
create table t1 (a int) with system versioning partition by system_time
|
create table t1 (a int) with system versioning partition by system_time
|
||||||
(partition p1 history, partition pn current);
|
(partition p1 history, partition pn current);
|
||||||
alter table t1 add partition (partition p2);
|
alter table t1 add partition (partition p2);
|
||||||
ERROR HY000: Wrong partition type `HASH` for partitioning by `SYSTEM_TIME`
|
ERROR HY000: Wrong partitioning type, expected type: `SYSTEM_TIME`
|
||||||
# MDEV-17891 Assertion failures in select_insert::abort_result_set and
|
# MDEV-17891 Assertion failures in select_insert::abort_result_set and
|
||||||
# mysql_load upon attempt to replace into a full table
|
# mysql_load upon attempt to replace into a full table
|
||||||
set @@max_heap_table_size= 1024*1024;
|
set @@max_heap_table_size= 1024*1024;
|
||||||
|
@ -429,13 +429,8 @@ public:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
uint next_part_no(uint new_parts) const;
|
uint next_part_no(uint new_parts) const;
|
||||||
|
|
||||||
int gen_part_type(THD *thd, String *str) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void part_type_error(THD *thd, partition_info *work_part_info,
|
|
||||||
const char *part_type, partition_info *tab_part_info);
|
|
||||||
|
|
||||||
uint32 get_next_partition_id_range(struct st_partition_iter* part_iter);
|
uint32 get_next_partition_id_range(struct st_partition_iter* part_iter);
|
||||||
bool check_partition_dirs(partition_info *part_info);
|
bool check_partition_dirs(partition_info *part_info);
|
||||||
|
|
||||||
|
@ -9773,9 +9773,9 @@ ER_UNUSED_23
|
|||||||
spa "Nunca debería vd de ver esto"
|
spa "Nunca debería vd de ver esto"
|
||||||
|
|
||||||
ER_PARTITION_WRONG_TYPE
|
ER_PARTITION_WRONG_TYPE
|
||||||
chi "错误的分区类型,预期类型:%`s for partitioning by %`s"
|
chi "错误的分区类型,预期类型:%`s"
|
||||||
eng "Wrong partition type %`s for partitioning by %`s"
|
eng "Wrong partitioning type, expected type: %`s"
|
||||||
spa "Tipo de partición equivocada, tipo esperado: %`s for partitioning by %`s"
|
spa "Tipo de partición equivocada, tipo esperado: %`s"
|
||||||
|
|
||||||
WARN_VERS_PART_FULL
|
WARN_VERS_PART_FULL
|
||||||
chi "版本化表%`s.%`s:partition%`s已满,添加更多历史分区(out of %s)"
|
chi "版本化表%`s.%`s:partition%`s已满,添加更多历史分区(out of %s)"
|
||||||
|
@ -9740,7 +9740,7 @@ bool LEX::part_values_current(THD *thd)
|
|||||||
{
|
{
|
||||||
if (unlikely(part_info->part_type != VERSIONING_PARTITION))
|
if (unlikely(part_info->part_type != VERSIONING_PARTITION))
|
||||||
{
|
{
|
||||||
part_type_error(thd, NULL, "CURRENT", part_info);
|
my_error(ER_PARTITION_WRONG_TYPE, MYF(0), "SYSTEM_TIME");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9767,7 +9767,7 @@ bool LEX::part_values_history(THD *thd)
|
|||||||
{
|
{
|
||||||
if (unlikely(part_info->part_type != VERSIONING_PARTITION))
|
if (unlikely(part_info->part_type != VERSIONING_PARTITION))
|
||||||
{
|
{
|
||||||
part_type_error(thd, NULL, "HISTORY", part_info);
|
my_error(ER_PARTITION_WRONG_TYPE, MYF(0), "SYSTEM_TIME");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2455,7 +2455,7 @@ end:
|
|||||||
@retval != 0 Failure
|
@retval != 0 Failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int add_key_with_algorithm(String *str, const partition_info *part_info)
|
static int add_key_with_algorithm(String *str, partition_info *part_info)
|
||||||
{
|
{
|
||||||
int err= 0;
|
int err= 0;
|
||||||
err+= str->append(STRING_WITH_LEN("KEY "));
|
err+= str->append(STRING_WITH_LEN("KEY "));
|
||||||
@ -2484,78 +2484,6 @@ char *generate_partition_syntax_for_frm(THD *thd, partition_info *part_info,
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Generate the partition type syntax from the partition data structure.
|
|
||||||
|
|
||||||
@return Operation status.
|
|
||||||
@retval 0 Success
|
|
||||||
@retval > 0 Failure
|
|
||||||
@retval -1 Fatal error
|
|
||||||
*/
|
|
||||||
|
|
||||||
int partition_info::gen_part_type(THD *thd, String *str) const
|
|
||||||
{
|
|
||||||
int err= 0;
|
|
||||||
switch (part_type)
|
|
||||||
{
|
|
||||||
case RANGE_PARTITION:
|
|
||||||
err+= str->append(STRING_WITH_LEN("RANGE "));
|
|
||||||
break;
|
|
||||||
case LIST_PARTITION:
|
|
||||||
err+= str->append(STRING_WITH_LEN("LIST "));
|
|
||||||
break;
|
|
||||||
case HASH_PARTITION:
|
|
||||||
if (linear_hash_ind)
|
|
||||||
err+= str->append(STRING_WITH_LEN("LINEAR "));
|
|
||||||
if (list_of_part_fields)
|
|
||||||
{
|
|
||||||
err+= add_key_with_algorithm(str, this);
|
|
||||||
err+= add_part_field_list(thd, str, part_field_list);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
err+= str->append(STRING_WITH_LEN("HASH "));
|
|
||||||
break;
|
|
||||||
case VERSIONING_PARTITION:
|
|
||||||
err+= str->append(STRING_WITH_LEN("SYSTEM_TIME "));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
DBUG_ASSERT(0);
|
|
||||||
/* We really shouldn't get here, no use in continuing from here */
|
|
||||||
my_error(ER_OUT_OF_RESOURCES, MYF(ME_FATAL));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void part_type_error(THD *thd, partition_info *work_part_info,
|
|
||||||
const char *part_type,
|
|
||||||
partition_info *tab_part_info)
|
|
||||||
{
|
|
||||||
StringBuffer<256> tab_part_type;
|
|
||||||
if (tab_part_info->gen_part_type(thd, &tab_part_type) < 0)
|
|
||||||
return;
|
|
||||||
tab_part_type.length(tab_part_type.length() - 1);
|
|
||||||
if (work_part_info)
|
|
||||||
{
|
|
||||||
DBUG_ASSERT(!part_type);
|
|
||||||
StringBuffer<256> work_part_type;
|
|
||||||
if (work_part_info->gen_part_type(thd, &work_part_type) < 0)
|
|
||||||
return;
|
|
||||||
work_part_type.length(work_part_type.length() - 1);
|
|
||||||
my_error(ER_PARTITION_WRONG_TYPE, MYF(0), work_part_type.c_ptr(),
|
|
||||||
tab_part_type.c_ptr());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DBUG_ASSERT(part_type);
|
|
||||||
my_error(ER_PARTITION_WRONG_TYPE, MYF(0), part_type,
|
|
||||||
tab_part_type.c_ptr());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Generate the partition syntax from the partition data structure.
|
Generate the partition syntax from the partition data structure.
|
||||||
Useful for support of generating defaults, SHOW CREATE TABLES
|
Useful for support of generating defaults, SHOW CREATE TABLES
|
||||||
@ -2599,10 +2527,34 @@ char *generate_partition_syntax(THD *thd, partition_info *part_info,
|
|||||||
DBUG_ENTER("generate_partition_syntax");
|
DBUG_ENTER("generate_partition_syntax");
|
||||||
|
|
||||||
err+= str.append(STRING_WITH_LEN(" PARTITION BY "));
|
err+= str.append(STRING_WITH_LEN(" PARTITION BY "));
|
||||||
int err2= part_info->gen_part_type(thd, &str);
|
switch (part_info->part_type)
|
||||||
if (err2 < 0)
|
{
|
||||||
DBUG_RETURN(NULL);
|
case RANGE_PARTITION:
|
||||||
err+= err2;
|
err+= str.append(STRING_WITH_LEN("RANGE "));
|
||||||
|
break;
|
||||||
|
case LIST_PARTITION:
|
||||||
|
err+= str.append(STRING_WITH_LEN("LIST "));
|
||||||
|
break;
|
||||||
|
case HASH_PARTITION:
|
||||||
|
if (part_info->linear_hash_ind)
|
||||||
|
err+= str.append(STRING_WITH_LEN("LINEAR "));
|
||||||
|
if (part_info->list_of_part_fields)
|
||||||
|
{
|
||||||
|
err+= add_key_with_algorithm(&str, part_info);
|
||||||
|
err+= add_part_field_list(thd, &str, part_info->part_field_list);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
err+= str.append(STRING_WITH_LEN("HASH "));
|
||||||
|
break;
|
||||||
|
case VERSIONING_PARTITION:
|
||||||
|
err+= str.append(STRING_WITH_LEN("SYSTEM_TIME "));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
DBUG_ASSERT(0);
|
||||||
|
/* We really shouldn't get here, no use in continuing from here */
|
||||||
|
my_error(ER_OUT_OF_RESOURCES, MYF(ME_FATAL));
|
||||||
|
DBUG_RETURN(NULL);
|
||||||
|
}
|
||||||
if (part_info->part_type == VERSIONING_PARTITION)
|
if (part_info->part_type == VERSIONING_PARTITION)
|
||||||
{
|
{
|
||||||
Vers_part_info *vers_info= part_info->vers_info;
|
Vers_part_info *vers_info= part_info->vers_info;
|
||||||
@ -5099,7 +5051,7 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info,
|
|||||||
else if (thd->work_part_info->part_type == VERSIONING_PARTITION ||
|
else if (thd->work_part_info->part_type == VERSIONING_PARTITION ||
|
||||||
tab_part_info->part_type == VERSIONING_PARTITION)
|
tab_part_info->part_type == VERSIONING_PARTITION)
|
||||||
{
|
{
|
||||||
part_type_error(thd, thd->work_part_info, NULL, tab_part_info);
|
my_error(ER_PARTITION_WRONG_TYPE, MYF(0), "SYSTEM_TIME");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user