You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ja...@apache.org on 2019/07/04 11:17:31 UTC

[flink] branch master updated: [FLINK-13073][table-blink-runtime] BinaryRow in Blink runtime has wrong FIRST_BYTE_ZERO mask

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

jark pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 61119b8  [FLINK-13073][table-blink-runtime] BinaryRow in Blink runtime has wrong FIRST_BYTE_ZERO mask
61119b8 is described below

commit 61119b84288e2707238d33469bcd7131d0da3514
Author: LouisXu <xu...@163.com>
AuthorDate: Wed Jul 3 14:26:23 2019 +0800

    [FLINK-13073][table-blink-runtime] BinaryRow in Blink runtime has wrong FIRST_BYTE_ZERO mask
    
    This closes #8961
---
 .../java/org/apache/flink/table/dataformat/BinaryRow.java   |  2 +-
 .../org/apache/flink/table/dataformat/BinaryRowTest.java    | 13 +++++--------
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/dataformat/BinaryRow.java b/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/dataformat/BinaryRow.java
index 4f8e9ee..358b1fc 100644
--- a/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/dataformat/BinaryRow.java
+++ b/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/dataformat/BinaryRow.java
@@ -55,7 +55,7 @@ import static org.apache.flink.util.Preconditions.checkArgument;
 public final class BinaryRow extends BinaryFormat implements BaseRow {
 
 	public static final boolean LITTLE_ENDIAN = (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN);
-	private static final long FIRST_BYTE_ZERO = LITTLE_ENDIAN ? 0xFFF0 : 0x0FFF;
+	private static final long FIRST_BYTE_ZERO = LITTLE_ENDIAN ? ~0xFFL : ~(0xFFL << 56L);
 	public static final int HEADER_SIZE_IN_BITS = 8;
 
 	public static int calculateBitSetWidthInBytes(int arity) {
diff --git a/flink-table/flink-table-runtime-blink/src/test/java/org/apache/flink/table/dataformat/BinaryRowTest.java b/flink-table/flink-table-runtime-blink/src/test/java/org/apache/flink/table/dataformat/BinaryRowTest.java
index 2b88c25..0be17dd 100644
--- a/flink-table/flink-table-runtime-blink/src/test/java/org/apache/flink/table/dataformat/BinaryRowTest.java
+++ b/flink-table/flink-table-runtime-blink/src/test/java/org/apache/flink/table/dataformat/BinaryRowTest.java
@@ -289,16 +289,13 @@ public class BinaryRowTest {
 			assertTrue(row.anyNull());
 		}
 
-		{
-			BinaryRow row = new BinaryRow(80);
+		int numFields = 80;
+		for (int i = 0; i < numFields; i++) {
+			BinaryRow row = new BinaryRow(numFields);
 			BinaryRowWriter writer = new BinaryRowWriter(row);
+			row.setHeader((byte) 17);
 			assertFalse(row.anyNull());
-
-			writer.setNullAt(3);
-			assertTrue(row.anyNull());
-
-			writer = new BinaryRowWriter(row);
-			writer.setNullAt(65);
+			writer.setNullAt(i);
 			assertTrue(row.anyNull());
 		}
 	}