[ 
https://issues.apache.org/jira/browse/FLINK-24311?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martijn Visser updated FLINK-24311:
-----------------------------------
        Parent:     (was: FLINK-9477)
    Issue Type: New Feature  (was: Sub-task)

> Support expression reduction for JSON construction functions
> ------------------------------------------------------------
>
>                 Key: FLINK-24311
>                 URL: https://issues.apache.org/jira/browse/FLINK-24311
>             Project: Flink
>          Issue Type: New Feature
>          Components: Table SQL / API
>            Reporter: Ingo Bürk
>            Priority: Major
>
> For JSON construction functions such as JSON_OBJECT, we currently disable 
> expression reduction. This is because these functions have special semantics 
> where they behave differently depending on their call context. For example, 
> JSON_OBJECT returns a JSON string. This means that a call like
> {code:java}
> JSON_OBJECT('A' VALUE JSON_OBJECT('B' VALUE 'C')){code}
> would result in
> {code:java}
> {"A": "{\"B\": \"C\"}"}{code}
> However, this is not user-friendly, and thus such nested calls are treated 
> differently and instead result in the likely more intended outcome
> {code:java}
> {"A": {"B": "C"}}{code}
> To make this work, the function looks at its operands and checks whether each 
> operand is another RexCall to such a JSON construction function. If it is, it 
> inserts it as a raw node instead.
> This creates a problem during expression reduction. The RexCall will be 
> replaced with a RexLiteral carrying the JSON string value. The function 
> looking at the operands now cannot determine that this originated from such a 
> RexCall anymore, and yields the unintended result once again. To prevent 
> this, we currently disable expression reduction for these functions.
> We should aim to once again allow such expressions to be reduced while still 
> preserving the intended behavior. See [this 
> comment|https://github.com/apache/flink/pull/17186#issuecomment-920783089] 
> for a rough idea of how this could be achieved.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to