执行修改表分区操作时报错
问题现象
执行ALTER TABLE PARTITION时,报错如下。
ERROR:start value of partition "XX" NOT EQUAL up-boundary of last partition.
原因分析
在同一条ALTER TABLE PARTITION
语句中,既存在DROP PARTITION
又存在ADD PARTITION
时,无论它们在语句中的顺序是什么,Vastbase总会先执行DROP PARTITION
再执行ADD PARTITION
。执行完DROP PARTITION
删除末尾分区后,再执行ADD PARTITION
操作会出现分区间隙,导致报错。
处理办法
为防止出现分区间隙,需要将ADD PARTITION
的START值前移,示例如下。
1、创建分区表partitiontest。
CREATE TABLE partitiontest
(
c_int integer,
c_time TIMESTAMP WITHOUT TIME ZONE
)
PARTITION BY range (c_int)
(
partition p1 start(100)end(108),
partition p2 start(108)end(120)
);
2、使用如下两种语句会发生报错:
第一种:
ALTER TABLE partitiontest ADD PARTITION p3 start(120)end(130), DROP PARTITION p2;
报错如下:
ERROR: start value of partition "p3" NOT EQUAL up-boundary of last partition.
第二种:
ALTER TABLE partitiontest DROP PARTITION p2,ADD PARTITION p3 start(120)end(130);
报错如下:
ERROR: start value of partition "p3" NOT EQUAL up-boundary of last partition.
3、上述两种语句可修改为如下内容:
ALTER TABLE partitiontest ADD PARTITION p3 start(108)end(130), DROP PARTITION p2;
ALTER TABLE partitiontest DROP PARTITION p2,ADD PARTITION p3 start(108)end(130);