From ff92fbbc52b3b3d7a517f5905024250939c6294f Mon Sep 17 00:00:00 2001 From: KaiGai Kohei Date: Wed, 16 Oct 2024 15:57:27 +0900 Subject: [PATCH] bugfix: pgstrom_partial_nrows() didn't return correct value if '0' is given as an argument. this issue was reported #829 --- src/aggfuncs.c | 2 +- src/executor.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/aggfuncs.c b/src/aggfuncs.c index bd8c81fa8..567f7c34c 100644 --- a/src/aggfuncs.c +++ b/src/aggfuncs.c @@ -101,7 +101,7 @@ pgstrom_partial_nrows(PG_FUNCTION_ARGS) for (i=0; i < PG_NARGS(); i++) { - if (PG_ARGISNULL(i) || !PG_GETARG_BOOL(i)) + if (PG_ARGISNULL(i)) PG_RETURN_INT64(0); } PG_RETURN_INT64(1); diff --git a/src/executor.c b/src/executor.c index ab3c3db8f..f990d79d9 100644 --- a/src/executor.c +++ b/src/executor.c @@ -1640,7 +1640,6 @@ static TupleTableSlot * pgstromExecScanAccess(pgstromTaskState *pts) { TupleTableSlot *slot; - XpuCommand *resp; slot = pgstromFetchFallbackTuple(pts); if (slot) @@ -1652,11 +1651,12 @@ pgstromExecScanAccess(pgstromTaskState *pts) if (pts->curr_resp) xpuClientPutResponse(pts->curr_resp); pts->curr_resp = __fetchNextXpuCommand(pts); - if (!pts->curr_resp) - return pgstromFetchFallbackTuple(pts); - resp = pts->curr_resp; - if (resp->tag == XpuCommandTag__Success) + if (pts->curr_resp) { + XpuCommand *resp = pts->curr_resp; + + if (resp->tag != XpuCommandTag__Success) + elog(ERROR, "unknown response tag: %u", resp->tag); if (resp->u.results.final_plan_task) { ExecFallbackCpuJoinOuterJoinMap(pts, resp); @@ -1673,7 +1673,7 @@ pgstromExecScanAccess(pgstromTaskState *pts) } else { - elog(ERROR, "unknown response tag: %u", resp->tag); + return pgstromFetchFallbackTuple(pts); } } slot_getallattrs(slot);