Skip to content

Commit 6a92f45

Browse files
authored
fix: update BigQuery REST entry for Lakehouse rename and write interop preview (#3)
1 parent 1b90070 commit 6a92f45

3 files changed

Lines changed: 20 additions & 11 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Pick a write engine and a read engine (or spin the roulette wheels). The app sho
2929
| Unity Catalog | Databricks Unity Catalog Iceberg REST |
3030
| DuckLake | DuckDB-native catalog backed by a DuckDB file |
3131

32-
> Data last verified against official documentation in April 2026. Verify against official docs before going to prod.
32+
> Data last verified against official documentation in May 2026. Verify against official docs before going to prod.
3333
3434
## Local development
3535

src/data/compatibility.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,10 @@ describe('vendor_bridge catalog', () => {
208208
expect(limitations.length).toBeGreaterThan(0);
209209
});
210210

211-
it('databricks vendor_bridge read entry has a sourceUrl', () => {
211+
it('databricks vendor_bridge read entry has sourceUrls', () => {
212212
const entry = engineReadRules.databricks?.vendor_bridge;
213-
expect(entry?.sourceUrl).toBeDefined();
214-
expect(entry?.sourceUrl?.length).toBeGreaterThan(0);
213+
expect(entry?.sourceUrls).toBeDefined();
214+
expect(entry?.sourceUrls?.length).toBeGreaterThan(0);
215215
});
216216

217217
it('snowflake cannot read vendor_bridge (not a Catalog Federation consumer)', () => {

src/data/compatibility.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export type Support = 'full' | 'partial' | 'none';
1414
export interface CatalogSupport {
1515
support: Support;
1616
limitations: string[];
17-
sourceUrl?: string;
17+
sourceUrls?: string[];
1818
}
1919

2020
export type EngineRule = Record<CatalogId, CatalogSupport>;
@@ -46,9 +46,12 @@ export const engineCatalogRules: Record<EngineId, EngineRule> = {
4646
bigquery: {
4747
glue: { support: 'none', limitations: [] },
4848
rest: { support: 'partial', limitations: [
49-
'BigQuery writes Iceberg tables via BigLake Metastore — a GCP-specific REST-compatible endpoint, not a general-purpose Iceberg REST catalog',
50-
'Other engines can read via the BigLake Metastore REST endpoint but cannot write to BigQuery-owned tables',
51-
'Tables must be created in BigQuery first; schema is BigQuery-managed',
49+
'BigQuery manages Iceberg tables via the Lakehouse runtime catalog (formerly BigLake Metastore) — a GCP-specific managed REST endpoint, not a self-hosted open catalog',
50+
'Read and write interoperability with external engines (Spark, Flink, Trino) is in preview as of April 2026 — not yet GA',
51+
'Credential vending is supported for cross-engine access control',
52+
], sourceUrls: [
53+
'https://cloud.google.com/blog/products/data-analytics/improved-interoperability-for-your-apache-iceberg-lakehouse',
54+
'https://docs.cloud.google.com/lakehouse/docs/about-lakehouse-catalogs',
5255
]},
5356
hive: { support: 'none', limitations: [] },
5457
s3tables: { support: 'none', limitations: [] },
@@ -58,7 +61,14 @@ export const engineCatalogRules: Record<EngineId, EngineRule> = {
5861
},
5962
databricks: {
6063
glue: { support: 'none', limitations: [] },
61-
rest: { support: 'none', limitations: [] },
64+
rest: { support: 'partial', limitations: [
65+
'Requires configuring the external REST catalog via Spark cluster/session settings — not available via native Databricks SQL',
66+
'Works best with REST catalogs that support credential vending; direct cloud storage writes are constrained by Unity Catalog external locations',
67+
'Not an officially documented Databricks workflow — Unity Catalog is the recommended read/write catalog for Databricks',
68+
], sourceUrls: [
69+
'https://docs.databricks.com/aws/en/iceberg/',
70+
'https://iceberg.apache.org/docs/latest/spark-configuration/',
71+
]},
6272
hive: { support: 'full', limitations: [] },
6373
s3tables: { support: 'none', limitations: [] },
6474
unity: { support: 'full', limitations: [] },
@@ -151,7 +161,6 @@ export const engineReadRules: Partial<Record<EngineId, Partial<EngineRule>>> = {
151161
// Databricks can READ from external REST catalogs (including BigLake Metastore) via Spark,
152162
// even though it cannot WRITE to them.
153163
rest: { support: 'partial', limitations: [
154-
'Databricks can read external Iceberg REST catalogs but cannot write to them',
155164
'Requires configuring the Iceberg REST catalog in Databricks cluster settings',
156165
]},
157166
// Databricks can READ Glue-registered Iceberg tables via the Glue connector in Spark,
@@ -172,7 +181,7 @@ export const engineReadRules: Partial<Record<EngineId, Partial<EngineRule>>> = {
172181
'Non-Iceberg Snowflake tables permanently fall back to JDBC query federation (slower)',
173182
'Tables with URI-incompatible locations or unsupported storage schemes also fall back to JDBC',
174183
'Foreign Iceberg tables require manual metadata refresh (ALTER TABLE) to reflect Snowflake writes in Databricks',
175-
], sourceUrl: 'https://docs.databricks.com/aws/en/query-federation/snowflake-catalog-federation' },
184+
], sourceUrls: ['https://docs.databricks.com/aws/en/query-federation/snowflake-catalog-federation'] },
176185
},
177186
};
178187

0 commit comments

Comments
 (0)