This is an automated email from the ASF dual-hosted git repository.
alexpl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 4c38b2f7482 IGNITE-22798 Refactor Index hierarchy - Fixes #11454.
4c38b2f7482 is described below
commit 4c38b2f7482a0e3151622eda15193e70c8bdd720
Author: Aleksey Plekhanov <[email protected]>
AuthorDate: Wed Jul 24 18:22:47 2024 +0300
IGNITE-22798 Refactor Index hierarchy - Fixes #11454.
Signed-off-by: Aleksey Plekhanov <[email protected]>
---
.../query/calcite/schema/CacheIndexImpl.java | 3 +-
.../query/calcite/planner/TestTable.java | 8 +-
.../ignite/internal/cache/query/index/Index.java | 5 +
.../query/index/sorted/SortedSegmentedIndex.java | 3 +
.../InlineIndex.java => client/ClientIndex.java} | 54 +++++----
.../index/sorted/client/ClientIndexDefinition.java | 25 +---
.../index/sorted/client/ClientIndexFactory.java | 39 +-----
.../index/sorted/client/ClientInlineIndex.java | 134 ---------------------
.../query/index/sorted/inline/InlineIndex.java | 6 -
.../management/SortedIndexDescriptorFactory.java | 35 ++++--
.../processors/query/h2/H2IndexFactory.java | 5 +-
.../query/h2/database/H2TreeClientIndex.java | 10 +-
.../processors/query/h2/database/H2TreeIndex.java | 6 +-
.../query/h2/database/H2TreeIndexBase.java | 5 -
.../cache/query/IndexQueryInlineSizesTest.java | 4 +-
.../index/DynamicEnableIndexingAbstractTest.java | 11 +-
16 files changed, 81 insertions(+), 272 deletions(-)
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CacheIndexImpl.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CacheIndexImpl.java
index 079755aec5e..06a3e55869b 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CacheIndexImpl.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CacheIndexImpl.java
@@ -258,8 +258,7 @@ public class CacheIndexImpl implements IgniteIndex {
if (idxKeys.size() < requiredColumns.cardinality() ||
!ImmutableBitSet.of(idxKeys).contains(requiredColumns))
return false;
- List<IndexKeyDefinition> keyDefs = new
ArrayList<>(idx.unwrap(InlineIndex.class).indexDefinition()
- .indexKeyDefinitions().values());
+ List<IndexKeyDefinition> keyDefs = new
ArrayList<>(idx.indexDefinition().indexKeyDefinitions().values());
for (InlineIndexKeyType keyType :
InlineIndexKeyTypeRegistry.types(keyDefs, new IndexKeyTypeSettings())) {
// Skip variable length keys and java objects (see comments about
these limitations in IndexScan class).
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/TestTable.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/TestTable.java
index f6632a35284..c0220b08028 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/TestTable.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/TestTable.java
@@ -49,8 +49,8 @@ import org.apache.ignite.internal.cache.query.index.Order;
import org.apache.ignite.internal.cache.query.index.SortOrder;
import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition;
import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyType;
+import org.apache.ignite.internal.cache.query.index.sorted.client.ClientIndex;
import
org.apache.ignite.internal.cache.query.index.sorted.client.ClientIndexDefinition;
-import
org.apache.ignite.internal.cache.query.index.sorted.client.ClientInlineIndex;
import org.apache.ignite.internal.processors.query.QueryUtils;
import
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
import
org.apache.ignite.internal.processors.query.calcite.metadata.ColocationGroup;
@@ -246,12 +246,10 @@ public class TestTable implements IgniteCacheTable {
IndexDefinition idxDef = new ClientIndexDefinition(
new IndexName(QueryUtils.createTableCacheName(DEFAULT_SCHEMA,
this.name), DEFAULT_SCHEMA, this.name, name),
- keyDefs,
- -1,
- -1
+ keyDefs
);
- indexes.put(name, new CacheIndexImpl(collation, name, new
ClientInlineIndex(idxDef, -1), this));
+ indexes.put(name, new CacheIndexImpl(collation, name, new
ClientIndex(idxDef), this));
return this;
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/Index.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/Index.java
index 955bc03f651..45984b40c25 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/Index.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/Index.java
@@ -66,4 +66,9 @@ public interface Index {
* @param softDelete if {@code true} then perform logical deletion.
*/
public void destroy(boolean softDelete);
+
+ /**
+ * @return Index definition.
+ */
+ public IndexDefinition indexDefinition();
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/SortedSegmentedIndex.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/SortedSegmentedIndex.java
index 1db578257d3..92738a48b8f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/SortedSegmentedIndex.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/SortedSegmentedIndex.java
@@ -123,4 +123,7 @@ public interface SortedSegmentedIndex extends Index {
* @return amount of index tree segments.
*/
public int segmentsCount();
+
+ /** {@inheritDoc} */
+ @Override public SortedIndexDefinition indexDefinition();
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndex.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndex.java
similarity index 51%
copy from
modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndex.java
copy to
modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndex.java
index ffff30f57a8..db34e3ba947 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndex.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndex.java
@@ -15,33 +15,39 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cache.query.index.sorted.inline;
+package org.apache.ignite.internal.cache.query.index.sorted.client;
+import java.util.UUID;
+import org.apache.ignite.internal.cache.query.index.Index;
import org.apache.ignite.internal.cache.query.index.IndexDefinition;
-import
org.apache.ignite.internal.cache.query.index.sorted.SortedSegmentedIndex;
/**
- * Represents an index that inlines some of index keys.
+ * We need indexes on non-affinity nodes. This index does not contain any data.
*/
-public interface InlineIndex extends SortedSegmentedIndex {
- /**
- * @return amount of bytes to store inlined index keys.
- */
- public int inlineSize();
-
- /**
- * {@code true} if index is created and {@code false} if it is restored
from disk.
- */
- public boolean created();
-
- /**
- * @param segment Number of tree segment.
- * @return Tree segment for specified number.
- */
- public InlineIndexTree segment(int segment);
-
- /**
- * @return Index definition.
- */
- public IndexDefinition indexDefinition();
+public class ClientIndex extends AbstractClientIndex implements Index {
+ /** Index id. */
+ private final UUID id = UUID.randomUUID();
+
+ /** Index definition. */
+ private final IndexDefinition def;
+
+ /** */
+ public ClientIndex(IndexDefinition def) {
+ this.def = def;
+ }
+
+ /** {@inheritDoc} */
+ @Override public UUID id() {
+ return id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String name() {
+ return def.idxName().idxName();
+ }
+
+ /** {@inheritDoc} */
+ @Override public IndexDefinition indexDefinition() {
+ return def;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexDefinition.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexDefinition.java
index 36b8d4d0d7e..e8fa6066ae0 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexDefinition.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexDefinition.java
@@ -26,12 +26,6 @@ import
org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition;
* Define index for filtered or client node.
*/
public class ClientIndexDefinition implements IndexDefinition {
- /** */
- private final int cfgInlineSize;
-
- /** */
- private final int maxInlineSize;
-
/** */
private final IndexName idxName;
@@ -39,28 +33,11 @@ public class ClientIndexDefinition implements
IndexDefinition {
private final LinkedHashMap<String, IndexKeyDefinition> keyDefs;
/** */
- public ClientIndexDefinition(
- IndexName idxName,
- LinkedHashMap<String, IndexKeyDefinition> keyDefs,
- int cfgInlineSize,
- int maxInlineSize
- ) {
+ public ClientIndexDefinition(IndexName idxName, LinkedHashMap<String,
IndexKeyDefinition> keyDefs) {
this.idxName = idxName;
- this.cfgInlineSize = cfgInlineSize;
- this.maxInlineSize = maxInlineSize;
this.keyDefs = keyDefs;
}
- /** */
- public int getCfgInlineSize() {
- return cfgInlineSize;
- }
-
- /** */
- public int getMaxInlineSize() {
- return maxInlineSize;
- }
-
/** {@inheritDoc} */
@Override public IndexName idxName() {
return idxName;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexFactory.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexFactory.java
index 6f63445550b..9d9c8bbc09d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexFactory.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientIndexFactory.java
@@ -17,52 +17,17 @@
package org.apache.ignite.internal.cache.query.index.sorted.client;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.cache.query.index.Index;
import org.apache.ignite.internal.cache.query.index.IndexDefinition;
import org.apache.ignite.internal.cache.query.index.IndexFactory;
-import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition;
-import
org.apache.ignite.internal.cache.query.index.sorted.IndexKeyTypeSettings;
-import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexKeyType;
-import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexKeyTypeRegistry;
-import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
/**
* Factory for client index.
*/
public class ClientIndexFactory implements IndexFactory {
- /** Dummy key types. */
- private static final IndexKeyTypeSettings DUMMY_SETTINGS = new
IndexKeyTypeSettings();
-
- /** Logger. */
- private final IgniteLogger log;
-
- /** */
- public ClientIndexFactory(IgniteLogger log) {
- this.log = log;
- }
-
/** {@inheritDoc} */
- @Override public Index createIndex(GridCacheContext<?, ?> cctx,
IndexDefinition definition) {
- ClientIndexDefinition def = (ClientIndexDefinition)definition;
-
- LinkedHashMap<String, IndexKeyDefinition> keyDefs =
definition.indexKeyDefinitions();
-
- List<InlineIndexKeyType> keyTypes =
InlineIndexKeyTypeRegistry.types(keyDefs.values(), DUMMY_SETTINGS);
-
- int inlineSize = InlineIndexTree.computeInlineSize(
- definition.idxName().fullName(),
- keyTypes,
- new ArrayList<>(keyDefs.values()),
- def.getCfgInlineSize(),
- def.getMaxInlineSize(),
- log
- );
-
- return new ClientInlineIndex(def, inlineSize);
+ @Override public Index createIndex(GridCacheContext<?, ?> cctx,
IndexDefinition def) {
+ return new ClientIndex(def);
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientInlineIndex.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientInlineIndex.java
deleted file mode 100644
index 1f04dcab397..00000000000
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/client/ClientInlineIndex.java
+++ /dev/null
@@ -1,134 +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.cache.query.index.sorted.client;
-
-import java.util.UUID;
-import org.apache.ignite.internal.cache.query.index.IndexDefinition;
-import org.apache.ignite.internal.cache.query.index.sorted.IndexRow;
-import
org.apache.ignite.internal.cache.query.index.sorted.inline.IndexQueryContext;
-import org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex;
-import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree;
-import org.apache.ignite.internal.util.lang.GridCursor;
-
-/**
- * We need indexes on non-affinity nodes. This index does not contain any data.
- */
-public class ClientInlineIndex extends AbstractClientIndex implements
InlineIndex {
- /** */
- private final int inlineSize;
-
- /** Index id. */
- private final UUID id = UUID.randomUUID();
-
- /** Index definition. */
- private final IndexDefinition def;
-
- /** */
- public ClientInlineIndex(IndexDefinition def, int inlineSize) {
- this.def = def;
- this.inlineSize = inlineSize;
- }
-
- /** {@inheritDoc} */
- @Override public int inlineSize() {
- return inlineSize;
- }
-
- /** {@inheritDoc} */
- @Override public boolean created() {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public InlineIndexTree segment(int segment) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public GridCursor<IndexRow> find(
- IndexRow lower,
- IndexRow upper,
- boolean lowIncl,
- boolean upIncl,
- int segment,
- IndexQueryContext qryCtx
- ) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public GridCursor<IndexRow> find(
- IndexRow lower,
- IndexRow upper,
- boolean lowIncl,
- boolean upIncl,
- IndexQueryContext qryCtx
- ) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public GridCursor<IndexRow> findFirst(int segment,
IndexQueryContext qryCtx) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public GridCursor<IndexRow> findLast(int segment,
IndexQueryContext qryCtx) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public GridCursor<IndexRow> findFirstOrLast(IndexQueryContext
qryCtx, boolean first) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public long count(int segment) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public long totalCount() {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public long count(int segment, IndexQueryContext qryCtx) {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public int segmentsCount() {
- throw unsupported();
- }
-
- /** {@inheritDoc} */
- @Override public UUID id() {
- return id;
- }
-
- /** {@inheritDoc} */
- @Override public String name() {
- return def.idxName().idxName();
- }
-
- /** {@inheritDoc} */
- @Override public IndexDefinition indexDefinition() {
- return def;
- }
-}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndex.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndex.java
index ffff30f57a8..35a198e1de5 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndex.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndex.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.cache.query.index.sorted.inline;
-import org.apache.ignite.internal.cache.query.index.IndexDefinition;
import
org.apache.ignite.internal.cache.query.index.sorted.SortedSegmentedIndex;
/**
@@ -39,9 +38,4 @@ public interface InlineIndex extends SortedSegmentedIndex {
* @return Tree segment for specified number.
*/
public InlineIndexTree segment(int segment);
-
- /**
- * @return Index definition.
- */
- public IndexDefinition indexDefinition();
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SortedIndexDescriptorFactory.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SortedIndexDescriptorFactory.java
index a5e9c83a5bf..0059f5e290f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SortedIndexDescriptorFactory.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SortedIndexDescriptorFactory.java
@@ -17,17 +17,21 @@
package org.apache.ignite.internal.processors.query.schema.management;
+import java.util.ArrayList;
import java.util.LinkedHashMap;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.cache.query.index.Index;
import org.apache.ignite.internal.cache.query.index.IndexName;
import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition;
+import
org.apache.ignite.internal.cache.query.index.sorted.IndexKeyTypeSettings;
import
org.apache.ignite.internal.cache.query.index.sorted.QueryIndexDefinition;
import
org.apache.ignite.internal.cache.query.index.sorted.client.ClientIndexDefinition;
import
org.apache.ignite.internal.cache.query.index.sorted.client.ClientIndexFactory;
import org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex;
import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexFactory;
+import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexKeyTypeRegistry;
+import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
import org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree;
@@ -92,8 +96,10 @@ public class SortedIndexDescriptorFactory extends
AbstractIndexDescriptorFactory
addAffinityColumn(unwrappedCols, tbl);
LinkedHashMap<String, IndexKeyDefinition> idxCols = unwrappedCols;
+ IndexName idxFullName = new IndexName(cacheInfo.name(),
typeDesc.schemaName(), typeDesc.tableName(), idxName);
Index idx;
+ int inlineSize;
if (cacheInfo.affinityNode()) {
GridCacheContext<?, ?> cctx = cacheInfo.cacheContext();
@@ -108,7 +114,7 @@ public class SortedIndexDescriptorFactory extends
AbstractIndexDescriptorFactory
QueryIndexDefinition idxDef = new QueryIndexDefinition(
typeDesc,
cacheInfo,
- new IndexName(cacheInfo.name(), typeDesc.schemaName(),
typeDesc.tableName(), idxName),
+ idxFullName,
treeName,
ctx.indexProcessor().rowCacheCleaner(cacheInfo.groupId()),
isPk,
@@ -122,21 +128,28 @@ public class SortedIndexDescriptorFactory extends
AbstractIndexDescriptorFactory
idx = ctx.indexProcessor().createIndexDynamically(cctx,
SORTED_IDX_FACTORY, idxDef, cacheVisitor);
else
idx = ctx.indexProcessor().createIndex(cctx,
SORTED_IDX_FACTORY, idxDef);
+
+ assert idx instanceof InlineIndex : idx;
+
+ inlineSize = ((InlineIndex)idx).inlineSize();
}
else {
- ClientIndexDefinition d = new ClientIndexDefinition(
- new IndexName(tbl.cacheInfo().name(), tbl.type().schemaName(),
tbl.type().tableName(), idxName),
- idxCols,
- idxDesc.inlineSize(),
- tbl.cacheInfo().config().getSqlIndexMaxInlineSize());
+ ClientIndexDefinition def = new ClientIndexDefinition(idxFullName,
idxCols);
- idx =
ctx.indexProcessor().createIndex(tbl.cacheInfo().cacheContext(), new
ClientIndexFactory(log), d);
- }
+ idx = ctx.indexProcessor().createIndex(cacheInfo.cacheContext(),
new ClientIndexFactory(), def);
- assert idx instanceof InlineIndex : idx;
+ // Here inline size is just for information (to be shown in system
view).
+ inlineSize = InlineIndexTree.computeInlineSize(
+ idxFullName.fullName(),
+ InlineIndexKeyTypeRegistry.types(idxCols.values(), new
IndexKeyTypeSettings()),
+ new ArrayList<>(idxCols.values()),
+ idxDesc.inlineSize(),
+ tbl.cacheInfo().config().getSqlIndexMaxInlineSize(),
+ log
+ );
+ }
- return new IndexDescriptor(tbl, idxName, idxDesc.type(), idxCols,
isPk, isAff,
- ((InlineIndex)idx).inlineSize(), idx);
+ return new IndexDescriptor(tbl, idxName, idxDesc.type(), idxCols,
isPk, isAff, inlineSize, idx);
}
/** Split key into simple components and add to columns list. */
diff --git
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2IndexFactory.java
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2IndexFactory.java
index 14250c84972..379b3024a05 100644
---
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2IndexFactory.java
+++
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2IndexFactory.java
@@ -26,7 +26,6 @@ import org.apache.ignite.cache.QueryIndexType;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.cache.query.index.SortOrder;
import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition;
-import org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex;
import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexImpl;
import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
import
org.apache.ignite.internal.processors.query.h2.database.H2TreeClientIndex;
@@ -90,12 +89,10 @@ class H2IndexFactory {
return new H2TreeIndex(qryIdx, tbl, idxColsArr,
idxDesc.isPk(), log);
}
else {
- InlineIndex qryIdx = idxDesc.index().unwrap(InlineIndex.class);
-
IndexType idxType = idxDesc.isPk() ?
IndexType.createPrimaryKey(false, false) :
IndexType.createNonUnique(false, false, false);
- return new H2TreeClientIndex(qryIdx, tbl, idxDesc.name(),
idxColsArr, idxType);
+ return new H2TreeClientIndex(idxDesc.index(), tbl,
idxDesc.name(), idxColsArr, idxType);
}
}
else if (idxDesc.type() == QueryIndexType.GEOSPATIAL) {
diff --git
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeClientIndex.java
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeClientIndex.java
index 9d85d710f2b..8048485c24e 100644
---
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeClientIndex.java
+++
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeClientIndex.java
@@ -19,7 +19,6 @@ package
org.apache.ignite.internal.processors.query.h2.database;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.cache.query.index.Index;
-import org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex;
import org.apache.ignite.internal.processors.query.IgniteSQLException;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
import org.apache.ignite.internal.processors.query.h2.opt.H2CacheRow;
@@ -35,7 +34,7 @@ import org.h2.table.IndexColumn;
*/
public class H2TreeClientIndex extends H2TreeIndexBase {
/** */
- private final InlineIndex clientIdx;
+ private final Index clientIdx;
/**
* @param tbl Table.
@@ -43,17 +42,12 @@ public class H2TreeClientIndex extends H2TreeIndexBase {
* @param cols Index columns.
* @param idxType Index type.
*/
- public H2TreeClientIndex(InlineIndex idx, GridH2Table tbl, String name,
IndexColumn[] cols, IndexType idxType) {
+ public H2TreeClientIndex(Index idx, GridH2Table tbl, String name,
IndexColumn[] cols, IndexType idxType) {
super(tbl, name, cols, idxType);
clientIdx = idx;
}
- /** {@inheritDoc} */
- @Override public int inlineSize() {
- return clientIdx.inlineSize();
- }
-
/** {@inheritDoc} */
@Override public void refreshColumnIds() {
// Do nothing.
diff --git
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index 12a71441de7..1df2e5cad55 100644
---
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@ -186,8 +186,10 @@ public class H2TreeIndex extends H2TreeIndexBase {
ctx.io().addMessageListener(msgTopic, msgLsnr);
}
- /** {@inheritDoc} */
- @Override public int inlineSize() {
+ /**
+ * @return Inline size.
+ */
+ public int inlineSize() {
return queryIndex.inlineSize();
}
diff --git
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndexBase.java
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndexBase.java
index 2ca9f68cbba..0d4ad3d798b 100644
---
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndexBase.java
+++
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndexBase.java
@@ -41,11 +41,6 @@ public abstract class H2TreeIndexBase extends
GridH2IndexBase {
super(tbl, name, cols, type);
}
- /**
- * @return Inline size.
- */
- public abstract int inlineSize();
-
/** {@inheritDoc} */
@Override public double getCost(Session ses, int[] masks, TableFilter[]
filters, int filter, SortOrder sortOrder,
HashSet<Column> allColumnsSet) {
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java
b/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java
index 32de88d75b8..31f4d01b27a 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java
@@ -32,7 +32,7 @@ import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
-import org.apache.ignite.internal.processors.query.h2.database.H2TreeIndexBase;
+import org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -272,7 +272,7 @@ public class IndexQueryInlineSizesTest extends
GridCommonAbstractTest {
GridH2Table tbl =
((IgniteH2Indexing)crd.context().query().getIndexing()).schemaManager()
.dataTable("PUBLIC", TABLE);
- assertEquals(expInlineSize,
((H2TreeIndexBase)tbl.getIndex(idxName)).inlineSize());
+ assertEquals(expInlineSize,
((H2TreeIndex)tbl.getIndex(idxName)).inlineSize());
}
/** {@inheritDoc} */
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingAbstractTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingAbstractTest.java
index 220c1129f3d..b14aeb31ff4 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingAbstractTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingAbstractTest.java
@@ -39,8 +39,7 @@ import
org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex;
-import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexImpl;
+import
org.apache.ignite.internal.cache.query.index.sorted.SortedSegmentedIndex;
import
org.apache.ignite.internal.processors.query.schema.management.IndexDescriptor;
import
org.apache.ignite.internal.processors.query.schema.management.SchemaManager;
import org.apache.ignite.lang.IgnitePredicate;
@@ -277,12 +276,8 @@ public class DynamicEnableIndexingAbstractTest extends
GridCommonAbstractTest {
assertNotNull(idxDesc);
- InlineIndex idx = idxDesc.index().unwrap(InlineIndex.class);
-
- assertNotNull(idx);
-
- if (idx instanceof InlineIndexImpl) // Check segments count only on
affinity nodes (skip client indexes).
- assertEquals(expectedParallelism, idx.segmentsCount());
+ if (idxDesc.index() instanceof SortedSegmentedIndex) // Check segments
count only on affinity nodes (skip client indexes).
+ assertEquals(expectedParallelism,
((SortedSegmentedIndex)idxDesc.index()).segmentsCount());
CacheConfiguration<?, ?> cfg =
ig.context().cache().cacheConfiguration(POI_CACHE_NAME);