From 46a7ec74de7c7bdb9bcd470f8201d0da234143e5 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Wed, 22 Jan 2025 14:48:04 +0800 Subject: [PATCH] fix: limit/offset translate issues --- source/libs/parser/src/parTranslater.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 4cb0145138..c1227b6994 100755 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -6998,9 +6998,19 @@ static int32_t translateFrom(STranslateContext* pCxt, SNode** pTable) { } static int32_t checkLimit(STranslateContext* pCxt, SSelectStmt* pSelect) { - int32_t code = translateExpr(pCxt, (SNode**)&pSelect->pLimit); - if (TSDB_CODE_SUCCESS == code) { - code = translateExpr(pCxt, (SNode**)&pSelect->pSlimit); + int32_t code = 0; + + if (pSelect->pLimit && pSelect->pLimit->limit) { + code = translateExpr(pCxt, (SNode**)&pSelect->pLimit->limit); + } + if (TSDB_CODE_SUCCESS == code && pSelect->pLimit && pSelect->pLimit->offset) { + code = translateExpr(pCxt, (SNode**)&pSelect->pLimit->offset); + } + if (TSDB_CODE_SUCCESS == code && pSelect->pSlimit && pSelect->pSlimit->limit) { + code = translateExpr(pCxt, (SNode**)&pSelect->pSlimit->limit); + } + if (TSDB_CODE_SUCCESS == code && pSelect->pSlimit && pSelect->pSlimit->offset) { + code = translateExpr(pCxt, (SNode**)&pSelect->pSlimit->offset); } if ((TSDB_CODE_SUCCESS == code) &&