From c04a3e1d5d73b338c4ce6d46774b8ead6530b339 Mon Sep 17 00:00:00 2001 From: Yuriy Kaminskiy Date: Tue, 14 Jan 2025 15:28:27 +0300 Subject: [PATCH] streamlookup: verify RightInput is TDqLookupSourceWrap (should be replaced in logical optimize) --- ydb/library/yql/dq/type_ann/dq_type_ann.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ydb/library/yql/dq/type_ann/dq_type_ann.cpp b/ydb/library/yql/dq/type_ann/dq_type_ann.cpp index 465ee8eaa7ac..b19a2b87cb4d 100644 --- a/ydb/library/yql/dq/type_ann/dq_type_ann.cpp +++ b/ydb/library/yql/dq/type_ann/dq_type_ann.cpp @@ -638,8 +638,13 @@ TStatus AnnotateDqCnStreamLookup(const TExprNode::TPtr& input, TExprContext& ctx ctx.AddError(TIssue(ctx.GetPosition(joinType.Pos()), "Streamlookup supports only LEFT JOIN ... ANY")); return TStatus::Error; } + auto rightInput = cnStreamLookup.RightInput(); + if (!rightInput.Raw()->IsCallable("TDqLookupSourceWrap")) { + ctx.AddError(TIssue(ctx.GetPosition(rightInput.Pos()), "Unknown DqCnStreamLookup RightInput type (must be TDqLookupSourceWrap)")); + return TStatus::Error; + } const auto leftRowType = GetSeqItemType(leftInputType); - const auto rightRowType = GetSeqItemType(cnStreamLookup.RightInput().Raw()->GetTypeAnn()); + const auto rightRowType = GetSeqItemType(rightInput.Raw()->GetTypeAnn()); const auto outputRowType = GetDqJoinResultType( input->Pos(), *leftRowType->Cast(),