feat: partition rule simplifier (#7622)

* basic impl

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* reuse collider

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* simplify range helpers

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* notes

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* update unit test resule

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

---------

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
Ruihang Xia
2026-01-27 22:31:20 +08:00
committed by GitHub
parent d0c610f3c7
commit c83868c4eb
5 changed files with 643 additions and 23 deletions

View File

@@ -53,25 +53,25 @@ Affected Rows: 0
SHOW CREATE TABLE alter_repartition_table;
+-------------------------+------------------------------------------------------------------------------+
| Table | Create Table |
+-------------------------+------------------------------------------------------------------------------+
| alter_repartition_table | CREATE TABLE IF NOT EXISTS "alter_repartition_table" ( |
| | "device_id" INT NULL, |
| | "area" STRING NULL, |
| | "ty" STRING NULL, |
| | "ts" TIMESTAMP(3) NOT NULL, |
| | TIME INDEX ("ts"), |
| | PRIMARY KEY ("device_id") |
| | ) |
| | PARTITION ON COLUMNS ("device_id", "area") ( |
| | device_id < 100 AND area < 'South' OR device_id < 100 AND area >= 'South', |
| | device_id >= 100 AND device_id < 200, |
| | device_id >= 200 |
| | ) |
| | ENGINE=mito |
| | |
+-------------------------+------------------------------------------------------------------------------+
+-------------------------+--------------------------------------------------------+
| Table | Create Table |
+-------------------------+--------------------------------------------------------+
| alter_repartition_table | CREATE TABLE IF NOT EXISTS "alter_repartition_table" ( |
| | "device_id" INT NULL, |
| | "area" STRING NULL, |
| | "ty" STRING NULL, |
| | "ts" TIMESTAMP(3) NOT NULL, |
| | TIME INDEX ("ts"), |
| | PRIMARY KEY ("device_id") |
| | ) |
| | PARTITION ON COLUMNS ("device_id", "area") ( |
| | device_id < 100, |
| | device_id >= 100 AND device_id < 200, |
| | device_id >= 200 |
| | ) |
| | ENGINE=mito |
| | |
+-------------------------+--------------------------------------------------------+
-- FIXME(weny): Object store is not configured for the test environment,
-- so staging manifest may not be applied in some cases.
@@ -248,7 +248,7 @@ SHOW CREATE TABLE metric_physical_table;
| | PRIMARY KEY ("host") |
| | ) |
| | PARTITION ON COLUMNS ("host") ( |
| | host < 'h0' OR host >= 'h0' AND host < 'h1', |
| | host < 'h1', |
| | host >= 'h1' AND host < 'h2', |
| | host >= 'h2' |
| | ) |