Old approach to new classes.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7a9cd6ac Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7a9cd6ac Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7a9cd6ac Branch: refs/heads/ignite-6022-proto Commit: 7a9cd6acee77aad378c41ad52f096489afc5c543 Parents: 94aabda Author: devozerov <[email protected]> Authored: Mon Dec 18 11:31:18 2017 +0300 Committer: devozerov <[email protected]> Committed: Mon Dec 18 11:31:18 2017 +0300 ---------------------------------------------------------------------- .../query/h2/DmlStatementsProcessor.java | 6 +- .../query/h2/dml/FastUpdateArgument.java | 27 ------ .../query/h2/dml/FastUpdateArguments.java | 93 -------------------- .../processors/query/h2/dml/UpdatePlan.java | 6 +- .../query/h2/dml/UpdatePlanBuilder.java | 16 ++-- 5 files changed, 11 insertions(+), 137 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7a9cd6ac/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java index 8de756c..4ca034e 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java @@ -48,11 +48,11 @@ import org.apache.ignite.internal.processors.query.GridQueryCancel; import org.apache.ignite.internal.processors.query.GridQueryFieldsResult; import org.apache.ignite.internal.processors.query.GridQueryFieldsResultAdapter; import org.apache.ignite.internal.processors.query.IgniteSQLException; +import org.apache.ignite.internal.processors.query.h2.dml.DmlArgument; import org.apache.ignite.internal.processors.query.h2.dml.DmlBatchSender; import org.apache.ignite.internal.processors.query.h2.dml.DmlDistributedPlanInfo; import org.apache.ignite.internal.processors.query.h2.dml.DmlUtils; import org.apache.ignite.internal.processors.query.h2.dml.FastUpdate; -import org.apache.ignite.internal.processors.query.h2.dml.FastUpdateArgument; import org.apache.ignite.internal.processors.query.h2.dml.UpdateMode; import org.apache.ignite.internal.processors.query.h2.dml.UpdatePlan; import org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder; @@ -421,11 +421,11 @@ public class DmlStatementsProcessor { GridH2RowDescriptor desc = plan.table().rowDescriptor(); - for (List<FastUpdateArgument> argRow : plan.rows()) { + for (List<DmlArgument> argRow : plan.rows()) { List<Object> row = new ArrayList<>(); for (int j = 0; j < plan.columnNames().length; j++) { - Object colVal = argRow.get(j).apply(args); + Object colVal = argRow.get(j).get(args); if (j == plan.keyColumnIndex() || j == plan.valueColumnIndex()) colVal = DmlUtils.convert(colVal, desc, j == plan.keyColumnIndex() ? desc.type().keyClass() : http://git-wip-us.apache.org/repos/asf/ignite/blob/7a9cd6ac/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArgument.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArgument.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArgument.java deleted file mode 100644 index dc90fe9..0000000 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArgument.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.processors.query.h2.dml; - -import org.apache.ignite.internal.util.lang.GridPlainClosure; - -/** - * Operand for fast UPDATE or DELETE (single item operation that does not involve any SELECT). - */ -public interface FastUpdateArgument extends GridPlainClosure<Object[], Object> { - // No-op. -} http://git-wip-us.apache.org/repos/asf/ignite/blob/7a9cd6ac/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArguments.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArguments.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArguments.java deleted file mode 100644 index c7a45a3..0000000 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/FastUpdateArguments.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.processors.query.h2.dml; - -import org.apache.ignite.IgniteCheckedException; - -/** - * Arguments for fast, query-less UPDATE or DELETE - key and, optionally, value and new value. - */ -public final class FastUpdateArguments { - /** Operand to compute key. */ - public final FastUpdateArgument key; - - /** Operand to compute value. */ - public final FastUpdateArgument val; - - /** Operand to compute new value. */ - public final FastUpdateArgument newVal; - - /** */ - public FastUpdateArguments(FastUpdateArgument key, FastUpdateArgument val, FastUpdateArgument newVal) { - assert key != null; - assert val != null; - assert newVal != null; - - this.key = key; - this.val = val; - this.newVal = newVal; - } - - /** - * Simple constant value based operand. - */ - public final static class ValueArgument implements FastUpdateArgument { - /** Value to return. */ - private final Object val; - - /** - * Constructor. - * - * @param val Value. - */ - public ValueArgument(Object val) { - this.val = val; - } - - /** {@inheritDoc} */ - @Override public Object apply(Object[] arg) throws IgniteCheckedException { - return val; - } - } - - /** - * User given param value operand. - */ - public final static class ParamArgument implements FastUpdateArgument { - /** Index of param to take. */ - private final int paramIdx; - - /** - * Constructor. - * - * @param paramIdx Parameter index. - */ - public ParamArgument(int paramIdx) { - assert paramIdx >= 0; - - this.paramIdx = paramIdx; - } - - /** {@inheritDoc} */ - @Override public Object apply(Object[] arg) throws IgniteCheckedException { - assert arg.length > paramIdx; - - return arg[paramIdx]; - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/7a9cd6ac/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlan.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlan.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlan.java index b1b5ada..f33331a 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlan.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlan.java @@ -74,7 +74,7 @@ public final class UpdatePlan { private final boolean isLocSubqry; /** Rows for query-less MERGE or INSERT. */ - private final List<List<FastUpdateArgument>> rows; + private final List<List<DmlArgument>> rows; /** Number of rows in rows based MERGE or INSERT. */ private final int rowsNum; @@ -114,7 +114,7 @@ public final class UpdatePlan { int valColIdx, String selectQry, boolean isLocSubqry, - List<List<FastUpdateArgument>> rows, + List<List<DmlArgument>> rows, int rowsNum, @Nullable FastUpdate fastUpdate, @Nullable DmlDistributedPlanInfo distributed @@ -410,7 +410,7 @@ public final class UpdatePlan { /** * @return Rows for query-less MERGE or INSERT. */ - public List<List<FastUpdateArgument>> rows() { + public List<List<DmlArgument>> rows() { return rows; } http://git-wip-us.apache.org/repos/asf/ignite/blob/7a9cd6ac/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java index d04cea9..bbbff17 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java @@ -42,12 +42,10 @@ import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing; import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor; import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlColumn; -import org.apache.ignite.internal.processors.query.h2.sql.GridSqlConst; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlDelete; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlElement; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlInsert; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlMerge; -import org.apache.ignite.internal.processors.query.h2.sql.GridSqlParameter; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuery; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlQueryParser; import org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuerySplitter; @@ -132,7 +130,7 @@ public final class UpdatePlanBuilder { List<GridSqlElement[]> elRows = null; - List<List<FastUpdateArgument>> rows = null; + List<List<DmlArgument>> rows = null; if (stmt instanceof GridSqlInsert) { GridSqlInsert ins = (GridSqlInsert) stmt; @@ -178,16 +176,12 @@ public final class UpdatePlanBuilder { rows = new ArrayList<>(elRows.size()); for (GridSqlElement[] elRow : elRows) { - List<FastUpdateArgument> row = new ArrayList<>(cols.length); + List<DmlArgument> row = new ArrayList<>(cols.length); for (GridSqlElement e : elRow) { - if (e instanceof GridSqlConst) - row.add(new FastUpdateArguments.ValueArgument(((GridSqlConst) e).value().getObject())); - else if (e instanceof GridSqlParameter) - row.add(new FastUpdateArguments.ParamArgument(((GridSqlParameter) e).index())); - else - throw new IgniteSQLException("Unexpected element type: " + e.getClass().getSimpleName(), - IgniteQueryErrorCode.UNEXPECTED_ELEMENT_TYPE); + DmlArgument arg = DmlArguments.create(e); + + row.add(arg); } rows.add(row);
