You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2016/02/04 11:09:40 UTC

[37/50] [abbrv] ignite git commit: Index provider.

Index provider.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/53af8a8f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/53af8a8f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/53af8a8f

Branch: refs/heads/sql-store
Commit: 53af8a8fbd258ea5e0528eb648c48d95f72d47a5
Parents: 0d7025c
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Jan 21 11:37:18 2016 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Feb 3 17:13:40 2016 +0300

----------------------------------------------------------------------
 .../processors/query/h2/IgniteH2Indexing.java   | 25 +++++++++++--
 .../query/h2/IgniteH2QueryIndexProvider.java    | 38 ++++++++++++++++++++
 2 files changed, 61 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/53af8a8f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index be72888..77156e0 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -242,6 +242,9 @@ public class IgniteH2Indexing implements GridQueryIndexing {
     /** */
     private GridReduceQueryExecutor rdcQryExec;
 
+    /** Index provider. */
+    private IgniteH2QueryIndexProvider idxProvider;
+
     /** space name -> schema name */
     private final Map<String, String> space2schema = new ConcurrentHashMap8<>();
 
@@ -1474,6 +1477,8 @@ public class IgniteH2Indexing implements GridQueryIndexing {
             rdcQryExec.start(ctx, this);
         }
 
+        idxProvider = ctx.plugins().createComponent(IgniteH2QueryIndexProvider.class);
+
         // TODO https://issues.apache.org/jira/browse/IGNITE-2139
         // registerMBean(gridName, this, GridH2IndexingSpiMBean.class);
     }
@@ -1947,7 +1952,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
 
             ArrayList<Index> idxs = new ArrayList<>();
 
-            idxs.add(new GridH2TreeIndex("_key_PK", tbl, true, KEY_COL, VAL_COL, tbl.indexColumn(0, ASCENDING)));
+            idxs.add(createSortedIndex("_key_PK", tbl, true, KEY_COL, VAL_COL, tbl.indexColumn(0, ASCENDING)));
 
             if (type().valueClass() == String.class) {
                 try {
@@ -1987,7 +1992,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
                     }
 
                     if (idx.type() == SORTED)
-                        idxs.add(new GridH2TreeIndex(name, tbl, false, KEY_COL, VAL_COL, cols));
+                        idxs.add(createSortedIndex(name, tbl, false, KEY_COL, VAL_COL, cols));
                     else if (idx.type() == GEO_SPATIAL)
                         idxs.add(createH2SpatialIndex(tbl, name, cols, KEY_COL, VAL_COL));
                     else
@@ -1999,6 +2004,22 @@ public class IgniteH2Indexing implements GridQueryIndexing {
         }
 
         /**
+         * @param name Index name,
+         * @param tbl Table.
+         * @param pk Primary key flag.
+         * @param keyCol Key column.
+         * @param valCol Value column.
+         * @param cols Columns.
+         * @return Index.
+         */
+        private Index createSortedIndex(String name, GridH2Table tbl, boolean pk, int keyCol, int valCol, IndexColumn... cols) {
+            if (idxProvider != null)
+                return idxProvider.createIndex(name, tbl, pk, keyCol, valCol, cols);
+
+            return new GridH2TreeIndex(name, tbl, pk, keyCol, valCol, cols);
+        }
+
+        /**
          * @param tbl Table.
          * @param idxName Index name.
          * @param cols Columns.

http://git-wip-us.apache.org/repos/asf/ignite/blob/53af8a8f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2QueryIndexProvider.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2QueryIndexProvider.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2QueryIndexProvider.java
new file mode 100644
index 0000000..de8016d
--- /dev/null
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2QueryIndexProvider.java
@@ -0,0 +1,38 @@
+/*
+ * 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;
+
+import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
+import org.h2.index.Index;
+import org.h2.table.IndexColumn;
+
+/**
+ *
+ */
+public interface IgniteH2QueryIndexProvider {
+    /**
+     * @param name Index name.
+     * @param tbl Table to create index for.
+     * @param pk Primary key index flag.
+     * @param keyCol Key column index.
+     * @param valCol Value column index.
+     * @param cols Index columns.
+     * @return Created index.
+     */
+    public Index createIndex(String name, GridH2Table tbl, boolean pk, int keyCol, int valCol, IndexColumn... cols);
+}