You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Jacob Roldan (Jira)" <ji...@apache.org> on 2020/02/05 14:27:00 UTC

[jira] [Created] (CALCITE-3772) Query returning bad results

Jacob Roldan created CALCITE-3772:
-------------------------------------

             Summary: Query returning bad results
                 Key: CALCITE-3772
                 URL: https://issues.apache.org/jira/browse/CALCITE-3772
             Project: Calcite
          Issue Type: Bug
    Affects Versions: 1.21.0, next
         Environment: [^T1.csv]
            Reporter: Jacob Roldan
         Attachments: T1.csv

Inspired in tests of sqllite, I have a query that it is returning bad values.

I've tested using CsvTest in 1.21.0 and the last master
 
{code:sql}
SELECT a, (SELECT count(*) FROM t1 AS x WHERE x.b<t1.b)
FROM t1
WHERE (e>100)
order by a
{code}
 
 and the result is:
{code:java}
 104, 1
 107, 2
 111, 2
 115, 3
 121, 4 {code}
 Testing the same query in mysql, derby and postgres, the result is:
{code:java}
104 0 
107 1 
111 2 
115 3 
121 4{code}
 I've attached the csv file I've put in ??calcite/example/csv/src/test/resources/bug/T1.csv??

and the query test in CsvTest.java
{code:java}
@Test public void testQuery() throws SQLException {
 sql("bug", "SELECT a, (SELECT count(*) FROM t1 AS x WHERE x.b<t1.b) FROM t1 where e>100 order by a").ok();
}
{code}

The explain plan:

{code:java}
EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[0:BIGINT], expr#6=[CASE($t4, $t5, $t3)], A=[$t0], EXPR$1=[$t6])
  EnumerableHashJoin(condition=[=($1, $2)], joinType=[left])
    EnumerableCalc(expr#0..4=[{inputs}], A=[$t0], E=[$t4])
      EnumerableSort(sort0=[$0], dir0=[ASC])
        EnumerableCalc(expr#0..4=[{inputs}], expr#5=[100], expr#6=[>($t4, $t5)], proj#0..4=[{exprs}], $condition=[$t6])
          EnumerableInterpreter
            BindableTableScan(table=[[BUG, T1]])
    EnumerableAggregate(group=[{1}], EXPR$0=[COUNT()])
      EnumerableNestedLoopJoin(condition=[<($0, $1)], joinType=[inner])
        EnumerableCalc(expr#0..4=[{inputs}], B=[$t1])
          EnumerableInterpreter
            BindableTableScan(table=[[BUG, T1]])
        EnumerableAggregate(group=[{4}])
          EnumerableCalc(expr#0..4=[{inputs}], expr#5=[100], expr#6=[>($t4, $t5)], proj#0..4=[{exprs}], $condition=[$t6])
            EnumerableInterpreter
              BindableTableScan(table=[[BUG, T1]])
{code}

The T1.csv is very simple:
{code:java}
A:int,B:int,C:int,D:int,E:int
104,100,102,101,103
107,105,106,108,109
111,112,113,114,110
115,118,119,116,117
121,124,123,122,120
{code}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)