Julian Hyde edited comment on CALCITE-3738 at 1/15/20 7:23 PM:

I think Calcite should allow ORDER BY in DML statements, but ignore it unless 
LIMIT or OFFSET are present. If LIMIT or OFFSET are present, Calcite should 
apply the limit/offset, but don't guarantee the order of rows.

Which, I believe, is exactly the same as we do for sub-queries.

was (Author: julianhyde):
However, if there is LIMIT or OFFSET, we should allow ORDER BY. We just don't 
guarantee the order that rows are inserted.

> Missing order by logical plan for insert statement
> --------------------------------------------------
>                 Key: CALCITE-3738
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3738
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.19.0
>            Reporter: pengzhiwei
>            Assignee: pengzhiwei
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
> The following sql statement generates a wrong logical plan which missing the 
> LogicalSort :
> {code:java}
> insert into t select id*10,name from users order by name;{code}
> the plan is :
> {code:java}
> LogicalTableModify(table=[[t]], operation=[INSERT], flattened=[false])
>   LogicalProject(id=[*($0, 10)], name=[$1])
>     LogicalTableScan(table=[[users]])
> {code}
> This issue is introduced by the issue 
> https://issues.apache.org/jira/browse/CALCITE-2978 
> which removes the sort by in sub-query.However the query in insert statement 
> is not a sub-query.

This message was sent by Atlassian Jira

Reply via email to