<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia" -->

---
title: Decision path for position deletes with row data during...
description: Apache Iceberg 1.12.0, released September 30, 2026, is a large release with over 800 merged changes spanning v3 feature maturity, REST catalog contract...
canonical: https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Decision path for position deletes with row data during an Iceberg 1.12 upgrade | daily.dev
og:description: Apache Iceberg 1.12.0, released September 30, 2026, is a large release with over 800 merged changes spanning v3 feature maturity, REST catalog contract...
og:url: https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia
og:image: https://api.daily.dev/og/posts/vVNDcyIIa.png
og:image:alt: Decision path for position deletes with row data during an Iceberg 1.12 upgrade
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Decision path for position deletes with row data during an Iceberg 1.12 upgrade

**[Dremio Blog](https://daily.dev/sources/dremio)** · 20 min read · 4 upvotes · 0 comments

## Summary

Apache Iceberg 1.12.0, released September 30, 2026, is a large release with over 800 merged changes spanning v3 feature maturity, REST catalog contract updates, streaming reliability, and format v4 groundwork. Breaking changes include removal of Spark 3.4 and Flink 2.0 support, deletion of previously deprecated APIs, and Java writers no longer producing position delete files with embedded row data (PDWR). Existing PDWR files remain readable, but rewrite_position_delete_files and rewrite_table_path now reject them, requiring operators to scan for and remediate affected v2 tables before upgrading. The piece also covers expanded Variant, geospatial, row-lineage, deletion-vector, and encryption support, new REST endpoints (unregister-table, catalog-side purge delegation), Hilbert-curve clustering in Spark, Kafka Connect failure-surfacing improvements, and a six-step production upgrade plan covering inventory, blocker discovery, compatibility testing, failure-path testing, maintenance benchmarking, and phased rollout.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.dremio.com/blog/apache-iceberg-1-12-0-whats-new-breaking-changes-and-upgrade-guide>

## Questions this post answers

### Can Iceberg still read old position delete files that contain row data after upgrading to 1.12?

Yes, existing position delete files with embedded row data (PDWR) remain readable in Iceberg 1.12.0. However, Java writers no longer create new files of this type, and the rewrite_position_delete_files and rewrite_table_path maintenance actions will reject tables containing them. Before upgrading, scan the position_deletes metadata table for non-null row values and either compact those deletes into data files on v2 or migrate to v3 deletion vectors.

_daily.dev surfaces upgrade guides like this so teams catch breaking changes before running maintenance jobs._

### Which Spark and Flink versions does Apache Iceberg 1.12.0 support?

Iceberg 1.12.0 supports Spark 3.5.9, 4.0.4, and 4.1.3, with Spark 4.2 included in source releases, while dropping Spark 3.4 entirely. For Flink, supported lines are 1.20, 2.1, 2.2, and 2.3, with Flink 2.0 support removed. Any job pinned to iceberg-spark-runtime-3.4 or a Flink 2.0 artifact has no direct 1.12 equivalent and must be migrated.

_Teams planning an engine upgrade can track compatibility matrices like this on daily.dev before scheduling deployments._

### What happens to deprecated Iceberg APIs like SparkFilters and GenericAppenderFactory in version 1.12?

They are removed, not just deprecated. Iceberg 1.12.0 deletes deprecated methods and fields across Core, Data, Spark, Flink, Kafka Connect, BigQuery, and AWS integrations, including SparkFilters, old SparkTableUtil methods, GenericAppenderFactory, BaseFileWriterFactory, DataReader, deprecated namespace encoding helpers, an old HadoopFileIO constructor, and older S3 signer classes. Custom catalog, file I/O, or writer code should be compiled against 1.12 before deployment to catch source incompatibilities.

_daily.dev helps engineers stay ahead of API removals like these before a dependency bump breaks a build._

## Similar posts on daily.dev

- [Apache Iceberg 1.12 and Rust 0.11: What's New](https://daily.dev/posts/apache-iceberg-1-12-and-rust-0-11-what-s-new-zfzjpbdok) · Dremio Blog · 14 upvotes · 1 comments
- [Advancing the Lakehouse with Apache Iceberg v3 on Databricks](https://daily.dev/posts/advancing-the-lakehouse-with-apache-iceberg-v3-on-databricks-6p6wf37qi) · databricks · 4 upvotes · 0 comments
- [The Battle for Compute: Unlocked by Iceberg V3 and Snowflake Interoperability](https://daily.dev/posts/the-battle-for-compute-unlocked-by-iceberg-v3-and-snowflake-interoperability-o4erztdpv) · Snowflake Community · 0 upvotes · 0 comments
- [Announcing Apache Iceberg 1.11.0](https://daily.dev/posts/announcing-apache-iceberg-1-11-0-laq8a21od) · Google Open Source Blog · 4 upvotes · 0 comments
- [Amazon S3 Tables now support all Apache Iceberg V3 data types](https://daily.dev/posts/amazon-s3-tables-now-support-all-apache-iceberg-v3-data-types-nkjnu2oqj) · AWS · 0 upvotes · 0 comments

---

Tags: [#data-engineering](https://daily.dev/tags/data-engineering), [#spark](https://daily.dev/tags/spark), [#apache-flink](https://daily.dev/tags/apache-flink), [#apache-iceberg](https://daily.dev/tags/apache-iceberg)

[View this post on daily.dev](https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Decision path for position deletes with row data during an Iceberg 1.12 upgrade","url":"https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia"},"datePublished":"2026-09-30T15:29:42.217Z","dateModified":"2026-09-30T15:30:09.371Z","description":"Apache Iceberg 1.12.0, released September 30, 2026, is a large release with over 800 merged changes spanning v3 feature maturity, REST catalog contract...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e28e03f70e12d1e11c93736cd8d88c56?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e28e03f70e12d1e11c93736cd8d88c56?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Dremio Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Dremio Blog","logo":"https://media.daily.dev/image/upload/s--MGKANojy--/f_auto,q_auto/v1786870389/logos/dremio?_a=BAMAMicg0","url":"https://daily.dev/sources/dremio"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"data-engineering,spark,apache-flink,apache-iceberg","timeRequired":"PT20M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Dremio Blog","item":"https://daily.dev/sources/dremio"},{"@type":"ListItem","position":3,"name":"Decision path for position deletes with row data during an Iceberg 1.12 upgrade"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/decision-path-for-position-deletes-with-row-data-during-an-iceberg-1-12-upgrade-vvndcyiia#faq","mainEntity":[{"@type":"Question","name":"Can Iceberg still read old position delete files that contain row data after upgrading to 1.12?","acceptedAnswer":{"@type":"Answer","text":"Yes, existing position delete files with embedded row data (PDWR) remain readable in Iceberg 1.12.0. However, Java writers no longer create new files of this type, and the rewrite_position_delete_files and rewrite_table_path maintenance actions will reject tables containing them. Before upgrading, scan the position_deletes metadata table for non-null row values and either compact those deletes into data files on v2 or migrate to v3 deletion vectors. daily.dev surfaces upgrade guides like this so teams catch breaking changes before running maintenance jobs."}},{"@type":"Question","name":"Which Spark and Flink versions does Apache Iceberg 1.12.0 support?","acceptedAnswer":{"@type":"Answer","text":"Iceberg 1.12.0 supports Spark 3.5.9, 4.0.4, and 4.1.3, with Spark 4.2 included in source releases, while dropping Spark 3.4 entirely. For Flink, supported lines are 1.20, 2.1, 2.2, and 2.3, with Flink 2.0 support removed. Any job pinned to iceberg-spark-runtime-3.4 or a Flink 2.0 artifact has no direct 1.12 equivalent and must be migrated. Teams planning an engine upgrade can track compatibility matrices like this on daily.dev before scheduling deployments."}},{"@type":"Question","name":"What happens to deprecated Iceberg APIs like SparkFilters and GenericAppenderFactory in version 1.12?","acceptedAnswer":{"@type":"Answer","text":"They are removed, not just deprecated. Iceberg 1.12.0 deletes deprecated methods and fields across Core, Data, Spark, Flink, Kafka Connect, BigQuery, and AWS integrations, including SparkFilters, old SparkTableUtil methods, GenericAppenderFactory, BaseFileWriterFactory, DataReader, deprecated namespace encoding helpers, an old HadoopFileIO constructor, and older S3 signer classes. Custom catalog, file I/O, or writer code should be compiled against 1.12 before deployment to catch source incompatibilities. daily.dev helps engineers stay ahead of API removals like these before a dependency bump breaks a build."}}]}
```

