diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 7c873acadb..c41400f439 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -358,8 +358,16 @@ SRequestObj* launchQuery(STscObj* pTscObj, const char* sql, int sqlLen) { SQuery* pQuery = NULL; int32_t code = buildRequest(pTscObj, sql, sqlLen, &pRequest); - if (TSDB_CODE_SUCCESS == code) { - code = parseSql(pRequest, false, &pQuery, NULL); + if (code != TSDB_CODE_SUCCESS) { + terrno = code; + return NULL; + } + + code = parseSql(pRequest, false, &pQuery, NULL); + if (code != TSDB_CODE_SUCCESS) { + destroyRequest(pRequest); + terrno = code; + return NULL; } return launchQueryImpl(pRequest, pQuery, code, false); diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index f6b1839f68..85dfa4c866 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -4994,13 +4994,12 @@ static int32_t handleLimitOffset(SOperatorInfo* pOperator, SSDataBlock* pBlock) pProjectInfo->curOffset = 0; } + // check for the limitation in each group + if (pProjectInfo->limit.limit > 0 && pProjectInfo->curOutput + pRes->info.rows >= pProjectInfo->limit.limit) { + pRes->info.rows = (int32_t)(pProjectInfo->limit.limit - pProjectInfo->curOutput); + } + if (pRes->info.rows >= pOperator->resultInfo.threshold) { - - // check for the limitation in each group - if (pProjectInfo->limit.limit > 0 && pProjectInfo->curOutput + pRes->info.rows >= pProjectInfo->limit.limit) { - pRes->info.rows = (int32_t)(pProjectInfo->limit.limit - pProjectInfo->curOutput); - } - return PROJECT_RETRIEVE_DONE; } else { // not full enough, continue to accumulate the output data in the buffer. return PROJECT_RETRIEVE_CONTINUE; diff --git a/source/libs/parser/src/parInsert.c b/source/libs/parser/src/parInsert.c index dfeb2df911..609413d61b 100644 --- a/source/libs/parser/src/parInsert.c +++ b/source/libs/parser/src/parInsert.c @@ -1069,7 +1069,6 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { if (TSDB_QUERY_HAS_TYPE(pCxt->pOutput->insertType, TSDB_QUERY_TYPE_STMT_INSERT) && tbNum > 0) { return buildInvalidOperationMsg(&pCxt->msg, "single table allowed in one stmt"); - ; } destroyInsertParseContextForTable(pCxt);