Repository: ignite Updated Branches: refs/heads/ignite-4652 bac9b690e -> 261ddbd4a
ignite-4652 Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/261ddbd4 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/261ddbd4 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/261ddbd4 Branch: refs/heads/ignite-4652 Commit: 261ddbd4a06d50688c8d00fb39e59227a1e6ec1e Parents: bac9b69 Author: sboikov <sboi...@gridgain.com> Authored: Fri Feb 3 15:50:10 2017 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Fri Feb 3 15:50:10 2017 +0300 ---------------------------------------------------------------------- .../cache/database/tree/BPlusTree.java | 7 ++++ .../apache/ignite/internal/util/IgniteTree.java | 40 ++++++++++++++++++++ .../query/h2/opt/GridH2TreeIndex.java | 7 ++++ 3 files changed, 54 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/261ddbd4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java index a0dff8c..423acf2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java @@ -1669,6 +1669,13 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements /** * {@inheritDoc} */ + @Override public void invoke(L key, InvokeClosure<L> c) throws IgniteCheckedException { + throw new UnsupportedOperationException(); + } + + /** + * {@inheritDoc} + */ @Override public final T put(T row) throws IgniteCheckedException { return put(row, true); } http://git-wip-us.apache.org/repos/asf/ignite/blob/261ddbd4/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java index 8dcd205..faf4034 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java @@ -19,6 +19,7 @@ package org.apache.ignite.internal.util; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.util.lang.GridCursor; +import org.jetbrains.annotations.Nullable; /** * Interface for ignite internal tree. @@ -34,6 +35,13 @@ public interface IgniteTree<L, T> { public T put(T val) throws IgniteCheckedException; /** + * @param key Key. + * @param c Closure. + * @throws IgniteCheckedException If failed. + */ + public void invoke(L key, InvokeClosure<L> c) throws IgniteCheckedException; + + /** * Returns the value to which the specified key is mapped, or {@code null} if this tree contains no mapping for the * key. * @@ -70,4 +78,36 @@ public interface IgniteTree<L, T> { * @throws IgniteCheckedException If failed. */ public long size() throws IgniteCheckedException; + + /** + * + */ + interface InvokeClosure<T> { + /** + * + * @param row Old row or {@code null} if old row not found. + * @return Operation. + * @throws IgniteCheckedException If failed. + */ + OperationType call(@Nullable T row) throws IgniteCheckedException; + + /** + * @return New row for {@link OperationType#UPDATE} operation. + */ + T newRow(); + } + + /** + * + */ + enum OperationType { + /** */ + NOOP, + + /** */ + REMOVE, + + /** */ + UPDATE + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/261ddbd4/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java index 729309a..2b47733 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java @@ -498,6 +498,13 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS this.tree = tree; } + /** + * {@inheritDoc} + */ + @Override public void invoke(GridSearchRowPointer key, InvokeClosure<GridSearchRowPointer> c) { + throw new UnsupportedOperationException(); + } + /** {@inheritDoc} */ @Override public GridH2Row put(GridH2Row val) { return tree.put(val, val);