From 3dbc5d8abce0059f5ed8345ce34d68cc93ce3667 Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Fri, 19 Aug 2022 16:20:54 +0800 Subject: [PATCH 1/4] fix(query): fix "n","y" time unit parsing does not return error TD-18462 --- source/common/src/ttime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/common/src/ttime.c b/source/common/src/ttime.c index 77b45b6df1..60145f3ad4 100644 --- a/source/common/src/ttime.c +++ b/source/common/src/ttime.c @@ -679,7 +679,7 @@ int32_t parseNatualDuration(const char* token, int32_t tokenLen, int64_t* durati *unit = token[tokenLen - 1]; if (*unit == 'n' || *unit == 'y') { - return 0; + return -1; } return getDuration(*duration, *unit, duration, timePrecision); From 206a1c3de99eaccc6696c0c84f5f59d5c6e6683e Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Fri, 19 Aug 2022 16:50:44 +0800 Subject: [PATCH 2/4] Revert "fix(query): fix "n","y" time unit parsing does not return error" This reverts commit 3dbc5d8abce0059f5ed8345ce34d68cc93ce3667. --- source/common/src/ttime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/common/src/ttime.c b/source/common/src/ttime.c index 60145f3ad4..77b45b6df1 100644 --- a/source/common/src/ttime.c +++ b/source/common/src/ttime.c @@ -679,7 +679,7 @@ int32_t parseNatualDuration(const char* token, int32_t tokenLen, int64_t* durati *unit = token[tokenLen - 1]; if (*unit == 'n' || *unit == 'y') { - return -1; + return 0; } return getDuration(*duration, *unit, duration, timePrecision); From 0993843c8115c89aad0e431e08c69631c541e00b Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Fri, 19 Aug 2022 18:13:01 +0800 Subject: [PATCH 3/4] fix(query): fix "n","y" time unit parsing does not return error --- source/libs/parser/src/parTranslater.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 1c7446ad6f..9486671b16 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -2822,6 +2822,29 @@ static int32_t createDefaultFillNode(STranslateContext* pCxt, SNode** pOutput) { return TSDB_CODE_SUCCESS; } +static int32_t checkEvery(STranslateContext* pCxt, SValueNode* pInterval) { + int32_t len = strlen(pInterval->literal); + + char *unit = &pInterval->literal[len - 1]; + if (*unit == 'n' || *unit == 'y') { + return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_WRONG_VALUE_TYPE, + "Unsupported time unit in Every clause"); + } + + return TSDB_CODE_SUCCESS; +} + +static int32_t translateInterpEvery(STranslateContext* pCxt, SNode** pEvery) { + int32_t code = TSDB_CODE_SUCCESS; + + code = checkEvery(pCxt, (SValueNode *)(*pEvery)); + if (TSDB_CODE_SUCCESS == code) { + code = translateExpr(pCxt, pEvery); + } + + return code; +} + static int32_t translateInterpFill(STranslateContext* pCxt, SSelectStmt* pSelect) { int32_t code = TSDB_CODE_SUCCESS; @@ -2856,7 +2879,7 @@ static int32_t translateInterp(STranslateContext* pCxt, SSelectStmt* pSelect) { int32_t code = translateExpr(pCxt, &pSelect->pRange); if (TSDB_CODE_SUCCESS == code) { - code = translateExpr(pCxt, &pSelect->pEvery); + code = translateInterpEvery(pCxt, &pSelect->pEvery); } if (TSDB_CODE_SUCCESS == code) { code = translateInterpFill(pCxt, pSelect); From 02055c4a90685021abb960bb750ee454b5d782eb Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Fri, 19 Aug 2022 18:16:46 +0800 Subject: [PATCH 4/4] fix error msg --- source/libs/parser/src/parTranslater.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 9486671b16..3c0d9a5f63 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -2828,7 +2828,7 @@ static int32_t checkEvery(STranslateContext* pCxt, SValueNode* pInterval) { char *unit = &pInterval->literal[len - 1]; if (*unit == 'n' || *unit == 'y') { return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_WRONG_VALUE_TYPE, - "Unsupported time unit in Every clause"); + "Unsupported time unit in EVERY clause"); } return TSDB_CODE_SUCCESS;