Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DFF8E17EFC for ; Thu, 9 Apr 2015 10:13:37 +0000 (UTC) Received: (qmail 31102 invoked by uid 500); 9 Apr 2015 10:13:34 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 31040 invoked by uid 500); 9 Apr 2015 10:13:34 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 30982 invoked by uid 99); 9 Apr 2015 10:13:34 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Apr 2015 10:13:34 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 09 Apr 2015 10:13:05 +0000 Received: (qmail 29709 invoked by uid 99); 9 Apr 2015 10:12:59 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Apr 2015 10:12:59 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8A5F4DFF94; Thu, 9 Apr 2015 10:12:59 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.incubator.apache.org Date: Thu, 09 Apr 2015 10:13:26 -0000 Message-Id: <1404e39e4d4645c7accaab61ae9b8cca@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [28/50] [abbrv] incubator-ignite git commit: ignite-624 - fix for reduce invisible columns X-Virus-Checked: Checked by ClamAV on apache.org ignite-624 - fix for reduce invisible columns Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d9e2a648 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d9e2a648 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d9e2a648 Branch: refs/heads/ignite-673 Commit: d9e2a648136b00cb688789a8216f0ae02c73bc93 Parents: bef34cd Author: S.Vladykin Authored: Wed Apr 8 13:12:23 2015 +0300 Committer: S.Vladykin Committed: Wed Apr 8 13:12:23 2015 +0300 ---------------------------------------------------------------------- .../apache/ignite/internal/util/lang/GridFunc.java | 9 +++++++++ .../query/h2/sql/GridSqlQuerySplitter.java | 15 +++++++++++---- .../processors/query/h2/sql/GridSqlSelect.java | 9 ++++++++- .../processors/query/h2/sql/GridSqlUnion.java | 2 +- 4 files changed, 29 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d9e2a648/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java index 773b9ee..fee53ef 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java @@ -5430,6 +5430,15 @@ public class GridFunc { /** * @param c Target collection. + * @param it Iterable to fetch. + * @return Modified target collection. + */ + public static > C addAll(C c, Iterable it) { + return it == null ? c : addAll(c, it.iterator()); + } + + /** + * @param c Target collection. * @param it Iterator to fetch. * @return Modified target collection. */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d9e2a648/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java index b84084b..79c73f0 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java @@ -83,7 +83,7 @@ public class GridSqlQuerySplitter { if (qry0 instanceof GridSqlSelect) srcQry = (GridSqlSelect)qry0; - else { + else { // Handle UNION. srcQry = new GridSqlSelect().from(new GridSqlSubquery(qry0)); GridSqlSelect left = leftest(qry0); @@ -124,11 +124,15 @@ public class GridSqlQuerySplitter { final String mergeTable = TABLE_FUNC_NAME + "()"; // table(0); TODO + // Create map and reduce queries. GridSqlSelect mapQry = srcQry.clone(); GridSqlSelect rdcQry = new GridSqlSelect().from(new GridSqlFunction("PUBLIC", TABLE_FUNC_NAME)); // table(mergeTable)); TODO // Split all select expressions into map-reduce parts. - List mapExps = F.addAll(new ArrayList(), srcQry.select(false).iterator()); + List mapExps = F.addAll( + new ArrayList(srcQry.allColumns()), + srcQry.select(false)); + GridSqlElement[] rdcExps = new GridSqlElement[srcQry.visibleColumns()]; Set colNames = new HashSet<>(); @@ -141,12 +145,15 @@ public class GridSqlQuerySplitter { // Fill select expressions. mapQry.clearSelect(); - for (GridSqlElement exp : mapExps) + for (GridSqlElement exp : mapExps) // Add all map expressions as visible. mapQry.addSelectExpression(exp, true); - for (GridSqlElement rdcExp : rdcExps) + for (GridSqlElement rdcExp : rdcExps) // Add corresponding visible reduce columns. rdcQry.addSelectExpression(rdcExp, true); + for (int i = rdcExps.length; i < mapExps.size(); i++) // Add all extra map columns as invisible reduce columns. + rdcQry.addSelectExpression(column(((GridSqlAlias)mapExps.get(i)).alias()), false); + // -- GROUP BY if (srcQry.hasGroupBy()) { mapQry.clearGroups(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d9e2a648/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java index 398ae10..dadba7c 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java @@ -22,7 +22,7 @@ import org.h2.util.*; import java.util.*; /** - * + * Plain SELECT query. */ public class GridSqlSelect extends GridSqlQuery { /** */ @@ -54,6 +54,13 @@ public class GridSqlSelect extends GridSqlQuery { return select.size(); } + /** + * @return Number of columns is select including invisible ones. + */ + public int allColumns() { + return allExprs.size(); + } + /** {@inheritDoc} */ @Override protected GridSqlElement expression(int col) { return allExprs.get(col); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d9e2a648/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java index 90d9e41..dcc2c84 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java @@ -23,7 +23,7 @@ import org.h2.util.*; import javax.cache.*; /** - * + * Select query with UNION. */ public class GridSqlUnion extends GridSqlQuery { /** */