[
https://issues.apache.org/jira/browse/CALCITE-7044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17954638#comment-17954638
]
Julian Hyde commented on CALCITE-7044:
--------------------------------------
Just thinking aloud here... I've found it useful to have 3 modes of adding
constraints:
* check, also known as assert (evaluates a constraint and throws if it is
violated)
* prove (adds a constraint to a value deduced from existing knowledge)
* infer (constraint is implicit after applying a 'where' or 'if')
See [MOREL-242|https://github.com/hydromatic/morel/issues/242].
In the code I mentioned above, we were using the 'infer' mode (having just
evaluated 'case ... when x is null ... else'). There is room for both 'check'
and 'prove' modes; the latter has no runtime cost.
> Add internal operator NOT NULL to enhance rewrite COALESCE operator
> -------------------------------------------------------------------
>
> Key: CALCITE-7044
> URL: https://issues.apache.org/jira/browse/CALCITE-7044
> Project: Calcite
> Issue Type: Bug
> Reporter: xiong duan
> Priority: Major
> Labels: pull-request-available
>
> Add internal operator NOT NULL to enhance rewrite COALESCE operator.
> This issue originated from the discussion of CALCITE-6978.
> A new NOT NULL internal operator was added, indicating that this expression
> will never be NULL.
> The expression coalesce(a,b) can be transformed into CASE WHEN a is not null
> THEN NOT NULL(a) ELSE b
> 1) `not null` operator doesn't do anything, just tell the validator this
> filed is not null.
> 2) When we do RelToSQL, we can ignore it directly.
> Notice:If the query contains nondeterministic function calls, like RANDOM.
> Duplicating such will produce different results,
--
This message was sent by Atlassian Jira
(v8.20.10#820010)