ClickHouse / ClickHouse/clickhouse-java
[jdbc-v2] `DataLakeCatalog` is not present in `getSchemas()` result or avoid using `system.*` where possible.
- Ngôn ngữ chính
- Java
- Star
- 1.6k
- Fork
- 636
- Merge trung bình
- 2 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 29
Mô tả
## 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
```
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu từ các entry point JDBC DatabaseMetaData getSchemas() và getTables() rồi tái hiện vấn đề trên một cơ sở dữ liệu sử dụng engine DataLakeCatalog. So sánh truy vấn system.databases hiện tại với SHOW DATABASES và xác minh rằng các lệnh gọi metadata liên quan đến DataLakeCatalog không tạo ra lỗi truy cập đã được ghi rõ; issue được hoàn tất khi tùy chọn hoặc hành vi dự kiến được các bài kiểm thử bao phủ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java
- Lĩnh vực
- backend-api-design, databases
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100