Skip to content

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
apache:mainfrom
dramaticlly:punt-pdwr-removeal-to-1.13
Closed

Core, Data, Spark, Flink: Defer removal of position deletes with row data to 1.13.0#17813
dramaticlly wants to merge 1 commit into
apache:mainfrom
dramaticlly:punt-pdwr-removeal-to-1.13

Conversation

@dramaticlly

@dramaticlly dramaticlly commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Alternative to the #17706 if we cannot review/merge it before release candidate cut of 1.12. The change

  1. punt all position-delete-with-row code removal to 1.13
  2. also add an additional deprecation of PositionDeleteWriter.delete(path, pos, row, spec, partition in favor of no row counterpart.
  3. remove of following orphaned files after Flink: Move write from AppenderFactory to FileWriterFactory #14271
    for TestAppenderFactory.java, FlinkAppenderFactory.java and TestFlinkAppenderFactory.java in flink v{1.20/2.0/2.1}

…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
dramaticlly force-pushed the punt-pdwr-removeal-to-1.13 branch from 11678a0 to e8f96e2 Compare August 26, 2026 23:38
@dramaticlly
dramaticlly marked this pull request as ready for review August 27, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant