From 2774799d9adfcdcd9741951d75241a3b98b73b53 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Fri, 25 Nov 2022 13:59:13 +0800 Subject: [PATCH] fix: duplicated explain response issue --- source/libs/qworker/inc/qwInt.h | 1 + source/libs/qworker/src/qworker.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/source/libs/qworker/inc/qwInt.h b/source/libs/qworker/inc/qwInt.h index a9eca64675..a0e04b6a19 100644 --- a/source/libs/qworker/inc/qwInt.h +++ b/source/libs/qworker/inc/qwInt.h @@ -127,6 +127,7 @@ typedef struct SQWTaskCtx { bool queryRsped; bool queryEnd; bool queryContinue; + bool queryExecDone; bool queryInQueue; int32_t rspCode; int64_t affectedRows; // for insert ...select stmt diff --git a/source/libs/qworker/src/qworker.c b/source/libs/qworker/src/qworker.c index aad9a52126..5bfc9b7444 100644 --- a/source/libs/qworker/src/qworker.c +++ b/source/libs/qworker/src/qworker.c @@ -59,6 +59,8 @@ static void freeItem(void *param) { int32_t qwHandleTaskComplete(QW_FPARAMS_DEF, SQWTaskCtx *ctx) { qTaskInfo_t taskHandle = ctx->taskHandle; + ctx->queryExecDone = true; + if (TASK_TYPE_TEMP == ctx->taskType && taskHandle) { if (ctx->explain) { SArray *execInfoList = taosArrayInit(4, sizeof(SExplainExecInfo)); @@ -116,6 +118,14 @@ int32_t qwExecTask(QW_FPARAMS_DEF, SQWTaskCtx *ctx, bool *queryStop) { DataSinkHandle sinkHandle = ctx->sinkHandle; SLocalFetch localFetch = {(void *)mgmt, ctx->localExec, qWorkerProcessLocalFetch, ctx->explainRes}; + if (ctx->queryExecDone) { + if (queryStop) { + *queryStop = true; + } + + return TSDB_CODE_SUCCESS; + } + SArray *pResList = taosArrayInit(4, POINTER_BYTES); while (true) { QW_TASK_DLOG("start to execTask, loopIdx:%d", i++);