Flink: Support Iceberg Views
- Dominant language
- Java
- Stars
- 9.2k
- Forks
- 3.5k
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 129
Description
### Feature Request / Improvement
Iceberg has a full view spec and `ViewCatalog` API (implemented by REST, Hive, JDBC,
Nessie, and InMemory catalogs), and Spark + Trino already read and write Iceberg views —
but the Flink connector has no view support today.
I plan to implement this as a series of small PRs against flink v2.1:
1. **Read path** — `getTable` returning `CatalogView` (SELECT / DESCRIBE), `SHOW VIEWS`,
views included in `listTables` per Flink's contract, view-aware `tableExists`.
Views store the original (as-typed) SQL under the `flink` dialect with
`default-namespace` set, matching the view spec; reads use
`View#sqlFor("flink")`.
2. **Write path** — `CREATE VIEW` / `DROP VIEW` / `ALTER VIEW ... RENAME` routed to the
underlying `ViewCatalog`.
3. **ALTER VIEW AS + refinements** — view version replace, property updates, and docs.
### Query engine
Flink
### Willingness to contribute
- [x] I can contribute this improvement/feature independently
- [ ] I would be willing to contribute this improvement/feature with guidance from the Iceberg community
- [ ] I cannot contribute this improvement/feature at this time
Contributor guide
Research direction
Start by tracing the Flink connector entry points named in the issue: getTable, listTables, tableExists, and the CREATE/DROP/ALTER VIEW operations. Compare their current table behavior with the ViewCatalog API and Flink's CatalogView contract. Done means the read, write, and refinement paths support the listed view operations, including flink-dialect SQL and default-namespace metadata.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, sql
- Domain
- databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100