PHOENIX-3727 Upserts into salted table are failing in Phoenix-Calcite
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
index 260e591..2304d83 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
@@ -129,7 +129,7 @@
pkValues[0] = new byte[] {0};
}
for(int i = 0; i < numSplColumns; i++) {
- pkValues[i] = values[i];
+ pkValues[i + (table.getBucketNum() != null ? 1 : 0)] = values[i];
}
Long rowTimestamp = null; // case when the table doesn't have a row timestamp column
RowTimestampColInfo rowTsColInfo = new RowTimestampColInfo(useServerTimestamp, rowTimestamp);
@@ -191,10 +191,6 @@
if(tableRef.getTable().getViewIndexId() != null) {
values[i++] = PSmallint.INSTANCE.toBytes(tableRef.getTable().getViewIndexId());
}
-
- for(int k = 0; k < pkSlotIndexes.length; k++) {
- pkSlotIndexes[k] += (i + (tableRef.getTable().getBucketNum() != null ? 1 : 0));
- }
}
int rowCount = 0;
Map<ImmutableBytesPtr, RowMutationState> mutation = Maps.newHashMapWithExpectedSize(batchSize);