提交 f7ad7c98 编写于 作者: S serge-rider

#3154 SQL completion processor fix (NPEs)

上级 e6ee58a1
......@@ -669,8 +669,9 @@ class SQLCompletionAnalyzer
boolean isObject,
@Nullable DBPNamedObject object)
{
DBPPreferenceStore store = request.editor.getActivePreferenceStore();
DBPDataSource dataSource = request.editor.getDataSource();
SQLEditorBase editor = request.editor;
DBPPreferenceStore store = editor.getActivePreferenceStore();
DBPDataSource dataSource = editor.getDataSource();
if (dataSource != null) {
if (isObject) {
// Escape replace string if required
......@@ -693,13 +694,12 @@ class SQLCompletionAnalyzer
default:
// Do not convert case if we got it directly from object
if (!isObject) {
DBPKeywordType keywordType = request.editor.getSyntaxManager().getDialect().getKeywordType(replaceString);
SQLDialect dialect = editor.getSyntaxManager().getDialect();
DBPKeywordType keywordType = dialect.getKeywordType(replaceString);
if (keywordType == DBPKeywordType.KEYWORD) {
replaceString = request.editor.getSyntaxManager().getKeywordCase().transform(replaceString);
replaceString = editor.getSyntaxManager().getKeywordCase().transform(replaceString);
} else {
DBPIdentifierCase convertCase = dataSource instanceof SQLDataSource ?
((SQLDataSource) dataSource).getSQLDialect().storesUnquotedCase() : DBPIdentifierCase.MIXED;
replaceString = convertCase.transform(replaceString);
replaceString = dialect.storesUnquotedCase().transform(replaceString);
}
}
break;
......
......@@ -53,9 +53,9 @@ public class JDBCSQLDialect extends BasicSQLDialect {
private boolean supportsUnquotedMixedCase;
private boolean supportsQuotedMixedCase;
@NotNull
private DBPIdentifierCase unquotedIdentCase;
private DBPIdentifierCase unquotedIdentCase = DBPIdentifierCase.MIXED;
@NotNull
private DBPIdentifierCase quotedIdentCase;
private DBPIdentifierCase quotedIdentCase = DBPIdentifierCase.MIXED;
private boolean supportsSubqueries = false;
private transient boolean typesLoaded = false;
......
......@@ -175,6 +175,7 @@ public class SQLSyntaxManager {
}
}
@NotNull
public DBPIdentifierCase getKeywordCase() {
final String caseName = preferenceStore.getString(ModelPreferences.SQL_FORMAT_KEYWORD_CASE);
if (CommonUtils.isEmpty(caseName)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册