diff options
author | Alexander Barkov <bar@mariadb.org> | 2014-07-28 13:47:55 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2014-07-28 13:47:55 +0400 |
commit | 5b452ae0279935164b6a2bee8861bf2e830508b5 (patch) | |
tree | bb75c9142b4958dae78e411d94cc923f043939cb /sql/item_timefunc.h | |
parent | 4e6e720160d983752465323477d74a1c90bad0cd (diff) | |
download | mariadb-git-5b452ae0279935164b6a2bee8861bf2e830508b5.tar.gz |
MDEV-4511 Assertion `scale <= precision' fails on GROUP BY TIMEDIFF with incorrect types
MDEV-6302 Wrong result set when using GROUP BY FROM_UNIXTIME(...)+0
Fixed.
Diffstat (limited to 'sql/item_timefunc.h')
-rw-r--r-- | sql/item_timefunc.h | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index 7d865df8fea..1e8d876ec94 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -365,16 +365,15 @@ protected: public: Item_func_seconds_hybrid() :Item_func_numhybrid() {} Item_func_seconds_hybrid(Item *a) :Item_func_numhybrid(a) {} - void fix_num_length_and_dec() + void fix_length_and_dec() { if (arg_count) decimals= args[0]->temporal_precision(arg0_expected_type()); set_if_smaller(decimals, TIME_SECOND_PART_DIGITS); max_length=17 + (decimals ? decimals + 1 : 0); maybe_null= true; + cached_result_type= decimals ? DECIMAL_RESULT : INT_RESULT; } - void find_num_type() - { cached_result_type= decimals ? DECIMAL_RESULT : INT_RESULT; } double real_op() { DBUG_ASSERT(0); return 0; } String *str_op(String *str) { DBUG_ASSERT(0); return 0; } bool date_op(MYSQL_TIME *ltime, uint fuzzydate) { DBUG_ASSERT(0); return true; } @@ -421,11 +420,6 @@ protected: public: Item_func_time_to_sec(Item *item) :Item_func_seconds_hybrid(item) {} const char *func_name() const { return "time_to_sec"; } - void fix_num_length_and_dec() - { - maybe_null= true; - Item_func_seconds_hybrid::fix_num_length_and_dec(); - } bool check_partition_func_processor(uchar *int_arg) {return FALSE;} bool check_vcol_func_processor(uchar *int_arg) { return FALSE;} bool check_valid_arguments_processor(uchar *int_arg) |