From f82f8fac94f11e94f94ac1a39e65446bf9710638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 10 Nov 2022 09:03:28 +0200 Subject: Revert "MDEV-29841 More descriptive text for ER_PARTITION_WRONG_TYPE" This reverts commit 6f8fb41f213dd34b43ef6f3819b4be12f6b26c01 because it broke cmake -DPLUGIN_PARTITION=NO --- sql/sql_partition.cc | 108 ++++++++++++++------------------------------------- 1 file changed, 30 insertions(+), 78 deletions(-) (limited to 'sql/sql_partition.cc') diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index d7078278557..5fd9091c58f 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2455,7 +2455,7 @@ end: @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; 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; } - -/* - 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. 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"); err+= str.append(STRING_WITH_LEN(" PARTITION BY ")); - int err2= part_info->gen_part_type(thd, &str); - if (err2 < 0) - DBUG_RETURN(NULL); - err+= err2; + switch (part_info->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 (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) { 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 || 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 { -- cgit v1.2.1