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 cdfae80c9a60592764f1bbd328a7d91a5b362a00 Author: Andrew Mashenkov <andrey.mashen...@gmail.com> AuthorDate: Thu Apr 22 02:05:40 2021 +0300 Omit writing empty varlen table. --- .../org/apache/ignite/internal/schema/Row.java | 18 +++- .../ignite/internal/schema/RowAssembler.java | 22 +++-- .../ignite/internal/schema/RowAssemblerTest.java | 100 ++++++++++----------- 3 files changed, 81 insertions(+), 59 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 e970f3d..f562ded 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 @@ -307,6 +307,13 @@ public class Row implements BinaryRow { } /** + * @return Row flags. + */ + private boolean hasFlag(int flag) { + return ((readShort(FLAGS_FIELD_OFFSET) & flag)) != 0; + } + + /** * Gets the column offset and length encoded into a single 8-byte value (4 least significant bytes encoding the * offset from the beginning of the row and 4 most significant bytes encoding the field length for varlength * columns). The offset and length should be extracted using {@link #offset(long)} and {@link #length(long)} @@ -345,8 +352,12 @@ public class Row implements BinaryRow { if (isNull(off, colIdx)) return -1; + short flags = readShort(FLAGS_FIELD_OFFSET); + + boolean noVarTable = ((keyCol ? RowFlags.OMIT_KEY_VARTBL_FLAG : RowFlags.OMIT_VAL_VARTBL_FLAG) & flags) != 0; + return type.fixedLength() ? - fixlenColumnOffset(cols, off, colIdx) : + fixlenColumnOffset(cols, off, colIdx, noVarTable) : varlenColumnOffsetAndLength(cols, off, colIdx); } @@ -459,9 +470,10 @@ public class Row implements BinaryRow { * @param cols Columns chunk. * @param baseOff Chunk base offset. * @param idx Column index in the chunk. + * @param noVarlen Varlen table is ommited. * @return Encoded offset (from the row start) of the requested fixlen column. */ - int fixlenColumnOffset(Columns cols, int baseOff, int idx) { + int fixlenColumnOffset(Columns cols, int baseOff, int idx, boolean noVarlen) { int nullMapOff = nullMapOffset(baseOff); int off = 0; @@ -480,7 +492,7 @@ public class Row implements BinaryRow { int vartableOffset = vartableOffset(baseOff, cols); - int vartableLen = varlenItemOffset(readShort(vartableOffset)); + int vartableLen = noVarlen ? 0 : 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 e5b139e..a62715f 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 @@ -80,7 +80,8 @@ public class RowAssembler { * @return Total size of the varlen table. */ public static int varlenTableSize(int nonNullVarlenCols) { - return VARLEN_TABLE_SIZE_FIELD_SIZE + nonNullVarlenCols * VARLEN_COLUMN_OFFSET_FIELD_SIZE; + return nonNullVarlenCols == 0 ? 0 : + VARLEN_TABLE_SIZE_FIELD_SIZE + nonNullVarlenCols * VARLEN_COLUMN_OFFSET_FIELD_SIZE; } /** @@ -171,10 +172,17 @@ public class RowAssembler { initOffsets(BinaryRow.KEY_CHUNK_OFFSET, nonNullVarlenKeyCols); +// if (nullMapSize == 0) +// flags |= (baseOff == KEY_CHUNK_OFFSET ? RowFlags.NO_KEY_NULL_MAP : RowFlags.NO_VALUE_NULL_MAP); + buf = new ExpandableByteBuf(size); buf.putShort(0, (short)schema.version()); - buf.putShort(nullMapOff + curCols.nullMapSize(), (short)nonNullVarlenKeyCols); + + if (nonNullVarlenKeyCols == 0) + flags |= RowFlags.OMIT_KEY_VARTBL_FLAG; + else + buf.putShort(varlenTblOff, (short)nonNullVarlenKeyCols); } /** @@ -453,15 +461,17 @@ public class RowAssembler { buf.putShort(baseOff, (short)keyLen); - if (schema.valueColumns() == curCols) { - buf.putShort(nullMapOff + curCols.nullMapSize(), (short)nonNullVarlenValCols); - + if (schema.valueColumns() == curCols) return; // No more columns. - } curCols = schema.valueColumns(); // Switch key->value columns. initOffsets(baseOff + keyLen, nonNullVarlenValCols); + + if (nonNullVarlenValCols == 0) + flags |= RowFlags.OMIT_VAL_VARTBL_FLAG; + else + buf.putShort(varlenTblOff, (short)nonNullVarlenValCols); } } diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerTest.java index 8ca733e..3781330 100644 --- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerTest.java +++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerTest.java @@ -49,7 +49,7 @@ public class RowAssemblerTest { asm.appendInt(33); asm.appendInt(-71); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, -71, -1, -1, -1}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 33, 0, 0, 0, 9, 0, 0, 0, 0, -71, -1, -1, -1}, asm.build()); } { // Null value. @@ -58,7 +58,7 @@ public class RowAssemblerTest { asm.appendInt(-33); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, -33, -1, -1, -1, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, -33, -1, -1, -1, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -66,7 +66,7 @@ public class RowAssemblerTest { asm.appendInt(-33); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, -33, -1, -1, -1}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, -33, -1, -1, -1}, asm.build()); } } @@ -83,7 +83,7 @@ public class RowAssemblerTest { asm.appendShort((short)33); asm.appendShort((short)71L); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0, 9, 0, 0, 0, 0, 0, 0, 71, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 7, 0, 0, 0, 0, 71, 0}, asm.build()); } { // No value. @@ -91,7 +91,7 @@ public class RowAssemblerTest { asm.appendShort((short)-33); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, -33, -1}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, -33, -1}, asm.build()); } } @@ -108,7 +108,7 @@ public class RowAssemblerTest { asm.appendShort((short)-33); asm.appendString("val"); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, -33, -1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, -33, -1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); } { // Null value. @@ -117,7 +117,7 @@ public class RowAssemblerTest { asm.appendShort((short)33); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -125,7 +125,7 @@ public class RowAssemblerTest { asm.appendShort((short)33); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0}, asm.build()); } } @@ -142,7 +142,7 @@ public class RowAssemblerTest { asm.appendShort((short)-33); asm.appendString("val"); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, -33, -1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, -33, -1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); } { // No value. @@ -150,7 +150,7 @@ public class RowAssemblerTest { asm.appendShort((short)33); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0}, asm.build()); } } @@ -167,7 +167,7 @@ public class RowAssemblerTest { asm.appendShort((short)-33); asm.appendByte((byte)71); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, -33, -1, 8, 0, 0, 0, 0, 0, 0, 71}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, -33, -1, 6, 0, 0, 0, 0, 71}, asm.build()); } { // Null key. @@ -176,7 +176,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendByte((byte)-71); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, -71}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 6, 0, 0, 0, 0, -71}, asm.build()); } { // No value. @@ -184,7 +184,7 @@ public class RowAssemblerTest { asm.appendShort((short)33); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0}, asm.build()); } } @@ -201,7 +201,7 @@ public class RowAssemblerTest { asm.appendShort((short)-1133); asm.appendShort((short)-1071); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, -109, -5, 9, 0, 0, 0, 0, 0, 0, -47, -5}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, -109, -5, 7, 0, 0, 0, 0, -47, -5}, asm.build()); } { // Null key. @@ -210,7 +210,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendShort((short)1171); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, -109, 4}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 0, -109, 4}, asm.build()); } { // Null value. @@ -219,7 +219,7 @@ public class RowAssemblerTest { asm.appendShort((short)1133); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 109, 4, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 109, 4, 5, 0, 0, 0, 1}, asm.build()); } { // Null both. @@ -228,7 +228,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -236,7 +236,7 @@ public class RowAssemblerTest { asm.appendShort((short)1133); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 109, 4}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 109, 4}, asm.build()); } } @@ -253,7 +253,7 @@ public class RowAssemblerTest { asm.appendInt(-33); asm.appendString("val"); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, -33, -1, -1, -1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, -33, -1, -1, -1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); } { // Null key. @@ -262,7 +262,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendString("val"); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); } { // Null value. @@ -271,7 +271,7 @@ public class RowAssemblerTest { asm.appendInt(33); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 33, 0, 0, 0, 5, 0, 0, 0, 1}, asm.build()); } { // Null both. @@ -280,7 +280,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -288,7 +288,7 @@ public class RowAssemblerTest { asm.appendInt(33); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 33, 0, 0, 0}, asm.build()); } } @@ -305,7 +305,7 @@ public class RowAssemblerTest { asm.appendByte((byte)-33); asm.appendString("val"); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, -33, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, -33, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); } { // Null key. @@ -314,7 +314,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendString("val"); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 12, 0, 0, 0, 0, 1, 0, 9, 0, 118, 97, 108}, asm.build()); } { // No value. @@ -322,7 +322,7 @@ public class RowAssemblerTest { asm.appendByte((byte)33); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 33}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 25, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 33}, asm.build()); } } @@ -340,8 +340,8 @@ public class RowAssemblerTest { asm.appendUuid(uuidVal); assertRowBytesEquals(new byte[] { - 42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, - 23, 0, 0, 0, 0, 0, 0, -117, -61, -31, 85, 61, -32, 57, 68, 111, 67, 56, -3, -99, -37, -58, -73}, asm.build()); + 42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, + 21, 0, 0, 0, 0, -117, -61, -31, 85, 61, -32, 57, 68, 111, 67, 56, -3, -99, -37, -58, -73}, asm.build()); } { // Null value. @@ -350,7 +350,7 @@ public class RowAssemblerTest { asm.appendString("key"); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -358,7 +358,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } } @@ -376,8 +376,8 @@ public class RowAssemblerTest { asm.appendUuid(uuidVal); assertRowBytesEquals(new byte[] { - 42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, - 23, 0, 0, 0, 0, 0, 0, -117, -61, -31, 85, 61, -32, 57, 68, 111, 67, 56, -3, -99, -37, -58, -73}, asm.build()); + 42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, + 21, 0, 0, 0, 0, -117, -61, -31, 85, 61, -32, 57, 68, 111, 67, 56, -3, -99, -37, -58, -73}, asm.build()); } { // No value. @@ -385,7 +385,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } } @@ -411,7 +411,7 @@ public class RowAssemblerTest { asm.appendString("key"); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -419,7 +419,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } } @@ -444,7 +444,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } } @@ -461,7 +461,7 @@ public class RowAssemblerTest { asm.appendString("key"); asm.appendShort((short)-71); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 9, 0, 0, 0, 0, 0, 0, -71, -1}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 7, 0, 0, 0, 0, -71, -1}, asm.build()); } { // Null key. @@ -470,7 +470,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendShort((short)71); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 71, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 0, 71, 0}, asm.build()); } { // Null value. @@ -479,7 +479,7 @@ public class RowAssemblerTest { asm.appendString("key"); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 5, 0, 0, 0, 1}, asm.build()); } { // Null both. @@ -488,7 +488,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -496,7 +496,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } } @@ -513,7 +513,7 @@ public class RowAssemblerTest { asm.appendString("key"); asm.appendShort((short)-71L); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 9, 0, 0, 0, 0, 0, 0, -71, -1}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 7, 0, 0, 0, 0, -71, -1}, asm.build()); } { // Null key. @@ -522,7 +522,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendShort((short)71); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 71, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 0, 71, 0}, asm.build()); } { // No value. @@ -530,7 +530,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } } @@ -556,7 +556,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendBytes(new byte[] {-1, 1, 0, 120}); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 13, 0, 0, 0, 0, 1, 0, 9, 0, -1, 1, 0, 120}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 13, 0, 0, 0, 0, 1, 0, 9, 0, -1, 1, 0, 120}, asm.build()); } { // Null value. @@ -565,7 +565,7 @@ public class RowAssemblerTest { asm.appendString("key"); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 16, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121, 5, 0, 0, 0, 1}, asm.build()); } { // Null both. @@ -574,7 +574,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendNull(); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 1, 0, 0}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 24, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 1}, asm.build()); } { // No value. @@ -582,7 +582,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } } @@ -608,7 +608,7 @@ public class RowAssemblerTest { asm.appendNull(); asm.appendBytes(new byte[] {-1, 1, 0, 120}); - assertRowBytesEquals(new byte[] {42, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 13, 0, 0, 0, 0, 1, 0, 9, 0, -1, 1, 0, 120}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 8, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 13, 0, 0, 0, 0, 1, 0, 9, 0, -1, 1, 0, 120}, asm.build()); } { // No value. @@ -616,7 +616,7 @@ public class RowAssemblerTest { asm.appendString("key"); - assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121,}, asm.build()); + assertRowBytesEquals(new byte[] {42, 0, 17, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build()); } }