!3535 [bugfix] pg_free_remain_segment 函数未处理负数入参

Merge pull request !3535 from Lamaric/master-I6S2RP
This commit is contained in:
opengauss_bot
2023-07-24 02:33:40 +00:00
committed by Gitee

View File

@ -1818,9 +1818,14 @@ static void pgOutputRemainInfoToFile(RemainSegsCtx* remainSegsCtx)
Datum pg_free_remain_segment(PG_FUNCTION_ARGS)
{
Oid spaceId = PG_GETARG_OID(0);
Oid dbId = PG_GETARG_OID(1);
Oid segmentId = PG_GETARG_OID(2);
int32 spaceId = PG_GETARG_INT32(0);
int32 dbId = PG_GETARG_INT32(1);
int32 segmentId = PG_GETARG_INT32(2);
if (spaceId < 0 || dbId < 0 || segmentId < 0) {
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("Input segment [%d, %d, %d] is not valid segment!", spaceId, dbId, segmentId)));
}
RemainSegsCtx* remainSegsCtx = (RemainSegsCtx *)palloc(sizeof(RemainSegsCtx));
remainSegsCtx->remainSegsBuf = NULL;
@ -1828,7 +1833,7 @@ Datum pg_free_remain_segment(PG_FUNCTION_ARGS)
ReadRemainSegsFileForFunc(remainSegsCtx);
int segIdx = pgCheckRemainSegment(remainSegsCtx, spaceId, dbId, segmentId);
int segIdx = pgCheckRemainSegment(remainSegsCtx, (Oid)spaceId, (Oid)dbId, (Oid)segmentId);
if (segIdx >= 0 && (uint32)segIdx < remainSegsCtx->remainSegsNum) {
pgDoFreeRemainSegment(remainSegsCtx, segIdx);
@ -1836,7 +1841,7 @@ Datum pg_free_remain_segment(PG_FUNCTION_ARGS)
pgOutputRemainInfoToFile(remainSegsCtx);
} else {
ereport(ERROR, (errmsg("Input segment [%u, %u, %u] is not remained segment!", spaceId, dbId, segmentId)));
ereport(ERROR, (errmsg("Input segment [%d, %d, %d] is not remained segment!", spaceId, dbId, segmentId)));
}
if (remainSegsCtx->remainSegsBuf != NULL) {