This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-14743-compaction
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/ignite-14743-compaction by 
this push:
     new d789c59  Add compaction.
d789c59 is described below

commit d789c595d7ddcfb3ff13a42aa14cdc858a1b0f0a
Author: Andrew Mashenkov <andrey.mashen...@gmail.com>
AuthorDate: Thu Jun 24 19:32:05 2021 +0300

    Add compaction.
---
 .../ignite/internal/schema/ByteBufferRow.java      |   4 +-
 .../internal/schema/row/ExpandableByteBuf.java     |  28 ++++++
 .../org/apache/ignite/internal/schema/row/Row.java |  26 ++---
 .../ignite/internal/schema/row/RowAssembler.java   |  77 ++++++++++----
 .../ignite/internal/schema/row/VarTableFormat.java |  87 ++--------------
 .../schema/RowAssemblerAdvancedSchemaTest.java     |  17 ++--
 .../schema/RowAssemblerSimpleSchemaTest.java       | 111 +++++++++++----------
 7 files changed, 167 insertions(+), 183 deletions(-)

diff --git 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/ByteBufferRow.java
 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/ByteBufferRow.java
index 6ae8889..6041aa3 100644
--- 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/ByteBufferRow.java
+++ 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/ByteBufferRow.java
@@ -78,12 +78,12 @@ public class ByteBufferRow implements BinaryRow {
 
     /** {@inheritDoc} */
     @Override public byte readByte(int off) {
-        return (byte)(buf.get(off) & 0xFF);
+        return buf.get(off);
     }
 
     /** {@inheritDoc} */
     @Override public short readShort(int off) {
-        return (short)(buf.getShort(off) & 0xFFFF);
+        return buf.getShort(off);
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/ExpandableByteBuf.java
 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/ExpandableByteBuf.java
index 159153e..19d9f44 100644
--- 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/ExpandableByteBuf.java
+++ 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/ExpandableByteBuf.java
@@ -235,6 +235,16 @@ public class ExpandableByteBuf {
     }
 
     /**
+     * Reads {@code short} value from buffer.
+     *
+     * @param off Buffer offset.
+     * @return Value.
+     */
+    public short getShort(int off) {
+        return buf.getShort(off);
+    }
+
+    /**
      * @return The byte array of all bytes written to this array, including 
gaps.
      */
     public byte[] toArray() {
@@ -280,4 +290,22 @@ public class ExpandableByteBuf {
         buf.position(oldPos);
         buf.order(ByteOrder.LITTLE_ENDIAN);
     }
+
+    /**
+     * Compact array.
+     *
+     * @param srcOff Source offset.
+     * @param dstOff Destination offset.
+     * @param len Length.
+     */
+    void shift(int srcOff, int dstOff, int len) {
+        assert srcOff > dstOff;
+
+        System.arraycopy(arr, srcOff, arr, dstOff, len);
+        Arrays.fill(arr, dstOff + len, srcOff + len, (byte)0);
+
+        this.len -= (srcOff - dstOff);
+        buf = ByteBuffer.wrap(arr);
+        buf.order(ByteOrder.LITTLE_ENDIAN);
+    }
 }
diff --git 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/Row.java 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/Row.java
index 8e2553e..8a9b5d7 100644
--- 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/Row.java
+++ 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/Row.java
@@ -370,7 +370,7 @@ public class Row implements BinaryRow {
         int nullMapLen = (flags & VarTableFormat.OMIT_NULL_MAP_FLAG) == 0 ? 
cols.nullMapSize() : 0;
         VarTableFormat format = (flags & VarTableFormat.OMIT_VARTBL_FLAG) == 0 
? VarTableFormat.fromFlags(flags) : null;
 
-        if (nullMapLen > 0 && isNull(chunkBaseOff + 
BinaryRow.CHUNK_LEN_FLD_SIZE, colIdx))
+        if (nullMapLen > 0 && isNull(chunkBaseOff, colIdx))
             return -1;
 
         int dataOffset = varTableOffset(chunkBaseOff, nullMapLen);
@@ -409,9 +409,9 @@ public class Row implements BinaryRow {
         if (hasNullmap) {
             // Fold offset based on the whole map bytes in the schema
             for (int i = 0; i < colByteIdx; i++)
-                colOff += cols.foldFixedLength(i, 
row.readByte(nullMapOffset(chunkBaseOff) + i));
+                colOff += cols.foldFixedLength(i, 
Byte.toUnsignedInt(row.readByte(nullMapOffset(chunkBaseOff) + i)));
 
-            colOff += cols.foldFixedLength(colByteIdx, 
row.readByte(nullMapOffset(chunkBaseOff) + colByteIdx) | mask);
+            colOff += cols.foldFixedLength(colByteIdx, 
Byte.toUnsignedInt(row.readByte(nullMapOffset(chunkBaseOff) + colByteIdx)) | 
mask);
         }
         else {
             for (int i = 0; i < colByteIdx; i++)
@@ -525,31 +525,17 @@ public class Row implements BinaryRow {
     }
 
     /**
-     * @param baseOff Chunk base offset.
-     * @param nullMapLen Null-map length.
-     * @param format Vartable format helper.
-     * @return Data offset.
-     */
-    private int dataOffset(int baseOff, int nullMapLen, VarTableFormat format) 
{
-        int varTableOffset = varTableOffset(baseOff, nullMapLen);
-
-        int varTableLen = format == null ? 0 : 
format.vartableLength(readShort(varTableOffset));
-
-        return varTableOffset + varTableLen;
-    }
-
-    /**
      * Checks the row's null-map for the given column index in the chunk.
      *
-     * @param nullMapOff Null-map offset.
+     * @param baseOff Chunk base offset.
      * @param idx Offset of the column in the chunk.
      * @return {@code true} if the column value is {@code null}, {@code false} 
otherwise.
      */
-    protected boolean isNull(int nullMapOff, int idx) {
+    protected boolean isNull(int baseOff, int idx) {
         int nullByte = idx >> 3; // Equivalent expression for: idx / 8
         int posInByte = idx & 7; // Equivalent expression for: idx % 8
 
-        int map = row.readByte(nullMapOff + nullByte);
+        int map = row.readByte(baseOff  + BinaryRow.CHUNK_LEN_FLD_SIZE + 
nullByte) & 0xFF;
 
         return (map & (1 << posInByte)) != 0;
     }
diff --git 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java
 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java
index 76ded31..55b7ae2 100644
--- 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java
+++ 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java
@@ -50,7 +50,7 @@ public class RowAssembler {
     private final SchemaDescriptor schema;
 
     /** The number of non-null varlen columns in values chunk. */
-    private final int varVartblLen;
+    private final int valVartblLen;
 
     /** Target byte buffer to write to. */
     private final ExpandableByteBuf buf;
@@ -171,7 +171,7 @@ public class RowAssembler {
         strEncoder = null;
 
         int keyVartblLen = varTableChunkLength(keyVarlenCols, Integer.BYTES);
-        varVartblLen = varTableChunkLength(valVarlenCols, Integer.BYTES);
+        valVartblLen = varTableChunkLength(valVarlenCols, Integer.BYTES);
 
         initChunk(BinaryRow.KEY_CHUNK_OFFSET, curCols.nullMapSize(), 
keyVartblLen);
 
@@ -179,7 +179,7 @@ public class RowAssembler {
 
         int size = BinaryRow.HEADER_SIZE + 2 * BinaryRow.CHUNK_LEN_FLD_SIZE +
             keyVarlenSize + valVarlenSize +
-            keyVartblLen + varVartblLen +
+            keyVartblLen + valVartblLen +
             curCols.fixsizeMaxLen() + valCols.fixsizeMaxLen() +
             curCols.nullMapSize() + valCols.nullMapSize();
 
@@ -354,11 +354,11 @@ public class RowAssembler {
 
             writeVarlenOffset(curVartblEntry, curOff - dataOff);
 
+            curVartblEntry++;
+
             if (isKeyColumn())
                 keyHash = 31 * keyHash + val.hashCode();
 
-            curVartblEntry++;
-
             shiftColumn(written);
 
             return this;
@@ -431,7 +431,7 @@ public class RowAssembler {
             throw new AssemblyException("Key column missed: colIdx=" + curCol);
         else {
             if (curCol == 0) {
-//                flags &= ~(RowFlags.CHUNK_FLAGS_MASK << VAL_FLAGS_OFFSET);
+                flags &= ~(RowFlags.CHUNK_FLAGS_MASK << VAL_FLAGS_OFFSET);
                 flags |= RowFlags.NO_VALUE_FLAG;
             }
             else if (schema.valueColumns().length() != curCol)
@@ -495,14 +495,14 @@ public class RowAssembler {
      * @param colIdx Column index.
      */
     private void setNull(int colIdx) {
-//        assert nullMapOff < varTblOff : "Null-map is omitted.";
+        assert nullMapOff < varTblOff : "Null-map is omitted.";
 
-        int byteInMap = colIdx / 8;// >> 3; // Equivalent expression for: 
colIidx / 8
-        int bitInByte = colIdx % 8; //& 7; // Equivalent expression for: 
colIdx % 8
+        int byteInMap = colIdx >> 3; // Equivalent expression for: colIidx / 8
+        int bitInByte = colIdx & 7; // Equivalent expression for: colIdx % 8
 
         buf.ensureCapacity(nullMapOff + byteInMap + 1);
 
-        buf.put(nullMapOff + byteInMap, (byte)(buf.get(nullMapOff + byteInMap) 
| (1 << bitInByte)));
+        buf.put(nullMapOff + byteInMap, 
(byte)((Byte.toUnsignedInt(buf.get(nullMapOff + byteInMap))) | (1 << 
bitInByte)));
     }
 
     /**
@@ -514,19 +514,18 @@ public class RowAssembler {
         curOff += size;
 
         if (curCol == curCols.length()) {
+            if (curVartblEntry > 1) {
+                assert varTblOff < dataOff : "Illegal writing of varlen when 
'omit vartable' flag is set for a chunk.";
+                assert varTblOff + varTableChunkLength(curVartblEntry, 
Integer.BYTES) == dataOff : "Vartable overlow: size=" + curVartblEntry;
+
+                compactVarTable();
+            }
+
             // Write sizes.
             final int chunkLen = curOff - baseOff;
 
             buf.putInt(baseOff, chunkLen);
 
-            if (curVartblEntry > 1) {
-//                assert varTblOff < dataOff : "Illegal writing of varlen when 
'omit vartable' flag is set for a chunk.";
-//
-//                assert varTblOff + varTableLength(curVartblEntry, 
Integer.BYTES) == dataOff : "Vartable overlow: size=" + curVartblEntry;
-
-                buf.putShort(varTblOff, (short)(curVartblEntry - 1));
-            }
-
             if (schema.valueColumns() == curCols)
                 return; // No more columns.
 
@@ -534,7 +533,47 @@ public class RowAssembler {
             curCols = schema.valueColumns();
 
             // Create value chunk writer.
-            initChunk(BinaryRow.HEADER_SIZE + chunkLen/* Key chunk size */, 
curCols.nullMapSize(), varVartblLen);
+            initChunk(BinaryRow.HEADER_SIZE + chunkLen/* Key chunk size */, 
curCols.nullMapSize(), valVartblLen);
+        }
+    }
+
+    private void compactVarTable() {
+        assert curVartblEntry > 1;
+
+        int dataLen = curOff - dataOff;
+
+        final int vartblSize = curVartblEntry - 1;
+
+        if (dataLen < 256) {
+            buf.put(varTblOff, (byte)vartblSize);
+
+            int dstOff = varTblOff + 1;
+            int srcOff = varTblOff + 2;
+
+            for (int i = 0; i < vartblSize; i++, srcOff += Integer.BYTES, 
dstOff++)
+                buf.put(dstOff, buf.get(srcOff));
+
+            buf.shift(srcOff, dstOff, dataLen);
+            curOff -= srcOff - dstOff;
+
+            flags |= (VarTableFormat.TINY.formatFlags() << (isKeyColumn() ? 
KEY_FLAGS_OFFSET : VAL_FLAGS_OFFSET));
+
+            return;
+        }
+
+        buf.putShort(varTblOff, (short)vartblSize);
+
+        if (dataLen < 64 * 1024) {
+            int dstOff = varTblOff + 2;
+            int srcOff = varTblOff + 2;
+
+            for (int i = 0; i < vartblSize; i++, srcOff += Integer.BYTES, 
dstOff += Short.BYTES)
+                buf.putShort(dstOff, buf.getShort(srcOff));
+
+            buf.shift(srcOff, dstOff, dataLen);
+            curOff -= srcOff - dstOff;
+
+            flags |= (VarTableFormat.MEDIUM.formatFlags() << (isKeyColumn() ? 
KEY_FLAGS_OFFSET : VAL_FLAGS_OFFSET));
         }
     }
 
diff --git 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/VarTableFormat.java
 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/VarTableFormat.java
index 121f138..b76c0a8 100644
--- 
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/VarTableFormat.java
+++ 
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/VarTableFormat.java
@@ -33,13 +33,13 @@ abstract class VarTableFormat {
     public static final int OMIT_VARTBL_FLAG = 1 << 3;
 
     /** Writer factory for tiny-sized chunks. */
-    private static final VarTableFormat TINY = new TinyFormat();
+    static final VarTableFormat TINY = new TinyFormat();
 
     /** Writer factory for med-sized chunks. */
-    private static final VarTableFormat MEDIUM = new MediumFormat();
+    static final VarTableFormat MEDIUM = new MediumFormat();
 
     /** Writer factory for large-sized chunks. */
-    private static final VarTableFormat LARGE = new LargeFormat();
+    static final VarTableFormat LARGE = new LargeFormat();
 
     /**
      * Return chunk formatter.
@@ -104,18 +104,6 @@ abstract class VarTableFormat {
     }
 
     /**
-     * Calculates chunk size for the format.
-     *
-     * @param payloadLen Row payload length in bytes.
-     * @param nullMapLen Null-map length in bytes.
-     * @param vartblEntries Number of vartable entries.
-     * @return Total chunk size.
-     */
-    int chunkSize(int payloadLen, int nullMapLen, int vartblEntries) {
-        return BinaryRow.CHUNK_LEN_FLD_SIZE /* Chunk len. */ + nullMapLen + 
vartableLength(vartblEntries - 1) + payloadLen;
-    }
-
-    /**
      * Calculates vartable size in bytes.
      *
      * @param entries Vartable entries.
@@ -136,16 +124,6 @@ abstract class VarTableFormat {
     }
 
     /**
-     * Writes varlen offset to vartable.
-     *
-     * @param buf Row buffer.
-     * @param vartblOff Vartable offset.
-     * @param entryIdx Vartable entry index.
-     * @param off Varlen offset to be written.
-     */
-    abstract void writeVarlenOffset(ExpandableByteBuf buf, int vartblOff, int 
entryIdx, int off);
-
-    /**
      * Readss varlen offset from vartable.
      *
      * @param row Row.
@@ -156,15 +134,6 @@ abstract class VarTableFormat {
     abstract int readVarlenOffset(BinaryRow row, int vartblOff, int entryIdx);
 
     /**
-     * Writes vartable size.
-     *
-     * @param buf Row buffer.
-     * @param vartblOff Vartable offset.
-     * @param size Number of entries in the vartable.
-     */
-    abstract void writeVartableSize(ExpandableByteBuf buf, int vartblOff, int 
size);
-
-    /**
      * Reads vartable size.
      *
      * @param row Row.
@@ -185,27 +154,13 @@ abstract class VarTableFormat {
         }
 
         /** {@inheritDoc} */
-        @Override void writeVarlenOffset(ExpandableByteBuf buf, int vartblOff, 
int entryIdx, int off) {
-            assert off < (1 << 8) && off >= 0 : "Varlen offset overflow: 
offset=" + off;
-
-            buf.put(vartblOff + vartableEntryOffset(entryIdx), (byte)off);
-        }
-
-        /** {@inheritDoc} */
         @Override int readVarlenOffset(BinaryRow row, int vartblOff, int 
entryIdx) {
-            return row.readByte(vartblOff + vartableEntryOffset(entryIdx)) & 
0xFF;
-        }
-
-        /** {@inheritDoc} */
-        @Override void writeVartableSize(ExpandableByteBuf buf, int vartblOff, 
int size) {
-            assert size < (1 << 8) && size >= 0 : "Vartable size overflow: 
size=" + size;
-
-            buf.put(vartblOff, (byte)size);
+            return Byte.toUnsignedInt(row.readByte(vartblOff + 
vartableEntryOffset(entryIdx)));
         }
 
         /** {@inheritDoc} */
         @Override int readVartableSize(BinaryRow row, int vartblOff) {
-            return row.readByte(vartblOff) & 0xFF;
+            return Byte.toUnsignedInt(row.readByte(vartblOff));
         }
     }
 
@@ -221,27 +176,13 @@ abstract class VarTableFormat {
         }
 
         /** {@inheritDoc} */
-        @Override void writeVarlenOffset(ExpandableByteBuf buf, int vartblOff, 
int entryIdx, int off) {
-            assert off < (1 << 16) && off >= 0 : "Varlen offset overflow: 
offset=" + off;
-
-            buf.putShort(vartblOff + vartableEntryOffset(entryIdx), 
(short)off);
-        }
-
-        /** {@inheritDoc} */
         @Override int readVarlenOffset(BinaryRow row, int vartblOff, int 
entryIdx) {
-            return row.readShort(vartblOff + vartableEntryOffset(entryIdx)) & 
0xFFFF;
-        }
-
-        /** {@inheritDoc} */
-        @Override void writeVartableSize(ExpandableByteBuf buf, int vartblOff, 
int size) {
-            assert size < (1 << 16) && size >= 0 : "Vartable size overflow: 
size=" + size;
-
-            buf.putShort(vartblOff, (short)size);
+            return Short.toUnsignedInt(row.readShort(vartblOff + 
vartableEntryOffset(entryIdx)));
         }
 
         /** {@inheritDoc} */
         @Override int readVartableSize(BinaryRow row, int vartblOff) {
-            return row.readShort(vartblOff) & 0xFFFF;
+            return Short.toUnsignedInt(row.readShort(vartblOff));
         }
     }
 
@@ -257,25 +198,13 @@ abstract class VarTableFormat {
         }
 
         /** {@inheritDoc} */
-        @Override void writeVarlenOffset(ExpandableByteBuf buf, int vartblOff, 
int entryIdx, int off) {
-            buf.putInt(vartblOff + vartableEntryOffset(entryIdx), off);
-        }
-
-        /** {@inheritDoc} */
         @Override int readVarlenOffset(BinaryRow row, int vartblOff, int 
entryIdx) {
             return row.readInteger(vartblOff + vartableEntryOffset(entryIdx));
         }
 
         /** {@inheritDoc} */
-        @Override void writeVartableSize(ExpandableByteBuf buf, int vartblOff, 
int size) {
-            assert size < (1 << 16) && size >= 0 : "Vartable size overflow: 
size=" + size;
-
-            buf.putShort(vartblOff, (short)size);
-        }
-
-        /** {@inheritDoc} */
         @Override int readVartableSize(BinaryRow row, int vartblOff) {
-            return row.readShort(vartblOff) & 0xFFFF;
+            return Short.toUnsignedInt(row.readShort(vartblOff));
         }
     }
 }
diff --git 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerAdvancedSchemaTest.java
 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerAdvancedSchemaTest.java
index f2f8be9..1668bcb 100644
--- 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerAdvancedSchemaTest.java
+++ 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerAdvancedSchemaTest.java
@@ -55,7 +55,7 @@ public class RowAssemblerAdvancedSchemaTest {
 
         // Last col null
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, -11, 43, 0, 0, 8, 0, 0, 0, 4, 11, 22, 
0, 8, 0, 0, 0, 4, -44, -66, -1},
+            new byte[] {42, 0, 0, -120, -11, 43, 0, 0, 8, 0, 0, 0, 4, 11, 22, 
0, 8, 0, 0, 0, 4, -44, -66, -1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendByte((byte)11)
                 .appendShort((short)22)
@@ -67,7 +67,7 @@ public class RowAssemblerAdvancedSchemaTest {
 
         // First col null.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, -53, 2, 0, 0, 11, 0, 0, 0, 1, 22, 0, 
33, 0, 0, 0, 11, 0, 0, 0, 1, -55, -1, -66, -1, -1, -1},
+            new byte[] {42, 0, 0, -120, -53, 2, 0, 0, 11, 0, 0, 0, 1, 22, 0, 
33, 0, 0, 0, 11, 0, 0, 0, 1, -55, -1, -66, -1, -1, -1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendShort((byte)22)
@@ -78,7 +78,7 @@ public class RowAssemblerAdvancedSchemaTest {
                 .build());
 
         // Middle col null.
-        assertRowBytesEquals(new byte[] {42, 0, 0, -103, 108, 41, 0, 0, 10, 0, 
0, 0, 2, 11, 33, 0, 0, 0, 10, 0, 0, 0, 2, -44, -66, -1, -1, -1},
+        assertRowBytesEquals(new byte[] {42, 0, 0, -120, 108, 41, 0, 0, 10, 0, 
0, 0, 2, 11, 33, 0, 0, 0, 10, 0, 0, 0, 2, -44, -66, -1, -1, -1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendByte((byte)11)
                 .appendNull()
@@ -89,7 +89,7 @@ public class RowAssemblerAdvancedSchemaTest {
                 .build());
 
         // Null both.
-        assertRowBytesEquals(new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 
0, 7, 5, 0, 0, 0, 7},
+        assertRowBytesEquals(new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 
0, 7, 5, 0, 0, 0, 7},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendNull()
@@ -100,7 +100,7 @@ public class RowAssemblerAdvancedSchemaTest {
                 .build());
 
         // No value.
-        assertRowBytesEquals(new byte[] {42, 0, 1, 9, 22, 44, 0, 0, 12, 0, 0, 
0, 0, 11, 22, 0, 33, 0, 0, 0},
+        assertRowBytesEquals(new byte[] {42, 0, 1, 8, 22, 44, 0, 0, 12, 0, 0, 
0, 0, 11, 22, 0, 33, 0, 0, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendByte((byte)11)
                 .appendShort((short)22)
@@ -172,7 +172,7 @@ public class RowAssemblerAdvancedSchemaTest {
 
         // Null both.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 7, 5, 0, 0, 0, 
7},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 7, 5, 0, 0, 0, 
7},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendNull()
@@ -216,8 +216,7 @@ public class RowAssemblerAdvancedSchemaTest {
         // Check null/non-null all fixlen/varlen.
         assertRowBytesEquals(
             new byte[] {
-                42, 0, 0, 25, -85, 82, 5, 0,
-                8, 0, 0, 0, 12, 11, 22, 0,
+                42, 0, 0, 24, -85, 82, 5, 0, 8, 0, 0, 0, 12, 11, 22, 0,
                 14, 0, 0, 0, 3, 1, 2, 77, -88, 97, 115, 99, 105, 105},
             new RowAssembler(schema, 128, 0, 128, 2)
                 .appendByte((byte)11)
@@ -284,7 +283,7 @@ public class RowAssemblerAdvancedSchemaTest {
         // Check all null/non-null.
         assertRowBytesEquals(
             new byte[] {
-                42, 0, 0, -111, 3, -8, 124, -80,
+                42, 0, 0, -127, 3, -8, 124, -80,
                 22, 0, 0, 0, 0, 1, 5, 11, 22, 0, 33, -44, -26, -120, -111, 
-26, -124, -101, 74, 97, 118, 97,
                 5, 0, 0, 0, 15},
             new RowAssembler(schema, 128, 2, 128, 0)
diff --git 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerSimpleSchemaTest.java
 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerSimpleSchemaTest.java
index aa02135..6aa5015 100644
--- 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerSimpleSchemaTest.java
+++ 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/RowAssemblerSimpleSchemaTest.java
@@ -50,7 +50,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valIntCol", INTEGER, true)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -99, 33, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0, 
9, 0, 0, 0, 0, -71, -1, -1, -1},
+            new byte[] {42, 0, 0, -116, 33, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0, 
9, 0, 0, 0, 0, -71, -1, -1, -1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendInt(33)
                 .appendInt(-71)
@@ -58,7 +58,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -99, 33, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0, 
5, 0, 0, 0, 1},
+            new byte[] {42, 0, 0, -116, 33, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0, 
5, 0, 0, 0, 1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendInt(33)
                 .appendNull()
@@ -66,7 +66,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 33, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0},
+            new byte[] {42, 0, 1, 12, 33, 0, 0, 0, 8, 0, 0, 0, 33, 0, 0, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendInt(33)
                 .build());
@@ -83,7 +83,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // With value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -35, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0, 6, 0, 
0, 0, -71, -1},
+            new byte[] {42, 0, 0, -52, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0, 6, 0, 
0, 0, -71, -1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .appendShort((short)-71)
@@ -91,7 +91,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0},
+            new byte[] {42, 0, 1, 12, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .build());
@@ -107,7 +107,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valStrCol", STRING, true)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -99, -33, -1, -1, -1, 6, 0, 0, 0, -33, -1, 
8, 0, 0, 0, 0, 118, 97, 108},
+            new byte[] {42, 0, 0, -116, -33, -1, -1, -1, 6, 0, 0, 0, -33, -1, 
8, 0, 0, 0, 0, 118, 97, 108},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendShort((short)-33)
                 .appendString("val")
@@ -115,7 +115,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -99, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0, 5, 0, 
0, 0, 1},
+            new byte[] {42, 0, 0, -116, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0, 5, 0, 
0, 0, 1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .appendNull()
@@ -123,7 +123,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0},
+            new byte[] {42, 0, 1, 12, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .build());
@@ -139,7 +139,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valStrCol", STRING, false)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -35, -33, -1, -1, -1, 6, 0, 0, 0, -33, -1, 
7, 0, 0, 0, 118, 97, 108},
+            new byte[] {42, 0, 0, -52, -33, -1, -1, -1, 6, 0, 0, 0, -33, -1, 
7, 0, 0, 0, 118, 97, 108},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendShort((short)-33)
                 .appendString("val")
@@ -147,7 +147,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0},
+            new byte[] {42, 0, 1, 12, 33, 0, 0, 0, 6, 0, 0, 0, 33, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .build());
@@ -163,7 +163,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valByteCol", BYTE, false)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, -33, -1, -1, -1, 7, 0, 0, 0, 0, -33, 
-1, 5, 0, 0, 0, 71},
+            new byte[] {42, 0, 0, -56, -33, -1, -1, -1, 7, 0, 0, 0, 0, -33, 
-1, 5, 0, 0, 0, 71},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)-33)
                 .appendByte((byte)71)
@@ -171,7 +171,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
-71},
+            new byte[] {42, 0, 0, -56, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
-71},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendByte((byte)-71)
@@ -179,7 +179,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0},
+            new byte[] {42, 0, 1, 8, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .build());
@@ -196,7 +196,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 
0, 33, 0},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 
0, 33, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendShort((short)33)
@@ -204,7 +204,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 5, 
0, 0, 0, 1},
+            new byte[] {42, 0, 0, -120, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 5, 
0, 0, 0, 1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .appendNull()
@@ -212,7 +212,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null both.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendNull()
@@ -220,7 +220,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0},
+            new byte[] {42, 0, 1, 8, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .build());
@@ -237,7 +237,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valStrCol", STRING, true)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 8, 
0, 0, 0, 0, 118, 97, 108},
+            new byte[] {42, 0, 0, -120, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 8, 
0, 0, 0, 0, 118, 97, 108},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendShort((short)33)
                 .appendString("val")
@@ -245,7 +245,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 8, 0, 0, 0, 
0, 118, 97, 108},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 8, 0, 0, 0, 
0, 118, 97, 108},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendNull()
                 .appendString("val")
@@ -253,7 +253,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 5, 
0, 0, 0, 1},
+            new byte[] {42, 0, 0, -120, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0, 5, 
0, 0, 0, 1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .appendNull()
@@ -261,7 +261,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null both.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendNull()
@@ -269,7 +269,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0},
+            new byte[] {42, 0, 1, 8, 33, 0, 0, 0, 7, 0, 0, 0, 0, 33, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendShort((short)33)
                 .build());
@@ -285,21 +285,21 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valStrCol", STRING, false)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, 33, 0, 0, 0, 6, 0, 0, 0, 0, 33, 7, 0, 
0, 0, 118, 97, 108},
+            new byte[] {42, 0, 0, -56, 33, 0, 0, 0, 6, 0, 0, 0, 0, 33, 7, 0, 
0, 0, 118, 97, 108},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendByte((byte)33)
                 .appendString("val").build());
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 
118, 97, 108},
+            new byte[] {42, 0, 0, -56, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 
118, 97, 108},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendNull()
                 .appendString("val").build());
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 33, 0, 0, 0, 6, 0, 0, 0, 0, 33},
+            new byte[] {42, 0, 1, 8, 33, 0, 0, 0, 6, 0, 0, 0, 0, 33},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendByte((byte)33)
                 .build());
@@ -316,7 +316,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         assertRowBytesEquals(
             new byte[] {
-                42, 0, 0, -99, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 121,
+                42, 0, 0, -116, 95, -98, 1, 0, 7, 0, 0, 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},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
@@ -325,7 +325,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -99, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 5, 0, 0, 0, 1},
+            new byte[] {42, 0, 0, -116, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 5, 0, 0, 0, 1},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .appendNull()
@@ -333,7 +333,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 12, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -351,7 +351,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         assertRowBytesEquals(
             new byte[] {
-                42, 0, 0, -35, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 121,
+                42, 0, 0, -52, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 121,
                 20, 0, 0, 0, -117, -61, -31, 85, 61, -32, 57, 68, 111, 67, 56, 
-3, -99, -37, -58, -73},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
@@ -360,7 +360,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 12, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -376,8 +376,11 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("keyStrCol", STRING, false)},
             new Column[] {new Column("valBytesCol", BYTES, true)});
 
+        System.out.println(Integer.toHexString(((byte)-116) & 0xFF));
+        System.out.println(Integer.toHexString(((byte)-99) & 0xFF));
+
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -99, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 9, 0, 0, 0, 0, -1, 1, 0, 120},
+            new byte[] {42, 0, 0, -116, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 9, 0, 0, 0, 0, -1, 1, 0, 120},
             new RowAssembler(schema, 128, 1, 128, 1)
                 .appendString("key")
                 .appendBytes(new byte[] {-1, 1, 0, 120})
@@ -385,7 +388,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -99, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 5, 0, 0, 0, 1},
+            new byte[] {42, 0, 0, -116, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 5, 0, 0, 0, 1},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .appendNull()
@@ -393,7 +396,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 12, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -410,7 +413,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valBytesCol", BYTES, false)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -35, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 8, 0, 0, 0, -1, 1, 0, 120},
+            new byte[] {42, 0, 0, -52, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121, 8, 0, 0, 0, -1, 1, 0, 120},
             new RowAssembler(schema, 128, 1, 128, 1)
                 .appendString("key")
                 .appendBytes(new byte[] {-1, 1, 0, 120})
@@ -418,7 +421,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 13, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 12, 95, -98, 1, 0, 7, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -434,7 +437,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valShortCol", SHORT, true)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 7, 0, 0, 0, 0, -71, -1},
+            new byte[] {42, 0, 0, -120, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 7, 0, 0, 0, 0, -71, -1},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .appendShort((short)-71)
@@ -442,7 +445,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 
0, 71, 0},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 7, 0, 0, 0, 
0, 71, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendShort((short)71)
@@ -450,7 +453,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 5, 0, 0, 0, 1},
+            new byte[] {42, 0, 0, -120, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 5, 0, 0, 0, 1},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .appendNull()
@@ -458,7 +461,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null both.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendNull()
@@ -466,7 +469,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 8, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -483,7 +486,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valShortCol", SHORT, false)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121, 6, 0, 0, 0, -71, -1},
+            new byte[] {42, 0, 0, -56, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121, 6, 0, 0, 0, -71, -1},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .appendShort((short)-71L)
@@ -491,7 +494,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, 0, 0, 0, 0, 5, 0, 0, 0, 1, 6, 0, 0, 0, 
71, 0},
+            new byte[] {42, 0, 0, -56, 0, 0, 0, 0, 5, 0, 0, 0, 1, 6, 0, 0, 0, 
71, 0},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendShort((short)71)
@@ -499,7 +502,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 8, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -515,7 +518,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valBytesCol", BYTES, true)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 9, 0, 0, 0, 0, -1, 1, 0, 120},
+            new byte[] {42, 0, 0, -120, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 9, 0, 0, 0, 0, -1, 1, 0, 120},
             new RowAssembler(schema, 128, 1, 128, 1)
                 .appendString("key")
                 .appendBytes(new byte[] {-1, 1, 0, 120})
@@ -523,7 +526,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 9, 0, 0, 0, 
0, -1, 1, 0, 120},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 9, 0, 0, 0, 
0, -1, 1, 0, 120},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendNull()
                 .appendBytes(new byte[] {-1, 1, 0, 120})
@@ -531,7 +534,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 5, 0, 0, 0, 1},
+            new byte[] {42, 0, 0, -120, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 
101, 121, 5, 0, 0, 0, 1},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .appendNull()
@@ -539,7 +542,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null both.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -103, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
+            new byte[] {42, 0, 0, -120, 0, 0, 0, 0, 5, 0, 0, 0, 1, 5, 0, 0, 0, 
1},
             new RowAssembler(schema, 128, 0, 128, 0)
                 .appendNull()
                 .appendNull()
@@ -547,7 +550,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 8, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -563,7 +566,7 @@ public class RowAssemblerSimpleSchemaTest {
             new Column[] {new Column("valBytesCol", BYTES, false)});
 
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121, 8, 0, 0, 0, -1, 1, 0, 120},
+            new byte[] {42, 0, 0, -56, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121, 8, 0, 0, 0, -1, 1, 0, 120},
             new RowAssembler(schema, 128, 1, 128, 1)
                 .appendString("key")
                 .appendBytes(new byte[] {-1, 1, 0, 120})
@@ -571,7 +574,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null key.
         assertRowBytesEquals(
-            new byte[] {42, 0, 0, -39, 0, 0, 0, 0, 5, 0, 0, 0, 1, 8, 0, 0, 0, 
-1, 1, 0, 120},
+            new byte[] {42, 0, 0, -56, 0, 0, 0, 0, 5, 0, 0, 0, 1, 8, 0, 0, 0, 
-1, 1, 0, 120},
             new RowAssembler(schema, 128, 0, 128, 1)
                 .appendNull()
                 .appendBytes(new byte[] {-1, 1, 0, 120})
@@ -579,7 +582,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(
-            new byte[] {42, 0, 1, 9, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
+            new byte[] {42, 0, 1, 8, 95, -98, 1, 0, 8, 0, 0, 0, 0, 107, 101, 
121},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendString("key")
                 .build());
@@ -601,7 +604,7 @@ public class RowAssemblerSimpleSchemaTest {
             });
 
         assertRowBytesEquals(new byte[] {
-                42, 0, 0, -99, 113, -109, 94, -68,
+                42, 0, 0, -116, 113, -109, 94, -68,
                 12, 0, 0, 0, 33, 0, 107, 101, 121, 115, 116, 114,
                 15, 0, 0, 0, 0, 73, 0, 0, 0, 118, 97, 108, 115, 116, 114},
             new RowAssembler(schema, 128, 1, 128, 1)
@@ -613,7 +616,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // Null value.
         assertRowBytesEquals(new byte[] {
-                42, 0, 0, -99, -1, 98, 115, -49,
+                42, 0, 0, -116, -1, 98, 115, -49,
                 13, 0, 0, 0, 33, 0, 107, 101, 121, 115, 116, 114, 50,
                 5, 0, 0, 0, 3},
             new RowAssembler(schema, 128, 1, 128, 0)
@@ -625,7 +628,7 @@ public class RowAssemblerSimpleSchemaTest {
 
         // No value.
         assertRowBytesEquals(new byte[] {
-                42, 0, 1, 13, 113, -109, 94, -68,
+                42, 0, 1, 12, 113, -109, 94, -68,
                 12, 0, 0, 0, 33, 0, 107, 101, 121, 115, 116, 114},
             new RowAssembler(schema, 128, 1, 128, 0)
                 .appendShort((short)33)

Reply via email to