Skip to content

fix: isolate DataLakeCatalog databases from the schema panel's system.tables scan#163

Merged
BorisTyshkevich merged 1 commit into
mainfrom
fix/162-datalake-catalog-schema-panel
Jul 10, 2026
Merged

fix: isolate DataLakeCatalog databases from the schema panel's system.tables scan#163
BorisTyshkevich merged 1 commit into
mainfrom
fix/162-datalake-catalog-schema-panel

Conversation

@BorisTyshkevich

Copy link
Copy Markdown
Collaborator

Summary

  • One system.tables query across every database, once ClickHouse resolves per-table metadata for a DataLakeCatalog (Iceberg/Glue/…) database, either aborts entirely or silently drops tables from other, healthy catalogs the instant a single table in any catalog is broken. Traced to a ClickHouse-side gap in DatabaseDataLake::getTablesIterator, reported upstream as ClickHouse/ClickHouse#110032.
  • loadSchema now queries each DataLakeCatalog-engine database separately, requesting only database, name — the one column shape ClickHouse resolves via system.tables' fast path without opening each table's storage object, so one broken catalog can no longer take down any other.
  • Trade-off: total_rows/total_bytes/comment for catalog tables show as zero/empty rather than being fetched — not obtainable without re-triggering the underlying bug.
  • Also tightens querySystemAware's error handling: only an actual "Unknown setting" error latches dataLakeCatalogSettingUnsupported now; any other error (e.g. a per-table catalog failure) is no longer mistaken for "the setting itself is unsupported," which used to disable data-lake-catalog visibility for the rest of the session.

Closes #162.

Test plan

  • npm test — 1472/1472 passing, ch-client.js at 100/98.3/100/100 (remaining branch gaps are pre-existing in loadSchemaLineage, unrelated to this change)
  • node build/build.mjs — bundles cleanly
  • Verified live against a real cluster with 5 DataLakeCatalog databases, two of which have genuinely broken tables (missing Iceberg table_type, an inaccessible S3 access point): all 5 now list their tables correctly via the new query shape, where they previously failed or came back empty/incomplete.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LxWjVvVDCQ1MksmKjtVzAL

….tables scan (#162)

A single system.tables query across every database, once ClickHouse resolves
per-table metadata for a DataLakeCatalog (Iceberg/Glue/…) database, either
aborts entirely or silently drops tables from other, healthy catalogs the
instant one table in any catalog is broken — traced to a ClickHouse-side gap
in DatabaseDataLake::getTablesIterator, reported upstream as
ClickHouse/ClickHouse#110032.

loadSchema now queries each DataLakeCatalog-engine database separately,
requesting only database/name — the one column shape ClickHouse resolves via
system.tables' fast path without opening each table's storage object, so one
broken catalog can no longer take down any other. total_rows/total_bytes/
comment for catalog tables are zero/empty rather than fetched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LxWjVvVDCQ1MksmKjtVzAL
@BorisTyshkevich BorisTyshkevich merged commit d370705 into main Jul 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Schema panel hides all data-lake-catalog tables when ANY catalog table is unreadable

1 participant