Oleg Smirnov
69d294e755
MDEV-29070 SIGSEGV in my_decimal::operator= and Assertion `0' failed and in Item_type_holder::val_decimal on SELECT
...
The bug is fixed by the patch ported from MySQL. See the comprehensive
description below.
commit 455c4e8810c76430719b1a08a63ca0f69f44678a
Author: Guilhem Bichot <guilhem.bichot@oracle.com >
Date: Fri Mar 13 17:51:27 2015 +0100
Bug#17668844: CRASH/ASSERT AT ITEM_TYPE_HOLDER::VAL_STR IN ITEM.C
We have a predicate of the form:
literal_row <=> (a UNION)
The subquery is constant, so Item_cache objects are used for its
SELECT list.
In order, this happens:
- Item_subselect::fix_fields() calls select_lex_unit::prepare,
where we create Item_type_holder's
(appended to unit->types list), create the tmp table (using type info
found in unit->types), and call fill_item_list() to put the
Item_field's of this table into unit->item_list.
- Item_subselect::fix_length_and_dec() calls set_row() which
makes Item_cache's of the subquery wrap the Item_type_holder's
- When/if a first result row is found for the subquery,
Item_cache's are re-pointed to unit->item_list
(i.e. Item_field objects which reference the UNION's tmp table
columns) (see call to Item_singlerow_subselect::store()).
- In our subquery, no result row is found, so the Item_cache's
still wrap Item_type_holder's; evaluating '<=>' reads the
value of those, but Item_type_holder objects are not expected to be
evaluated.
Fix: instead of putting unit->types into Item_cache, and later
replacing with unit->item_list, put unit->item_list in Item_cache from
the start.
Approved by Oleksandr Byelkin <sanja@mariadb.com >
2023-11-24 18:30:14 +07:00
..
2023-07-03 15:46:24 +02:00
2023-10-26 22:13:54 +02:00
2023-08-28 16:47:00 +07:00
2020-08-03 14:44:06 +02:00
2021-04-20 12:30:09 +03:00
2022-03-23 10:47:27 +11:00
2021-02-01 13:49:33 +01:00
2023-04-01 22:31:30 +02:00
2023-07-07 15:15:24 +07:00
2023-02-09 16:09:08 +02:00
2020-08-03 13:41:29 +02:00
2023-01-20 19:43:40 +01:00
2020-08-03 14:44:06 +02:00
2023-02-09 16:09:08 +02:00
2021-04-22 07:51:33 +03:00
2022-04-18 12:44:27 +03:00
2023-02-09 16:09:08 +02:00
2020-08-03 14:44:06 +02:00
2023-11-03 11:42:52 +02:00
2021-06-21 12:38:25 +03:00
2022-08-31 11:05:23 +03:00
2020-04-02 00:57:00 +04:00
2023-08-15 07:00:17 +04:00
2023-10-11 22:39:36 +04:00
2023-11-10 15:46:14 +03:00
2020-07-14 22:59:19 +03:00
2023-02-09 16:09:08 +02:00
2023-02-17 16:08:50 +02:00
2022-09-23 13:40:42 +03:00
2023-02-09 16:09:08 +02:00
2022-05-15 20:37:51 +02:00
2022-05-15 20:37:51 +02:00
2021-04-22 15:51:55 +02:00
2023-02-09 16:09:08 +02:00
2023-10-17 14:32:05 +02:00
2023-02-14 11:23:39 +03:00
2023-05-02 10:09:27 +02:00
2020-10-28 14:24:10 +01:00
2023-09-26 10:47:59 +05:30
2023-02-09 16:09:08 +02:00
2023-02-09 16:09:08 +02:00
2023-02-09 16:09:08 +02:00
2023-02-09 16:09:08 +02:00
2023-11-08 15:01:20 +04:00
2023-11-08 15:01:20 +04:00
2023-11-08 15:01:20 +04:00
2023-11-08 15:01:20 +04:00
2023-11-24 16:28:31 +07:00
2023-11-08 15:01:20 +04:00
2023-02-09 16:09:08 +02:00
2021-03-31 09:47:14 +03:00
2023-02-09 16:09:08 +02:00
2023-11-24 16:28:31 +07:00
2023-11-14 17:15:07 +07:00
2020-03-30 14:50:23 +03:00
2023-11-08 15:01:20 +04:00
2023-11-08 15:01:20 +04:00
2023-11-24 18:30:14 +07:00
2023-10-20 11:34:47 +03:00
2023-11-24 16:28:31 +07:00
2023-02-09 16:09:08 +02:00
2023-11-01 16:36:13 +04:00
2020-10-29 13:38:38 +02:00
2021-10-13 12:03:32 +03:00
2021-05-05 23:03:01 +03:00
2022-02-10 20:39:13 +01:00
2020-07-31 18:09:08 +03:00
2023-06-26 11:03:15 +03:00
2023-10-31 14:45:14 -07:00
2023-11-08 15:01:20 +04:00
2023-04-04 12:30:50 +04:00
2020-11-03 14:49:17 +02:00
2023-10-24 01:45:47 +04:00
2023-10-26 22:13:54 +02:00
2020-08-31 18:45:14 +03:00
2023-11-17 09:43:56 -08:00
2023-11-17 09:43:56 -08:00
2023-10-31 11:48:00 +01:00
2023-10-31 11:48:00 +01:00
2023-10-17 14:32:05 +02:00
2023-10-17 14:32:05 +02:00
2020-11-02 15:48:47 +02:00
2021-04-21 07:25:48 +03:00
2020-03-17 02:16:48 +02:00
2023-02-09 16:09:08 +02:00
2023-02-09 16:09:08 +02:00
2020-02-11 14:40:35 +01:00
2020-11-03 14:49:17 +02:00
2021-11-09 12:06:49 +02:00
2023-02-09 16:09:08 +02:00
2023-01-28 18:22:55 +01:00
2021-12-25 12:13:03 +01:00
2023-11-05 23:35:31 +04:00
2023-11-08 15:01:20 +04:00
2022-09-23 17:37:52 +03:00
2020-02-19 21:29:49 +03:00
2020-05-30 11:04:27 +03:00
2023-07-31 22:46:47 +02:00
2023-02-09 16:09:08 +02:00
2023-10-16 11:15:57 -07:00
2023-10-15 18:11:15 +03:00
2022-06-09 11:53:46 +03:00
2021-03-20 13:04:36 +02:00
2023-02-09 16:09:08 +02:00
2020-03-09 14:53:35 +02:00
2020-04-02 11:50:47 +03:00
2020-03-09 13:52:40 +02:00
2022-09-30 12:11:37 +02:00
2023-02-09 16:09:08 +02:00
2023-02-09 16:09:08 +02:00
2022-12-02 16:19:13 +01:00
2023-02-09 16:09:08 +02:00
2023-11-05 23:35:32 +04:00
2023-11-05 23:35:32 +04:00
2022-02-10 20:23:56 +01:00
2020-08-10 18:40:57 +03:00
2023-09-25 15:13:07 +03:00
2023-09-25 15:13:07 +03:00
2020-09-03 09:26:54 +03:00
2023-08-08 03:25:56 +02:00
2023-07-04 22:18:31 +02:00
2023-02-09 16:09:08 +02:00
2023-02-09 16:09:08 +02:00
2021-10-21 14:57:00 +03:00
2023-10-30 11:22:30 -06:00
2023-09-07 14:40:05 +02:00
2023-07-12 09:41:32 +02:00
2022-09-23 13:40:42 +03:00
2023-09-28 19:28:25 +02:00
2020-11-12 15:39:02 +05:30
2020-03-26 15:01:44 +03:00
2023-02-09 16:09:08 +02:00
2023-10-26 20:24:44 +03:00
2023-02-09 16:09:08 +02:00
2023-10-26 20:24:44 +03:00
2023-02-09 16:09:08 +02:00
2022-04-22 12:59:54 -06:00
2023-02-09 16:09:08 +02:00
2023-05-22 00:33:37 +02:00
2023-07-20 10:42:30 +02:00
2023-02-09 16:09:08 +02:00
2021-07-31 22:59:58 +02:00
2023-02-09 16:09:08 +02:00
2023-10-24 19:02:02 +11:00
2023-11-16 10:41:11 +01:00
2023-05-02 10:09:27 +02:00
2022-05-03 10:59:54 +02:00
2023-09-02 13:00:00 +07:00
2023-09-02 13:00:00 +07:00
2023-10-04 16:06:59 +04:00
2023-11-24 16:28:31 +07:00
2023-02-09 16:09:08 +02:00
2022-12-09 08:49:43 +11:00
2023-02-09 16:09:08 +02:00
2023-10-23 17:40:03 +02:00
2023-02-09 16:09:08 +02:00
2023-09-26 08:24:39 +02:00
2023-02-09 16:09:08 +02:00
2023-10-21 10:11:16 +02:00
2023-02-09 16:09:08 +02:00
2022-10-05 10:09:49 +03:00
2022-10-25 11:43:32 -07:00
2022-09-14 19:15:44 +02:00
2021-08-11 23:00:37 +04:00
2023-11-24 16:26:12 +07:00
2023-02-09 16:09:08 +02:00
2022-09-23 13:40:42 +03:00
2023-02-09 16:09:08 +02:00
2021-11-09 17:04:49 +02:00
2022-09-23 13:40:42 +03:00
2023-02-09 16:09:08 +02:00
2023-11-20 17:33:02 +01:00
2023-11-24 16:26:12 +07:00
2023-02-09 16:09:08 +02:00
2023-11-07 10:07:30 +02:00
2021-07-24 15:08:08 +02:00
2022-11-27 05:11:39 +10:00
2023-02-09 16:09:08 +02:00
2023-11-01 10:43:30 -07:00
2023-01-28 18:22:55 +01:00
2023-02-09 16:09:08 +02:00
2021-10-28 12:01:25 +02:00
2023-10-23 09:20:42 +04:00
2023-02-09 16:09:08 +02:00
2023-03-25 12:36:59 -07:00
2023-11-23 07:11:44 +12:00
2021-06-30 18:41:46 +03:00
2023-09-29 12:54:04 +02:00
2023-09-29 12:54:04 +02:00
2023-10-27 15:45:20 +02:00
2023-10-27 15:45:00 +02:00
2022-05-03 10:59:54 +02:00
2023-02-09 16:09:08 +02:00
2022-05-08 23:03:08 +02:00
2020-12-25 09:13:28 +01:00
2023-11-21 08:02:23 +01:00
2023-10-27 15:45:00 +02:00
2023-10-27 15:44:46 +02:00
2023-11-24 16:28:31 +07:00
2023-11-18 10:05:54 +11:00
2023-02-09 16:09:08 +02:00
2023-01-28 18:22:55 +01:00
2023-10-31 11:48:00 +01:00
2023-02-15 22:39:38 +11:00
2022-04-25 08:07:17 -06:00
2021-01-24 11:35:55 +01:00
2023-11-23 11:52:12 +11:00
2021-03-05 10:36:51 +02:00
2022-08-31 11:05:23 +03:00
2023-02-09 16:09:08 +02:00
2023-10-23 13:44:31 +04:00
2023-11-05 23:35:32 +04:00
2023-07-25 18:24:20 +10:00
2021-02-12 17:44:22 +01:00
2023-11-05 23:35:32 +04:00
2023-11-05 23:35:31 +04:00
2023-11-02 16:46:35 +01:00
2023-11-02 16:46:35 +01:00
2022-08-31 11:05:23 +03:00
2023-11-17 09:43:56 -08:00
2021-02-12 17:44:22 +01:00
2023-11-08 15:01:20 +04:00
2023-11-08 15:01:20 +04:00
2023-10-30 16:47:18 +12:00
2023-10-27 15:45:00 +02:00
2023-10-19 11:57:39 +02:00
2023-09-27 08:54:26 +02:00
2023-11-24 16:28:31 +07:00
2021-02-12 18:17:07 +01:00
2023-02-09 16:09:08 +02:00
2023-02-17 16:08:50 +02:00
2023-04-28 22:39:25 +03:00
2021-02-23 09:25:57 +01:00
2023-10-04 08:51:48 +04:00
2023-10-04 08:51:48 +04:00
2023-11-21 08:02:23 +01:00
2023-05-12 02:48:15 +02:00
2021-04-20 12:30:09 +03:00
2022-10-25 10:04:37 +03:00
2020-07-31 18:09:08 +03:00
2023-11-24 16:28:31 +07:00
2022-09-30 12:11:37 +02:00
2021-09-17 07:18:37 +03:00
2023-02-09 16:09:08 +02:00
2023-11-24 16:28:31 +07:00
2023-09-23 20:11:52 -07:00
2023-06-29 11:50:17 +04:00
2023-02-09 16:09:08 +02:00
2023-10-17 12:46:31 +04:00
2023-10-17 12:46:31 +04:00
2022-09-23 13:47:15 +03:00
2020-10-22 13:27:18 +03:00
2023-07-03 15:46:24 +02:00
2023-07-20 18:22:31 +03:00
2023-11-24 16:26:12 +07:00
2022-10-24 14:09:46 +02:00
2023-09-27 07:48:01 -07:00
2023-02-09 16:09:08 +02:00
2023-11-08 15:01:20 +04:00
2023-11-08 15:01:20 +04:00
2022-08-10 12:21:08 +02:00
2023-11-08 15:01:20 +04:00
2023-02-09 16:09:08 +02:00
2023-11-05 23:35:31 +04:00
2023-10-30 11:22:30 -06:00
2023-05-19 15:50:20 +03:00
2020-03-21 18:37:19 +04:00
2023-11-24 16:28:31 +07:00
2023-10-23 17:40:03 +02:00
2022-03-29 11:13:18 +03:00
2023-09-29 09:30:49 +02:00
2023-02-09 16:09:08 +02:00
2020-03-27 11:41:46 +04:00
2023-02-09 16:09:08 +02:00
2023-10-23 17:40:03 +02:00
2023-02-09 16:09:08 +02:00
2023-02-09 16:09:08 +02:00
2020-06-13 15:11:43 +03:00
2020-06-12 10:55:53 +03:00
2023-10-23 13:44:31 +04:00
2023-01-03 16:10:02 +02:00
2021-02-01 13:49:33 +01:00
2023-02-09 16:09:08 +02:00
2023-02-09 09:15:08 +01:00
2020-07-15 09:49:48 +02:00
2020-12-01 14:55:46 +02:00
2022-08-31 11:05:23 +03:00
2020-03-31 09:59:37 +03:00
2022-08-31 11:05:23 +03:00
2023-11-21 08:02:23 +01:00
2020-11-11 07:37:05 +02:00
2023-02-09 16:09:08 +02:00
2023-05-22 00:33:37 +02:00
2023-10-23 17:40:03 +02:00
2022-02-23 07:18:00 +02:00
2023-11-21 08:02:23 +01:00
2023-11-21 08:02:23 +01:00
2023-09-11 23:06:15 +02:00
2023-09-29 12:54:04 +02:00
2023-08-08 03:25:56 +02:00
2023-05-23 01:10:19 +02:00
2023-05-16 13:11:44 +02:00
2023-11-07 10:07:30 +02:00
2023-05-22 00:33:37 +02:00
2023-02-09 16:09:08 +02:00
2023-10-24 05:14:32 +02:00
2022-06-27 10:14:37 +03:00
2020-12-02 16:16:29 +02:00
2023-05-22 00:33:37 +02:00
2023-05-22 00:33:37 +02:00
2023-09-26 08:24:39 +02:00
2020-08-26 11:30:20 +03:00
2023-09-11 23:06:15 +02:00
2022-10-09 10:09:47 +03:00
2021-04-05 09:10:23 +03:00
2023-05-19 15:50:20 +03:00