Adding the information back seems to be the right thing to do here. We can start a separate thread on how to move forward properly, as it is probably more complicated than just adding the field back in the spec. E.g., we may want to use a different field name like `assigned-rows` to reflect the spec language, as it includes both added rows and existing rows in the *new/added* manifest files in the snapshot. Snapshot JSON parser can read both old `added-rows` and new `assigned-rows` fields for backward compatibility.
With the direction of adding the field back in the spec, I feel this issue shouldn't be a blocker for 1.10.0 release. Any concerns? On Wed, Sep 10, 2025 at 10:16 AM Christian Thiel <[email protected]> wrote: > Quick summary of the discussion in the Catalog Sync today: > We had a broad consensus that removing the "added-rows" field was a > mistake. Especially for the REST API, it is required for correct behaviour, > and it would be unfortunate to deviate the REST Object from the spec object > too much. As a result, it makes sense to revert the change in > https://github.com/apache/iceberg/pull/12781 and add "added-rows" back as > a field to the Snapshot. > > There has been discussion around whether this field should be optional or > not. If there are currently no V3 Tables out there that don't have this > field, it would probably be best to add it as required. > If anyone is aware of a tool creating v3 tables already without this > field, please let us know here. Iceberg Java does write the "added-rows" > field to this date, even though its temporarily missing from the spec ;) > Tables created with the java sdk, are thus compatible with the planned > change. > > On Wed, 10 Sept 2025 at 16:26, Russell Spitzer <[email protected]> > wrote: > >> I think ... we would just add added-rows back into the snapshot to fix >> this then? Otherwise we would have to require catalogs to compute >> added rows by reading the manifestList. >> >> I think we forgot there could be a snapshot that would be added to the >> base metadata via a REST serialization >> and not directly programmatically from other parts of the code base. The >> change >> was initially made because the "calculation" for this property was being >> done in the >> snapshot producer anyway so we no longer needed the value to be passed >> through some other means. The code path in SnapshotParser was effectively >> being bypassed. >> >> On Wed, Sep 10, 2025 at 6:23 AM Christian Thiel < >> [email protected]> wrote: >> >>> -1 (non-binding) >>> >>> Dear all, I think I have found a blocker for this RC. >>> >>> In https://github.com/apache/iceberg/pull/12781 we removed >>> the "added-rows" fields from snapshots. However in Java, we have not made >>> this change. >>> The field is still serialized, which is also tested in ` >>> testJsonConversionWithRowLineage`. This is the first thing we should >>> fix. >>> >>> Secondly, removing the field from the serialization would break the REST >>> Spec for v3 tables. The Catalog needs to know how many rows have been added >>> to update the `next-row-id` of the TableMetadata without reading the >>> Manifest Lists. We have similar information available in the Snapshot >>> summary, but I don't think using snapshot summary information to update >>> next-row-id has been discussed before. >>> >>> I hope we can pick up the second point in the catalog sync today. >>> >>> On Tue, 9 Sept 2025 at 18:31, Steve <[email protected]> wrote: >>> >>>> +1 (non-binding) >>>> Verified signatures and checksums, RAT checks and build locally with >>>> JDK17 >>>> >>>> >>>> On Mon, Sep 8, 2025 at 2:33 PM Drew <[email protected]> wrote: >>>> > >>>> > +1 (non binding) >>>> > >>>> > verified signature and checksums >>>> > verified RAT license check >>>> > verified build/tests passing >>>> > ran some manual tests with GlueCatalog >>>> > >>>> > - Drew >>>> > >>>> > >>>> > On Mon, Sep 8, 2025 at 7:54 AM Jacky Lee <[email protected]> wrote: >>>> >> >>>> >> +1 (non-binding) >>>> >> >>>> >> Built and tested Spark 4.0.1 and Flink 2.0 on JDK17, including unit >>>> >> tests, basic insert/read operations, and metadata validation. >>>> >> >>>> >> Thanks, >>>> >> Jacky Lee >>>> >> >>>> >> Renjie Liu <[email protected]> 于2025年9月8日周一 16:23写道: >>>> >> > >>>> >> > +1 (binding) >>>> >> > >>>> >> > Ran following check and tests: >>>> >> > 1. Verified checksum >>>> >> > 2. Verified signature >>>> >> > 3. Ran dev/check-license >>>> >> > 4. Ran `gradlew build` >>>> >> > >>>> >> > All passed. >>>> >> > >>>> >> > On Sun, Sep 7, 2025 at 10:36 PM Steven Wu <[email protected]> >>>> wrote: >>>> >> >> >>>> >> >> +1 (binding) >>>> >> >> >>>> >> >> Verified signature, checksum, license >>>> >> >> >>>> >> >> >>>> >> >> Ran build successfully (except for a couple of Spark extension >>>> tests due to my env) >>>> >> >> >>>> >> >> >>>> >> >> Ran Spark 4.0 SQL with V3 format and Java 21 >>>> >> >> >>>> >> >> - Insert >>>> >> >> - Update carries over row id and sets snapshot seq num correctly >>>> >> >> - Select with _row_id and _last_updated_sequence_number >>>> >> >> >>>> >> >> >>>> >> >> Run Flink 2.0 SQL testing with V2 format and Java 21 >>>> >> >> - Insert >>>> >> >> - Streaming read >>>> >> >> >>>> >> >> Thanks, >>>> >> >> Steven >>>> >> >> >>>> >> >> >>>> >> >> On Sat, Sep 6, 2025 at 10:19 PM Yuya Ebihara < >>>> [email protected]> wrote: >>>> >> >>> >>>> >> >>> +1 (non-binding) >>>> >> >>> >>>> >> >>> Confirmed that Trino CI is green in Trino PR #25795. >>>> >> >>> It runs tests against several catalogs, including HMS, Glue, >>>> JDBC (PostgreSQL), REST (Polaris, Unity, S3 Tables, Tabular), Nessie, and >>>> Snowflake. >>>> >> >>> >>>> >> >>> Yuya >>>> >> >>> >>>> >> >>> On Sun, Sep 7, 2025 at 1:38 PM Aihua Xu <[email protected]> >>>> wrote: >>>> >> >>>> >>>> >> >>>> I have verified the signature and checksum, completed the build >>>> and unit tests, and ran basic Spark table creation and queries. >>>> >> >>>> >>>> >> >>>> I also executed the tests against our Snowflake internal test >>>> suite. One test failure was observed, related to snapshot expiry, caused by >>>> Iceberg PR #13614 — “Fix incorrect selection of incremental cleanup in >>>> expire snapshots.” I believe our test should be updated to reflect the >>>> behavior introduced by this fix. >>>> >> >>>> >>>> >> >>>> +1 (non-binding). >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> On Fri, Sep 5, 2025 at 11:50 AM Steven Wu <[email protected]> >>>> wrote: >>>> >> >>>>> >>>> >> >>>>> Hi Everyone, >>>> >> >>>>> >>>> >> >>>>> I propose that we release the following RC as the official >>>> Apache Iceberg 1.10.0 release. >>>> >> >>>>> >>>> >> >>>>> The commit ID is 2114bf631e49af532d66e2ce148ee49dd1dd1f1f >>>> >> >>>>> * This corresponds to the tag: apache-iceberg-1.10.0-rc5 >>>> >> >>>>> * >>>> https://github.com/apache/iceberg/commits/apache-iceberg-1.10.0-rc5 >>>> >> >>>>> * >>>> https://github.com/apache/iceberg/tree/2114bf631e49af532d66e2ce148ee49dd1dd1f1f >>>> >> >>>>> >>>> >> >>>>> The release tarball, signature, and checksums are here: >>>> >> >>>>> * >>>> https://dist.apache.org/repos/dist/dev/iceberg/apache-iceberg-1.10.0-rc5 >>>> >> >>>>> >>>> >> >>>>> You can find the KEYS file here: >>>> >> >>>>> * https://downloads.apache.org/iceberg/KEYS >>>> >> >>>>> >>>> >> >>>>> Convenience binary artifacts are staged on Nexus. The Maven >>>> repository URL is: >>>> >> >>>>> * >>>> https://repository.apache.org/content/repositories/orgapacheiceberg-1269/ >>>> >> >>>>> >>>> >> >>>>> Please download, verify, and test. >>>> >> >>>>> >>>> >> >>>>> Instructions for verifying a release can be found here: >>>> >> >>>>> * >>>> https://iceberg.apache.org/how-to-release/#how-to-verify-a-release >>>> >> >>>>> >>>> >> >>>>> Please vote in the next 72 hours. >>>> >> >>>>> >>>> >> >>>>> [ ] +1 Release this as Apache Iceberg 1.10.0 >>>> >> >>>>> [ ] +0 >>>> >> >>>>> [ ] -1 Do not release this because... >>>> >> >>>>> >>>> >> >>>>> Only PMC members have binding votes, but other community >>>> members are encouraged to cast >>>> >> >>>>> non-binding votes. This vote will pass if there are 3 binding >>>> +1 votes and more binding >>>> >> >>>>> +1 votes than -1 votes. >>>> >>>
