summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/complete/sql_complete.cpp
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-06-17 16:02:41 +0300
committervitya-smirnov <[email protected]>2025-06-17 16:18:59 +0300
commit0bc6f0197fa813fec678c75c760564724f591309 (patch)
treebb40ca81a21ddb608154e56967202c0548708551 /yql/essentials/sql/v1/complete/sql_complete.cpp
parentd84e9cf123d8345dc008b9b0feafbb20be9d9784 (diff)
YQL-19747: Support token ignoring patterns
Added support for token filtration. It is needed because YQL grammar supports multiple systems with various capabilities. For example, some of those do not support `INTERSECT ALL` and therefore `ALL` after `INTERSECT` should be *disabled*. Another example is a support of an only `EVALUATE FOR`, so `FOR` is *forced* to be precendenced by `EVALUATE`. commit_hash:a926c8d3911f8dd025ab58eb7f81e2370fcd9376
Diffstat (limited to 'yql/essentials/sql/v1/complete/sql_complete.cpp')
-rw-r--r--yql/essentials/sql/v1/complete/sql_complete.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/yql/essentials/sql/v1/complete/sql_complete.cpp b/yql/essentials/sql/v1/complete/sql_complete.cpp
index 2f61b1fe4df..2ed153f3ecc 100644
--- a/yql/essentials/sql/v1/complete/sql_complete.cpp
+++ b/yql/essentials/sql/v1/complete/sql_complete.cpp
@@ -22,7 +22,11 @@ namespace NSQLComplete {
INameService::TPtr names,
ISqlCompletionEngine::TConfiguration configuration)
: Configuration_(std::move(configuration))
- , SyntaxAnalysis_(MakeLocalSyntaxAnalysis(lexer, Configuration_.IgnoredRules))
+ , SyntaxAnalysis_(MakeLocalSyntaxAnalysis(
+ lexer,
+ Configuration_.IgnoredRules,
+ Configuration_.DisabledPreviousByToken,
+ Configuration_.ForcedPreviousByToken))
, GlobalAnalysis_(MakeGlobalAnalysis())
, Names_(std::move(names))
{
@@ -272,17 +276,17 @@ namespace NSQLComplete {
}
ISqlCompletionEngine::TConfiguration MakeYDBConfiguration() {
- return {
- .IgnoredRules = {
- "use_stmt",
- "import_stmt",
- "export_stmt",
- },
+ ISqlCompletionEngine::TConfiguration config;
+ config.IgnoredRules = {
+ "use_stmt",
+ "import_stmt",
+ "export_stmt",
};
+ return config;
}
ISqlCompletionEngine::TConfiguration MakeYQLConfiguration() {
- return MakeConfiguration(/* allowedStmts = */ {
+ auto config = MakeConfiguration(/* allowedStmts = */ {
"lambda_stmt",
"pragma_stmt",
"select_stmt",
@@ -300,6 +304,18 @@ namespace NSQLComplete {
"for_stmt",
"values_stmt",
});
+
+ config.DisabledPreviousByToken = {};
+
+ config.ForcedPreviousByToken = {
+ {"PARALLEL", {}},
+ {"TABLESTORE", {}},
+ {"FOR", {"EVALUATE"}},
+ {"IF", {"EVALUATE"}},
+ {"EXTERNAL", {"USING"}},
+ };
+
+ return config;
}
ISqlCompletionEngine::TPtr MakeSqlCompletionEngine(