You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ko...@apache.org on 2022/06/14 12:37:31 UTC
[ignite] branch master updated: IGNITE-17131 Wrong result if subquery is on the left child of LEFT JOIN operator (#10077)
This is an automated email from the ASF dual-hosted git repository.
korlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new e0210d287a1 IGNITE-17131 Wrong result if subquery is on the left child of LEFT JOIN operator (#10077)
e0210d287a1 is described below
commit e0210d287a1486457ec2a593b0ddd0d80262d6ea
Author: korlov42 <ko...@gridgain.com>
AuthorDate: Tue Jun 14 15:37:25 2022 +0300
IGNITE-17131 Wrong result if subquery is on the left child of LEFT JOIN operator (#10077)
---
.../processors/query/h2/GridSubqueryJoinOptimizer.java | 2 +-
.../query/h2/GridSubqueryJoinOptimizerSelfTest.java | 13 +++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizer.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizer.java
index c039471a5e7..3e45770fca4 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizer.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizer.java
@@ -402,7 +402,7 @@ public class GridSubqueryJoinOptimizer {
GridSqlAst where = subSel.where();
if (where != null) {
- if (target != null) {
+ if (target instanceof GridSqlJoin && childInd != GridSqlJoin.LEFT_TABLE_CHILD) {
GridSqlJoin join = (GridSqlJoin)target;
join.child(GridSqlJoin.ON_CHILD, new GridSqlOperation(AND, join.on(), where));
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizerSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizerSelfTest.java
index 197d877fe6d..5849d1b8aea 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizerSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridSubqueryJoinOptimizerSelfTest.java
@@ -804,6 +804,19 @@ public class GridSubqueryJoinOptimizerSelfTest extends GridCommonAbstractTest {
check(resSql, 1);
}
+ /**
+ * Case with left join where subquery is on the left shoulder.
+ */
+ @Test
+ public void testOptimizationLeftJoinSubqueryOnLeft() {
+ String outerSqlTemplate = "SELECT * FROM (%s) AS t1 LEFT JOIN dep AS t2 ON t1.dep_id = t2.id;";
+ String subSql = "SELECT * FROM emp WHERE id % 2 = 1";
+
+ String resSql = String.format(outerSqlTemplate, subSql);
+
+ check(resSql, 1);
+ }
+
/**
* Test should verify all cases where subquery should not be rewrited.
*/