diff options
| author | vvvv <[email protected]> | 2024-12-09 14:29:21 +0300 |
|---|---|---|
| committer | vvvv <[email protected]> | 2024-12-09 14:45:05 +0300 |
| commit | cd83d367ca7edd078dd5eb9a97fda32212b5f3e8 (patch) | |
| tree | 23e739e9fe607edf8858aaa6c786e66a947e1977 /yql/essentials/core/yql_graph_transformer.cpp | |
| parent | d4510c40056498c21c4185bc678c4eed3ab89cea (diff) | |
Introduced two stages mode for type annotation, a FailMe callable to simulate optimization failures
В обычном select 1 \|\| 2 теперь выдается ошибка в InitialTypeAnnotation stage
А ошибка на RepeatTypeAnnotation stage эскалируется до Severity=Fatal
commit_hash:fb09693b4baf9e14bfe7dae9a8a9cd4b9e0e0142
Diffstat (limited to 'yql/essentials/core/yql_graph_transformer.cpp')
| -rw-r--r-- | yql/essentials/core/yql_graph_transformer.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/yql/essentials/core/yql_graph_transformer.cpp b/yql/essentials/core/yql_graph_transformer.cpp index 5248ee1597f..139f8b15b85 100644 --- a/yql/essentials/core/yql_graph_transformer.cpp +++ b/yql/essentials/core/yql_graph_transformer.cpp @@ -7,6 +7,36 @@ namespace NYql { namespace { +class TSharedTransformerProxy : public IGraphTransformer { +public: + TSharedTransformerProxy(const std::shared_ptr<IGraphTransformer>& inner) + : Inner_(inner) + {} + + TStatus Transform(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) { + return Inner_->Transform(input, output, ctx); + } + + NThreading::TFuture<void> GetAsyncFuture(const TExprNode& input) { + return Inner_->GetAsyncFuture(input); + } + + TStatus ApplyAsyncChanges(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) { + return Inner_->ApplyAsyncChanges(input, output, ctx); + } + + void Rewind() final { + return Inner_->Rewind(); + } + + TStatistics GetStatistics() const final { + return Inner_->GetStatistics(); + } + +private: + const std::shared_ptr<IGraphTransformer> Inner_; +}; + class TCompositeGraphTransformer : public TGraphTransformerBase { public: TCompositeGraphTransformer(const TVector<TTransformStage>& stages, bool useIssueScopes, bool doCheckArguments) @@ -219,6 +249,10 @@ private: } // namespace +TAutoPtr<IGraphTransformer> MakeSharedTransformerProxy(const std::shared_ptr<IGraphTransformer>& inner) { + return new TSharedTransformerProxy(inner); +} + TAutoPtr<IGraphTransformer> CreateChoiceGraphTransformer( const std::function<bool(const TExprNode::TPtr& input, TExprContext& ctx)>& condition, const TTransformStage& left, const TTransformStage& right) |
