@@ -12,9 +12,10 @@ namespace {
1212
1313class TLineageScanner {
1414public:
15- TLineageScanner (const TExprNode& root, const TTypeAnnotationContext& ctx)
15+ TLineageScanner (const TExprNode& root, const TTypeAnnotationContext& ctx, TExprContext& exprCtx )
1616 : Root_(root)
1717 , Ctx_(ctx)
18+ , ExprCtx_(exprCtx)
1819 {}
1920
2021 TString Process () {
@@ -209,7 +210,15 @@ class TLineageScanner {
209210 return &lineage;
210211 }
211212
212- if (node.IsCallable ({" Unordered" , " UnorderedSubquery" , " Right!" , " Skip" , " Take" , " Sort" , " AssumeSorted" })) {
213+ if (node.IsCallable ({
214+ " Unordered" ,
215+ " UnorderedSubquery" ,
216+ " Right!" ,
217+ " Skip" ,
218+ " Take" ,
219+ " Sort" ,
220+ " AssumeSorted" ,
221+ " SkipNullMembers" })) {
213222 lineage = *CollectLineage (node.Head ());
214223 return &lineage;
215224 } else if (node.IsCallable (" ExtractMembers" )) {
@@ -224,11 +233,19 @@ class TLineageScanner {
224233 HandleWindow (lineage, node);
225234 } else if (node.IsCallable (" EquiJoin" )) {
226235 HandleEquiJoin (lineage, node);
236+ } else {
237+ Warning (node, TStringBuilder () << node.Content () << " is not supported" );
227238 }
228239
229240 return &lineage;
230241 }
231242
243+ void Warning (const TExprNode& node, const TString& message) {
244+ auto issue = TIssue (ExprCtx_.GetPosition (node.Pos ()), message);
245+ SetIssueCode (EYqlIssueCode::TIssuesIds_EIssueCode_CORE_LINEAGE_INTERNAL_ERROR, issue);
246+ ExprCtx_.AddWarning (issue);
247+ }
248+
232249 void HandleExtractMembers (TLineage& lineage, const TExprNode& node) {
233250 auto innerLineage = *CollectLineage (node.Head ());
234251 if (innerLineage.Fields .Defined ()) {
@@ -763,6 +780,7 @@ class TLineageScanner {
763780private:
764781 const TExprNode& Root_;
765782 const TTypeAnnotationContext& Ctx_;
783+ TExprContext& ExprCtx_;
766784 TNodeMap<IDataProvider*> Reads_, Writes_;
767785 ui32 NextReadId_ = 0 ;
768786 ui32 NextWriteId_ = 0 ;
@@ -773,8 +791,8 @@ class TLineageScanner {
773791
774792}
775793
776- TString CalculateLineage (const TExprNode& root, const TTypeAnnotationContext& ctx) {
777- TLineageScanner scanner (root, ctx);
794+ TString CalculateLineage (const TExprNode& root, const TTypeAnnotationContext& ctx, TExprContext& exprCtx ) {
795+ TLineageScanner scanner (root, ctx, exprCtx );
778796 return scanner.Process ();
779797}
780798
0 commit comments