You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ju...@apache.org on 2017/04/25 18:25:07 UTC
arrow git commit: ARROW-895: Fix lastSet in fillEmpties() and
copyFrom()
Repository: arrow
Updated Branches:
refs/heads/master f00e2ab59 -> 1a73c352d
ARROW-895: Fix lastSet in fillEmpties() and copyFrom()
Author: Steven Phillips <st...@dremio.com>
Closes #601 from StevenMPhillips/fillEmpties4 and squashes the following commits:
4707673 [Steven Phillips] ARROW-895: Fix lastSet in fillEmpties() and copyFrom()
Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/1a73c352
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/1a73c352
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/1a73c352
Branch: refs/heads/master
Commit: 1a73c352d023dfa0e8aca4c16f3e421745524ea8
Parents: f00e2ab
Author: Steven Phillips <st...@dremio.com>
Authored: Tue Apr 25 11:25:03 2017 -0700
Committer: Julien Le Dem <ju...@apache.org>
Committed: Tue Apr 25 11:25:03 2017 -0700
----------------------------------------------------------------------
.../codegen/templates/NullableValueVectors.java | 5 ++-
.../apache/arrow/vector/TestValueVector.java | 38 ++++++++++++++++++++
2 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/arrow/blob/1a73c352/java/vector/src/main/codegen/templates/NullableValueVectors.java
----------------------------------------------------------------------
diff --git a/java/vector/src/main/codegen/templates/NullableValueVectors.java b/java/vector/src/main/codegen/templates/NullableValueVectors.java
index 178d5bd..31adc2b 100644
--- a/java/vector/src/main/codegen/templates/NullableValueVectors.java
+++ b/java/vector/src/main/codegen/templates/NullableValueVectors.java
@@ -393,6 +393,7 @@ public final class ${className} extends BaseDataValueVector implements <#if type
if (!fromAccessor.isNull(fromIndex)) {
mutator.set(thisIndex, fromAccessor.get(fromIndex));
}
+ <#if type.major == "VarLen">mutator.lastSet = thisIndex;</#if>
}
public void copyFromSafe(int fromIndex, int thisIndex, ${valuesName} from){
@@ -401,6 +402,7 @@ public final class ${className} extends BaseDataValueVector implements <#if type
</#if>
values.copyFromSafe(fromIndex, thisIndex, from);
bits.getMutator().setSafeToOne(thisIndex);
+ <#if type.major == "VarLen">mutator.lastSet = thisIndex;</#if>
}
public void copyFromSafe(int fromIndex, int thisIndex, ${className} from){
@@ -409,6 +411,7 @@ public final class ${className} extends BaseDataValueVector implements <#if type
</#if>
bits.copyFromSafe(fromIndex, thisIndex, from.bits);
values.copyFromSafe(fromIndex, thisIndex, from.values);
+ <#if type.major == "VarLen">mutator.lastSet = thisIndex;</#if>
}
public final class Accessor extends BaseDataValueVector.BaseAccessor <#if type.major = "VarLen">implements VariableWidthVector.VariableWidthAccessor</#if> {
@@ -532,7 +535,7 @@ public final class ${className} extends BaseDataValueVector implements <#if type
while(index > bits.getValueCapacity()) {
bits.reAlloc();
}
- lastSet = index;
+ lastSet = index - 1;
}
@Override
http://git-wip-us.apache.org/repos/asf/arrow/blob/1a73c352/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
----------------------------------------------------------------------
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
index e6e49ab..63543b0 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
@@ -21,6 +21,7 @@ import static org.apache.arrow.vector.TestUtils.newNullableVarCharVector;
import static org.apache.arrow.vector.TestUtils.newVector;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.nio.charset.Charset;
@@ -473,9 +474,46 @@ public class TestValueVector {
vector.getMutator().setSafe(4094, "hello".getBytes(), 0, 5);
vector.getMutator().setValueCount(4095);
+
assertEquals(4096 * 4, vector.getFieldBuffers().get(1).capacity());
}
}
+ @Test
+ public void testCopyFromWithNulls() {
+ try (final NullableVarCharVector vector = newVector(NullableVarCharVector.class, EMPTY_SCHEMA_PATH, MinorType.VARCHAR, allocator);
+ final NullableVarCharVector vector2 = newVector(NullableVarCharVector.class, EMPTY_SCHEMA_PATH, MinorType.VARCHAR, allocator)) {
+ vector.allocateNew();
+
+ for (int i = 0; i < 4095; i++) {
+ if (i % 3 == 0) {
+ continue;
+ }
+ byte[] b = Integer.toString(i).getBytes();
+ vector.getMutator().setSafe(i, b, 0, b.length);
+ }
+
+ vector.getMutator().setValueCount(4095);
+
+ vector2.allocateNew();
+
+ for (int i = 0; i < 4095; i++) {
+ vector2.copyFromSafe(i, i, vector);
+ }
+
+ vector2.getMutator().setValueCount(4095);
+
+ for (int i = 0; i < 4095; i++) {
+ if (i % 3 == 0) {
+ assertNull(vector2.getAccessor().getObject(i));
+ } else {
+ assertEquals(Integer.toString(i), vector2.getAccessor().getObject(i).toString());
+ }
+
+ }
+
+
+ }
+ }
}