ClickHouse / ClickHouse/clickhouse-java

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

Đang mở
#2,907 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
area:jdbc-metadata bug jdbc-v2
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

Mở 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.