aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/core/yql_expr_constraint.cpp
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.com>2024-12-09 14:29:21 +0300
committervvvv <vvvv@yandex-team.com>2024-12-09 14:45:05 +0300
commitcd83d367ca7edd078dd5eb9a97fda32212b5f3e8 (patch)
tree23e739e9fe607edf8858aaa6c786e66a947e1977 /yql/essentials/core/yql_expr_constraint.cpp
parentd4510c40056498c21c4185bc678c4eed3ab89cea (diff)
downloadydb-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.cpp9
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());