openGauss 执行修改表分区操作时报错

执行修改表分区操作时报错

问题现象

执行ALTER TABLE PARTITION时,报错如下。

ERROR:start value of partition "XX" NOT EQUAL up-boundary of last partition.

原因分析

在同一条ALTER TABLE PARTITION语句中,既存在DROP PARTITION又存在ADD PARTITION时,无论它们在语句中的顺序是什么,openGauss总会先执行DROP PARTITION再执行ADD PARTITION。执行完DROP PARTITION删除末尾分区后,再执行ADD PARTITION操作会出现分区间隙,导致报错。

处理办法

为防止出现分区间隙,需要将ADD PARTITION的START值前移。 示例如下。

--创建分区表partitiontest。
openGauss=#  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) 
);
--使用如下两种语句会发生报错:
openGauss=#  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. 
openGauss=#  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.
--可以修改语句为:
openGauss=#  ALTER TABLE partitiontest ADD PARTITION p3 start(108)end(130), DROP PARTITION p2;
openGauss=#  ALTER TABLE partitiontest DROP PARTITION p2,ADD PARTITION p3 start(108)end(130);
详情查看:https://opengauss.org
详情查看:https://docs-opengauss.osinfra.cn
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值