diff options
-rw-r--r-- | sql/item.h | 2 | ||||
-rw-r--r-- | sql/item_func.h | 2 | ||||
-rw-r--r-- | sql/item_timefunc.h | 32 | ||||
-rw-r--r-- | sql/sql_partition.cc | 11 |
4 files changed, 24 insertions, 23 deletions
diff --git a/sql/item.h b/sql/item.h index d0fbdc81d0e..e3df08e7512 100644 --- a/sql/item.h +++ b/sql/item.h @@ -970,7 +970,7 @@ public: for date functions. Also used by partitioning code to reject timezone-dependent expressions in a (sub)partitioning function. */ - virtual bool is_arguments_valid_processor(uchar *bool_arg) + virtual bool check_valid_arguments_processor(uchar *bool_arg) { return FALSE; } diff --git a/sql/item_func.h b/sql/item_func.h index 176e3dc4d44..5c935e8f10f 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -248,7 +248,7 @@ public: representation of a TIMESTAMP argument verbatim, and thus does not depend on the timezone. */ - virtual bool is_arguments_valid_processor(uchar *bool_arg) + virtual bool check_valid_arguments_processor(uchar *bool_arg) { return has_timestamp_args(); } diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index b6356504788..f4299460abf 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -70,7 +70,7 @@ public: enum_monotonicity_info get_monotonicity_info() const; longlong val_int_endpoint(bool left_endp, bool *incl_endp); bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -90,7 +90,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -119,7 +119,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -152,7 +152,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -172,7 +172,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_time_args(); } @@ -192,7 +192,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_time_args(); } @@ -212,7 +212,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -232,7 +232,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_time_args(); } @@ -266,7 +266,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -288,7 +288,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -322,7 +322,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_date_args(); } @@ -355,7 +355,7 @@ public: (and thus may not be used as a partitioning function) when its argument is NOT of the TIMESTAMP type. */ - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_timestamp_args(); } @@ -380,7 +380,7 @@ public: max_length=10*MY_CHARSET_BIN_MB_MAXLEN; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_time_args(); } @@ -637,7 +637,7 @@ public: const char *func_name() const { return "from_days"; } bool get_date(MYSQL_TIME *res, uint fuzzy_date); bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return has_date_args() || has_time_args(); } @@ -767,7 +767,7 @@ class Item_extract :public Item_int_func bool eq(const Item *item, bool binary_cmp) const; virtual void print(String *str, enum_query_type query_type); bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { switch (int_type) { case INTERVAL_YEAR: @@ -1053,7 +1053,7 @@ public: maybe_null=1; } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} - bool is_arguments_valid_processor(uchar *int_arg) + bool check_valid_arguments_processor(uchar *int_arg) { return !has_time_args(); } diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 835ddcc4bc6..f8e5130880b 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1014,12 +1014,13 @@ static bool fix_fields_part_func(THD *thd, Item* func_expr, TABLE *table, } /* - We don't allow creating partitions with timezone-dependent expressions as - a (sub)partitioning function, but we want to allow such expressions when - opening existing tables for easier maintenance. This exception should be - deprecated at some point in future so that we always throw an error. + We don't allow creating partitions with expressions with non matching + arguments as a (sub)partitioning function, + but we want to allow such expressions when opening existing tables for + easier maintenance. This exception should be deprecated at some point + in future so that we always throw an error. */ - if (func_expr->walk(&Item::is_arguments_valid_processor, + if (func_expr->walk(&Item::check_valid_arguments_processor, 0, NULL)) { if (is_create_table_ind) |