This is an automated email from the ASF dual-hosted git repository. amashenkov pushed a commit to branch ignite-13670 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 55df701b77191056f4d6d0f4788d13966de447f3 Author: Andrew Mashenkov <andrey.mashen...@gmail.com> AuthorDate: Wed Apr 21 23:24:06 2021 +0300 Minor refactoring. --- .../main/java/org/apache/ignite/internal/schema/Row.java | 16 ++++++++++++---- .../org/apache/ignite/internal/schema/RowAssembler.java | 11 +++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/Row.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/Row.java index b9cf9cd..2b736ad 100644 --- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/Row.java +++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/Row.java @@ -38,6 +38,14 @@ public class Row implements BinaryRow { private final BinaryRow row; /** + * @param itemIdx Varlen table item index. + * @return Varlen item offset. + */ + public static int varlenItemOffset(int itemIdx) { + return VARLEN_TABLE_SIZE_FIELD_SIZE + itemIdx * VARLEN_COLUMN_OFFSET_FIELD_SIZE; + } + + /** * Constructor. * * @param schema Schema. @@ -431,15 +439,15 @@ public class Row implements BinaryRow { idx -= cols.numberOfFixsizeColumns() + numNullsBefore; int vartableSize = readShort(vartableOffset(baseOff, cols)); - int vartableOff = vartableOffset(baseOff, cols) + VARLEN_TABLE_SIZE_FIELD_SIZE; + int vartableOff = vartableOffset(baseOff, cols); // Offset of idx-th column is from base offset. - int resOff = readShort(vartableOff + VARLEN_COLUMN_OFFSET_FIELD_SIZE * idx); + int resOff = readShort(vartableOff + varlenItemOffset(idx)); long len = idx == vartableSize - 1 ? // totalLength - columnStartOffset readInteger(baseOff) - resOff : // nextColumnStartOffset - columnStartOffset - readShort(vartableOff + VARLEN_COLUMN_OFFSET_FIELD_SIZE * (idx + 1)) - resOff; + readShort(vartableOff + varlenItemOffset(idx + 1)) - resOff; return (len << 32) | (resOff + baseOff); } @@ -472,7 +480,7 @@ public class Row implements BinaryRow { final int vartableOffset = vartableOffset(baseOff, cols); - int vartableLen = VARLEN_TABLE_SIZE_FIELD_SIZE + readShort(vartableOffset) * VARLEN_COLUMN_OFFSET_FIELD_SIZE; + int vartableLen = varlenItemOffset(readShort(vartableOffset)); return vartableOffset + vartableLen + off; } diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/RowAssembler.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/RowAssembler.java index 1d589d5..08d9a58 100644 --- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/RowAssembler.java +++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/RowAssembler.java @@ -24,6 +24,9 @@ import java.util.BitSet; import java.util.UUID; import org.apache.ignite.internal.schema.BinaryRow.RowFlags; +import static org.apache.ignite.internal.schema.BinaryRow.VARLEN_COLUMN_OFFSET_FIELD_SIZE; +import static org.apache.ignite.internal.schema.BinaryRow.VARLEN_TABLE_SIZE_FIELD_SIZE; + /** * Utility class to build rows using column appending pattern. The external user of this class must consult * with the schema and provide the columns in strict internal column sort order during the row construction. @@ -77,7 +80,7 @@ public class RowAssembler { * @return Total size of the varlen table. */ public static int varlenTableSize(int nonNullVarlenCols) { - return nonNullVarlenCols * BinaryRow.VARLEN_COLUMN_OFFSET_FIELD_SIZE; + return VARLEN_TABLE_SIZE_FIELD_SIZE + nonNullVarlenCols * VARLEN_COLUMN_OFFSET_FIELD_SIZE; } /** @@ -138,7 +141,7 @@ public class RowAssembler { */ static int rowChunkSize(Columns cols, int nonNullVarlenCols, int nonNullVarlenSize) { int size = BinaryRow.CHUNK_LEN_FIELD_SIZE + cols.nullMapSize() + - BinaryRow.VARLEN_TABLE_SIZE_FIELD_SIZE + varlenTableSize(nonNullVarlenCols); + varlenTableSize(nonNullVarlenCols); for (int i = 0; i < cols.numberOfFixsizeColumns(); i++) size += cols.column(i).type().length(); @@ -379,7 +382,7 @@ public class RowAssembler { private void writeOffset(int tblEntryIdx, int off) { assert (flags & (baseOff == BinaryRow.KEY_CHUNK_OFFSET ? RowFlags.NO_VARLEN_KEY_COL : RowFlags.NO_VARLEN_VALUE_COL)) == 0; - buf.putShort(varlenTblOff + BinaryRow.VARLEN_COLUMN_OFFSET_FIELD_SIZE * tblEntryIdx, (short)off); + buf.putShort(varlenTblOff + Row.varlenItemOffset(tblEntryIdx), (short)off); } /** @@ -473,7 +476,7 @@ public class RowAssembler { curVarlenTblEntry = 0; nullMapOff = baseOff + BinaryRow.CHUNK_LEN_FIELD_SIZE; - varlenTblOff = nullMapOff + curCols.nullMapSize() + BinaryRow.VARLEN_TABLE_SIZE_FIELD_SIZE; + varlenTblOff = nullMapOff + curCols.nullMapSize(); curOff = varlenTblOff + varlenTableSize(nonNullVarlenCols); }