diff options
author | maxkovalev <maxkovalev@yandex-team.com> | 2025-01-21 10:35:21 +0300 |
---|---|---|
committer | maxkovalev <maxkovalev@yandex-team.com> | 2025-01-21 11:32:36 +0300 |
commit | e2324a4c7934ecbc80eb47f70d2586c4995499b5 (patch) | |
tree | 40b6cbf790d1745cb7027c247599b294ec8e1b30 | |
parent | 03ee2133f6d49649cc6b27fbbb23cf9c62128ea8 (diff) | |
download | ydb-e2324a4c7934ecbc80eb47f70d2586c4995499b5.tar.gz |
YQL-19476: Fix flatten columns with udf
commit_hash:7f6bda02fbc849702796300dfa7f1e78b361bd79
-rw-r--r-- | yql/essentials/core/services/yql_lineage.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/yql/essentials/core/services/yql_lineage.cpp b/yql/essentials/core/services/yql_lineage.cpp index c78bbb6b820..12f624c5c17 100644 --- a/yql/essentials/core/services/yql_lineage.cpp +++ b/yql/essentials/core/services/yql_lineage.cpp @@ -543,9 +543,11 @@ private: if (lambda.GetTypeAnn()->GetKind() == ETypeAnnotationKind::List) { value = &body; while(value->IsCallable({"FlatMap", "OrderedFlatMap"})) { - if (value->Head().IsCallable("Member") && &value->Head().Head() == &arg) { - TString field(value->Head().Tail().Content()); - flattenColumns.emplace(value->Tail().Head().HeadPtr().Get(), field); + TNodeMap<TMaybe<TFieldsLineage>> visited; + if (auto res = ScanExprLineage(value->Head(), &arg, &innerLineage, visited, {})) { + for (const auto& f: res->Items) { + flattenColumns.emplace(value->Tail().Head().HeadPtr().Get(), f.Field); + } } value = &value->Tail().Tail(); } |