summaryrefslogtreecommitdiffstats
path: root/yql/essentials/core/yql_graph_transformer.cpp
diff options
context:
space:
mode:
authorvvvv <[email protected]>2024-12-09 14:29:21 +0300
committervvvv <[email protected]>2024-12-09 14:45:05 +0300
commitcd83d367ca7edd078dd5eb9a97fda32212b5f3e8 (patch)
tree23e739e9fe607edf8858aaa6c786e66a947e1977 /yql/essentials/core/yql_graph_transformer.cpp
parentd4510c40056498c21c4185bc678c4eed3ab89cea (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.cpp34
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)