Core, Data, Spark, Flink: Defer removal of position deletes with row data to 1.13.0 - #17813
Closed
dramaticlly wants to merge 1 commit into
Closed
Core, Data, Spark, Flink: Defer removal of position deletes with row data to 1.13.0#17813dramaticlly wants to merge 1 commit into
dramaticlly wants to merge 1 commit into
Conversation
…data to 1.13.0 The removal of the ability to write position deletes with row data (PDWR) was scheduled for 1.12.0 (see apache#17706). The 1.12.0 release candidate is being cut now and the removal touches public API across Core, Data and Spark 3.5/4.0/4.1, so it should not be rushed through review. This moves the removal target of those deprecations from 1.12.0 to 1.13.0. The deprecations themselves are unchanged: everything is still deprecated as of 1.11.0 and callers should still migrate off the row-carrying overloads. Only the stated removal release moves out by one cycle. This mirrors apache#14392, which retargeted a batch of removal versions in the other direction. Markers moved to 1.13.0: - PositionDelete.set(CharSequence, long, R) and row() - PositionDeleteWriter constructor (appender type narrowing) - RewriteTablePathUtil.PositionDeleteReaderWriter.writer(..., Schema) - GenericFileWriterFactory positionDeleteRowSchema constructors, the builder setter, and the nine configureDataWrite/configureEqualityDelete/ configurePositionDelete methods superseded by FormatModelRegistry, whose removal was bundled into the same change - SparkFileWriterFactory positionDeleteRowSchema/positionDeleteSparkType builder setters, the row-schema constructor, and the runtime warning message - SparkPositionDeltaWrite.Context.deleteSparkType() Additionally, PositionDeltaWriter.delete(CharSequence, long, T, PartitionSpec, StructLike) is now deprecated for removal in 1.13.0. It was previously not deprecated at all, so without this its deprecation cycle would only start in 1.13.0 and the row parameter could not be dropped until 1.14.0. Deprecating it here keeps that narrowing on schedule for 1.13.0 alongside the rest. The annotation is additive: the overload stays abstract, so implementations are unaffected, while callers can migrate to the four-argument overload today. All three SparkPositionDeltaWrite call sites already use it; the only override is BasePositionDeltaWriter, which already calls the deprecated PositionDelete.set(CharSequence, long, R). Flink is not deferred. Its only PDWR surface was FlinkAppenderFactory, whose entire position delete path is built on row data. That class was deprecated as of 1.11.0 in favor of FlinkFileWriterFactory for removal in 1.12.0, and nothing in the repo references it outside its own test, so it is removed here on schedule from all three Flink versions rather than carried into 1.13.0. That also drops org.apache.iceberg.io.TestAppenderFactory from iceberg-data: the three TestFlinkAppenderFactory classes were its only subclasses, so with those gone the abstract base exercises nothing. iceberg-flink is not a revapi project and TestAppenderFactory is a test class, so neither removal needs a revapi baseline entry. The REST scan-planning markers in BaseScanTaskResponse, PlanTableScanRequest and PlanTableScanResponse are left alone; they are handled separately in apache#17638.
dramaticlly
force-pushed
the
punt-pdwr-removeal-to-1.13
branch
from
August 26, 2026 23:38
11678a0 to
e8f96e2
Compare
dramaticlly
marked this pull request as ready for review
August 27, 2026 03:10
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.
Alternative to the #17706 if we cannot review/merge it before release candidate cut of 1.12. The change
PositionDeleteWriter.delete(path, pos, row, spec, partitionin favor of no row counterpart.for TestAppenderFactory.java,
FlinkAppenderFactory.javaandTestFlinkAppenderFactory.javain flink v{1.20/2.0/2.1}