Hi Fokko,

sure, in general "absent" or "null" would be cleaner. But now we have two representations for the same case - I suspect most went with the "reference behavior".

The thing is, that -1 cannot "go away".

I'd prefer to keep the previous behavior - otherwise implementations may fall back to 0, which is definitely wrong. Would be better IMHO not to break existing implementations / render existing setups incompatible with Iceberg 1.8.


On 17.02.25 15:49, Fokko Driesprong wrote:
Hey Robert,

Thanks for raising this.

    snapshot-ID -1 isn't per-se invalid, because the valid values are
    not defined in the spec.


For me, this is invalid, since there is no snapshot with -1 in the snapshots property. In the tests with the PR, you can see that there are no snapshots <https://github.com/apache/iceberg/pull/11560/files#diff-41bdfb6698d2aa7b47ff7d5fabc558a5a64f8b7496fe1bcd8f8ecb69b2afc128R112>. A year ago we had a similar discussion on PyIceberg <https://py.iceberg.apache.org/configuration/#backward-compatibility> around this and this ended up in adding a flag to fall back to the old behavior. I do agree that we should have communicated this more clearly with the release.

Kind regards,
Fokko



Op ma 17 feb 2025 om 12:25 schreef Robert Stupp <sn...@snazy.de>:

    Feels like https://github.com/apache/iceberg/pull/11560 introduced
    a behavior change.

    snapshot-ID -1 isn't per-se invalid, because the valid values are
    not defined in the spec.

    Previous Iceberg-Java versions always produced -1 if there's no
    current snapshot - 1.8 produces `null` in that case. So there are
    now two _different_ values for "no current snapshot".

    Implementations that rely on the behavior of the "reference
    implementation" (Iceberg-Java) do now fail in case there's no
    current snapshot.

    On 13.02.25 10:09, Amogh Jahagirdar wrote:
    I'm pleased to announce the release of Apache Iceberg 1.8.0!

    Apache Iceberg is an open table format for huge analytic
    datasets. Iceberg
    delivers high query performance for tables with tens of petabytes
    of data,
    along with atomic commits, concurrent writes, and SQL-compatible
    table
    evolution.

    This release can be downloaded from:
    
https://www.apache.org/dyn/closer.cgi/iceberg/apache-iceberg-1.8.0/apache-iceberg-1.8.0.tar.gz


    Release notes: https://iceberg.apache.org/releases/#180-release
    <https://iceberg.apache.org/releases/180-release>

    Java artifacts are available from Maven Central.

    Thanks to everyone for contributing!

-- Robert Stupp
    @snazy

--
Robert Stupp
@snazy

Reply via email to