Commit 8de834fc authored by mikael@dator6.(none)'s avatar mikael@dator6.(none)

BUG#33182: Disallow division due to div_precision_increment problems

parent dbcd4d9e
drop table if exists t1; drop table if exists t1;
create table t1 (a int) partition by list ((a/3)*10 div 1)
(partition p0 values in (0), partition p1 values in (1));
ERROR HY000: This partition function is not allowed
CREATE TABLE t1 ( CREATE TABLE t1 (
d DATE NOT NULL d DATE NOT NULL
) )
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
drop table if exists t1; drop table if exists t1;
--enable_warnings --enable_warnings
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create table t1 (a int) partition by list ((a/3)*10 div 1)
(partition p0 values in (0), partition p1 values in (1));
# #
# Bug #30695: An apostrophe ' in the comment of the ADD PARTITION causes the Server to crash. # Bug #30695: An apostrophe ' in the comment of the ADD PARTITION causes the Server to crash.
# #
......
...@@ -296,7 +296,6 @@ class Item_num_op :public Item_func_numhybrid ...@@ -296,7 +296,6 @@ class Item_num_op :public Item_func_numhybrid
void print(String *str) { print_op(str); } void print(String *str) { print_op(str); }
void find_num_type(); void find_num_type();
String *str_op(String *str) { DBUG_ASSERT(0); return 0; } String *str_op(String *str) { DBUG_ASSERT(0); return 0; }
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
}; };
...@@ -382,6 +381,7 @@ class Item_func_additive_op :public Item_num_op ...@@ -382,6 +381,7 @@ class Item_func_additive_op :public Item_num_op
public: public:
Item_func_additive_op(Item *a,Item *b) :Item_num_op(a,b) {} Item_func_additive_op(Item *a,Item *b) :Item_num_op(a,b) {}
void result_precision(); void result_precision();
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
}; };
...@@ -416,6 +416,7 @@ class Item_func_mul :public Item_num_op ...@@ -416,6 +416,7 @@ class Item_func_mul :public Item_num_op
double real_op(); double real_op();
my_decimal *decimal_op(my_decimal *); my_decimal *decimal_op(my_decimal *);
void result_precision(); void result_precision();
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
}; };
...@@ -456,6 +457,7 @@ class Item_func_mod :public Item_num_op ...@@ -456,6 +457,7 @@ class Item_func_mod :public Item_num_op
const char *func_name() const { return "%"; } const char *func_name() const { return "%"; }
void result_precision(); void result_precision();
void fix_length_and_dec(); void fix_length_and_dec();
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment