aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaxkovalev <maxkovalev@yandex-team.com>2025-01-21 10:35:21 +0300
committermaxkovalev <maxkovalev@yandex-team.com>2025-01-21 11:32:36 +0300
commite2324a4c7934ecbc80eb47f70d2586c4995499b5 (patch)
tree40b6cbf790d1745cb7027c247599b294ec8e1b30
parent03ee2133f6d49649cc6b27fbbb23cf9c62128ea8 (diff)
downloadydb-e2324a4c7934ecbc80eb47f70d2586c4995499b5.tar.gz
YQL-19476: Fix flatten columns with udf
commit_hash:7f6bda02fbc849702796300dfa7f1e78b361bd79
-rw-r--r--yql/essentials/core/services/yql_lineage.cpp8
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();
}