diff --git a/ydb/library/yql/providers/yt/lib/hash/ya.make b/ydb/library/yql/providers/yt/lib/hash/ya.make index 6692b7595f0f..74e747a1521e 100644 --- a/ydb/library/yql/providers/yt/lib/hash/ya.make +++ b/ydb/library/yql/providers/yt/lib/hash/ya.make @@ -11,6 +11,7 @@ PEERDIR( ydb/library/yql/utils ydb/library/yql/utils/log ydb/library/yql/core + ydb/library/yql/core/expr_nodes ) END() diff --git a/ydb/library/yql/providers/yt/lib/hash/yql_op_hash.cpp b/ydb/library/yql/providers/yt/lib/hash/yql_op_hash.cpp index 5f3f5fe9d52b..51d1b2fefa80 100644 --- a/ydb/library/yql/providers/yt/lib/hash/yql_op_hash.cpp +++ b/ydb/library/yql/providers/yt/lib/hash/yql_op_hash.cpp @@ -2,11 +2,14 @@ #include "yql_hash_builder.h" #include +#include #include #include namespace NYql { +using namespace NNodes; + void TNodeHashCalculator::UpdateFileHash(THashBuilder& builder, TStringBuf alias) const { auto block = Types.UserDataStorage->FindUserDataBlock(alias); YQL_ENSURE(block, "File " << alias << " not found"); @@ -78,9 +81,9 @@ TString TNodeHashCalculator::GetHashImpl(const TExprNode& node, TArgIndex& argIn isHashable = false; } else { - if (node.Content() == "Udf" && node.ChildrenSize() == 7 && !node.Child(6)->Content().empty()) { + if (TCoUdf::Match(&node) && node.ChildrenSize() > TCoUdf::idx_FileAlias && !node.Child(TCoUdf::idx_FileAlias)->Content().empty()) { // an udf from imported file, use hash of file - auto alias = node.Child(6)->Content(); + auto alias = node.Child(TCoUdf::idx_FileAlias)->Content(); UpdateFileHash(builder, alias); } else if (node.Content() == "FilePath" || node.Content() == "FileContent") { auto alias = node.Child(0)->Content();