當分區表中存在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;