提交 76611e8b 编写于 作者: S shenglian zhou

fix build error : no paramList when first(*) and support udf in expr

上级 97285d6a
...@@ -4336,9 +4336,6 @@ static int32_t validateSQLExprSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr, ...@@ -4336,9 +4336,6 @@ static int32_t validateSQLExprSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
SQueryInfo* pQueryInfo, SColumnList* pList, int32_t* type, uint64_t *uid) { SQueryInfo* pQueryInfo, SColumnList* pList, int32_t* type, uint64_t *uid) {
int32_t code = TSDB_CODE_SUCCESS; int32_t code = TSDB_CODE_SUCCESS;
int32_t functionId = isValidFunction(pExpr->Expr.operand.z, pExpr->Expr.operand.n); int32_t functionId = isValidFunction(pExpr->Expr.operand.z, pExpr->Expr.operand.n);
if (functionId < 0) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (*type == NON_ARITHMEIC_EXPR) { if (*type == NON_ARITHMEIC_EXPR) {
if (TSDB_FUNC_IS_SCALAR(functionId)) { if (TSDB_FUNC_IS_SCALAR(functionId)) {
*type = NORMAL_ARITHMETIC; *type = NORMAL_ARITHMETIC;
...@@ -4352,9 +4349,10 @@ static int32_t validateSQLExprSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr, ...@@ -4352,9 +4349,10 @@ static int32_t validateSQLExprSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
} }
pExpr->functionId = functionId; pExpr->functionId = functionId;
size_t numChilds = taosArrayGetSize(pExpr->Expr.paramList); if (pExpr->Expr.paramList != NULL) {
for (int i = 0; i < numChilds; ++i) { size_t numChildren = taosArrayGetSize(pExpr->Expr.paramList);
tSqlExprItem* pParamElem= taosArrayGet(pExpr->Expr.paramList, i); for (int32_t i = 0; i < numChildren; ++i) {
tSqlExprItem* pParamElem = taosArrayGet(pExpr->Expr.paramList, i);
if (!TSDB_FUNC_IS_SCALAR(functionId) && if (!TSDB_FUNC_IS_SCALAR(functionId) &&
(pParamElem->pNode->type == SQL_NODE_EXPR || pParamElem->pNode->type == SQL_NODE_SQLFUNCTION)) { (pParamElem->pNode->type == SQL_NODE_EXPR || pParamElem->pNode->type == SQL_NODE_SQLFUNCTION)) {
return TSDB_CODE_TSC_INVALID_OPERATION; return TSDB_CODE_TSC_INVALID_OPERATION;
...@@ -4364,14 +4362,19 @@ static int32_t validateSQLExprSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr, ...@@ -4364,14 +4362,19 @@ static int32_t validateSQLExprSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
return code; return code;
} }
} }
}
if (!TSDB_FUNC_IS_SCALAR(functionId)) { if (!TSDB_FUNC_IS_SCALAR(functionId)) {
for (int i = 0; i < numChilds; ++i) { if (pExpr->Expr.paramList != NULL)
{
size_t numChildren = taosArrayGetSize(pExpr->Expr.paramList);
for (int32_t i = 0; i < numChildren; ++i) {
tSqlExprItem* pParamElem = taosArrayGet(pExpr->Expr.paramList, i); tSqlExprItem* pParamElem = taosArrayGet(pExpr->Expr.paramList, i);
if (pParamElem->pNode->type == SQL_NODE_EXPR || pParamElem->pNode->type == SQL_NODE_SQLFUNCTION) { if (pParamElem->pNode->type == SQL_NODE_EXPR || pParamElem->pNode->type == SQL_NODE_SQLFUNCTION) {
return TSDB_CODE_TSC_INVALID_OPERATION; return TSDB_CODE_TSC_INVALID_OPERATION;
} }
} }
}
int32_t outputIndex = (int32_t)tscNumOfExprs(pQueryInfo); int32_t outputIndex = (int32_t)tscNumOfExprs(pQueryInfo);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册