diff options
author | zverevgeny <zverevgeny@ydb.tech> | 2023-08-29 21:00:54 +0300 |
---|---|---|
committer | zverevgeny <zverevgeny@ydb.tech> | 2023-08-30 02:05:02 +0300 |
commit | 3efee0e44ceb4687d30743b3173fecce4c74b7ed (patch) | |
tree | 2ed41276340ff0b8ed1b4871619de4ab89321d89 | |
parent | 83afbdd473100c991c643469c71299292a82b3f1 (diff) | |
download | ydb-3efee0e44ceb4687d30743b3173fecce4c74b7ed.tar.gz |
YQL-16325 disable match_recognize by default
5 files changed, 15 insertions, 3 deletions
diff --git a/ydb/library/yql/core/type_ann/type_ann_core.cpp b/ydb/library/yql/core/type_ann/type_ann_core.cpp index 205f5be3e3..faa9cffbed 100644 --- a/ydb/library/yql/core/type_ann/type_ann_core.cpp +++ b/ydb/library/yql/core/type_ann/type_ann_core.cpp @@ -12107,7 +12107,7 @@ template <NKikimr::NUdf::EDataSlot DataSlot> Functions["MatchRecognizeMeasures"] = &MatchRecognizeMeasuresWrapper; Functions["MatchRecognizePattern"] = &MatchRecognizePatternWrapper; Functions["MatchRecognizeDefines"] = &MatchRecognizeDefinesWrapper; - Functions["MatchRecognizeCore"] = &MatchRecognizeCoreWrapper; + ExtFunctions["MatchRecognizeCore"] = &MatchRecognizeCoreWrapper; Functions["FromPg"] = &FromPgWrapper; Functions["ToPg"] = &ToPgWrapper; diff --git a/ydb/library/yql/core/type_ann/type_ann_match_recognize.cpp b/ydb/library/yql/core/type_ann/type_ann_match_recognize.cpp index ebf6d9d2c9..2f985dec3a 100644 --- a/ydb/library/yql/core/type_ann/type_ann_match_recognize.cpp +++ b/ydb/library/yql/core/type_ann/type_ann_match_recognize.cpp @@ -207,8 +207,12 @@ MatchRecognizeDefinesWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& outp } IGraphTransformer::TStatus -MatchRecognizeCoreWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx) { +MatchRecognizeCoreWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TExtContext& ctx) { Y_UNUSED(output); + if (not ctx.Types.MatchRecognize) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), "MATCH_RECOGNIZE is disabled")); + return IGraphTransformer::TStatus::Error; + } if (!EnsureArgsCount(*input, 4, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } diff --git a/ydb/library/yql/core/type_ann/type_ann_match_recognize.h b/ydb/library/yql/core/type_ann/type_ann_match_recognize.h index ddb870c33f..b88577e0e3 100644 --- a/ydb/library/yql/core/type_ann/type_ann_match_recognize.h +++ b/ydb/library/yql/core/type_ann/type_ann_match_recognize.h @@ -14,6 +14,6 @@ namespace NYql { IGraphTransformer::TStatus MatchRecognizeMeasuresWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx); IGraphTransformer::TStatus MatchRecognizePatternWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx); IGraphTransformer::TStatus MatchRecognizeDefinesWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx); - IGraphTransformer::TStatus MatchRecognizeCoreWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx); + IGraphTransformer::TStatus MatchRecognizeCoreWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TExtContext& ctx); } } diff --git a/ydb/library/yql/core/yql_type_annotation.h b/ydb/library/yql/core/yql_type_annotation.h index bffbac61fa..41f8b4e8d5 100644 --- a/ydb/library/yql/core/yql_type_annotation.h +++ b/ydb/library/yql/core/yql_type_annotation.h @@ -237,6 +237,7 @@ struct TTypeAnnotationContext: public TThrRefBase { bool PgEmitAggApply = false; IArrowResolver::TPtr ArrowResolver; TString CostBasedOptimizerType; + bool MatchRecognize = false; // compatibility with v0 or raw s-expression code bool OrderedColumns = false; diff --git a/ydb/library/yql/providers/config/yql_config_provider.cpp b/ydb/library/yql/providers/config/yql_config_provider.cpp index dbca6b7e05..6f822b173e 100644 --- a/ydb/library/yql/providers/config/yql_config_provider.cpp +++ b/ydb/library/yql/providers/config/yql_config_provider.cpp @@ -824,6 +824,13 @@ namespace { Types.CostBasedOptimizerType = arg; } + else if (name == "EnableMatchRecognize" || name == "DisableMatchRecognize") { + if (args.size() != 0) { + ctx.AddError(TIssue(pos, TStringBuilder() << "Expected no arguments, but got " << args.size())); + return false; + } + Types.MatchRecognize = name == "EnableMatchRecognize"; + } else { ctx.AddError(TIssue(pos, TStringBuilder() << "Unsupported command: " << name)); return false; |