Repository: incubator-ignite Updated Branches: refs/heads/ignite-1142 [created] d82df227f
ignite-1142 - code improvements Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/7b5e9afc Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/7b5e9afc Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/7b5e9afc Branch: refs/heads/ignite-1142 Commit: 7b5e9afc0ea5634a25212ffcce2231adf9e6fd5d Parents: a127756 Author: S.Vladykin <svlady...@gridgain.com> Authored: Wed Jul 29 15:55:55 2015 +0300 Committer: S.Vladykin <svlady...@gridgain.com> Committed: Wed Jul 29 15:55:55 2015 +0300 ---------------------------------------------------------------------- .../processors/query/h2/sql/GridSqlQuery.java | 4 +- .../query/h2/sql/GridSqlQueryParser.java | 2 +- .../query/h2/sql/GridSqlQuerySplitter.java | 20 +++--- .../processors/query/h2/sql/GridSqlSelect.java | 76 ++++++++++++-------- .../processors/query/h2/sql/GridSqlUnion.java | 2 +- 5 files changed, 60 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7b5e9afc/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java index ad13dfe..329304a 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java @@ -134,7 +134,7 @@ public abstract class GridSqlQuery { * @param col Column index. * @return Expression for column index. */ - protected abstract GridSqlElement expression(int col); + protected abstract GridSqlElement column(int col); /** * @param buff Statement builder. @@ -157,7 +157,7 @@ public abstract class GridSqlQuery { if (idx < visibleCols) buff.append(idx + 1); else { - GridSqlElement expr = expression(idx); + GridSqlElement expr = column(idx); if (expr == null) // For plain select should never be null, for union H2 itself can't parse query. throw new IllegalStateException("Failed to build query: " + buff.toString()); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7b5e9afc/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java index 4267b4a..ccedd13 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java @@ -272,7 +272,7 @@ public class GridSqlQueryParser { ArrayList<Expression> expressions = select.getExpressions(); for (int i = 0; i < expressions.size(); i++) - res.addSelectExpression(parseExpression(expressions.get(i)), i < select.getColumnCount()); + res.addColumn(parseExpression(expressions.get(i)), i < select.getColumnCount()); int[] grpIdx = GROUP_INDEXES.get(select); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7b5e9afc/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 502366d..947efb9 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 @@ -88,7 +88,7 @@ public class GridSqlQuerySplitter { int c = 0; - for (GridSqlElement expr : left.select(true)) { + for (GridSqlElement expr : left.columns(true)) { String colName; if (expr instanceof GridSqlAlias) @@ -101,12 +101,12 @@ public class GridSqlQuerySplitter { expr = alias(colName, expr); // Set generated alias to the expression. - left.setSelectExpression(c, expr); + left.setColumn(c, expr); } GridSqlColumn col = column(colName); - wrapQry.addSelectExpression(col, true); + wrapQry.addColumn(col, true); c++; } @@ -147,7 +147,7 @@ public class GridSqlQuerySplitter { // Split all select expressions into map-reduce parts. List<GridSqlElement> mapExps = F.addAll(new ArrayList<GridSqlElement>(mapQry.allColumns()), - mapQry.select(false)); + mapQry.columns(false)); GridSqlElement[] rdcExps = new GridSqlElement[mapQry.visibleColumns()]; @@ -159,16 +159,16 @@ public class GridSqlQuerySplitter { aggregateFound |= splitSelectExpression(mapExps, rdcExps, colNames, i, collocated); // Fill select expressions. - mapQry.clearSelect(); + mapQry.clearColumns(); for (GridSqlElement exp : mapExps) // Add all map expressions as visible. - mapQry.addSelectExpression(exp, true); + mapQry.addColumn(exp, true); for (GridSqlElement rdcExp : rdcExps) // Add corresponding visible reduce columns. - rdcQry.addSelectExpression(rdcExp, true); + rdcQry.addColumn(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); + rdcQry.addColumn(column(((GridSqlAlias)mapExps.get(i)).alias()), false); // -- GROUP BY if (mapQry.groupColumns() != null && !collocated) @@ -242,7 +242,7 @@ public class GridSqlQuerySplitter { collectAllSpacesInFrom(select.from(), spaces); - for (GridSqlElement el : select.select(false)) + for (GridSqlElement el : select.columns(false)) collectAllSpacesInSubqueries(el, spaces); collectAllSpacesInSubqueries(select.where(), spaces); @@ -325,7 +325,7 @@ public class GridSqlQuerySplitter { if (params.length == 0) return target; - for (GridSqlElement el : qry.select(false)) + for (GridSqlElement el : qry.columns(false)) findParams(el, params, target); findParams(qry.from(), params, target); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7b5e9afc/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 fb2643e..6705c48 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 @@ -26,10 +26,10 @@ import java.util.*; */ public class GridSqlSelect extends GridSqlQuery { /** */ - private List<GridSqlElement> allExprs = new ArrayList<>(); + private List<GridSqlElement> cols = new ArrayList<>(); /** */ - private List<GridSqlElement> select = new ArrayList<>(); + private int visibleCols; /** */ private int[] grpCols; @@ -45,19 +45,19 @@ public class GridSqlSelect extends GridSqlQuery { /** {@inheritDoc} */ @Override public int visibleColumns() { - return select.size(); + return visibleCols; } /** * @return Number of columns is select including invisible ones. */ public int allColumns() { - return allExprs.size(); + return cols.size(); } /** {@inheritDoc} */ - @Override protected GridSqlElement expression(int col) { - return allExprs.get(col); + @Override protected GridSqlElement column(int col) { + return cols.get(col); } /** {@inheritDoc} */ @@ -67,7 +67,7 @@ public class GridSqlSelect extends GridSqlQuery { if (distinct) buff.append(" DISTINCT"); - for (GridSqlElement expression : select) { + for (GridSqlElement expression : columns(true)) { buff.appendExceptFirst(","); buff.append('\n'); buff.append(expression.getSQL()); @@ -86,14 +86,14 @@ public class GridSqlSelect extends GridSqlQuery { for (int grpCol : grpCols) { buff.appendExceptFirst(", "); - addAlias(buff, allExprs.get(grpCol)); + addAlias(buff, cols.get(grpCol)); } } if (havingCol >= 0) { buff.append("\nHAVING "); - addAlias(buff, allExprs.get(havingCol)); + addAlias(buff, cols.get(havingCol)); } getSortLimitSQL(buff); @@ -114,52 +114,59 @@ public class GridSqlSelect extends GridSqlQuery { /** * @param visibleOnly If only visible expressions needed. - * @return Select phrase expressions. + * @return Select clause expressions. */ - public Iterable<GridSqlElement> select(boolean visibleOnly) { - return visibleOnly ? select : allExprs; + public Iterable<GridSqlElement> columns(boolean visibleOnly) { + assert visibleCols <= cols.size(); + + return visibleOnly && visibleCols != cols.size() ? + cols.subList(0, visibleCols) : cols; } /** - * Clears select list. + * Clears select expressions list. + * @return {@code this}. */ - public void clearSelect() { - select = new ArrayList<>(); - allExprs = new ArrayList<>(); + public GridSqlSelect clearColumns() { + visibleCols = 0; + cols = new ArrayList<>(); + + return this; } /** * @param expression Expression. * @param visible Expression is visible in select phrase. + * @return {@code this}. */ - public void addSelectExpression(GridSqlElement expression, boolean visible) { + public GridSqlSelect addColumn(GridSqlElement expression, boolean visible) { if (expression == null) throw new NullPointerException(); if (visible) { - if (select.size() != allExprs.size()) + if (visibleCols != cols.size()) throw new IllegalStateException("Already started adding invisible columns."); - select.add(expression); + visibleCols++; } - else if (select.isEmpty()) - throw new IllegalStateException("No visible columns."); - allExprs.add(expression); + cols.add(expression); + + return this; } /** * @param colIdx Column index. * @param expression Expression. + * @return {@code this}. */ - public void setSelectExpression(int colIdx, GridSqlElement expression) { + public GridSqlSelect setColumn(int colIdx, GridSqlElement expression) { if (expression == null) throw new NullPointerException(); - if (colIdx < select.size()) // Assuming that all the needed expressions were already added. - select.set(colIdx, expression); + cols.set(colIdx, expression); - allExprs.set(colIdx, expression); + return this; } /** @@ -171,9 +178,12 @@ public class GridSqlSelect extends GridSqlQuery { /** * @param grpCols Group columns. + * @return {@code this}. */ - public void groupColumns(int[] grpCols) { + public GridSqlSelect groupColumns(int[] grpCols) { this.grpCols = grpCols; + + return this; } /** @@ -202,9 +212,12 @@ public class GridSqlSelect extends GridSqlQuery { /** * @param where New where. + * @return {@code this}. */ - public void where(GridSqlElement where) { + public GridSqlSelect where(GridSqlElement where) { this.where = where; + + return this; } /** @@ -226,16 +239,19 @@ public class GridSqlSelect extends GridSqlQuery { * @return Having. */ public GridSqlElement having() { - return havingCol >= 0 ? allExprs.get(havingCol) : null; + return havingCol >= 0 ? column(havingCol) : null; } /** * @param col Index of HAVING column. + * @return {@code this}. */ - public void havingColumn(int col) { + public GridSqlSelect havingColumn(int col) { assert col >= -1 : col; havingCol = col; + + return this; } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7b5e9afc/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 721c288..2900470 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 @@ -41,7 +41,7 @@ public class GridSqlUnion extends GridSqlQuery { } /** {@inheritDoc} */ - @Override protected GridSqlElement expression(int col) { + @Override protected GridSqlElement column(int col) { throw new IllegalStateException(); }