Moritz Manner created FLINK-40852:
-------------------------------------

             Summary: PARSE_JSON fails with NullPointerException when 
allowDuplicateKeys is NULL
                 Key: FLINK-40852
                 URL: https://issues.apache.org/jira/browse/FLINK-40852
             Project: Flink
          Issue Type: Bug
          Components: Table SQL / Runtime
            Reporter: Moritz Manner


{{PARSE_JSON(json, allowDuplicateKeys)}} and {{TRY_PARSE_JSON(json, 
allowDuplicateKeys)}} accept any {{BOOLEAN}} expression as the second argument, 
not only literals. If that argument is NULL at runtime, the query fails instead 
of returning NULL.

To reproduce:
{code:java}
SELECT PARSE_JSON('{}', CAST(NULL AS BOOLEAN));{code}
 
{code:java}
Caused by: java.lang.NullPointerException: Cannot invoke 
"java.lang.Boolean.booleanValue()" because "null" is null at 
StreamExecCalc$9.processElement(Unknown Source){code}
 
{{TRY_PARSE_JSON}} fails the same way. A nullable {{BOOLEAN}} column that is 
NULL for a row, e.g. {{{}PARSE_JSON(f0, f1){}}}, triggers it too.

The cause is that {{ParseJsonFunction}} and {{TryParseJsonFunction}} declare 
{{eval(StringData, boolean)}} with a primitive {{{}boolean{}}}, so the 
generated code unboxes the NULL value. The output type strategies 
({{{}nullableIfArgs{}}} for PARSE_JSON, {{forceNullable}} for TRY_PARSE_JSON) 
already allow a NULL result.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to