Hi all,

I've merged the fix to master (PR:
https://github.com/apache/flink/pull/28741)
This will be released with the 2.4.0 release.

@dylanhz, thanks for the ticket!

Best,
Fabian

Am Mi., 15. Juli 2026 um 11:03 Uhr schrieb Gustavo de Morais <
[email protected]>:

> Hey Fabian,
>
> Thanks for bringing this up and looking into it. It's not great that the
> behavior changed, but reverting in a next minor is a valid path. +1 to it,
> and to standardizing this across functions.
>
> Kind regards,
> Gustavo
>
>
> On Tue, 14 Jul 2026 at 04:09, dylanhz <[email protected]> wrote:
>
> > Sure, I’ve opened FLINK-40141 for these functions:
> >
> > https://issues.apache.org/jira/browse/FLINK-40141
> >
> > ----------
> > Best regards,
> > dylanhz
> >
> >
> >
> >
> > > 2026年7月13日 22:33,Fabian Hueske <[email protected]> 写道:
> > >
> > > Hi everyone,
> > >
> > > Thanks for the feedback so far.
> > > I'll start working on this and will open a PR soon.
> > >
> > > @dylanhz, thanks for checking the other functions!
> > > Would you mind opening a ticket for these?
> > >
> > > Best, Fabian
> > >
> > > Am Sa., 11. Juli 2026 um 10:33 Uhr schrieb dylanhz <[email protected]>:
> > >
> > >> Hi Fabian,
> > >>
> > >> +1 to align with the SQL standard and other vendors.
> > >>
> > >> I also noticed that IS_DECIMAL, IS_DIGIT, and IS_ALPHA return FALSE
> for
> > >> NULL input. They may be worth reviewing separately for consistency.
> > >>
> > >>
> > >> ----------
> > >> Best regards,
> > >> dylanhz
> > >>
> > >>
> > >>
> > >>
> > >>> 2026年7月9日 21:24,Fabian Hueske <[email protected]> 写道:
> > >>>
> > >>> Hi folks,
> > >>>
> > >>> I'd like to discuss FLINK-39943 [1].
> > >>> Today, Flink's IS JSON / IS NOT JSON functions are hard-coded to
> never
> > >>> return NULL.
> > >>> The recent Calcite 1.38.0 upgrade (FLINK-36602) changed Calcite's own
> > >>> default to the standard-compliant behavior instead: IS JSON is a
> > >> predicate
> > >>> subject to three-valued logic and should evaluate to UNKNOWN (NULL)
> > when
> > >>> the input is NULL, not FALSE.
> > >>> Flink currently suppresses this new Calcite default to preserve the
> > old,
> > >>> standards-incompatible semantics [2].
> > >>> I've checked a few other engines and all agree with the standard
> here.
> > >>> Oracle, PostgreSQL (16+), SQL Server (ISJSON), MySQL (JSON_VALID),
> and
> > >>> Snowflake (IS_OBJECT/IS_ARRAY/CHECK_JSON) all return NULL/UNKNOWN
> for a
> > >>> NULL input.
> > >>>
> > >>> Originally, Flink implemented the correct nullable behavior when the
> > >>> functions were added in Flink 1.11. For Flink 1.15, this was hotfixed
> > [3]
> > >>> to comply with Calcite's non-null semantics.
> > >>> Since Calcite fixed its definition with the 1.38 release, I'm
> proposing
> > >>> that we revert the Flink 1.15 hotfix, even though it's a breaking
> > change.
> > >>>
> > >>> * PRO: standards compliance, consistency with every other engine and
> > with
> > >>> Calcite's own default (less surprise porting SQL from other systems),
> > >>> consistency with Flink's other JSON functions which already propagate
> > >> NULL,
> > >>> and removing custom codegen that fights Calcite on every future
> > upgrade.
> > >>> * CON: it's a breaking change, most notably flipping NULL IS NOT JSON
> > >> from
> > >>> TRUE to NULL, which can affect existing filters, views, or NOT
> > NULL-typed
> > >>> computed columns/sinks built on this predicate, and there's no
> > >>> compatibility flag today to ease the transition.
> > >>>
> > >>> This is one of several breaking side-effects of the Calcite 1.38.0
> > >>> upgrade. Hence, I'd propose treating it as a deliberate, documented
> > break
> > >>> targeted at the next minor version (2.4) rather than adding a
> dedicated
> > >>> config flag.
> > >>>
> > >>> Curious to hear if others agree, or see a strong case for keeping the
> > >>> current NOT NULL semantics.
> > >>>
> > >>> Best,
> > >>> Fabian
> > >>>
> > >>> [1] https://issues.apache.org/jira/browse/FLINK-39943
> > >>> [2]
> > >>>
> > >>
> >
> https://github.com/apache/flink/commit/8de3293e2d#diff-53c19443d4ddaabe90d0041379f3656f3d52983ae7a0226a9b23bc87675471a8R93
> > >>> [3]
> > >>>
> > >>
> >
> https://github.com/apache/flink/commit/74146c626edd7603f00a6f0c90c7fccaf2066912
> > >>
> > >>
> >
> >
>

Reply via email to