mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-25 09:20:40 +00:00
* feat: add repartition procedure factory support to DdlManager - Introduce RepartitionProcedureFactory trait for creating and registering repartition procedures - Implement DefaultRepartitionProcedureFactory for metasrv with full support - Implement StandaloneRepartitionProcedureFactory for standalone (unsupported) - Add procedure loader registration for RepartitionProcedure and RepartitionGroupProcedure - Add helper methods to TableMetadataAllocator for allocator access - Add error types for repartition procedure operations - Update DdlManager to accept and use RepartitionProcedureFactoryRef Signed-off-by: WenyXu <wenymedia@gmail.com> * feat: integrate repartition procedure into DdlManager - Add submit_repartition_task() to handle repartition from alter table - Route Repartition operations in submit_alter_table_task() to repartition factory - Refactor: rename submit_procedure() to execute_procedure_and_wait() - Make all DDL operations wait for completion by default - Add submit_procedure() for fire-and-forget submissions - Add CreateRepartitionProcedure error type - Add placeholder Repartition handling in grpc-expr (unsupported) - Update greptime-proto dependency Signed-off-by: WenyXu <wenymedia@gmail.com> * feat: implement ALTER TABLE REPARTITION procedure submission Signed-off-by: WenyXu <wenymedia@gmail.com> * refactor(repartition): handle central region in apply staging manifest - Introduce ApplyStagingManifestInstructions struct to organize instructions - Add special handling for central region when applying staging manifests - Transition state from UpdateMetadata to RepartitionEnd after applying staging manifests - Remove next_state() method in RepartitionStart and inline state transitions - Improve logging and expression serialization in DDL statement executor - Move repartition tests from standalone to distributed test suite Signed-off-by: WenyXu <wenymedia@gmail.com> * chore: apply suggestions from CR Signed-off-by: WenyXu <wenymedia@gmail.com> * chore: update proto Signed-off-by: WenyXu <wenymedia@gmail.com> --------- Signed-off-by: WenyXu <wenymedia@gmail.com>
49 lines
1.1 KiB
SQL
49 lines
1.1 KiB
SQL
CREATE TABLE alter_repartition_table(
|
|
device_id INT,
|
|
area STRING,
|
|
ty STRING,
|
|
ts TIMESTAMP TIME INDEX,
|
|
PRIMARY KEY(device_id)
|
|
) PARTITION ON COLUMNS (device_id, area) (
|
|
device_id < 100,
|
|
device_id >= 100 AND device_id < 200,
|
|
device_id >= 200
|
|
);
|
|
|
|
ALTER TABLE alter_repartition_table REPARTITION (
|
|
device_id < 100
|
|
) INTO (
|
|
device_id < 100 AND area < 'South',
|
|
device_id < 100 AND area >= 'South'
|
|
);
|
|
|
|
SHOW CREATE TABLE alter_repartition_table;
|
|
|
|
ALTER TABLE alter_repartition_table MERGE PARTITION (
|
|
device_id < 100 AND area < 'South',
|
|
device_id < 100 AND area >= 'South'
|
|
);
|
|
|
|
SHOW CREATE TABLE alter_repartition_table;
|
|
|
|
-- FIXME(weny): Object store is not configured for the test environment,
|
|
-- so staging manifest may not be applied in some cases.
|
|
|
|
-- invalid: empty source clause
|
|
ALTER TABLE alter_repartition_table REPARTITION () INTO (
|
|
device_id < 100
|
|
);
|
|
|
|
-- invalid: more than one INTO clause
|
|
ALTER TABLE alter_repartition_table REPARTITION (
|
|
device_id < 100
|
|
) INTO (
|
|
device_id < 50
|
|
), (
|
|
device_id >= 50
|
|
) INTO (
|
|
device_id >= 50
|
|
);
|
|
|
|
DROP TABLE alter_repartition_table;
|