diff options
author | vvvv <vvvv@yandex-team.com> | 2024-12-09 14:29:21 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2024-12-09 14:45:05 +0300 |
commit | cd83d367ca7edd078dd5eb9a97fda32212b5f3e8 (patch) | |
tree | 23e739e9fe607edf8858aaa6c786e66a947e1977 /yql/essentials/core/yql_expr_constraint.cpp | |
parent | d4510c40056498c21c4185bc678c4eed3ab89cea (diff) | |
download | ydb-cd83d367ca7edd078dd5eb9a97fda32212b5f3e8.tar.gz |
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_expr_constraint.cpp')
-rw-r--r-- | yql/essentials/core/yql_expr_constraint.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/yql/essentials/core/yql_expr_constraint.cpp b/yql/essentials/core/yql_expr_constraint.cpp index aa57aecb71..3782544df1 100644 --- a/yql/essentials/core/yql_expr_constraint.cpp +++ b/yql/essentials/core/yql_expr_constraint.cpp @@ -79,6 +79,7 @@ public: : TCallableTransformerBase<TCallableConstraintTransformer>(types, instantOnly) , SubGraph(subGraph) { + Functions["FailMe"] = &TCallableConstraintTransformer::FailMe; Functions["Unordered"] = &TCallableConstraintTransformer::FromFirst<TEmptyConstraintNode, TUniqueConstraintNode, TDistinctConstraintNode, TVarIndexConstraintNode, TMultiConstraintNode>; Functions["UnorderedSubquery"] = &TCallableConstraintTransformer::FromFirst<TEmptyConstraintNode, TUniqueConstraintNode, TDistinctConstraintNode, TVarIndexConstraintNode, TMultiConstraintNode>; Functions["Sort"] = &TCallableConstraintTransformer::SortWrap; @@ -327,6 +328,14 @@ private: return TStatus::Ok; } + TStatus FailMe(const TExprNode::TPtr& input, TExprNode::TPtr& /*output*/, TExprContext& ctx) const { + if (input->Child(0)->Content() == "constraint") { + input->AddConstraint(ctx.MakeConstraint<TEmptyConstraintNode>()); + } + + return TStatus::Ok; + } + TStatus EmptyFromWrap(const TExprNode::TPtr& input, TExprNode::TPtr& output, TExprContext& ctx) const { auto set = input->Head().GetConstraintSet(); set.RemoveConstraint(TEmptyConstraintNode::Name()); |