Skip to content

Commit e1b11fe

Browse files
Fail gracefully when retrieving metadata for Neo4j 3.x (#21)
1 parent e700390 commit e1b11fe

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/component/datasource/metadata/DataSourcesComponentMetadata.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import com.albertoventurini.graphdbplugin.jetbrains.database.DatabaseManagerService;
1212
import com.albertoventurini.graphdbplugin.jetbrains.services.ExecutorService;
1313
import com.albertoventurini.graphdbplugin.jetbrains.ui.datasource.metadata.MetadataRetrieveEvent;
14+
import com.albertoventurini.graphdbplugin.language.cypher.documentation.database.DocumentationStorage;
1415
import com.intellij.openapi.application.ApplicationManager;
16+
import com.intellij.openapi.diagnostic.Logger;
1517
import com.intellij.openapi.project.Project;
1618
import com.intellij.util.messages.MessageBus;
1719
import com.albertoventurini.graphdbplugin.database.api.GraphDatabaseApi;
@@ -32,6 +34,8 @@
3234

3335
public class DataSourcesComponentMetadata {
3436

37+
private static final Logger LOG = Logger.getInstance(DataSourcesComponentMetadata.class);
38+
3539
private final Map<DataSourceType, Function<DataSourceApi, DataSourceMetadata>> handlers = new HashMap<>();
3640
private CypherMetadataProviderService cypherMetadataProviderService;
3741
private ExecutorService executorService;
@@ -78,15 +82,21 @@ private DataSourceMetadata getNeo4jBoltMetadata(DataSourceApi dataSource) {
7882
GraphDatabaseApi db = databaseManager.getDatabaseFor(dataSource);
7983
Neo4jBoltCypherDataSourceMetadata metadata = new Neo4jBoltCypherDataSourceMetadata();
8084

81-
GraphQueryResult indexesResult = db.execute("SHOW INDEXES");
82-
GraphQueryResult constraintsResult = db.execute("SHOW CONSTRAINTS");
85+
try {
86+
GraphQueryResult indexesResult = db.execute("SHOW INDEXES");
87+
GraphQueryResult constraintsResult = db.execute("SHOW CONSTRAINTS");
88+
GraphQueryResult storedProceduresResult = db.execute("SHOW PROCEDURES YIELD name, signature, description");
89+
90+
metadata.addIndexes(indexesResult);
91+
metadata.addConstraints(constraintsResult);
92+
metadata.addStoredProcedures(storedProceduresResult);
93+
} catch (Exception e) {
94+
LOG.warn("Unable to load indexes, constraints and procedures from the current database. Please upgrade to Neo4j 4 or 5 to fix this.");
95+
}
96+
8397
GraphQueryResult labelsQueryResult = db.execute("CALL db.labels()");
8498
GraphQueryResult relationshipQueryResult = db.execute("CALL db.relationshipTypes()");
8599
GraphQueryResult propertyKeysResult = db.execute("CALL db.propertyKeys()");
86-
GraphQueryResult storedProceduresResult = db.execute("SHOW PROCEDURES YIELD name, signature, description");
87-
88-
metadata.addIndexes(indexesResult);
89-
metadata.addConstraints(constraintsResult);
90100

91101
List<String> listOfLabels = extractLabels(labelsQueryResult);
92102
if (!listOfLabels.isEmpty()) {
@@ -101,7 +111,6 @@ private DataSourceMetadata getNeo4jBoltMetadata(DataSourceApi dataSource) {
101111
}
102112

103113
metadata.addPropertyKeys(propertyKeysResult);
104-
metadata.addStoredProcedures(storedProceduresResult);
105114

106115
boolean supportsUserFunctions = metadata.getMetadata(Neo4jBoltCypherDataSourceMetadata.STORED_PROCEDURES)
107116
.stream()

0 commit comments

Comments
 (0)