From 5e58c52445980dc9ca7f577ada73a8ab422ae25b Mon Sep 17 00:00:00 2001 From: tianchen Date: Wed, 26 Jun 2019 10:54:10 +0800 Subject: [PATCH 1/5] Implement a common interface for int vectors --- .../apache/arrow/vector/BaseIntVector.java | 29 +++++++++++ .../org/apache/arrow/vector/BigIntVector.java | 7 ++- .../org/apache/arrow/vector/IntVector.java | 7 ++- .../apache/arrow/vector/SmallIntVector.java | 7 ++- .../apache/arrow/vector/TinyIntVector.java | 7 ++- .../org/apache/arrow/vector/UInt1Vector.java | 7 ++- .../org/apache/arrow/vector/UInt2Vector.java | 7 ++- .../org/apache/arrow/vector/UInt4Vector.java | 7 ++- .../org/apache/arrow/vector/UInt8Vector.java | 7 ++- .../vector/dictionary/DictionaryEncoder.java | 50 ++++++------------- 10 files changed, 93 insertions(+), 42 deletions(-) create mode 100644 java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java new file mode 100644 index 00000000000..15a5a03d78b --- /dev/null +++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.arrow.vector; + +/** + * Interface for all int type vectors. + */ +public interface BaseIntVector extends ValueVector { + + /** + * set the encoded value from a {@link org.apache.arrow.vector.dictionary.Dictionary}. + */ + void setEncodedValue(int index, Object value); +} diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java index 65ce53e2581..69d5f8f3e36 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java @@ -35,7 +35,7 @@ * integer values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class BigIntVector extends BaseFixedWidthVector { +public class BigIntVector extends BaseFixedWidthVector implements BaseIntVector { public static final byte TYPE_WIDTH = 8; private final FieldReader reader; @@ -339,6 +339,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((BigIntVector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (long) value); + } + private class TransferImpl implements TransferPair { BigIntVector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java index 3a8207f0abc..d8ef9df3924 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java @@ -35,7 +35,7 @@ * integer values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class IntVector extends BaseFixedWidthVector { +public class IntVector extends BaseFixedWidthVector implements BaseIntVector { public static final byte TYPE_WIDTH = 4; private final FieldReader reader; @@ -343,6 +343,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((IntVector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (int) value); + } + private class TransferImpl implements TransferPair { IntVector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java index dddc46fef2b..3c1355f3bf1 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java @@ -35,7 +35,7 @@ * short values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class SmallIntVector extends BaseFixedWidthVector { +public class SmallIntVector extends BaseFixedWidthVector implements BaseIntVector { public static final byte TYPE_WIDTH = 2; private final FieldReader reader; @@ -370,6 +370,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((SmallIntVector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (int) value); + } + private class TransferImpl implements TransferPair { SmallIntVector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java index df40b6e57cc..112808e9f95 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java @@ -35,7 +35,7 @@ * byte values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class TinyIntVector extends BaseFixedWidthVector { +public class TinyIntVector extends BaseFixedWidthVector implements BaseIntVector { public static final byte TYPE_WIDTH = 1; private final FieldReader reader; @@ -370,6 +370,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((TinyIntVector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (int) value); + } + private class TransferImpl implements TransferPair { TinyIntVector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java index c5133344fe8..2bac683943e 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java @@ -35,7 +35,7 @@ * integer values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class UInt1Vector extends BaseFixedWidthVector { +public class UInt1Vector extends BaseFixedWidthVector implements BaseIntVector { private static final byte TYPE_WIDTH = 1; private final FieldReader reader; @@ -329,6 +329,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((UInt1Vector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (int) value); + } + private class TransferImpl implements TransferPair { UInt1Vector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java index 631050d57a2..9adcd00350f 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java @@ -35,7 +35,7 @@ * integer values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class UInt2Vector extends BaseFixedWidthVector { +public class UInt2Vector extends BaseFixedWidthVector implements BaseIntVector { private static final byte TYPE_WIDTH = 2; private final FieldReader reader; @@ -308,6 +308,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((UInt2Vector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (int) value); + } + private class TransferImpl implements TransferPair { UInt2Vector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java index 84e6b8f3788..43865e4e14d 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java @@ -35,7 +35,7 @@ * integer values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class UInt4Vector extends BaseFixedWidthVector { +public class UInt4Vector extends BaseFixedWidthVector implements BaseIntVector { private static final byte TYPE_WIDTH = 4; private final FieldReader reader; @@ -301,6 +301,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((UInt4Vector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (int) value); + } + private class TransferImpl implements TransferPair { UInt4Vector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java index 0f8da381ee5..57c6af08290 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java @@ -37,7 +37,7 @@ * integer values which could be null. A validity buffer (bit vector) is * maintained to track which elements in the vector are null. */ -public class UInt8Vector extends BaseFixedWidthVector { +public class UInt8Vector extends BaseFixedWidthVector implements BaseIntVector { private static final byte TYPE_WIDTH = 8; private final FieldReader reader; @@ -302,6 +302,11 @@ public TransferPair makeTransferPair(ValueVector to) { return new TransferImpl((UInt8Vector) to); } + @Override + public void setEncodedValue(int index, Object value) { + this.setSafe(index, (long) value); + } + private class TransferImpl implements TransferPair { UInt8Vector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java b/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java index 1c2a0aced17..99bb2338f3b 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java @@ -17,12 +17,10 @@ package org.apache.arrow.vector.dictionary; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import org.apache.arrow.vector.BaseIntVector; import org.apache.arrow.vector.FieldVector; import org.apache.arrow.vector.ValueVector; import org.apache.arrow.vector.types.Types.MinorType; @@ -61,43 +59,27 @@ public static ValueVector encode(ValueVector vector, Dictionary dictionary) { Field indexField = new Field(valueField.getName(), indexFieldType, null); // vector to hold our indices (dictionary encoded values) - FieldVector indices = indexField.createVector(vector.getAllocator()); - - // use reflection to pull out the set method - // TODO implement a common interface for int vectors - Method setter = null; - for (Class c : Arrays.asList(int.class, long.class)) { - try { - setter = indices.getClass().getMethod("setSafe", int.class, c); - break; - } catch (NoSuchMethodException e) { - // ignore - } + FieldVector createdVector = indexField.createVector(vector.getAllocator()); + if (! (createdVector instanceof BaseIntVector)) { + throw new IllegalArgumentException("Dictionary encoding does not have a valid int type:" + + createdVector.getClass()); } - if (setter == null) { - throw new IllegalArgumentException("Dictionary encoding does not have a valid int type:" + indices.getClass()); - } - - int count = vector.getValueCount(); + BaseIntVector indices = (BaseIntVector) createdVector; indices.allocateNew(); - try { - for (int i = 0; i < count; i++) { - Object value = vector.getObject(i); - if (value != null) { // if it's null leave it null - // note: this may fail if value was not included in the dictionary - Object encoded = lookUps.get(value); - if (encoded == null) { - throw new IllegalArgumentException("Dictionary encoding not defined for value:" + value); - } - setter.invoke(indices, i, encoded); + int count = vector.getValueCount(); + + for (int i = 0; i < count; i++) { + Object value = vector.getObject(i); + if (value != null) { // if it's null leave it null + // note: this may fail if value was not included in the dictionary + Object encoded = lookUps.get(value); + if (encoded == null) { + throw new IllegalArgumentException("Dictionary encoding not defined for value:" + value); } + indices.setEncodedValue(i, encoded); } - } catch (IllegalAccessException e) { - throw new RuntimeException("IllegalAccessException invoking vector mutator set():", e); - } catch (InvocationTargetException e) { - throw new RuntimeException("InvocationTargetException invoking vector mutator set():", e.getCause()); } indices.setValueCount(count); From a6f351f325df67d061804f78fd36d7ce61f166c3 Mon Sep 17 00:00:00 2001 From: tianchen Date: Wed, 26 Jun 2019 17:06:27 +0800 Subject: [PATCH 2/5] resolve comments --- .../src/main/java/org/apache/arrow/vector/BaseIntVector.java | 2 +- .../src/main/java/org/apache/arrow/vector/BigIntVector.java | 2 +- .../src/main/java/org/apache/arrow/vector/IntVector.java | 4 ++-- .../src/main/java/org/apache/arrow/vector/SmallIntVector.java | 4 ++-- .../src/main/java/org/apache/arrow/vector/TinyIntVector.java | 4 ++-- .../src/main/java/org/apache/arrow/vector/UInt1Vector.java | 4 ++-- .../src/main/java/org/apache/arrow/vector/UInt2Vector.java | 4 ++-- .../src/main/java/org/apache/arrow/vector/UInt4Vector.java | 4 ++-- .../src/main/java/org/apache/arrow/vector/UInt8Vector.java | 4 ++-- .../org/apache/arrow/vector/dictionary/DictionaryEncoder.java | 2 +- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java index 15a5a03d78b..74387de9486 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java @@ -25,5 +25,5 @@ public interface BaseIntVector extends ValueVector { /** * set the encoded value from a {@link org.apache.arrow.vector.dictionary.Dictionary}. */ - void setEncodedValue(int index, Object value); + void setEncodedValue(int index, int value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java index 69d5f8f3e36..782cc41a323 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java @@ -340,7 +340,7 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { + public void setEncodedValue(int index, int value) { this.setSafe(index, (long) value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java index d8ef9df3924..5255d87a2ed 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java @@ -344,8 +344,8 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { - this.setSafe(index, (int) value); + public void setEncodedValue(int index, int value) { + this.setSafe(index, value); } private class TransferImpl implements TransferPair { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java index 3c1355f3bf1..f1ad9aa97b0 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java @@ -371,8 +371,8 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { - this.setSafe(index, (int) value); + public void setEncodedValue(int index, int value) { + this.setSafe(index, value); } private class TransferImpl implements TransferPair { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java index 112808e9f95..ffdb2c0c48e 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java @@ -371,8 +371,8 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { - this.setSafe(index, (int) value); + public void setEncodedValue(int index, int value) { + this.setSafe(index, value); } private class TransferImpl implements TransferPair { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java index 2bac683943e..b7ae1b565d2 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java @@ -330,8 +330,8 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { - this.setSafe(index, (int) value); + public void setEncodedValue(int index, int value) { + this.setSafe(index, value); } private class TransferImpl implements TransferPair { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java index 9adcd00350f..25e003f7207 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java @@ -309,8 +309,8 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { - this.setSafe(index, (int) value); + public void setEncodedValue(int index, int value) { + this.setSafe(index, value); } private class TransferImpl implements TransferPair { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java index 43865e4e14d..b2eadc2a22b 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java @@ -302,8 +302,8 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { - this.setSafe(index, (int) value); + public void setEncodedValue(int index, int value) { + this.setSafe(index, value); } private class TransferImpl implements TransferPair { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java index 57c6af08290..a1b3bdabdee 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java @@ -303,8 +303,8 @@ public TransferPair makeTransferPair(ValueVector to) { } @Override - public void setEncodedValue(int index, Object value) { - this.setSafe(index, (long) value); + public void setEncodedValue(int index, int value) { + this.setSafe(index, value); } private class TransferImpl implements TransferPair { diff --git a/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java b/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java index 99bb2338f3b..698191c2ca2 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java @@ -74,7 +74,7 @@ public static ValueVector encode(ValueVector vector, Dictionary dictionary) { Object value = vector.getObject(i); if (value != null) { // if it's null leave it null // note: this may fail if value was not included in the dictionary - Object encoded = lookUps.get(value); + Integer encoded = lookUps.get(value); if (encoded == null) { throw new IllegalArgumentException("Dictionary encoding not defined for value:" + value); } From b97cbef81b7cf99049a0ee35479d968f0d782bc9 Mon Sep 17 00:00:00 2001 From: tianchen Date: Wed, 26 Jun 2019 17:07:33 +0800 Subject: [PATCH 3/5] fix --- .../src/main/java/org/apache/arrow/vector/BigIntVector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java index 782cc41a323..416ffd53fd3 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java @@ -341,7 +341,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { - this.setSafe(index, (long) value); + this.setSafe(index, value); } private class TransferImpl implements TransferPair { From 02192825415133612e8652ebd89c7cc43626bf2c Mon Sep 17 00:00:00 2001 From: tianchen Date: Fri, 28 Jun 2019 15:07:55 +0800 Subject: [PATCH 4/5] fix overflow --- .../main/java/org/apache/arrow/vector/SmallIntVector.java | 2 ++ .../main/java/org/apache/arrow/vector/TinyIntVector.java | 2 ++ .../src/main/java/org/apache/arrow/vector/UInt1Vector.java | 6 +++++- .../src/main/java/org/apache/arrow/vector/UInt2Vector.java | 2 ++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java index f1ad9aa97b0..0e378ce1fba 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java @@ -20,6 +20,7 @@ import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.complex.impl.SmallIntReaderImpl; import org.apache.arrow.vector.complex.reader.FieldReader; import org.apache.arrow.vector.holders.NullableSmallIntHolder; @@ -372,6 +373,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { + Preconditions.checkArgument(value <= Short.MAX_VALUE, "value is overflow:" + value); this.setSafe(index, value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java index ffdb2c0c48e..6b0324a0120 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java @@ -20,6 +20,7 @@ import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.complex.impl.TinyIntReaderImpl; import org.apache.arrow.vector.complex.reader.FieldReader; import org.apache.arrow.vector.holders.NullableTinyIntHolder; @@ -372,6 +373,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { + Preconditions.checkArgument(value <= Byte.MAX_VALUE, "value is overflow:" + value); this.setSafe(index, value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java index b7ae1b565d2..bbc04b9590e 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java @@ -20,6 +20,7 @@ import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.complex.impl.UInt1ReaderImpl; import org.apache.arrow.vector.complex.reader.FieldReader; import org.apache.arrow.vector.holders.NullableUInt1Holder; @@ -150,7 +151,7 @@ public void copyFrom(int fromIndex, int thisIndex, UInt1Vector from) { } /** - * Identical to {@link #copyFrom()} but reallocates buffer if index is larger + * Identical to {@link #copyFrom(int, int, UInt1Vector)} but reallocates buffer if index is larger * than capacity. */ public void copyFromSafe(int fromIndex, int thisIndex, UInt1Vector from) { @@ -331,9 +332,12 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { + Preconditions.checkArgument(value <= 0xFF, "value is overflow:" + value); this.setSafe(index, value); } + + private class TransferImpl implements TransferPair { UInt1Vector to; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java index 25e003f7207..0b9ed8f203d 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java @@ -20,6 +20,7 @@ import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.complex.impl.UInt2ReaderImpl; import org.apache.arrow.vector.complex.reader.FieldReader; import org.apache.arrow.vector.holders.NullableUInt2Holder; @@ -310,6 +311,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { + Preconditions.checkArgument(value <= 0xFFFF, "value is overflow:" + value); this.setSafe(index, value); } From 37ec9cc482f6168e03e0cd63c493cb1d4c3bf259 Mon Sep 17 00:00:00 2001 From: tianchen Date: Sat, 29 Jun 2019 15:24:11 +0800 Subject: [PATCH 5/5] resolve comments --- .../src/main/java/org/apache/arrow/vector/SmallIntVector.java | 2 +- .../src/main/java/org/apache/arrow/vector/TinyIntVector.java | 2 +- .../src/main/java/org/apache/arrow/vector/UInt1Vector.java | 2 +- .../src/main/java/org/apache/arrow/vector/UInt2Vector.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java index 0e378ce1fba..2d3f78f9766 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java @@ -373,7 +373,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { - Preconditions.checkArgument(value <= Short.MAX_VALUE, "value is overflow:" + value); + Preconditions.checkArgument(value <= Short.MAX_VALUE, "value is overflow: %s", value); this.setSafe(index, value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java index 6b0324a0120..66f7ca35d01 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java @@ -373,7 +373,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { - Preconditions.checkArgument(value <= Byte.MAX_VALUE, "value is overflow:" + value); + Preconditions.checkArgument(value <= Byte.MAX_VALUE, "value is overflow: %s", value); this.setSafe(index, value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java index bbc04b9590e..85d48ad9e37 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java @@ -332,7 +332,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { - Preconditions.checkArgument(value <= 0xFF, "value is overflow:" + value); + Preconditions.checkArgument(value <= 0xFF, "value is overflow: %s", value); this.setSafe(index, value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java index 0b9ed8f203d..dbea9f82b6e 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java @@ -311,7 +311,7 @@ public TransferPair makeTransferPair(ValueVector to) { @Override public void setEncodedValue(int index, int value) { - Preconditions.checkArgument(value <= 0xFFFF, "value is overflow:" + value); + Preconditions.checkArgument(value <= Character.MAX_VALUE, "value is overflow: %s", value); this.setSafe(index, value); }