This is an automated email from the ASF dual-hosted git repository.

tkalkirill pushed a commit to branch ignite-xxxxx-rowid-poc
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit 418c88e034e274bfb064da90c94f6e38fb760581
Author: Kirill Tkalenko <[email protected]>
AuthorDate: Thu Feb 19 19:16:50 2026 +0300

    IGNITE-xxxxx-rowid-poc Продолжение уже стало лучше
---
 .../processors/query/calcite/schema/CacheIndexImpl.java    |  1 +
 .../processors/query/calcite/schema/SchemaHolderImpl.java  |  8 ++++++++
 .../cache/query/index/sorted/QueryIndexRowHandler.java     | 13 ++++++++++++-
 .../processors/query/schema/management/SchemaManager.java  | 14 ++++++++++++++
 4 files changed, 35 insertions(+), 1 deletion(-)

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 3806436eb87..c15c8b36f7c 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
@@ -26,6 +26,7 @@ import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.util.ImmutableBitSet;
 import org.apache.calcite.util.ImmutableIntList;
+import org.apache.calcite.util.mapping.Mappings.TargetMapping;
 import org.apache.ignite.internal.cache.query.index.Index;
 import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition;
 import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyType;
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java
index b9eae82520f..6ad6c83f674 100644
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java
+++ 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java
@@ -305,6 +305,14 @@ public class SchemaHolderImpl extends AbstractService 
implements SchemaHolder, S
 
         RelCollation idxCollation = deriveSecondaryIndexCollation(idxDesc, 
tbl);
 
+        log.info(">>>>> Creating index ["
+                + "schemaName=" + schemaName
+                + ", tblName=" + tblName
+                + ", idxName=" + idxName
+                + ", idxCollation=" + idxCollation
+                + "]");
+
+        // TODO: IGNITE-xxxx-rowid-poc Похоже тут надо добавить
         IgniteIndex idx = new CacheIndexImpl(idxCollation, idxName, 
idxDesc.index(), tbl);
         tbl.addIndex(idx);
     }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/QueryIndexRowHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/QueryIndexRowHandler.java
index 19c5e4be86a..4735718eba1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/QueryIndexRowHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/QueryIndexRowHandler.java
@@ -74,8 +74,11 @@ public class QueryIndexRowHandler implements 
InlineIndexRowHandler {
             else if (propName.equals(QueryUtils.VAL_FIELD_NAME) || 
propName.equals(type.valueFieldName())
                 || propName.equals(type.valueFieldAlias()))
                 prop = new KeyOrValPropertyWrapper(false, propName, 
type.valueClass());
-            else
+            else if (propName.equals(QueryUtils.ROW_ID_FIELD_NAME)) {
+                prop = new RowIdPropertyWrapper();
+            } else {
                 prop = type.property(propName);
+            }
 
             assert prop != null : propName;
 
@@ -165,4 +168,12 @@ public class QueryIndexRowHandler implements 
InlineIndexRowHandler {
             return key() ? unwrap((CacheObject)key) : unwrap((CacheObject)val);
         }
     }
+
+    /** */
+    private class RowIdPropertyWrapper extends QueryUtils.RowIdProperty {
+        /** {@inheritDoc} */
+        @Override public Object value(Object key, Object val) {
+            return key() ? unwrap((CacheObject)key) : unwrap((CacheObject)val);
+        }
+    }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java
index 750ff09dee5..2bfb15a2dda 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java
@@ -46,6 +46,7 @@ import 
org.apache.ignite.cache.query.annotations.QuerySqlTableFunction;
 import org.apache.ignite.internal.GridKernalContext;
 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.IndexKeyType;
 import org.apache.ignite.internal.jdbc2.JdbcUtils;
 import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
@@ -678,6 +679,19 @@ public class SchemaManager {
         tbl.addIndex(proxyName, proxyDesc);
 
         lsnr.onIndexCreated(tbl.type().schemaName(), tbl.type().tableName(), 
proxyName, proxyDesc);
+
+        IndexDescriptor rowIdIndexDesc = new IndexDescriptor(
+                idxDesc.name() + "_rowid",
+                new LinkedHashMap<>(Map.of(
+                        QueryUtils.ROW_ID_FIELD_NAME,
+                        new 
IndexKeyDefinition(IndexKeyType.forClass(String.class).code(), -1, true)
+                )),
+                idxDesc
+        );
+
+        tbl.addIndex(rowIdIndexDesc.name(), rowIdIndexDesc);
+
+        lsnr.onIndexCreated(tbl.type().schemaName(), tbl.type().tableName(), 
rowIdIndexDesc.name(), rowIdIndexDesc);
     }
 
     /** */

Reply via email to