Github user viirya commented on a diff in the pull request:
https://github.com/apache/spark/pull/19230#discussion_r138799219
--- Diff:
sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/ColumnVector.java
---
@@ -99,73 +100,18 @@ public ArrayData copy() {
@Override
public Object[] array() {
DataType dt = data.dataType();
+ Function<Integer, Object> getAtMethod = (Function<Integer, Object>)
i -> get(i, dt);
Object[] list = new Object[length];
-
- if (dt instanceof BooleanType) {
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = data.getBoolean(offset + i);
- }
- }
- } else if (dt instanceof ByteType) {
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = data.getByte(offset + i);
- }
- }
- } else if (dt instanceof ShortType) {
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = data.getShort(offset + i);
- }
- }
- } else if (dt instanceof IntegerType) {
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = data.getInt(offset + i);
- }
- }
- } else if (dt instanceof FloatType) {
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = data.getFloat(offset + i);
- }
- }
- } else if (dt instanceof DoubleType) {
+ try {
for (int i = 0; i < length; i++) {
if (!data.isNullAt(offset + i)) {
- list[i] = data.getDouble(offset + i);
+ list[i] = getAtMethod.call(i);
}
}
- } else if (dt instanceof LongType) {
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = data.getLong(offset + i);
- }
- }
- } else if (dt instanceof DecimalType) {
- DecimalType decType = (DecimalType)dt;
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = getDecimal(i, decType.precision(), decType.scale());
- }
- }
- } else if (dt instanceof StringType) {
- for (int i = 0; i < length; i++) {
- if (!data.isNullAt(offset + i)) {
- list[i] = getUTF8String(i).toString();
--- End diff --
This looks suspicious. Why we get `String` before? Seems we should get
`UTF8String`.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]