1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-16 22:03:23 +03:00
Files
mariadb/mysql-test/r
Igor Babaev c7a153453e Fixed the bug mdev-12556.
When the rows produced on the current iteration are sent to the
temporary table T of the UNION type created for CTE the rows
that were not there simultaneously are sent to the temporary
table D that contains rows for the next iteration. The test
whether a row was in T checks the return code of writing into T.
If just a HEAP table is used for T then the return code is
HA_ERR_FOUND_DUPP_KEY, but if an ARIA table is used for T then
the return code is HA_ERR_FOUND_DUPP_UNIQUE.
The implementation of select_union_recursive::send_data()
erroneously checked only for the first return code. So if an Aria
table was used for T then all rows produced by the current iteration
went to D and and in most cases D grew with each iteration.
Whether T has reached stabilization is detected by
checking whether D is empty. So as a result, the iterations were
never stopped unless a limit for them was set.

Fixed by checking for both HA_ERR_FOUND_DUPP_KEY and
HA_ERR_FOUND_DUPP_UNIQUE as return codes returned by
the function writing a row into the temporary table T.
2017-04-26 10:16:03 -07:00
..
2017-02-10 06:30:42 -05:00
2016-12-29 13:23:18 +01:00
2017-04-26 10:16:03 -07:00
2016-09-06 12:50:02 +04:00
2017-02-10 17:01:45 +01:00
2017-02-10 06:30:42 -05:00
2017-03-30 12:48:42 +02:00
2016-12-29 13:23:18 +01:00
2016-06-30 16:38:05 +02:00
2016-12-29 13:23:18 +01:00
2017-02-10 06:30:42 -05:00
2017-03-30 12:48:42 +02:00
2016-09-09 08:33:08 +02:00
2016-06-30 23:56:18 -04:00
2017-03-30 12:48:42 +02:00
2017-03-10 18:21:26 +01:00
2017-02-10 06:30:42 -05:00
2017-03-30 12:48:42 +02:00
2016-06-21 14:11:02 +02:00
2017-02-10 06:30:42 -05:00
2017-04-01 14:15:18 +03:00
2016-09-10 16:04:44 +02:00
2017-02-10 06:30:42 -05:00
2017-02-10 06:30:42 -05:00
2017-02-10 06:30:42 -05:00
2016-12-29 13:23:18 +01:00
2017-04-01 14:15:18 +03:00
2016-09-09 08:33:08 +02:00
2016-12-29 13:23:18 +01:00
2017-03-10 18:21:26 +01:00
2017-01-05 10:48:03 +02:00
2016-12-29 13:23:18 +01:00
2017-03-30 12:48:42 +02:00
2017-02-10 06:30:42 -05:00
2017-02-10 06:30:42 -05:00
2017-03-30 12:48:42 +02:00
2017-02-10 06:30:42 -05:00
2015-08-04 23:40:25 +02:00
2017-03-30 12:48:42 +02:00
2017-03-09 08:53:08 +02:00
2017-04-24 14:57:26 -07:00
2017-03-30 12:48:42 +02:00
2017-02-10 06:30:42 -05:00
2017-02-09 19:34:01 -08:00
2016-09-24 15:12:34 +02:00
2017-03-29 08:46:00 -07:00
2017-02-10 06:30:42 -05:00