[td-10564] Fix bug in parser sql.

This commit is contained in:
Haojun Liao 2021-11-08 23:33:14 +08:00
parent 7c9d760026
commit bdcaeff12b
2 changed files with 11 additions and 4 deletions

View File

@ -3137,7 +3137,7 @@ int32_t sqlExprToExprNode(tExprNode **pExpr, const tSqlExpr* pSqlExpr, SQuerySt
}
} else {
*pExpr = (tExprNode *)calloc(1, sizeof(tExprNode));
*pExpr = (tExprNode*)calloc(1, sizeof(tExprNode));
(*pExpr)->nodeType = TEXPR_BINARYEXPR_NODE;
(*pExpr)->_node.pLeft = pLeft;
@ -3158,9 +3158,16 @@ int32_t sqlExprToExprNode(tExprNode **pExpr, const tSqlExpr* pSqlExpr, SQuerySt
}
// scalar op aggregate check
if (pLeft->nodeType == TEXPR_FUNCTION_NODE && pRight->nodeType != TEXPR_FUNCTION_NODE) {
return buildInvalidOperationMsg(pMsgBuf, "invalid expression");
}
if (pLeft->nodeType == TEXPR_FUNCTION_NODE && pRight->nodeType == TEXPR_FUNCTION_NODE) {
if (qIsAggregateFunction(pLeft->_function.functionName) != qIsAggregateFunction(pRight->_function.functionName)) {
return buildInvalidOperationMsg(pMsgBuf, "invalid expression");
}
}
}
return TSDB_CODE_SUCCESS;
}

View File

@ -406,8 +406,8 @@ TEST(testCase, function_Test10) {
sqlCheck("select cov(a, b) from `t.1abc`", true);
sqlCheck("select sum(length(a) + count(b)) from `t.1abc`", false);
// sqlCheck("select concat(concat(a,b), concat(a,b)) from `t.1abc`", true);
// sqlCheck("select length(length(length(a))) from `t.1abc`", true);
sqlCheck("select concat(concat(a,b), concat(a,b)) from `t.1abc`", true);
sqlCheck("select length(length(length(a))) from `t.1abc`", true);
}
TEST(testCase, function_Test6) {