[ 
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)

Reply via email to