1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-01 17:39:21 +03:00
Files
mariadb/sql
Alexander Barkov 6a2ee9c8bb MDEV-23032 FLOOR()/CEIL() incorrectly calculate the precision of a DECIMAL(M,D) column
The code in Item_func_int_val::fix_length_and_dec_int_or_decimal()
calculated badly the result data type for FLOOR()/CEIL(), so for example
the decimal(38,10) input created a decimal(28,0) result.
That was not correct, because one extra integer digit is needed.
   floor(-9.9) -> -10
   ceil(9.9)   ->  10

Rewritting the code in a more straightforward way.
Additional changes:
- FLOOR() now takes into account the presence of the UNSIGNED
flag of the argument: FLOOR(unsigned decimal) does not need an extra digits.
- FLOOR()/CEILING() now preserve the unsigned flag in the result
  data type is decimal.
These changes give nicer data types.
2020-08-04 08:09:08 +04:00
..
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-13 17:54:04 +03:00
2020-07-15 10:26:31 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-11 22:19:05 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 21:29:06 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-01-31 11:37:12 +02:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 21:29:06 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-05-05 20:33:10 +03:00
2019-05-11 21:29:06 +03:00
2020-03-11 14:28:24 +01:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2020-07-31 18:09:08 +03:00
2020-07-14 22:59:19 +03:00
2019-05-14 17:18:46 +03:00
2020-07-15 10:17:15 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-13 17:54:04 +03:00
2019-05-14 17:18:46 +03:00
2019-05-13 17:54:04 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-07-20 15:34:59 +03:00
2020-03-11 13:27:10 +01:00
2020-05-26 11:54:55 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 22:19:05 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2020-07-02 17:57:34 +03:00
2020-07-31 18:09:08 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2020-07-02 07:39:33 +03:00
2020-07-02 06:17:51 +03:00
2020-03-30 14:50:23 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2020-06-13 19:01:28 +03:00
2020-06-13 19:01:28 +03:00
2020-07-31 18:09:08 +03:00
2020-01-24 14:50:23 +01:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:09:08 +03:00
2020-06-03 07:32:09 +03:00
2019-07-26 22:42:35 +02:00
2020-07-31 18:09:08 +03:00
2020-06-13 19:01:28 +03:00
2019-06-25 13:21:36 +03:00
2019-05-14 17:18:46 +03:00
2019-10-18 09:05:27 +03:00
2019-10-18 09:05:27 +03:00
2019-05-11 21:29:06 +03:00
2019-12-09 15:09:41 +01:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-07-31 18:09:08 +03:00
2020-01-24 14:50:23 +01:00
2019-05-14 17:18:46 +03:00
2020-06-13 19:01:28 +03:00
2019-05-11 21:29:06 +03:00
2019-05-19 20:55:37 +02:00
2019-05-11 21:29:06 +03:00
2019-05-14 17:18:46 +03:00
2019-06-25 13:21:36 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-02-11 14:40:35 +01:00
2020-02-11 14:40:35 +01:00
2020-07-02 06:17:51 +03:00
2019-05-11 21:29:06 +03:00
2020-07-20 15:34:59 +03:00
2020-07-31 13:51:28 +03:00
2020-05-30 11:04:27 +03:00
2020-07-02 17:57:34 +03:00
2020-05-30 11:04:27 +03:00
2020-07-15 10:17:15 +03:00
2019-09-27 16:26:53 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-09-02 14:57:05 +02:00
2019-05-14 17:18:46 +03:00
2019-06-25 13:21:36 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-06-25 13:21:36 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-11 22:19:05 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 22:19:05 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-12-09 15:09:41 +01:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-11 22:19:05 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-07-02 07:39:33 +03:00
2020-05-30 11:04:27 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 22:19:05 +03:00
2019-08-28 10:18:41 +03:00
2019-05-11 22:19:05 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-07-31 18:09:08 +03:00
2019-05-04 12:43:29 +04:00
2020-06-03 07:32:09 +03:00
2020-06-03 07:32:09 +03:00
2020-07-02 06:17:51 +03:00
2020-07-31 18:09:08 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2020-06-06 22:05:32 +03:00
2020-01-20 15:49:48 +02:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2020-07-15 10:17:15 +03:00
2019-05-19 20:55:37 +02:00
2020-03-20 18:12:17 +02:00
2020-03-20 18:12:17 +02:00
2020-06-02 10:25:11 +03:00
2020-05-26 11:54:55 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-07-02 17:46:22 +03:00
2019-12-27 15:14:48 +02:00
2020-07-31 18:09:08 +03:00
2019-06-14 22:10:50 +02:00
2020-05-19 21:18:15 +03:00
2019-05-11 21:29:06 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 19:25:02 +03:00
2019-05-14 17:18:46 +03:00
2020-06-13 19:01:28 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 21:29:06 +03:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:09:08 +03:00
2019-05-14 17:18:46 +03:00
2019-06-14 22:10:50 +02:00
2020-03-30 14:50:23 +03:00
2019-05-14 17:18:46 +03:00
2019-07-01 18:37:15 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-06-08 11:45:28 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-12-09 15:09:41 +01:00
2019-05-14 17:18:46 +03:00
2019-12-09 15:09:41 +01:00
2019-05-14 17:18:46 +03:00
2020-06-08 11:45:28 +03:00
2019-05-19 20:55:37 +02:00
2019-05-11 19:25:02 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-11 21:29:06 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2020-05-13 12:52:57 +03:00
2020-05-13 12:52:57 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 19:25:02 +03:00
2019-06-19 10:49:00 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-11 21:29:06 +03:00
2019-05-14 17:18:46 +03:00
2020-07-21 16:36:47 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 21:29:06 +03:00
2020-07-31 18:10:03 +03:00
2019-05-19 20:55:37 +02:00
2020-06-05 18:05:22 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-07-31 18:09:08 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-11 22:19:05 +03:00
2019-05-14 17:18:46 +03:00
2019-05-11 22:19:05 +03:00
2020-07-02 07:39:33 +03:00
2019-05-19 20:55:37 +02:00
2020-07-15 10:17:15 +03:00
2020-05-26 11:54:55 +03:00
2020-07-21 16:36:47 +03:00
2019-05-14 17:18:46 +03:00
2020-07-31 18:10:03 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2020-07-20 15:34:59 +03:00
2020-07-20 15:34:59 +03:00
2020-04-16 12:12:26 +03:00
2020-07-31 18:09:08 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2019-05-11 21:29:06 +03:00
2020-03-09 13:49:06 +02:00
2019-05-19 20:55:37 +02:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:09:08 +03:00
2020-06-06 18:50:25 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-11 22:19:05 +03:00
2020-03-20 22:06:55 +02:00
2020-07-31 18:09:08 +03:00
2020-05-26 11:54:55 +03:00
2019-05-19 20:55:37 +02:00
2020-06-08 11:45:28 +03:00
2019-05-14 17:18:46 +03:00
2020-04-16 12:12:26 +03:00
2019-05-14 17:18:46 +03:00
2019-11-01 15:23:18 +02:00
2019-05-14 17:18:46 +03:00
2020-07-14 22:59:19 +03:00
2019-05-28 14:54:38 +04:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2019-05-14 17:18:46 +03:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:10:03 +03:00
2020-05-26 11:54:55 +03:00
2019-05-14 17:18:46 +03:00
2019-05-14 17:18:46 +03:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:09:08 +03:00
2020-07-31 18:09:08 +03:00
2020-04-15 09:56:03 +03:00
2019-05-19 20:55:37 +02:00
2019-05-11 21:29:06 +03:00
2020-05-26 11:54:55 +03:00
2019-05-14 17:18:46 +03:00
2019-05-19 20:55:37 +02:00
2020-06-13 15:11:43 +03:00
2020-06-12 10:55:53 +03:00
2019-05-19 20:55:37 +02:00
2020-07-15 09:49:48 +02:00
2019-05-10 20:52:00 +03:00
2020-03-30 11:12:56 +03:00
2019-05-19 20:55:37 +02:00
2020-04-15 09:56:03 +03:00
2019-05-11 19:25:02 +03:00
2020-06-06 18:50:25 +03:00
2020-04-27 14:24:41 +03:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2020-06-06 18:50:25 +03:00
2020-06-05 18:32:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00
2019-05-19 20:55:37 +02:00