diff --git a/partitioned-table.md b/partitioned-table.md index 9f24457367ce7..814f22eeb0740 100644 --- a/partitioned-table.md +++ b/partitioned-table.md @@ -578,7 +578,21 @@ You can see that the inserted record `(NULL, 'mothra')` falls into the same part ## Partition management -You can add, drop, merge, split, redefine partitions by using `ALTER TABLE` statements. +For `LIST` and `RANGE` partitioned tables, you can add and drop partitions using the `ALTER TABLE ADD PARTITION ()` or `ALTER TABLE
DROP PARTITION ` statement. + +For `LIST` and `RANGE` partitioned tables, `REORGANIZE PARTITION` is not yet supported. + +For `HASH` partitioned tables, `COALESCE PARTITION` and `ADD PARTITION` are not yet supported. + +`EXCHANGE PARTITION` works by swapping a partition and a non-partitioned table, similar to how renaming a table like `RENAME TABLE t1 TO t1_tmp, t2 TO t1, t1_tmp TO t2` works. + +For example, `ALTER TABLE partitioned_table EXCHANGE PARTITION p1 WITH TABLE non_partitioned_table` swaps the `non_partitioned_table` table in the `p1` partition with the `partitioned_table` table. + +Ensure that all rows that you are exchanging into the partition match the partition definition; otherwise, these rows will not be found and cause unexpected issues. + +> **Warning:** +> +> `EXCHANGE PARTITION` is an experimental feature. It is not recommended to use it in a production environment. To enable it, set the `tidb_enable_exchange_partition` system variable to `ON`. ### Range partition management