Iceberg REST Phase 1 [1/3]: OpenAPI spec and codegen infrastructure#498
Open
cbb330 wants to merge 2 commits intolinkedin:mainfrom
Open
Iceberg REST Phase 1 [1/3]: OpenAPI spec and codegen infrastructure#498cbb330 wants to merge 2 commits intolinkedin:mainfrom
cbb330 wants to merge 2 commits intolinkedin:mainfrom
Conversation
Vendor the upstream Apache Iceberg REST OpenAPI spec (v1.10) and wire Polaris-aligned codegen into the services/tables Gradle build: - spec/iceberg-rest-catalog-open-api.yaml: upstream spec as source of truth - Gradle tasks: setUpOpenApiCliForIcebergRest, validateIcebergRestOpenApiSpec, generateIcebergRestOpenApiServer with importMappings/typeMappings to map spec schemas to real Iceberg library types (no model generation) - Post-processing for Iceberg 1.10-only types mapped to Object (compatibility with our 1.5.2 fork) - compileJava depends on codegen; check depends on spec validation - jackson-databind-nullable dependency for generated code
This was referenced Mar 11, 2026
29ce073 to
64083e8
Compare
- Strip non-upstream comments (CODE_COPIED_TO_POLARIS, version marker) so the vendored spec is byte-for-byte identical to apache-iceberg-1.10.0 - Add verifyIcebergRestSpecSync Gradle task that downloads the upstream spec from the pinned tag and fails if it differs from the vendored copy - Wire verifyIcebergRestSpecSync into the check task so CI catches drift
64083e8 to
f9966a6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Part 1 of 3 for Iceberg REST Catalog support (split from #497 for reviewability).
Vendors the upstream Apache Iceberg REST OpenAPI spec (v1.10) and wires Polaris-aligned contract-first codegen into the Gradle build.
Changes
Internal API Changes
spec/iceberg-rest-catalog-open-api.yaml: Upstream Iceberg REST spec vendored as source of truth (unchanged from Apache Iceberg 1.10)New Features
services/tables/build.gradle: Codegen tasks (setUpOpenApiCliForIcebergRest,validateIcebergRestOpenApiSpec,generateIcebergRestOpenApiServer) withimportMappings/typeMappingsmapping spec schemas to real Iceberg library types (no model generation). Post-processing for Iceberg 1.10-only types mapped toObject(compatibility with our 1.5.2 fork).compileJavadepends on codegen;checkdepends on spec validation.jackson-databind-nullabledependency for generated codeReview guidance
The spec file is 4,955 lines of vendored upstream — just confirm the source. The interesting review is the ~120 lines of
build.gradleadditions (codegen config, type mappings, post-processing).Testing Done
Tests are in PR 3/3. This PR adds only build infrastructure;
./gradlew :services:tables:compileJavavalidates the generated interfaces compile.Additional Information
PR Stack (merge in order)