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);
 

Reply via email to