mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-09 06:42:57 +00:00
* skeleton Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * get rule set Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * adjust style Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * adjust params Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * reuse collider Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * canonize Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * more robust predicate extractor Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * simplify predicate extractor's test and impl Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * unify import Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * simplification, remove unnecessary interfaces Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * handle partial referenced exprs Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * finalize predicate extractor Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * document region pruner Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * chore: reduce diff Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * simplify checker Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * refine overlapping check method Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * reduce diff Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * coerce types Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * remove unused errors Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix clippy Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * apply review comment Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * refactor use Bound Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * simplify hashmap Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * Apply suggestions from code review Co-authored-by: Yingwen <realevenyag@gmail.com> * sqlness tests Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * redact region id Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * test: update sqlness result after udpate datafusion Signed-off-by: discord9 <discord9@163.com> --------- Signed-off-by: Ruihang Xia <waynestxia@gmail.com> Signed-off-by: discord9 <discord9@163.com> Co-authored-by: Yingwen <realevenyag@gmail.com> Co-authored-by: discord9 <55937128+discord9@users.noreply.github.com> Co-authored-by: discord9 <discord9@163.com>
207 lines
5.2 KiB
SQL
207 lines
5.2 KiB
SQL
CREATE TABLE my_table (
|
|
a INT PRIMARY KEY,
|
|
b STRING,
|
|
ts TIMESTAMP TIME INDEX,
|
|
)
|
|
PARTITION ON COLUMNS (a) (
|
|
a < 1000,
|
|
a >= 1000 AND a < 2000,
|
|
a >= 2000
|
|
);
|
|
|
|
-- SQLNESS REPLACE (\d{13}) ID
|
|
SELECT table_catalog, table_schema, table_name, partition_name, partition_expression, greptime_partition_id from information_schema.partitions WHERE table_name = 'my_table' ORDER BY table_catalog, table_schema, table_name, partition_name;
|
|
|
|
-- SQLNESS REPLACE (\d{13}) REGION_ID
|
|
-- SQLNESS REPLACE (\d{1}) PEER_ID
|
|
SELECT region_id, peer_id, is_leader, status FROM information_schema.region_peers ORDER BY peer_id;
|
|
|
|
INSERT INTO my_table VALUES
|
|
(100, 'a', 1),
|
|
(200, 'b', 2),
|
|
(1100, 'c', 3),
|
|
(1200, 'd', 4),
|
|
(2000, 'e', 5),
|
|
(2100, 'f', 6),
|
|
(2200, 'g', 7),
|
|
(2400, 'h', 8);
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
SELECT * FROM my_table;
|
|
|
|
DELETE FROM my_table WHERE a < 150;
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
SELECT * FROM my_table;
|
|
|
|
DELETE FROM my_table WHERE a < 2200 AND a > 1500;
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
SELECT * FROM my_table;
|
|
|
|
DELETE FROM my_table WHERE a < 2500;
|
|
|
|
SELECT * FROM my_table;
|
|
|
|
DROP TABLE my_table;
|
|
|
|
CREATE TABLE my_table (
|
|
a INT PRIMARY KEY,
|
|
b STRING,
|
|
ts TIMESTAMP TIME INDEX,
|
|
)
|
|
PARTITION ON COLUMNS (a) ();
|
|
|
|
-- SQLNESS REPLACE (\d{13}) ID
|
|
SELECT table_catalog, table_schema, table_name, partition_name, partition_expression, greptime_partition_id from information_schema.partitions WHERE table_name = 'my_table' ORDER BY table_catalog, table_schema, table_name, partition_name;
|
|
|
|
-- SQLNESS REPLACE (\d{13}) REGION_ID
|
|
-- SQLNESS REPLACE (\d{1}) PEER_ID
|
|
SELECT region_id, peer_id, is_leader, status FROM information_schema.region_peers ORDER BY peer_id;
|
|
|
|
INSERT INTO my_table VALUES
|
|
(100, 'a', 1),
|
|
(200, 'b', 2),
|
|
(1100, 'c', 3),
|
|
(1200, 'd', 4),
|
|
(2000, 'e', 5),
|
|
(2100, 'f', 6),
|
|
(2200, 'g', 7),
|
|
(2400, 'h', 8);
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
SELECT * FROM my_table;
|
|
|
|
DROP TABLE my_table;
|
|
|
|
-- incorrect partition rules
|
|
CREATE TABLE invalid_rule (
|
|
a INT PRIMARY KEY,
|
|
b STRING,
|
|
ts TIMESTAMP TIME INDEX,
|
|
)
|
|
PARTITION ON COLUMNS (a) (
|
|
a < 10,
|
|
a > 10 AND a < 20,
|
|
a >= 20
|
|
);
|
|
|
|
CREATE TABLE invalid_rule2 (
|
|
a INT,
|
|
b STRING PRIMARY KEY,
|
|
ts TIMESTAMP TIME INDEX,
|
|
)
|
|
PARTITION ON COLUMNS (b) (
|
|
b < 'abc',
|
|
b >= 'abca' AND b < 'o',
|
|
b >= 'o',
|
|
);
|
|
|
|
CREATE TABLE invalid_rule3 (
|
|
a INT,
|
|
b STRING PRIMARY KEY,
|
|
ts TIMESTAMP TIME INDEX,
|
|
)
|
|
PARTITION ON COLUMNS (b) (
|
|
b >= 'a',
|
|
b <= 'o',
|
|
);
|
|
|
|
CREATE TABLE valid_rule (
|
|
a INT,
|
|
b STRING,
|
|
ts TIMESTAMP TIME INDEX,
|
|
PRIMARY KEY (a, b)
|
|
)
|
|
PARTITION ON COLUMNS (a, b) (
|
|
a < 10,
|
|
a = 10 AND b < 'a',
|
|
a = 10 AND b >= 'a' AND b < 'o',
|
|
a = 10 AND b >= 'o',
|
|
a > 10,
|
|
);
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
EXPLAIN ANALYZE SELECT * FROM valid_rule;
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
EXPLAIN ANALYZE SELECT * FROM valid_rule
|
|
WHERE a < 10;
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
EXPLAIN ANALYZE SELECT * FROM valid_rule
|
|
WHERE a = 10 AND b= 'z';
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
EXPLAIN ANALYZE SELECT * FROM valid_rule
|
|
WHERE a = 10 OR b= 'z';
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
EXPLAIN ANALYZE SELECT * FROM valid_rule
|
|
WHERE a = 10 OR ts > 1;
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
EXPLAIN ANALYZE SELECT * FROM valid_rule
|
|
WHERE a = 10 OR (ts > 1 AND b ='h');
|
|
|
|
DROP TABLE valid_rule;
|
|
|
|
-- Issue https://github.com/GreptimeTeam/greptimedb/issues/4247
|
|
-- Partition rule with unary operator
|
|
CREATE TABLE `molestiAe` (
|
|
`sImiLiQUE` FLOAT NOT NULL,
|
|
`amEt` TIMESTAMP(6) TIME INDEX,
|
|
`EXpLICaBo` DOUBLE,
|
|
PRIMARY KEY (`sImiLiQUE`)
|
|
) PARTITION ON COLUMNS (`sImiLiQUE`) (
|
|
`sImiLiQUE` < -1,
|
|
`sImiLiQUE` >= -1 AND `sImiLiQUE` < -0,
|
|
`sImiLiQUE` >= 0
|
|
);
|
|
|
|
INSERT INTO `molestiAe` VALUES
|
|
(-2, 0, 0),
|
|
(-0.9, 0, 0),
|
|
(1, 0, 0);
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
SELECT * FROM `molestiAe`;
|
|
|
|
DROP TABLE `molestiAe`;
|