Enable Apache Iceberg v3 deletion vectors on a table and migrate off position delete files
domain: iceberg.apache.org · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Upgrade the table to format version 3 (e.g. ALTER TABLE ... SET TBLPROPERTIES ('format-version'='3')) since deletion vectors are only defined in the Iceberg v3 spec.
Confirm the writing engine (Spark, Trino, Snowflake, etc.) supports v3 writes; deletion vectors replace position delete files and are stored as Puffin files referenced from the manifest.
Set write.delete.mode / write.update.mode / write.merge.mode to merge-on-read so deletes are recorded as deletion vectors instead of rewriting data files.
Run a DELETE or UPDATE and inspect the files metadata table to confirm a single deletion vector is attached per affected data file.
Run rewrite_data_files compaction periodically, since deletion vectors still accumulate against live files and eventually need merging back into base data.
Known gotchas
Only one deletion vector is allowed per data file per snapshot; writers must merge new deletes into the existing vector rather than creating a second one.
Engines that only understand Iceberg v2 (position/equality deletes) cannot read v3 deletion vectors, so mixed-engine environments need a compatibility check before upgrading format-version.
Format-version upgrades are effectively one-way in practice, so confirm every reader/writer in the stack supports v3 before flipping the property on a production table.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?