You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/02/03 12:50:17 UTC

ignite git commit: ignite-4652

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 <sb...@gridgain.com>
Authored: Fri Feb 3 15:50:10 2017 +0300
Committer: sboikov <sb...@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);