1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

fix(PrimProc): MCOL-5651 Add a workaround to avoid choosing an incorrect TupleHashJoinStep as a joiner [stable-23.10] (#3331)

* fix(PrimProc): MCOL-5651 Add a workaround to avoid choosing an incorrect TupleHashJoinStep as a joiner
This commit is contained in:
Alexey Antipovsky
2024-11-08 13:51:25 +01:00
committed by GitHub
parent 0a71892d97
commit 11136b3545
7 changed files with 242 additions and 118 deletions

View File

@ -0,0 +1,63 @@
DROP DATABASE IF EXISTS `mcol_5651`;
CREATE DATABASE `mcol_5651`;
USE `mcol_5651`;
CREATE TABLE mcs (id INTEGER NOT NULL, type VARCHAR(10) NOT NULL, sn VARCHAR(30), descr VARCHAR(100), sdate DATETIME) ENGINE=Columnstore;
INSERT INTO mcs VALUES
(1,'a','1',NULL,'2024-01-11 18:36:01'),
(2,'a','1',NULL,'2024-01-11 18:36:03'),
(3,'a','1',NULL,'2024-01-11 18:36:04'),
(4,'a','1',NULL,'2024-01-11 18:36:06'),
(5,'a','1',NULL,'2024-01-11 18:36:07'),
(6,'a','1',NULL,'2024-01-12 13:04:15'),
(7,'a','1',NULL,'2024-01-12 13:04:17'),
(8,'a','1',NULL,'2024-01-12 13:04:18'),
(9,'a','1',NULL,'2024-01-12 13:04:20'),
(10,'a','1',NULL,'2024-01-11 18:35:58'),
(11,'a','1',NULL,'2024-01-11 18:30:00'),
(12,'a','1',NULL,'2024-01-11 18:30:00'),
(13,'a','1',NULL,'2024-01-11 18:30:03'),
(14,'a','1',NULL,'2024-01-11 18:30:03'),
(15,'a','1','a','2024-01-11 18:30:02'),
(16,'a','1',NULL,'2024-01-11 18:30:03'),
(17,'a','1',NULL,'2024-01-11 18:30:03'),
(18,'a','1',NULL,'2024-01-11 18:30:03'),
(19,'a','1',NULL,'2024-01-12 18:53:02'),
(20,'a','1',NULL,'2024-01-12 18:53:02'),
(21,'a','1',NULL,'2024-01-12 19:27:47'),
(22,'a','1',NULL,'2024-01-12 19:27:48'),
(23,'a','1',NULL,'2024-01-13 01:47:26'),
(24,'a','1',NULL,'2024-01-13 01:47:26'),
(25,'a','1',NULL,'2024-01-13 01:47:26'),
(26,'a','1',NULL,'2024-01-13 01:47:26'),
(27,'a','1',NULL,'2024-01-13 01:47:26'),
(28,'a','1',NULL,'2024-01-13 01:47:26');
SELECT s1.id, count(*)
FROM mcs AS s1
WHERE s1.type = 'a'
AND s1.sdate BETWEEN '2026-01-05 16:21:00' - INTERVAL 24 MONTH AND '2026-01-05 16:21:00'
AND EXISTS (
SELECT s.SN, s.sdate
FROM mcs AS s
WHERE s.type = 'a'
AND s.sdate BETWEEN '2026-01-05 16:21:00' - INTERVAL 24 MONTH AND '2026-01-05 16:21:00'
AND s.descr = 'a'
AND s.SN = s1.sn
AND s1.sdate BETWEEN s.sdate - INTERVAL 10 HOUR AND s.sdate + INTERVAL 10 HOUR
)
GROUP BY 1 ORDER BY 2,1;
id count(*)
1 1
2 1
3 1
4 1
5 1
10 1
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
DROP DATABASE `mcol_5651`;

View File

@ -0,0 +1,56 @@
--source ../include/have_columnstore.inc
--disable_warnings
DROP DATABASE IF EXISTS `mcol_5651`;
--enable_warnings
CREATE DATABASE `mcol_5651`;
USE `mcol_5651`;
CREATE TABLE mcs (id INTEGER NOT NULL, type VARCHAR(10) NOT NULL, sn VARCHAR(30), descr VARCHAR(100), sdate DATETIME) ENGINE=Columnstore;
INSERT INTO mcs VALUES
(1,'a','1',NULL,'2024-01-11 18:36:01'),
(2,'a','1',NULL,'2024-01-11 18:36:03'),
(3,'a','1',NULL,'2024-01-11 18:36:04'),
(4,'a','1',NULL,'2024-01-11 18:36:06'),
(5,'a','1',NULL,'2024-01-11 18:36:07'),
(6,'a','1',NULL,'2024-01-12 13:04:15'),
(7,'a','1',NULL,'2024-01-12 13:04:17'),
(8,'a','1',NULL,'2024-01-12 13:04:18'),
(9,'a','1',NULL,'2024-01-12 13:04:20'),
(10,'a','1',NULL,'2024-01-11 18:35:58'),
(11,'a','1',NULL,'2024-01-11 18:30:00'),
(12,'a','1',NULL,'2024-01-11 18:30:00'),
(13,'a','1',NULL,'2024-01-11 18:30:03'),
(14,'a','1',NULL,'2024-01-11 18:30:03'),
(15,'a','1','a','2024-01-11 18:30:02'),
(16,'a','1',NULL,'2024-01-11 18:30:03'),
(17,'a','1',NULL,'2024-01-11 18:30:03'),
(18,'a','1',NULL,'2024-01-11 18:30:03'),
(19,'a','1',NULL,'2024-01-12 18:53:02'),
(20,'a','1',NULL,'2024-01-12 18:53:02'),
(21,'a','1',NULL,'2024-01-12 19:27:47'),
(22,'a','1',NULL,'2024-01-12 19:27:48'),
(23,'a','1',NULL,'2024-01-13 01:47:26'),
(24,'a','1',NULL,'2024-01-13 01:47:26'),
(25,'a','1',NULL,'2024-01-13 01:47:26'),
(26,'a','1',NULL,'2024-01-13 01:47:26'),
(27,'a','1',NULL,'2024-01-13 01:47:26'),
(28,'a','1',NULL,'2024-01-13 01:47:26');
SELECT s1.id, count(*)
FROM mcs AS s1
WHERE s1.type = 'a'
AND s1.sdate BETWEEN '2026-01-05 16:21:00' - INTERVAL 24 MONTH AND '2026-01-05 16:21:00'
AND EXISTS (
SELECT s.SN, s.sdate
FROM mcs AS s
WHERE s.type = 'a'
AND s.sdate BETWEEN '2026-01-05 16:21:00' - INTERVAL 24 MONTH AND '2026-01-05 16:21:00'
AND s.descr = 'a'
AND s.SN = s1.sn
AND s1.sdate BETWEEN s.sdate - INTERVAL 10 HOUR AND s.sdate + INTERVAL 10 HOUR
)
GROUP BY 1 ORDER BY 2,1;
# cleanup
DROP DATABASE `mcol_5651`;