Skip to content

Allow equality-delete upserts after partition spec evolution - #4

Merged
nicosuave merged 5 commits into
sidequery-pyiceberg-distributionfrom
equality-upsert-evolved-spec
Oct 12, 2026
Merged

nicosuave merged 5 commits into
sidequery-pyiceberg-distributionfrom
equality-upsert-evolved-spec

Conversation

@nicosuave

Copy link
Copy Markdown
Member

Partition-scoped equality deletes only apply to data files written under the same spec, so upserts were rejected whenever a table had more than one spec. That blocked a table permanently, even after every data file was rewritten into the current spec.

The upsert is now allowed when no live data files on the target branch remain under another spec. The check reads only manifest metadata, honors branch, and runs again on commit retry, so a concurrent spec change plus rewrite cannot leave deletes that miss data. It raises ValidationException and lists the remaining spec ids otherwise.

Bumps the distribution to 0.12.0.post2 so dlt-iceberg can pin it. Sidequery needs this to move posthog.events from daily to monthly partitions.

nicosuave and others added 5 commits October 11, 2026 17:25
Partition-scoped equality deletes only apply to data files written under
the same spec, so upserts were rejected whenever a table had more than one
spec. That blocked tables permanently even after every data file had been
rewritten into the current spec.

Allow the upsert when no live data files on the target branch remain under
another spec, re-check on commit retry, and release 0.12.0.post2.
The pinned ref fac544c (v8.2.0) was dropped from the ASF allowlist when it
expired on 2026-09-27, so asf-allowlist-check fails on every pull request.
v10.2.0 is the only setup-uv entry left without an expires_at.

(cherry picked from commit 39440e5)
* Infra: Replace MinIO with RustFS in the dev and integration stacks

MinIO Community Edition stopped publishing images in October 2025 and the
repository was archived in April 2026, so `minio/minio:latest` resolves to a
frozen build that will not receive further security fixes (apache#2664).

I'm choosing RustFS since that's what Polaris uses.

* Infra: Rename the object store service to `object-store`

Feedback from @kevinjqliu

(cherry picked from commit d5474fd)
google.api_core changes the wording of its Python version FutureWarning by
date. Python 3.10 moved past the deprecation wording ("which Google will stop
supporting") into the end-of-life and non-supported wordings on 2026-10-11
and 2026-10-12, so the existing filter stopped matching and pytest turned the
warning into a collection error on 3.10. Match all three wordings.
The apache/hive:4.0.0 image is based on Debian 11, whose security repository
moved to archive.debian.org. apt-get update still succeeds, but installing
curl now fails with 404s from deb.debian.org/debian-security, which breaks the
integration-test image build. Download the two JARs with ADD so the image no
longer needs packages from Debian.
@nicosuave
nicosuave merged commit cf4a044 into sidequery-pyiceberg-distribution Oct 12, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants