AMashenkov commented on code in PR #2397:
URL: https://github.com/apache/ignite-3/pull/2397#discussion_r1291413162
##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/UpdatableTableImpl.java:
##########
@@ -107,6 +119,24 @@ public UpdatableTableImpl(
tmp.sort(Comparator.comparingInt(ColumnDescriptor::physicalIndex));
columnsOrderedByPhysSchema = tmp;
+
+ int keyColumnsCount = schemaDescriptor.keyColumns().length();
+
+ List<ColumnDescriptor> keyCols = new ArrayList<>(keyColumnsCount);
+ List<Integer> keyLogicalIndexes = new ArrayList<>(keyColumnsCount);
+
+ for (ColumnDescriptor colDesc : tmp) {
+ if (colDesc.key()) {
+ keyCols.add(colDesc);
+ keyLogicalIndexes.add(colDesc.logicalIndex());
+ }
+ }
+
+ keyColumnsOrderedByPhysSchema = keyCols;
+
+ ImmutableBitSet keysBitSet = ImmutableBitSet.of(keyLogicalIndexes);
Review Comment:
Let's use ImmutableBitSet of(int... bits)
##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/UpdatableTableImpl.java:
##########
@@ -107,6 +119,24 @@ public UpdatableTableImpl(
tmp.sort(Comparator.comparingInt(ColumnDescriptor::physicalIndex));
columnsOrderedByPhysSchema = tmp;
+
+ int keyColumnsCount = schemaDescriptor.keyColumns().length();
+
+ List<ColumnDescriptor> keyCols = new ArrayList<>(keyColumnsCount);
+ List<Integer> keyLogicalIndexes = new ArrayList<>(keyColumnsCount);
Review Comment:
```suggestion
int[] keyLogicalIndexes = new int[keyColumnsCount];
```
##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/UpdatableTableImpl.java:
##########
@@ -107,6 +119,24 @@ public UpdatableTableImpl(
tmp.sort(Comparator.comparingInt(ColumnDescriptor::physicalIndex));
Review Comment:
If we have full column set here, then all columns will have distinct
physical index in range `[0..desc.columnsCount]` without gaps.
That mean we don't need a n*log(n) sort and can fill array in one pass.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]