[
https://issues.apache.org/jira/browse/ASTERIXDB-2447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dmitry Lychagin resolved ASTERIXDB-2447.
----------------------------------------
Resolution: Fixed
Fixed by https://asterix-gerrit.ics.uci.edu/#/c/2935/
> Incorrect handling of non-primitive arguments by if_missing, if_null functions
> ------------------------------------------------------------------------------
>
> Key: ASTERIXDB-2447
> URL: https://issues.apache.org/jira/browse/ASTERIXDB-2447
> Project: Apache AsterixDB
> Issue Type: Bug
> Components: COMP - Compiler
> Reporter: Dmitry Lychagin
> Assignee: Dmitry Lychagin
> Priority: Minor
>
> if_missing, if_null functions return one of the arguments. When input values
> are of different non-primitive types then the output type is computed as
> 'any', but the argument is returned as is at runtime (without casting). This
> may cause problems for consumers of the returned values.
> For example:
> { "j": (
> let v = if_null(
> case when get_year(current_datetime()) > 0 then null else false end,
> \{ "c": [ 2 ] }
> )
> select v as b
> ) }
> currently returns
> { "j": [ \{ "b": { } } ] }
> but it should return:
> { "j": [ \{ "b": { "c": [ 2 ] } } ] }
> Parameters of these functions should be rewritten by the optimizer in the
> same manner as parameters of the switch-case function
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)