From 4330b1c526dc46f8281b7ddc428040e4306996db Mon Sep 17 00:00:00 2001 From: Alexander Zhdanov Date: Thu, 5 Sep 2024 14:21:09 +0300 Subject: [PATCH] Move the call of the checkArgsMismatch function before the call of the setParamsFunc function --- src/dsql/ExprNodes.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/dsql/ExprNodes.cpp b/src/dsql/ExprNodes.cpp index 76149a54118..abbc3560634 100644 --- a/src/dsql/ExprNodes.cpp +++ b/src/dsql/ExprNodes.cpp @@ -12386,7 +12386,6 @@ void SysFuncCallNode::make(DsqlCompilerScratch* dsqlScratch, dsc* desc) } DSqlDataTypeUtil dataTypeUtil(dsqlScratch); - function->checkArgsMismatch(argsArray.getCount()); function->makeFunc(&dataTypeUtil, function, desc, argsArray.getCount(), argsArray.begin()); } @@ -12481,14 +12480,18 @@ ValueExprNode* SysFuncCallNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) if (node->function) { + auto& items = node->args->items; + + node->function->checkArgsMismatch(items.getCount()); + if (node->function->setParamsFunc) { - Array tempDescs(node->args->items.getCount()); - tempDescs.resize(node->args->items.getCount()); + Array tempDescs(items.getCount()); + tempDescs.resize(items.getCount()); - Array argsArray(node->args->items.getCount()); + Array argsArray(items.getCount()); - for (auto& item : node->args->items) + for (auto& item : items) { DsqlDescMaker::fromNode(dsqlScratch, item); @@ -12507,7 +12510,7 @@ ValueExprNode* SysFuncCallNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) node->function->setParamsFunc(&dataTypeUtil, node->function, argsArray.getCount(), argsArray.begin()); - for (auto& item : node->args->items) + for (auto& item : items) { PASS1_set_parameter_type(dsqlScratch, item, [&] (dsc* desc) { *desc = item->getDsqlDesc(); },