1111import com .albertoventurini .graphdbplugin .jetbrains .database .DatabaseManagerService ;
1212import com .albertoventurini .graphdbplugin .jetbrains .services .ExecutorService ;
1313import com .albertoventurini .graphdbplugin .jetbrains .ui .datasource .metadata .MetadataRetrieveEvent ;
14+ import com .albertoventurini .graphdbplugin .language .cypher .documentation .database .DocumentationStorage ;
1415import com .intellij .openapi .application .ApplicationManager ;
16+ import com .intellij .openapi .diagnostic .Logger ;
1517import com .intellij .openapi .project .Project ;
1618import com .intellij .util .messages .MessageBus ;
1719import com .albertoventurini .graphdbplugin .database .api .GraphDatabaseApi ;
3234
3335public 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