diff --git a/src/main/java/world/data/jdbc/internal/metadata/AbstractDatabaseMetaData.java b/src/main/java/world/data/jdbc/internal/metadata/AbstractDatabaseMetaData.java index 2155968..eba6907 100644 --- a/src/main/java/world/data/jdbc/internal/metadata/AbstractDatabaseMetaData.java +++ b/src/main/java/world/data/jdbc/internal/metadata/AbstractDatabaseMetaData.java @@ -140,12 +140,6 @@ public String getCatalogTerm() { return CATALOG_TERM; } - @Override - public ResultSet getCatalogs() throws SQLException { - Object[][] rows = {{catalog}}; - return MetaDataSchema.newResultSet(MetaDataSchema.CATALOG_COLUMNS, rows); - } - @Override public ResultSet getClientInfoProperties() throws SQLException { return MetaDataSchema.newResultSet(MetaDataSchema.CLIENT_INFO_PROPERTY_COLUMNS); diff --git a/src/main/java/world/data/jdbc/internal/metadata/SparqlDatabaseMetaData.java b/src/main/java/world/data/jdbc/internal/metadata/SparqlDatabaseMetaData.java index c51104d..53f3199 100644 --- a/src/main/java/world/data/jdbc/internal/metadata/SparqlDatabaseMetaData.java +++ b/src/main/java/world/data/jdbc/internal/metadata/SparqlDatabaseMetaData.java @@ -44,6 +44,12 @@ public SparqlDatabaseMetaData(DataWorldConnection connection, String catalog, St super(connection, catalog, schema); } + @Override + public ResultSet getCatalogs() throws SQLException { + Object[][] rows = {{catalog}}; + return MetaDataSchema.newResultSet(MetaDataSchema.CATALOG_COLUMNS, rows); + } + @Override public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException { return MetaDataSchema.newResultSet(MetaDataSchema.COLUMN_COLUMNS); diff --git a/src/main/java/world/data/jdbc/internal/metadata/SqlDatabaseMetaData.java b/src/main/java/world/data/jdbc/internal/metadata/SqlDatabaseMetaData.java index d265e72..9e097a1 100644 --- a/src/main/java/world/data/jdbc/internal/metadata/SqlDatabaseMetaData.java +++ b/src/main/java/world/data/jdbc/internal/metadata/SqlDatabaseMetaData.java @@ -49,6 +49,25 @@ public SqlDatabaseMetaData(DataWorldConnection connection, String catalog, Strin super(connection, catalog, schema); } + @Override + public ResultSet getCatalogs() throws SQLException { + List rows = new ArrayList<>(); + try (PreparedStatement statement = connection.prepareStatement( + "SELECT DISTINCT owner" + + " FROM Schemata" + + " ORDER BY owner")) { + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + String owner = resultSet.getString("owner"); + rows.add(new Object[]{ + // TABLE_CAT String => catalog name + owner, + }); + } + } + return MetaDataSchema.newResultSet(MetaDataSchema.CATALOG_COLUMNS, rows); + } + @Override public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException { List rows = new ArrayList<>(); @@ -165,7 +184,7 @@ public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLExce List rows = new ArrayList<>(); try (PreparedStatement statement = connection.prepareStatement( "SELECT DISTINCT owner, dataset" + - " FROM Tables" + + " FROM Schemata" + " WHERE owner = COALESCE(?,owner)" + " AND dataset LIKE ?" + " ORDER BY owner, dataset")) {