You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2017/05/11 13:01:46 UTC
ignite git commit: IGNITE-5190 - ArrayIndexOutOfBoundsException in
GridMergeIndexSorted
Repository: ignite
Updated Branches:
refs/heads/master f0051e18a -> 3a9dba5f8
IGNITE-5190 - ArrayIndexOutOfBoundsException in GridMergeIndexSorted
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3a9dba5f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3a9dba5f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3a9dba5f
Branch: refs/heads/master
Commit: 3a9dba5f86ad34736ccd278ebf91044e18cf9a6b
Parents: f0051e1
Author: Sergi Vladykin <se...@gmail.com>
Authored: Thu May 11 16:01:38 2017 +0300
Committer: Sergi Vladykin <se...@gmail.com>
Committed: Thu May 11 16:01:38 2017 +0300
----------------------------------------------------------------------
.../query/h2/twostep/GridMergeIndexSorted.java | 3 +
.../query/IgniteSqlSplitterSelfTest.java | 68 ++++++++++++++++++++
2 files changed, 71 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/3a9dba5f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
index f2d9de4..54c8dd4 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
@@ -252,6 +252,9 @@ public final class GridMergeIndexSorted extends GridMergeIndex {
*
*/
private void goNext() {
+ if (off == streams.length)
+ return; // All streams are done.
+
if (streams[off].next())
bubbleUp(streams, off, streamCmp);
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/3a9dba5f/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index ad1c8b8..f98f41b 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -1609,6 +1609,37 @@ public class IgniteSqlSplitterSelfTest extends GridCommonAbstractTest {
}
}
+ /**
+ * @throws Exception If failed.
+ */
+ public void testJoinWithSubquery() throws Exception {
+ IgniteCache<Integer, Contract> c1 = ignite(0).createCache(
+ cacheConfig("Contract", true,
+ Integer.class, Contract.class));
+
+ IgniteCache<Integer, PromoContract> c2 = ignite(0).createCache(
+ cacheConfig("PromoContract", true,
+ Integer.class, PromoContract.class));
+
+ for (int i = 0; i < 100; i++) {
+ int coId = i % 10;
+ int cust = i / 10;
+ c1.put( i, new Contract(coId, cust));
+ }
+
+ for (int i = 0; i < 10; i++)
+ c2.put(i, new PromoContract((i % 5) + 1, i));
+
+ final List<List<?>> res = c2.query(new SqlFieldsQuery("SELECT CO.CO_ID \n" +
+ "FROM PromoContract PMC \n" +
+ "INNER JOIN \"Contract\".Contract CO ON PMC.CO_ID = 5 \n" +
+ "AND PMC.CO_ID = CO.CO_ID \n" +
+ "INNER JOIN (SELECT CO_ID FROM PromoContract EBP WHERE EBP.CO_ID = 5 LIMIT 1) VPMC \n" +
+ "ON PMC.CO_ID = VPMC.CO_ID ")).getAll();
+
+ assertFalse(res.isEmpty());
+ }
+
/** @throws Exception if failed. */
public void testDistributedAggregates() throws Exception {
final String cacheName = "ints";
@@ -2128,4 +2159,41 @@ public class IgniteSqlSplitterSelfTest extends GridCommonAbstractTest {
@QuerySqlField
private int goodId;
}
+
+ /** */
+ private static class Contract implements Serializable {
+ /** */
+ @QuerySqlField(index = true)
+ private final int CO_ID;
+
+ /** */
+ @QuerySqlField(index = true)
+ private final int CUSTOMER_ID;
+
+ /** */
+ public Contract(final int CO_ID, final int CUSTOMER_ID) {
+ this.CO_ID = CO_ID;
+ this.CUSTOMER_ID = CUSTOMER_ID;
+ }
+
+ }
+
+ /** */
+ public class PromoContract implements Serializable {
+ /** */
+ @QuerySqlField(index = true, orderedGroups = {
+ @QuerySqlField.Group(name = "myIdx", order = 1)})
+ private final int CO_ID;
+
+ /** */
+ @QuerySqlField(index = true, orderedGroups = {
+ @QuerySqlField.Group(name = "myIdx", order = 0)})
+ private final int OFFER_ID;
+
+ /** */
+ public PromoContract(final int co_Id, final int offer_Id) {
+ this.CO_ID = co_Id;
+ this.OFFER_ID = offer_Id;
+ }
+ }
}