当分区表中存在GLOBAL INDEX时,支持对分区表进行DDL操作。
语法
ALTER TABLE relation_expr alter_partition_cmd [update_global_index_clause]
alter_partition_cmd = { DROP PARTITION partition_name |
DROP PARTITION FOR partition_values |
ADD PARTITION partition_name table_partition_description |.....}
update_global_index_clause = { UPDATE | INVALIDATE } GLOBAL INDEXES}
描述
- UPDATE GLOBAL INDEXES:在分区表上进行DDL操作时,如果加上UPDATE GLOBAL INDEXES关键字,则会在执行DDL时自动更新维护表上的所有GLOBAL INDEX。由于当前版本不支持,如果使用此语法在执行DDL时,会出现报错。
- INVALIDATE GLOBAL INDEXES:在分区表上进行DDL操作时,如果加上INVALIDATE GLOBAL INDEXES关键字,则会在执行DDL时,使该分区表上所有的GLOBAL INDEX失效。
- 默认行为:
- 默认在含有GLOBAL INDEX的分区表上执行DDL时会报错。
- 开启
polar_enable_invalidate_global_index
参数后,如果未出现上述UPDATE GLOBAL INDEXES和INVALIDATE GLOBAL INDEXES两种关键字,则会默认使分区表上所有索引失效。同时,truncate、cluster、vacuum full都会使分区表上所有GLOBAL INDEX失效。
- 存在GLOBAL INDEX的分区表,支持以下DDL功能:
- drop partition
- split partition
- merge partition
- exchange partition
- truncate partition
- truncate child table
- cluster/vacuum full child table
- 以下两个DDL功能,即使加上INVALIDATE GLOBAL INDEXES关键字,该分区表上的GLOBAL INDEX也不会失效。
- add partition
- move partition
示例
- add partition
ALTER TABLE gi_ora ADD PARTITION p4 VALUES LESS THAN(400); ALTER TABLE gi_ora ADD PARTITION p4 VALUES LESS THAN(400) UPDATE GLOBAL INDEXES; ALTER TABLE gi_ora ADD PARTITION p4 VALUES LESS THAN(400) INVALIDATE GLOBAL INDEXES; (1 row)
- drop partition
ALTER TABLE gi_ora DROP PARTITION p4 UPDATE GLOBAL INDEXES; ALTER TABLE gi_ora DROP PARTITION p4 INVALIDATE GLOBAL INDEXES;