From 3b19b4076c34b7b2fc2ca475d953a26baa187894 Mon Sep 17 00:00:00 2001 From: muyulinzhong Date: Wed, 28 Feb 2024 10:33:24 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90bugfix=E3=80=91=20=E6=AF=8F=E6=97=A5?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E8=B5=84=E6=BA=90=E6=B1=A0=E5=8C=96=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=EF=BC=8C=E6=89=A7=E8=A1=8CCI=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=EF=BC=8C=E6=95=B0=E6=8D=AE=E5=BA=93core=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=94=A8=E4=BE=8B=E6=89=A7=E8=A1=8C=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/optimizer/commands/tablecmds.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/gausskernel/optimizer/commands/tablecmds.cpp b/src/gausskernel/optimizer/commands/tablecmds.cpp index 4ea62458e..090d13235 100755 --- a/src/gausskernel/optimizer/commands/tablecmds.cpp +++ b/src/gausskernel/optimizer/commands/tablecmds.cpp @@ -19322,13 +19322,7 @@ static void atexecset_table_space_internal(Relation rel, RelFileNode& newrnode, /* we should not copy relation to the limited space tablespace */ RelFileNode newFileNode = dstrel->smgr_rnode.node; - uint64 tablespaceMaxSize = 0; - if (IsSegmentFileNode(newFileNode) && TableSpaceUsageManager::IsLimited(newFileNode.spcNode, &tablespaceMaxSize)) { - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmodule(MOD_SEGMENT_PAGE), - errmsg("Dont support relation movement to limited tablespace segment-page storage!"), - errdetail("Segment-page storage doest not support limited tablespace \"%s\"", get_tablespace_name(newFileNode.spcNode)), - errhint("use default or unlimited user defined tablespace before using segment-page storage."))); - } + /* copy main fork */ copy_relation_data(rel, &dstrel, MAIN_FORKNUM, rel->rd_rel->relpersistence); @@ -19620,6 +19614,13 @@ static void copy_relation_data(Relation rel, SMgrRelation* dstptr, ForkNumber fo */ if (IsSegmentFileNode(newFileNode)) { TableSpaceUsageManager::IsExceedMaxsize(newFileNode.spcNode, 0, true); + /* We should not remove the data to the limited tablespace under segment mode. */ + if (u_sess->cmd_cxt.l_isLimit) { + ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmodule(MOD_SEGMENT_PAGE), + errmsg("Dont support relation movement to limited tablespace segment-page storage!"), + errdetail("Segment-page storage doest not support limited tablespace \"%s\"", get_tablespace_name(newFileNode.spcNode)), + errhint("use default or unlimited user defined tablespace before using segment-page storage."))); + } } else { TableSpaceUsageManager::IsExceedMaxsize(newFileNode.spcNode, ((uint64)BLCKSZ) * nblocks, false); }