!3535 [bugfix] pg_free_remain_segment 函数未处理负数入参
Merge pull request !3535 from Lamaric/master-I6S2RP
This commit is contained in:
@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user