+1 (non-binding)

  Verified the source RC from
https://dist.apache.org/repos/dist/dev/iceberg/apache-iceberg-1.12.0-rc0

  - SHA-512 checksum matches
  - GPG signature is good (signed by Amogh Jahagirdar; key in the published
KEYS)
  - Tag apache-iceberg-1.12.0-rc0 points at
dec392570a88e45ac3a417a487dd72f9bdb629d5
  - Source tarball is reproducible from the tag (git archive matches; only
the release-generated version.txt and iceberg-build.properties are added)
  - version.txt is 1.12.0
  - RAT (dev/check-license) passed, no missing headers
  - All modules compile cleanly (Spark 3.4/3.5/4.0, Flink, Hive, Kafka
Connect) with checkstyle/errorprone clean
  - iceberg-api (1287) and iceberg-core (8950) unit tests passed from the
tarball

  Tested with JDK 17 on macOS.

  Thanks,
  Anoop

On Sat, Sep 19, 2026 at 5:13 PM huaxin gao <[email protected]> wrote:

> +1 (non-binding)
>
> Verified the source RC from
> https://dist.apache.org/repos/dist/dev/iceberg/apache-iceberg-1.12.0-rc0
>
> - SHA-512 matches
> - GPG signature is good
> - Tag apache-iceberg-1.12.0-rc0 points at
> dec392570a88e45ac3a417a487dd72f9bdb629d5
> - version.txt is 1.12.0
> - RAT (dev/check-license) passed
> - iceberg-api and iceberg-core unit tests passed from the tarball
>
> Spark 4.2 (Scala 2.13) compiled from the tarball. I also ran iceberg-spark
> and iceberg-spark-extensions tests locally; a small number failed with
> BindException on sparkDriver and a couple of 5s snapshot-isolation
> timeouts. Those look like this environment, not an RC issue.
>
> Thanks,
> Huaxin
>
>
> On Sat, Sep 19, 2026 at 3:06 PM huaxin gao <[email protected]> wrote:
>
>> I am fine with keeping the #16765
>> <https://github.com/apache/iceberg/pull/16765> toString() change in 1.12
>> and documenting it as a behavior change.
>>
>> Old metadata still loads: "geometry" and "geometry(OGC:CRS84)" parse to
>> the same type. Writing the long form is clearer and matches Appendix C.
>>
>> As Szehon mentioned, this also helps the UDF work I am doing (#15994
>> <https://github.com/apache/iceberg/pull/15994>). A definition-id is
>> built from parameter type strings. If omitted vs explicit default algorithm
>> printed differently, two equal Geography types would look like two
>> different overloads. With #16765
>> <https://github.com/apache/iceberg/pull/16765> they print the same, so
>> we do not need a workaround for that case.
>>
>> Thanks,
>> Huaxin
>>
>> On Fri, Sep 18, 2026 at 8:22 PM Neelesh Salian <[email protected]>
>> wrote:
>>
>>> Based on Szehon's comments, it makes sense to keep the behavior change
>>> for 1.12. If we are making a change, I can make sure this is in the Release
>>> Notes + Release blog so users are aware.
>>> At the end of the voting process for this RC thread here, we can see
>>> where we land.
>>> Please vote on the RC when you get a chance.
>>> Thank you for all those who have voted thus far.
>>>
>>> On Fri, Sep 18, 2026 at 6:58 PM Anoop Johnson <[email protected]> wrote:
>>>
>>>> The API change behavior seems reasonable to me. If there are no
>>>> objections from the community, we should probably just keep it. If not, the
>>>> PR Xin prepared looks like a reasonable fallback. (thanks for turning that
>>>> around so quickly!)
>>>>
>>>> Best,
>>>> Anoop
>>>>
>>>> On Fri, Sep 18, 2026 at 6:06 PM Szehon Ho <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Thanks for the thorough review!  Indeed, toString() of the
>>>>> Geometry/Geography type is changed to include crs,
>>>>> algorithm parameters, even if they are the same as default.
>>>>>
>>>>> I took a look, for me it seems ok to keep the API behavior change for
>>>>> 1.12, and put it in the "Behavior Change" category of the release notes.
>>>>> Some reasons:
>>>>>
>>>>> 1. It's just clearer overall.  We found without this change, two
>>>>> Geography type having the same default algorithm print differently
>>>>> depending on whether the user sets it or not, which seemed like a bug.
>>>>> 2. toString() now matches the serialization spec, which includes C
>>>>> and A:
>>>>>
>>>>>> geometry(<C>) and geography(<C>, <A>)
>>>>>
>>>>> 3. It makes Iceberg JSON schema writer obey the spec as is (using
>>>>> toString), avoiding the workaround.
>>>>> 4. It makes the Iceberg UDF PR that Huaxin is working on easier:
>>>>> https://github.com/apache/iceberg/pull/15994.  A UDF overload has a
>>>>> definition-id which includes the param type string, and we'd have to
>>>>> workaround in that code as well, otherwise its a correctness issue if two
>>>>> Geography types with the default algorithm have different definition-id
>>>>> depending on whether the user set it explicitly.
>>>>>
>>>>> Happy to hear what others think though.
>>>>> Thanks,
>>>>> Szehon
>>>>>
>>>>> On Fri, Sep 18, 2026 at 2:56 PM Xin Huang via dev <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Steven,
>>>>>>
>>>>>> Thanks for catching this and bringing it to the community’s attention.
>>>>>>
>>>>>> The reason for the change in #16765
>>>>>> <http://urldefense.com/v3/__https://github.com/apache/iceberg/pull/16765__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZslwUNqdQ$>
>>>>>> was to persist the resolved CRS and algorithm explicitly in metadata,
>>>>>> including when they match the defaults. Changing toString() was a
>>>>>> side effect that I didn’t recognize as a behavior change at the time.
>>>>>>
>>>>>> I double-checked Appendix C
>>>>>> <https://iceberg.apache.org/spec/#schemas>, which lists geometry(<C>)
>>>>>> and geography(<C>, <A>) as the canonical serialized forms. The spec
>>>>>> also defines the meaning of omitted parameters, so existing metadata must
>>>>>> continue to be interpreted using those defaults.
>>>>>>
>>>>>> I see three options:
>>>>>>
>>>>>>    1. Restore the pre-#16765
>>>>>>    
>>>>>> <http://urldefense.com/v3/__https://github.com/apache/iceberg/pull/16765__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZslwUNqdQ$>
>>>>>>  behavior.
>>>>>>    Both toString() and schema JSON use compact forms for default
>>>>>>    instances, although these differ from the canonical JSON forms listed 
>>>>>> in
>>>>>>    Appendix C.
>>>>>>    2. Restore the old toString() output while serializing explicit
>>>>>>    parameters. For the same constructor inputs, toString() produces
>>>>>>    the pre-#16765 output, while schema JSON and Java serialization 
>>>>>> include the
>>>>>>    resolved CRS and algorithm. I’ve opened PR #18169
>>>>>>    <https://github.com/apache/iceberg/pull/18169> with this approach.
>>>>>>    3. Keep #16765
>>>>>>    
>>>>>> <http://urldefense.com/v3/__https://github.com/apache/iceberg/pull/16765__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZslwUNqdQ$>
>>>>>>  unchanged.
>>>>>>    Both toString() and serialization include explicit parameters,
>>>>>>    retaining the behavior change in 1.12.
>>>>>>
>>>>>> My preference is option 2, but I’m happy to follow the community’s
>>>>>> preference.
>>>>>>
>>>>>> Thanks,
>>>>>> Xin
>>>>>>
>>>>>> On Fri, Sep 18, 2026 at 11:12 AM Steven Wu <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> I want to call out a behavior change in 1.12.
>>>>>>>
>>>>>>> PR #16765
>>>>>>> <https://urldefense.com/v3/__https://github.com/apache/iceberg/pull/16765__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZslwUNqdQ$>
>>>>>>>  changed GeometryType / GeographyType so toString() always writes
>>>>>>> the resolved defaults instead of omitting them.
>>>>>>>
>>>>>>> *Before*: Default instances collapsed to the bare type name.
>>>>>>> Geometry with no CRS printed geometry. Geography printed geography,
>>>>>>> geography(crs), or geography(crs, algorithm) depending on what was
>>>>>>> stored as unset.
>>>>>>>
>>>>>>> *After*: the constructor stores omitted CRS / algorithm as the
>>>>>>> Iceberg defaults, and toString() always includes them:
>>>>>>>
>>>>>>>    - geometry → geometry(OGC:CRS84)
>>>>>>>    - geography → geography(OGC:CRS84, spherical)
>>>>>>>
>>>>>>> *Implications*
>>>>>>>
>>>>>>>    - Read path is backward compatible, as SchemaParser or
>>>>>>>    Types.fromTypeName can parse the type string to the same Type object
>>>>>>>    - Write path is not string stable.
>>>>>>>
>>>>>>> *Question*: Do we consider the type's `toString()` change a
>>>>>>> breaking change? Personally, I am okay with 1.12 moving forward with the
>>>>>>> changed behavior since read is compatible. But I wanted to bring this to
>>>>>>> the community attention.
>>>>>>>
>>>>>>> On Fri, Sep 18, 2026 at 9:57 AM Gianluca Graziadei <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> +1 (non-binding)
>>>>>>>>
>>>>>>>> Verified checksums, signature, source archive vs. tag, RAT, and ran
>>>>>>>> smoke tests with the staged Spark 4.0 runtime.
>>>>>>>>
>>>>>>>> One follow-up, in the same spirit as Xuanwo's note: the source
>>>>>>>> archive also bundles site/docs/assets/javascript/lottie-player.js
>>>>>>>> (LottieFiles, MIT) without a license header or an entry in the root
>>>>>>>> LICENSE. Not a blocker for this RC since both assets have shipped
>>>>>>>> since 1.9.0; this issue is already tacked here
>>>>>>>> https://lists.apache.org/thread/hstl6z6qp55hxgdlljpc5xg8wc3kq800
>>>>>>>> <https://urldefense.com/v3/__https://lists.apache.org/thread/hstl6z6qp55hxgdlljpc5xg8wc3kq800__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZucd-8rlQ$>
>>>>>>>>
>>>>>>>> Separately, while testing I hit a pre-existing NoSuchMethodError
>>>>>>>> when
>>>>>>>> reading variant columns with commons-lang3 < 3.13 on the classpath
>>>>>>>> (iceberg-parquet uses Streams.of(Iterable) without declaring the
>>>>>>>> dependency). Also present in 1.11.0, so not a regression; issue
>>>>>>>> tracked here
>>>>>>>> https://github.com/apache/iceberg/issues/18164
>>>>>>>> <https://urldefense.com/v3/__https://github.com/apache/iceberg/issues/18164__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZuvdhMbeg$>
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Gianluca
>>>>>>>>
>>>>>>>> On 2026/09/18 00:22:06 Neelesh Salian wrote:
>>>>>>>> > Hi Everyone,
>>>>>>>> >
>>>>>>>> > I propose that we release the following RC as the official Apache
>>>>>>>> Iceberg
>>>>>>>> > 1.12.0 release.
>>>>>>>> >
>>>>>>>> > The commit ID is dec392570a88e45ac3a417a487dd72f9bdb629d5
>>>>>>>> > * This corresponds to the tag: apache-iceberg-1.12.0-rc0
>>>>>>>> > *
>>>>>>>> https://github.com/apache/iceberg/commits/apache-iceberg-1.12.0-rc0
>>>>>>>> <https://urldefense.com/v3/__https://github.com/apache/iceberg/commits/apache-iceberg-1.12.0-rc0__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZtNy1-EQg$>
>>>>>>>> > *
>>>>>>>> >
>>>>>>>> https://github.com/apache/iceberg/tree/dec392570a88e45ac3a417a487dd72f9bdb629d5
>>>>>>>> <https://urldefense.com/v3/__https://github.com/apache/iceberg/tree/dec392570a88e45ac3a417a487dd72f9bdb629d5__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZsZEbwiNw$>
>>>>>>>> >
>>>>>>>> > The release tarball, signature, and checksums are here:
>>>>>>>> > *
>>>>>>>> https://dist.apache.org/repos/dist/dev/iceberg/apache-iceberg-1.12.0-rc0
>>>>>>>> <https://urldefense.com/v3/__https://dist.apache.org/repos/dist/dev/iceberg/apache-iceberg-1.12.0-rc0__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZstALTGmw$>
>>>>>>>> >
>>>>>>>> > You can find the KEYS file here:
>>>>>>>> > * https://downloads.apache.org/iceberg/KEYS
>>>>>>>> <https://urldefense.com/v3/__https://downloads.apache.org/iceberg/KEYS__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZsc5zcLsw$>
>>>>>>>> >
>>>>>>>> > Convenience binary artifacts are staged on Nexus. The Maven
>>>>>>>> repository URL
>>>>>>>> > is:
>>>>>>>> > *
>>>>>>>> https://repository.apache.org/content/repositories/orgapacheiceberg-1283/
>>>>>>>> <https://urldefense.com/v3/__https://repository.apache.org/content/repositories/orgapacheiceberg-1283/__;!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZsXi0VR9A$>
>>>>>>>> >
>>>>>>>> > 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
>>>>>>>> <https://urldefense.com/v3/__https://iceberg.apache.org/how-to-release/*how-to-verify-a-release__;Iw!!LIr3w8kk_Xxm!tKhzW34uoygDezpDOWiLjy5JRZ97R3veb-YTd5dqkITpmgITiZxSurPnO4FkDvwQ20sDnl_lIPSBk-GmvZs5jtCNBQ$>
>>>>>>>> >
>>>>>>>> > As this vote spans the weekend, it will remain open until Monday,
>>>>>>>> September
>>>>>>>> > 21, 2026 at 2:00 PM Pacific Time.
>>>>>>>> >
>>>>>>>> > [ ] +1 Release this as Apache Iceberg 1.12.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.
>>>>>>>> >
>>>>>>>>
>>>>>>>

Reply via email to