mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-13 15:32:36 +00:00
* fix(query): stop reporting region scans as hash partitioned
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): use current DataFusion plan downcasts
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): match null rendering in join regression
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): refresh union plan for unknown scan partitioning
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): refresh shared plans after distribution rule removal
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): cover semi joins with remote dynamic filtering
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): strengthen partitioned merge scan regressions
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): remove unused merge scan test helpers
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(perf): measure merge scan hash repartition cost
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* fix(query): adapt merge scan deserialization to two-arg constructor
Adapt the production and test serializer callers added by #9206 and remove the obsolete partition_cols assertion.
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
* test(query): adapt nested merge scan integration constructor
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
---------
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
(cherry picked from commit 32e8467cda)
Signed-off-by: WenyXu <wenymedia@gmail.com>
82 lines
4.1 KiB
SQL
82 lines
4.1 KiB
SQL
-- Regression coverage for issues 9456/9492 (PR 9491): preserve merge-scan
|
|
-- results for a pruned left join over partitioned append data.
|
|
CREATE TABLE merge_left_data (
|
|
k STRING,
|
|
kind STRING,
|
|
ts TIMESTAMP TIME INDEX,
|
|
PRIMARY KEY (k, kind)
|
|
)
|
|
PARTITION ON COLUMNS (k) (
|
|
k < '1', k >= '1' AND k < '2', k >= '2' AND k < '3',
|
|
k >= '3' AND k < '4', k >= '4' AND k < '5', k >= '5' AND k < '6',
|
|
k >= '6' AND k < '7', k >= '7' AND k < '8', k >= '8' AND k < '9',
|
|
k >= '9' AND k < 'a', k >= 'a' AND k < 'b', k >= 'b' AND k < 'c',
|
|
k >= 'c' AND k < 'd', k >= 'd' AND k < 'e', k >= 'e' AND k < 'f',
|
|
k >= 'f'
|
|
)
|
|
ENGINE=mito WITH (append_mode = 'true');
|
|
|
|
INSERT INTO merge_left_data VALUES
|
|
('0', 'root', '2026-10-09 00:00:00'),
|
|
('1', 'root', '2026-10-09 00:00:00'),
|
|
('2', 'root', '2026-10-09 00:00:00'),
|
|
('3', 'root', '2026-10-09 00:00:00'),
|
|
('4', 'root', '2026-10-09 00:00:00'),
|
|
('5', 'root', '2026-10-09 00:00:00'),
|
|
('6', 'root', '2026-10-09 00:00:00'),
|
|
('7', 'root', '2026-10-09 00:00:00'),
|
|
('8', 'root', '2026-10-09 00:00:00'),
|
|
('9', 'root', '2026-10-09 00:00:00'),
|
|
('a', 'root', '2026-10-09 00:00:00'),
|
|
('b', 'root', '2026-10-09 00:00:00'),
|
|
('c', 'root', '2026-10-09 00:00:00'),
|
|
('d', 'root', '2026-10-09 00:00:00'),
|
|
('e', 'root', '2026-10-09 00:00:00'),
|
|
('f', 'root', '2026-10-09 00:00:00'),
|
|
('z', 'root', '2026-10-09 00:00:00'),
|
|
('0', 'child', '2026-10-09 00:00:00'), ('0', 'child', '2026-10-09 00:00:00'), ('0', 'child', '2026-10-09 00:00:00'),
|
|
('1', 'child', '2026-10-09 00:00:00'), ('1', 'child', '2026-10-09 00:00:00'), ('1', 'child', '2026-10-09 00:00:00'),
|
|
('2', 'child', '2026-10-09 00:00:00'), ('2', 'child', '2026-10-09 00:00:00'), ('2', 'child', '2026-10-09 00:00:00'),
|
|
('3', 'child', '2026-10-09 00:00:00'), ('3', 'child', '2026-10-09 00:00:00'), ('3', 'child', '2026-10-09 00:00:00'),
|
|
('4', 'child', '2026-10-09 00:00:00'), ('4', 'child', '2026-10-09 00:00:00'), ('4', 'child', '2026-10-09 00:00:00'),
|
|
('5', 'child', '2026-10-09 00:00:00'), ('5', 'child', '2026-10-09 00:00:00'), ('5', 'child', '2026-10-09 00:00:00'),
|
|
('6', 'child', '2026-10-09 00:00:00'), ('6', 'child', '2026-10-09 00:00:00'), ('6', 'child', '2026-10-09 00:00:00'),
|
|
('7', 'child', '2026-10-09 00:00:00'), ('7', 'child', '2026-10-09 00:00:00'), ('7', 'child', '2026-10-09 00:00:00'),
|
|
('8', 'child', '2026-10-09 00:00:00'), ('8', 'child', '2026-10-09 00:00:00'), ('8', 'child', '2026-10-09 00:00:00'),
|
|
('9', 'child', '2026-10-09 00:00:00'), ('9', 'child', '2026-10-09 00:00:00'), ('9', 'child', '2026-10-09 00:00:00'),
|
|
('a', 'child', '2026-10-09 00:00:00'), ('a', 'child', '2026-10-09 00:00:00'), ('a', 'child', '2026-10-09 00:00:00'),
|
|
('b', 'child', '2026-10-09 00:00:00'), ('b', 'child', '2026-10-09 00:00:00'), ('b', 'child', '2026-10-09 00:00:00'),
|
|
('c', 'child', '2026-10-09 00:00:00'), ('c', 'child', '2026-10-09 00:00:00'), ('c', 'child', '2026-10-09 00:00:00'),
|
|
('d', 'child', '2026-10-09 00:00:00'), ('d', 'child', '2026-10-09 00:00:00'), ('d', 'child', '2026-10-09 00:00:00'),
|
|
('e', 'child', '2026-10-09 00:00:00'), ('e', 'child', '2026-10-09 00:00:00'), ('e', 'child', '2026-10-09 00:00:00'),
|
|
('f', 'child', '2026-10-09 00:00:00'), ('f', 'child', '2026-10-09 00:00:00'), ('f', 'child', '2026-10-09 00:00:00');
|
|
|
|
-- Full join: 17 roots, 16 matched roots, 48 child rows.
|
|
SELECT r.k, c.n
|
|
FROM (SELECT k FROM merge_left_data WHERE kind = 'root') r
|
|
LEFT JOIN (
|
|
SELECT k, COUNT(*) AS n FROM merge_left_data WHERE kind = 'child' GROUP BY k
|
|
) c ON r.k = c.k
|
|
ORDER BY r.k;
|
|
|
|
-- Assert partitioned hash join and both hash repartition keys at SQLness N=4.
|
|
-- SQLNESS REPLACE (peers.*) peers=REDACTED
|
|
EXPLAIN SELECT r.k, c.n
|
|
FROM (SELECT k FROM merge_left_data WHERE kind = 'root' AND k >= '1' AND k < '5') r
|
|
LEFT JOIN (
|
|
SELECT k, COUNT(*) AS n FROM merge_left_data
|
|
WHERE kind = 'child' AND k < '4' GROUP BY k
|
|
) c ON r.k = c.k
|
|
ORDER BY r.k;
|
|
|
|
-- Four roots, three matches, nine child rows; key 4 remains with NULL n.
|
|
SELECT r.k, c.n
|
|
FROM (SELECT k FROM merge_left_data WHERE kind = 'root' AND k >= '1' AND k < '5') r
|
|
LEFT JOIN (
|
|
SELECT k, COUNT(*) AS n FROM merge_left_data
|
|
WHERE kind = 'child' AND k < '4' GROUP BY k
|
|
) c ON r.k = c.k
|
|
ORDER BY r.k;
|
|
|
|
DROP TABLE merge_left_data;
|