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); } /** */
