You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> It seems that there is something wrong with `HashJoin`, I'm debugging now, I'll merge this first
ops, I found the problem. In correlated subqueries, there is no left data in right.
so this case will return empty data (wrong)
let fnck_sql = DataBaseBuilder::path(temp_dir.path()).build().await?;let _ = fnck_sql
.run("create table t2(id int primary key, a int not null, b int not null);").await?;let _ = fnck_sql
.run("create table t3(id int primary key, a int not null, c int not null);").await?;let _ = fnck_sql
.run("insert into t2 values (0, 1, 2), (3, 4, 5), (8, 0, 0);").await?;let _ = fnck_sql
.run("insert into t3 values (0, 2, 2), (3, 8, 5);").await?;let(schema, tuples) = fnck_sql.run("select id,a,b from t2 where id in (select a from t3 where a > t2.a);").await?;println!("{}", create_table(&schema,&tuples));
there is only t3.a on the right but no t2.a, so filter always returns false
+--------------------------------------------------------------------+
| PLAN |
+====================================================================+
| Projection [t2.id, t2.a, t2.b] [Project] || LeftSemi Join On t2.id = (t3.a) as (_temp_table_0_.a) [HashJoin] || Scan t2 -> [id, a, b] [SeqScan] || Projection [(t3.a) as (_temp_table_0_.a)] [Project] || Projection [t3.a] [Project] || Filter (t3.a > t2.a), Is Having: false [Filter] || Scan t3 -> [a] [SeqScan] |
+--------------------------------------------------------------------+
The text was updated successfully, but these errors were encountered:
KKould
changed the title
> It seems that there is something wrong with HashJoin, I'm debugging now, I'll merge this first
Bug: NormalizationRule::PushPredicateThroughJoin is executed incorrectly during correlated subqueries
Mar 30, 2024
ops, I found the problem. In correlated subqueries, there is no left data in right.
so this case will return empty data (wrong)
there is only t3.a on the right but no t2.a, so filter always returns false
I think this problem is caused by
NormalizationRule
: PushPredicateThroughJoinOriginally posted by @KKould in #192 (comment)
The text was updated successfully, but these errors were encountered: