Kevin Hinterlong created CALCITE-1892:
-----------------------------------------

             Summary: Relbuilder union all doesn't use parentheses
                 Key: CALCITE-1892
                 URL: https://issues.apache.org/jira/browse/CALCITE-1892
             Project: Calcite
          Issue Type: Bug
    Affects Versions: 1.13.0
         Environment: Java 7
H2 version 1.4.195
Calcite version 1.13.0
            Reporter: Kevin Hinterlong
            Assignee: Julian Hyde


I'm trying to build multiple queries separately as {{RelNode}}s, then call

{{builder.pushAll(unionParts)
                .union(true);}}

to union the results in SQL, but I end up with
{{org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement}}

It turns out to be an issue with lack of parentheses between calls to {{UNION 
ALL}}


I've done some digging and according to [the mysql 
docs|https://dev.mysql.com/doc/refman/5.7/en/union.html] the union call needs 
to have these RelNode's (or their equivalent sql) wrapped in parentheses as a 
result of calling {{ORDER BY}} and {{LIMIT}} which is
{{.sortLimit(offset, fetch, builder.field("TEST_VALUE"))}}
with the {{RelBuilder}}

I've been able to resolve this by converting each {{RelNode}} to SQL and 
manually wrapping it in parentheses before executing the statement against H2 
Like so: (<insert query>) UNION ALL (<insert query>) 

Here's an example I made to show exactly what's happening 
[kevinhinterlong/CalciteUnionError|https://github.com/kevinhinterlong/CalciteUnionError]




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to