Repository: hive Updated Branches: refs/heads/master a6b88d9d2 -> 148807a98
HIVE-17966: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveArrayInspector - Review (BELUGA BEHR, reviewed by Aihua Xu) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/aa45b021 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/aa45b021 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/aa45b021 Branch: refs/heads/master Commit: aa45b021f8f2e65afcb3134ea79c91db86668bcd Parents: a6b88d9 Author: Aihua Xu <aihu...@apache.org> Authored: Mon Jan 8 10:44:16 2018 -0800 Committer: Aihua Xu <aihu...@apache.org> Committed: Mon Jan 8 10:44:16 2018 -0800 ---------------------------------------------------------------------- .../serde/ParquetHiveArrayInspector.java | 41 ++++++++------------ 1 file changed, 16 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/aa45b021/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveArrayInspector.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveArrayInspector.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveArrayInspector.java index 55614a3..c4a286d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveArrayInspector.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveArrayInspector.java @@ -14,6 +14,7 @@ package org.apache.hadoop.hive.ql.io.parquet.serde; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -69,7 +70,7 @@ public class ParquetHiveArrayInspector implements SettableListObjectInspector { } if (data instanceof List) { - return ((List)data).get(index); + return ((List<?>)data).get(index); } throw new UnsupportedOperationException("Cannot inspect " + data.getClass().getCanonicalName()); @@ -91,7 +92,7 @@ public class ParquetHiveArrayInspector implements SettableListObjectInspector { } if (data instanceof List) { - return ((List)data).size(); + return ((List<?>)data).size(); } throw new UnsupportedOperationException("Cannot inspect " + data.getClass().getCanonicalName()); @@ -108,13 +109,7 @@ public class ParquetHiveArrayInspector implements SettableListObjectInspector { if (array == null) { return null; } - - final List<Writable> list = new ArrayList<Writable>(array.length); - for (final Writable obj : array) { - list.add(obj); - } - - return list; + return new ArrayList<Writable>(Arrays.asList(array)); } if (data instanceof List) { @@ -126,29 +121,27 @@ public class ParquetHiveArrayInspector implements SettableListObjectInspector { @Override public Object create(final int size) { - final ArrayList<Object> result = new ArrayList<Object>(size); - for (int i = 0; i < size; ++i) { - result.add(null); - } - return result; + return new ArrayList<Object>(Arrays.asList(new Object[size])); } @Override + @SuppressWarnings("unchecked") public Object set(final Object list, final int index, final Object element) { - final ArrayList l = (ArrayList) list; + final List<Object> l = (List<Object>) list; l.set(index, element); return list; } @Override + @SuppressWarnings("unchecked") public Object resize(final Object list, final int newSize) { - final ArrayList l = (ArrayList) list; - l.ensureCapacity(newSize); - while (l.size() < newSize) { - l.add(null); - } - while (l.size() > newSize) { - l.remove(l.size() - 1); + final List<Object> l = (List<Object>) list; + final int deltaSize = newSize - l.size(); + if (deltaSize > 0) { + l.addAll(Arrays.asList(new Object[deltaSize])); + } else { + int size = l.size(); + l.subList(size + deltaSize, size).clear(); } return list; } @@ -167,8 +160,6 @@ public class ParquetHiveArrayInspector implements SettableListObjectInspector { @Override public int hashCode() { - int hash = 3; - hash = 29 * hash + (this.arrayElementInspector != null ? this.arrayElementInspector.hashCode() : 0); - return hash; + return (this.arrayElementInspector != null ? this.arrayElementInspector.hashCode() : 0); } }