From 9f1ec97d767c282e7e56afff3d91d2e339005d5c Mon Sep 17 00:00:00 2001 From: ShadelessFox Date: Fri, 2 Jul 2021 16:25:34 +0300 Subject: [PATCH] #12037 Initialize variable rules at the very end --- .../src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java | 2 +- .../org/jkiss/dbeaver/ext/mssql/model/SQLServerDialect.java | 2 +- .../org/jkiss/dbeaver/model/sql/parser/SQLRuleManager.java | 4 ++++ .../org/jkiss/dbeaver/model/text/parser/TPRuleProvider.java | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java index 91c45fe902..171219582f 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java @@ -117,7 +117,7 @@ public class HANASQLDialect extends GenericSQLDialect implements TPRuleProvider @Override public void extendRules(@Nullable DBPDataSourceContainer dataSource, @NotNull List rules, @NotNull RulePosition position) { - if (position == RulePosition.INITIAL) { + if (position == RulePosition.FINAL) { rules.add(new SQLVariableRule(this)); } } diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDialect.java b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDialect.java index 45c3e1051f..07f1957bd9 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDialect.java @@ -315,7 +315,7 @@ public class SQLServerDialect extends JDBCSQLDialect implements TPRuleProvider { @Override public void extendRules(@Nullable DBPDataSourceContainer dataSource, @NotNull List rules, @NotNull RulePosition position) { - if (position == RulePosition.INITIAL) { + if (position == RulePosition.FINAL) { rules.add(new SQLVariableRule(this)); } if (position == RulePosition.KEYWORDS) { diff --git a/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/parser/SQLRuleManager.java b/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/parser/SQLRuleManager.java index ad3e40ca3a..9c091aa908 100644 --- a/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/parser/SQLRuleManager.java +++ b/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/sql/parser/SQLRuleManager.java @@ -244,6 +244,10 @@ public class SQLRuleManager { } } + if (ruleProvider != null) { + ruleProvider.extendRules(dataSourceContainer, rules, TPRuleProvider.RulePosition.FINAL); + } + allRules = rules.toArray(new TPRule[0]); } diff --git a/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/text/parser/TPRuleProvider.java b/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/text/parser/TPRuleProvider.java index 5a4cee14cc..3f605def67 100644 --- a/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/text/parser/TPRuleProvider.java +++ b/plugins/org.jkiss.dbeaver.model.sql/src/org/jkiss/dbeaver/model/text/parser/TPRuleProvider.java @@ -31,6 +31,7 @@ public interface TPRuleProvider { enum RulePosition { PARTITION, INITIAL, + FINAL, CONTROL, QUOTES, KEYWORDS -- GitLab