mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-07-04 04:50:37 +00:00
* fix(query): push down join filters before MergeScan Signed-off-by: discord9 <discord9@163.com> * fix(query): run optimizer before MergeScan pushdown Signed-off-by: discord9 <discord9@163.com> * fix(query): narrow pre-MergeScan filter pushdown Signed-off-by: discord9 <discord9@163.com> * fix(query): refine pre-MergeScan optimizer prepass Signed-off-by: discord9 <discord9@163.com> * fix(query): satisfy predicate extractor clippy Signed-off-by: discord9 <discord9@163.com> * test(query): cover pre-MergeScan optimizer edges Signed-off-by: discord9 <discord9@163.com> * test(query): cover set comparison prepass Signed-off-by: discord9 <discord9@163.com> * fix(query): guard remote scan filter pushdown Signed-off-by: discord9 <discord9@163.com> * fix(query): preserve subquery planning errors Signed-off-by: discord9 <discord9@163.com> * fix(query): preserve usable scan predicates Signed-off-by: discord9 <discord9@163.com> * fix(query): simplify scan predicate extraction Signed-off-by: discord9 <discord9@163.com> * fix(query): keep scan filter extraction scoped Signed-off-by: discord9 <discord9@163.com> * docs(query): explain pre-MergeScan optimizer Signed-off-by: discord9 <discord9@163.com> --------- Signed-off-by: discord9 <discord9@163.com>
42 lines
1.2 KiB
SQL
42 lines
1.2 KiB
SQL
-- Set-comparison subqueries (`ANY`/`ALL`) must be rewritten before
|
|
-- PushDownFilter. Otherwise the set-comparison subquery can be pushed into
|
|
-- TableScan.partial_filters, which is not a valid remote scan filter.
|
|
|
|
CREATE TABLE sc_t (
|
|
ts TIMESTAMP(3) TIME INDEX,
|
|
v INT,
|
|
PRIMARY KEY (v)
|
|
) ENGINE = mito;
|
|
|
|
CREATE TABLE sc_s (
|
|
ts TIMESTAMP(3) TIME INDEX,
|
|
v INT
|
|
) ENGINE = mito;
|
|
|
|
INSERT INTO sc_t VALUES
|
|
('2024-01-30 00:00:00', 1),
|
|
('2024-01-30 01:00:00', 6),
|
|
('2024-01-30 02:00:00', 10);
|
|
|
|
INSERT INTO sc_s VALUES
|
|
('2024-01-30 00:00:00', 5),
|
|
('2024-01-30 01:00:00', NULL);
|
|
|
|
ADMIN FLUSH_TABLE('sc_t');
|
|
ADMIN FLUSH_TABLE('sc_s');
|
|
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
EXPLAIN SELECT v FROM sc_t WHERE v > ANY(SELECT v FROM sc_s) ORDER BY v;
|
|
|
|
SELECT v FROM sc_t WHERE v > ANY(SELECT v FROM sc_s) ORDER BY v;
|
|
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
EXPLAIN SELECT v FROM sc_t WHERE v != ALL(SELECT v FROM sc_s) ORDER BY v;
|
|
|
|
SELECT v FROM sc_t WHERE v != ALL(SELECT v FROM sc_s) ORDER BY v;
|
|
|
|
DROP TABLE sc_t;
|
|
DROP TABLE sc_s;
|