[ 
https://issues.apache.org/jira/browse/CALCITE-6978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17949544#comment-17949544
 ] 

Dmitry Sysolyatin edited comment on CALCITE-6978 at 5/5/25 6:54 PM:
--------------------------------------------------------------------

I think you're right. In general, we can't guarantee correctness if the 
underlying data is changing. However, what we can do is try to handle certain 
cases intelligently at the execution level to reduce the chance of user 
mistakes (since not all users are familiar with isolation levels, subquery 
execution, rewriting, etc.). For example, we could reuse a subquery result 
(caching) like Spark does (ReuseAdaptiveSubquery), but it is separate story not 
related to this issue and query semantics

[https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/adaptive/ReuseAdaptiveSubquery.scala]


was (Author: dmsysolyatin):
I think you're right. In general, we can't guarantee correctness if the 
underlying data is changing. However, what we can do is try to handle certain 
cases intelligently at the execution level to reduce the chance of user 
mistakes (since not all users are familiar with isolation levels, subquery 
execution, rewriting, etc.). For example, we could reuse a subquery result 
(caching) like Spark does (ReuseAdaptiveSubquery), but it is separate story not 
related to this issue

[https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/adaptive/ReuseAdaptiveSubquery.scala]

> Translation to relational algebra of correlated query with COALESCE causes an 
> assertion failure
> -----------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-6978
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6978
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.39.0
>            Reporter: Mihai Budiu
>            Priority: Minor
>              Labels: pull-request-available
>
> The following program fails during conversion to Rel:
> {code:sql}
> CREATE TABLE T(x DECIMAL(6, 2), z INT);
> CREATE TABLE S(y INT);
> CREATE VIEW V AS SELECT
>   y,
>   coalesce((select sum(X) from T
>                   where y = T.z limit 1), 0) as w
> FROM S;
> {code}
> The error is:
> {code}
> Conversion to relational algebra failed to preserve datatypes:
> validated type:
> RecordType(INTEGER y, DECIMAL(28, 2) NOT NULL w) NOT NULL
> converted type:
> RecordType(INTEGER y, DECIMAL(28, 2) w) NOT NULL
> rel:
> LogicalProject(y=[$0], w=[CASE(IS NOT NULL($1), $2, 0.00:DECIMAL(28, 2))])
>   LogicalCorrelate(correlation=[$cor1], joinType=[left], 
> requiredColumns=[{0}])
>     LogicalCorrelate(correlation=[$cor0], joinType=[left], 
> requiredColumns=[{0}])
>       LogicalTableScan(table=[[schema, s]])
>       LogicalSort(fetch=[1])
>         LogicalAggregate(group=[{}], EXPR$0=[SUM($0)])
>           LogicalProject(x=[$0])
>             LogicalFilter(condition=[=($cor0.y, $1)])
>               LogicalTableScan(table=[[schema, t]])
>     LogicalSort(fetch=[1])
>       LogicalAggregate(group=[{}], EXPR$0=[SUM($0)])
>         LogicalProject(x=[$0])
>           LogicalFilter(condition=[=($cor1.y, $1)])
>             LogicalTableScan(table=[[schema, t]])
> {code}



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

Reply via email to