ClickHouse / ClickHouse/clickhouse-java

[jdbc-v2] `DataLakeCatalog` is not present in `getSchemas()` result or avoid using `system.*` where possible.

Ouverte
#2,907 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area:jdbc-metadata bug jdbc-v2
Langage dominant
Java
Étoiles
1.6k
Forks
636
Merge moyen
2 j 23 h
PR mergées (30 j)
29

Description

## Description

Databases with engine `DataLakeCatalog` are not visible when requested via `DataBaseMetadata` because driver uses `system.databases` to fetch this information.

Workaround: `show_data_lake_catalogs_in_system_tables=1` settings in session or profile.

## Note

As `SHOW DATABASES` return better information - JDBC Driver should make it at least an option.

## DBeaver and Metabase
When workaround applied these products getting exception trying to read tables information.
See https://clickhouse.com/docs/operations/settings/settings#database_datalake_require_metadata_access

```
2026-07-02T21:19:42+02:00 ERROR metabase.sync.fetch-metadata Error while fetching metadata with 'db-metadata',java.sql.SQLException: Code: 736. DB::Exception: Received error 736 while fetching table metadata for existing table 'product_analyst_team.vw_ap_integrations_2026'. If you want this error to be ignored, use database_datalake_require_metadata_access=0. Error: Code: 736. DB::Exception: Cannot read table `sandbox.product_analyst_team.vw_ap_integrations_2026` because it doesn't have storage location. It means that it's not a DeltaLake table, and it's unreadable with Unity catalog in ClickHouse. (..., at com.clickhouse.jdbc.internal.ExceptionUtils.toSqlState(ExceptionUtils.java:68), at com.clickhouse.jdbc.internal.ExceptionUtils.toSqlState(ExceptionUtils.java:43), at com.clickhouse.jdbc.StatementImpl.executeQueryImpl(StatementImpl.java:196), at com.clickhouse.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:138), at com.clickhouse.jdbc.metadata.DatabaseMetaDataImpl.getTables(DatabaseMetaDataImpl.java:998), at com.mchange.v2.c3p0.impl.NewProxyDatabaseMetaData.getTables(NewProxyDatabaseMetaData.java:4174), at metabase.driver.clickhouse_introspection$get_tables_from_metadata.invokeStatic(clickhouse_introspection.clj:109), at metabase.driver.clickhouse_introspection$get_tables_from_metadata.invoke(clickhouse_introspection.clj:107), at metabase.driver.clickhouse_introspection$get_all_tables_in_all_dbs$fn__173063.invoke(clickhouse_introspection.clj:128), at metabase.driver.clickhouse$fn__173529$fn__173531.invoke(clickhouse.clj:102), at metabase.driver.sql_jdbc.execute$do_with_resolved_connection.invokeStatic(execute.clj:366), at metabase.driver.sql_jdbc.execute$do_with_resolved_connection.invoke(execute.clj:338), at metabase.driver.clickhouse$fn__173529.invokeStatic(clickhouse.clj:79), at metabase.driver.clickhouse$fn__173529.invoke(clickhouse.clj:77), at clojure.lang.MultiFn.invoke(MultiFn.java:244), at metabase.driver.clickhouse_introspection$get_all_tables_in_all_dbs.invokeStatic(clickhouse_introspection.clj:125), at metabase.driver.clickhouse_introspection$get_all_tables_in_all_dbs.invoke(clickhouse_introspection.clj:119), at metabase.driver.clickhouse_introspection$fn__173076.invokeStatic(clickhouse_introspection.clj:170), at metabase.driver.clickhouse_introspection$fn__173076.invoke(clickhouse_introspection.clj:166)
2026-07-02T21:19:42+02:00 WARN metabase.sync.util Error in sync step Sync metadata for clickhouse Database 43 ''test-clickhouse-cloud'',java.sql.SQLException: Code: 736. DB::Exception: Received error 736 while fetching table metadata for existing table 'product_analyst_team.vw_ap_integrations_2026'. If you want this error to be ignored, use database_datalake_require_metadata_access=0. Error: Code: 736. DB::Exception: Cannot read table `sandbox.product_analyst_team.vw_ap_integrations_2026` because it doesn't have storage location. It means that it's not a DeltaLake table, and it's unreadable with Unity catalog in ClickHouse. (..., at com.clickhouse.jdbc.internal.ExceptionUtils.toSqlState(ExceptionUtils.java:68), at com.clickhouse.jdbc.internal.ExceptionUtils.toSqlState(ExceptionUtils.java:43), at com.clickhouse.jdbc.StatementImpl.executeQueryImpl(StatementImpl.java:196), at com.clickhouse.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:138), at com.clickhouse.jdbc.metadata.DatabaseMetaDataImpl.getTables(DatabaseMetaDataImpl.java:998), at com.mchange.v2.c3p0.impl.NewProxyDatabaseMetaData.getTables(NewProxyDatabaseMetaData.java:4174), at metabase.driver.clickhouse_introspection$get_tables_from_metadata.invokeStatic(clickhouse_introspection.clj:109), at metabase.driver.clickhouse_introspection$get_tables_from_metadata.invoke(clickhouse_introspection.clj:107), at metabase.driver.clickhouse_introspection$get_all_tables_in_all_dbs$fn__173063.invoke(clickhouse_introspection.clj:128), at metabase.driver.clickhouse$fn__173529$fn__173531.invoke(clickhouse.clj:102), at metabase.driver.sql_jdbc.execute$do_with_resolved_connection.invokeStatic(execute.clj:366), at metabase.driver.sql_jdbc.execute$do_with_resolved_connection.invoke(execute.clj:338), at metabase.driver.clickhouse$fn__173529.invokeStatic(clickhouse.clj:79), at metabase.driver.clickhouse$fn__173529.invoke(clickhouse.clj:77), at clojure.lang.MultiFn.invoke(MultiFn.java:244), at metabase.driver.clickhouse_introspection$get_all_tables_in_all_dbs.invokeStatic(clickhouse_introspection.clj:125), at metabase.driver.clickhouse_introspection$get_all_tables_in_all_dbs.invoke(clickhouse_introspection.clj:119), at metabase.driver.clickhouse_introspection$fn__173076.invokeStatic(clickhouse_introspection.clj:170), at metabase.driver.clickhouse_introspection$fn__173076.invoke(clickhouse_introspection.clj:166)
20

```

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Start at the JDBC DatabaseMetaData getSchemas() and getTables() entry points and reproduce the issue against a database using the DataLakeCatalog engine. Compare the current system.databases lookup with SHOW DATABASES and verify metadata calls involving DataLakeCatalog do not produce the documented access error; the issue is done when the intended option or behavior is covered by tests.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
backend-api-design, databases
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.