osscm opened a new pull request, #15523:
URL: https://github.com/apache/iceberg/pull/15523
## Summary
First in a series of incremental PRs toward implementing the Iceberg
Materialized View
spec (#11041). We wanted to share our approach early and welcome feedback
from the
community and the spec author before going further.
Per the spec, a materialized view is a standard Iceberg view whose
ViewVersion carries
an optional `storage-table` field pointing to a regular Iceberg table
holding precomputed
query results. When absent, the entity is a plain logical view — fully
backward compatible.
**Changes in this PR:**
- `StorageTableIdentifier` — new value class (`namespace`, `name`,
optional `catalog`)
- `ViewVersion` — new default `storageTable()` returning null for plain
views
- `BaseViewVersion` — exposes `@Nullable storageTable()` for Immutables
- `ViewVersionParser` — serializes/deserializes the `storage-table` JSON
field
## Spec Reference
#11041 — Materialized View Spec (thanks @JanKaul and all PMC/community for
driving this!)
## Proposed Implementation Plan
We are planning to implement the spec incrementally and would love early
input on
whether this direction looks right to the community. Here is what we are
thinking:
- **Part 1 (this PR):** `StorageTableIdentifier` + `storage-table` field
on `ViewVersion`
- **Part 2:** `RefreshState` + `SourceState` data classes (snapshot
summary post-refresh)
- **Part 3:** `MaterializedView` interface extending `View`
- **Part 4:** Catalog API — MV lifecycle methods in `ViewCatalog`
- **Part 5:** Catalog implementations (REST, JDBC, Hive)
- **Part 6:** Spark integration + SQL DDL (`CREATE MATERIALIZED VIEW`,
`REFRESH`, `DROP`)
We are happy to adjust the approach, merge steps, or re-sequence based on
feedback.
## Test Plan
- `./gradlew :iceberg-api:test --tests
"org.apache.iceberg.view.TestStorageTableIdentifier"`
- `./gradlew :iceberg-core:test --tests
"org.apache.iceberg.view.TestViewVersionParser"`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]