diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java index 5fedcba4680664d2fbadeecd2608be88e4044764..e7daf9ac90c76931ad7b0210ec81eb31d1b78949 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java @@ -22,6 +22,7 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.impl.DBObjectNameCaseTransformer; +import org.jkiss.dbeaver.model.impl.struct.RelationalObjectType; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -137,6 +138,22 @@ class SQLCompletionAnalyzer makeDataSourceProposals(); } } + + if (!request.simpleMode && request.queryType == SQLCompletionProcessor.QueryType.COLUMN && dataSource instanceof DBSObjectContainer) { + // Add procedures/functions for column proposals + DBSStructureAssistant structureAssistant = DBUtils.getAdapter(DBSStructureAssistant.class, dataSource); + DBSObjectContainer sc = (DBSObjectContainer) dataSource; + DBSObject selectedObject = DBUtils.getActiveInstanceObject(dataSource); + if (selectedObject instanceof DBSObjectContainer) { + sc = (DBSObjectContainer)selectedObject; + } + if (structureAssistant != null) { + makeProposalsFromAssistant(dataSource, structureAssistant, + sc, + new DBSObjectType[] {RelationalObjectType.TYPE_PROCEDURE }, + request.wordPart); + } + } } else { // Get list of sub-objects (filtered by wordPart) makeDataSourceProposals(); @@ -328,7 +345,7 @@ class SQLCompletionAnalyzer } } if (structureAssistant != null) { - makeProposalsFromAssistant(dataSource, structureAssistant, sc, lastToken); + makeProposalsFromAssistant(dataSource, structureAssistant, sc, null, lastToken); } } } @@ -591,13 +608,14 @@ class SQLCompletionAnalyzer DBPDataSource dataSource, DBSStructureAssistant assistant, @Nullable DBSObjectContainer rootSC, + DBSObjectType[] objectTypes, String objectName) { try { Collection references = assistant.findObjectsByMask( monitor, rootSC, - assistant.getAutoCompleteObjectTypes(), + objectTypes == null ? assistant.getAutoCompleteObjectTypes() : objectTypes, makeObjectNameMask(dataSource, request.wordDetector.removeQuotes(objectName)), request.wordDetector.isQuoted(objectName), dataSource.getContainer().getPreferenceStore().getBoolean(SQLPreferenceConstants.USE_GLOBAL_ASSISTANT),