You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2021/04/21 20:26:11 UTC
[ignite-3] 01/02: Put RowFlags in order described in IEP.
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 3355eda6354e3da7089acdccc0f80de24eca70b4
Author: Andrew Mashenkov <an...@gmail.com>
AuthorDate: Wed Apr 21 22:59:19 2021 +0300
Put RowFlags in order described in IEP.
---
.../apache/ignite/internal/schema/BinaryRow.java | 17 +++++++++---
.../ignite/internal/schema/ByteBufferRow.java | 2 +-
.../ignite/internal/schema/RowAssembler.java | 9 ++++--
.../ignite/internal/schema/RowAssemblerTest.java | 32 +++++++++++-----------
4 files changed, 37 insertions(+), 23 deletions(-)
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/BinaryRow.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/BinaryRow.java
index 776504a..577f50b 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/BinaryRow.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/BinaryRow.java
@@ -133,11 +133,20 @@ public interface BinaryRow {
* Row flags.
*/
final class RowFlags {
- /** Tombstone flag. */
- public static final int TOMBSTONE = 1;
+ /** Flag indicated is row has no value chunk. */
+ public static final int NO_VALUE = 1;
- /** Null-value flag. */
- public static final int NULL_VALUE = 1 << 1;
+ /** Flag indicates key chunk omits null map. */
+ public static final int NO_KEY_NULL_MAP = 1 << 1;
+
+ /** Flag indicates value chunk omits null map. */
+ public static final int NO_VALUE_NULL_MAP = 1 << 2;
+
+ /** Flag indicates key chunk omits varlen table. */
+ public static final int NO_VARLEN_KEY_COL = 1 << 3;
+
+ /** Flag indicates value chunk omits varlen table. */
+ public static final int NO_VARLEN_VALUE_COL = 1 << 4;
/** Stub. */
private RowFlags() {
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 86672c7..8b86bc7 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
@@ -57,7 +57,7 @@ public class ByteBufferRow implements BinaryRow {
@Override public boolean hasValue() {
short flags = readShort(FLAGS_FIELD_OFFSET);
- return (flags & (RowFlags.NULL_VALUE | RowFlags.TOMBSTONE)) == 0;
+ return (flags & RowFlags.NO_VALUE) == 0;
}
/** {@inheritDoc} */
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 8994ab1..1d589d5 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
@@ -22,6 +22,7 @@ import java.nio.charset.CharsetEncoder;
import java.nio.charset.StandardCharsets;
import java.util.BitSet;
import java.util.UUID;
+import org.apache.ignite.internal.schema.BinaryRow.RowFlags;
/**
* Utility class to build rows using column appending pattern. The external user of this class must consult
@@ -349,9 +350,9 @@ public class RowAssembler {
throw new AssemblyException("Key column missed: colIdx=" + curCol);
else {
if (curCol == 0)
- flags |= BinaryRow.RowFlags.NULL_VALUE;
+ flags |= RowFlags.NO_VALUE;
else if (schema.valueColumns().length() != curCol)
- throw new AssemblyException("Value column missed: colIdx=" + curCol);
+ throw new AssemblyException("Value column missed: colIdx=" + curCol);
}
buf.putShort(BinaryRow.FLAGS_FIELD_OFFSET, flags);
@@ -376,6 +377,8 @@ public class RowAssembler {
* @param off Offset to write.
*/
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);
}
@@ -407,6 +410,8 @@ public class RowAssembler {
* @param colIdx Column index.
*/
private void setNull(int colIdx) {
+ assert (flags & (baseOff == BinaryRow.KEY_CHUNK_OFFSET ? RowFlags.NO_KEY_NULL_MAP : RowFlags.NO_VALUE_NULL_MAP)) == 0;
+
int byteInMap = colIdx / 8;
int bitInByte = colIdx % 8;
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 f215855..8ca733e 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
@@ -66,7 +66,7 @@ public class RowAssemblerTest {
asm.appendInt(-33);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, -33, -1, -1, -1}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, -33, -1, -1, -1}, asm.build());
}
}
@@ -91,7 +91,7 @@ public class RowAssemblerTest {
asm.appendShort((short)-33);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, -33, -1}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, -33, -1}, asm.build());
}
}
@@ -125,7 +125,7 @@ public class RowAssemblerTest {
asm.appendShort((short)33);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build());
}
}
@@ -150,7 +150,7 @@ public class RowAssemblerTest {
asm.appendShort((short)33);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build());
}
}
@@ -184,7 +184,7 @@ public class RowAssemblerTest {
asm.appendShort((short)33);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 33, 0}, asm.build());
}
}
@@ -236,7 +236,7 @@ public class RowAssemblerTest {
asm.appendShort((short)1133);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 109, 4}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 109, 4}, asm.build());
}
}
@@ -288,7 +288,7 @@ public class RowAssemblerTest {
asm.appendInt(33);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0}, asm.build());
}
}
@@ -322,7 +322,7 @@ public class RowAssemblerTest {
asm.appendByte((byte)33);
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 33}, asm.build());
+ assertRowBytesEquals(new byte[] {42, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 33}, asm.build());
}
}
@@ -358,7 +358,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build());
+ 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());
}
}
@@ -385,7 +385,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build());
+ 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());
}
}
@@ -419,7 +419,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build());
+ 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());
}
}
@@ -444,7 +444,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build());
+ 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());
}
}
@@ -496,7 +496,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build());
+ 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());
}
}
@@ -530,7 +530,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build());
+ 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());
}
}
@@ -582,7 +582,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121}, asm.build());
+ 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());
}
}
@@ -616,7 +616,7 @@ public class RowAssemblerTest {
asm.appendString("key");
- assertRowBytesEquals(new byte[] {42, 0, 2, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 9, 0, 107, 101, 121,}, asm.build());
+ 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());
}
}