當(dāng)分區(qū)表中存在GLOBAL INDEX時,支持對分區(qū)表進(jìn)行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:在分區(qū)表上進(jìn)行DDL操作時,如果加上UPDATE GLOBAL INDEXES關(guān)鍵字,則會在執(zhí)行DDL時自動更新維護(hù)表上的所有GLOBAL INDEX。由于當(dāng)前版本不支持,如果使用此語法在執(zhí)行DDL時,會出現(xiàn)報錯。
  • INVALIDATE GLOBAL INDEXES:在分區(qū)表上進(jìn)行DDL操作時,如果加上INVALIDATE GLOBAL INDEXES關(guān)鍵字,則會在執(zhí)行DDL時,使該分區(qū)表上所有的GLOBAL INDEX失效。
  • 默認(rèn)行為:
    • 默認(rèn)在含有GLOBAL INDEX的分區(qū)表上執(zhí)行DDL時會報錯。
    • 開啟polar_enable_invalidate_global_index參數(shù)后,如果未出現(xiàn)上述UPDATE GLOBAL INDEXESINVALIDATE GLOBAL INDEXES兩種關(guān)鍵字,則會默認(rèn)使分區(qū)表上所有索引失效。同時,truncate、cluster、vacuum full都會使分區(qū)表上所有GLOBAL INDEX失效。
  • 存在GLOBAL INDEX的分區(qū)表,支持以下DDL功能:
    • drop partition
    • split partition
    • merge partition
    • exchange partition
    • truncate partition
    • truncate child table
    • cluster/vacuum full child table
  • 以下兩個DDL功能,即使加上INVALIDATE GLOBAL INDEXES關(guān)鍵字,該分區(qū)表上的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;