diff --git common/src/java/org/apache/hadoop/hive/common/io/NonSyncByteArrayOutputStream.java common/src/java/org/apache/hadoop/hive/common/io/NonSyncByteArrayOutputStream.java index a9f5ed6..b69d3bb 100644 --- common/src/java/org/apache/hadoop/hive/common/io/NonSyncByteArrayOutputStream.java +++ common/src/java/org/apache/hadoop/hive/common/io/NonSyncByteArrayOutputStream.java @@ -43,6 +43,10 @@ public int getLength() { return count; } + public void setPosition(int newPosition) { + count = newPosition; + } + /** * {@inheritDoc} */ diff --git common/src/java/org/apache/hadoop/hive/conf/HiveConf.java common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 59b66cd..30f8659 100644 --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -2206,7 +2206,10 @@ public void setSparkConfigUpdated(boolean isSparkConfigUpdated) { "Exceeding this will trigger a flush irrelevant of memory pressure condition."), HIVE_VECTORIZATION_GROUPBY_FLUSH_PERCENT("hive.vectorized.groupby.flush.percent", (float) 0.1, "Percent of entries in the group by aggregation hash flushed when the memory threshold is exceeded."), - + HIVE_VECTORIZATION_REDUCESINK_NEW_ENABLED("hive.vectorized.execution.reducesink.new.enabled", true, + "This flag should be set to true to enable the new vectorization\n" + + "of queries using ReduceSink.\ni" + + "The default value is true."), HIVE_TYPE_CHECK_ON_INSERT("hive.typecheck.on.insert", true, "This property has been extended to control " + "whether to check, convert, and normalize partition value to conform to its column type in " + "partition operations including but not limited to insert, such as alter, describe etc."), diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java index b6fec61..7282228 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java @@ -1374,4 +1374,12 @@ public void removeParents() { removeParent(parent); } } + + public boolean getIsReduceSink() { + return false; + } + + public String getReduceOutputName() { + return null; + } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java index 67e5c2a..4828d70 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java @@ -119,12 +119,11 @@ public static void setChildrenCollector(List> c return; } for (Operator op : childOperators) { - if(op.getName().equals(ReduceSinkOperator.getOperatorName())) { - ReduceSinkOperator rs = ((ReduceSinkOperator)op); - if (outMap.containsKey(rs.getConf().getOutputName())) { - LOG.info("Setting output collector: " + rs + " --> " - + rs.getConf().getOutputName()); - rs.setOutputCollector(outMap.get(rs.getConf().getOutputName())); + if (op.getIsReduceSink()) { + String outputName = op.getReduceOutputName(); + if (outMap.containsKey(outputName)) { + LOG.info("Setting output collector: " + op + " --> " + outputName); + op.setOutputCollector(outMap.get(outputName)); } } else { setChildrenCollector(op.getChildOperators(), outMap); diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java index e33c1d4..ef5ee95 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java @@ -614,6 +614,16 @@ public void setInputAliases(String[] inputAliases) { } @Override + public boolean getIsReduceSink() { + return true; + } + + @Override + public String getReduceOutputName() { + return conf.getOutputName(); + } + + @Override public void setOutputCollector(OutputCollector _out) { this.out = _out; } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HashTableUtil.java ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HashTableUtil.java new file mode 100644 index 0000000..55d1e11 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HashTableUtil.java @@ -0,0 +1,72 @@ +/** + * 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.hadoop.hive.ql.exec.persistence; + +import org.apache.hadoop.hive.serde2.WriteBuffers; + +/* + * + */ +public class HashTableUtil { + + public static int calculateLongHashCode(long key) { + + key = (~key) + (key << 21); // key = (key << 21) - key - 1; + key = key ^ (key >>> 24); + key = (key + (key << 3)) + (key << 8); // key * 265 + key = key ^ (key >>> 14); + key = (key + (key << 2)) + (key << 4); // key * 21 + key = key ^ (key >>> 28); + key = key + (key << 31); + + return (int) key; + } + + public static void calculateLongArrayHashCodes(long[] longs, int[] hashCodes, final int count) { + long key; + for (int v = 0; v < count; v++) { + + key = longs[v]; + + // Hash code logic from calculateLongHashCode. + key = (~key) + (key << 21); // key = (key << 21) - key - 1; + key = key ^ (key >>> 24); + key = (key + (key << 3)) + (key << 8); // key * 265 + key = key ^ (key >>> 14); + key = (key + (key << 2)) + (key << 4); // key * 21 + key = key ^ (key >>> 28); + key = key + (key << 31); + hashCodes[v] = (int) key; + } + } + + public static int calculateBytesHashCode(byte[] keyBytes, int keyStart, int keyLength) { + return WriteBuffers.murmurHash(keyBytes, keyStart, keyLength); + } + + public static void calculateBytesArrayHashCodes(byte[][] bytesArrays, + int[] starts, int[] lengths, int[] valueSelected, int[] hashCodes, final int count) { + + for (int i = 0; i < count; i++) { + int batchIndex = valueSelected[i]; + hashCodes[i] = WriteBuffers.murmurHash(bytesArrays[batchIndex], starts[batchIndex], + lengths[batchIndex]); + } + } +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java index 41cf953..aff5765 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java @@ -94,9 +94,9 @@ private boolean vectorized = false; - private VectorDeserializeRow keyBinarySortableDeserializeToRow; + private VectorDeserializeRow keyBinarySortableDeserializeToRow; - private VectorDeserializeRow valueLazyBinaryDeserializeToRow; + private VectorDeserializeRow valueLazyBinaryDeserializeToRow; private VectorizedRowBatch batch; @@ -184,7 +184,7 @@ void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyT BinarySortableSerDe binarySortableSerDe = (BinarySortableSerDe) inputKeyDeserializer; keyBinarySortableDeserializeToRow = - new VectorDeserializeRow( + new VectorDeserializeRow( new BinarySortableDeserializeRead( VectorizedBatchUtil.primitiveTypeInfosFromStructObjectInspector( keyStructInspector), @@ -194,7 +194,7 @@ void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyT final int valuesSize = valueStructInspectors.getAllStructFieldRefs().size(); if (valuesSize > 0) { valueLazyBinaryDeserializeToRow = - new VectorDeserializeRow( + new VectorDeserializeRow( new LazyBinaryDeserializeRead( VectorizedBatchUtil.primitiveTypeInfosFromStructObjectInspector( valueStructInspectors))); @@ -412,6 +412,10 @@ private void processVectorGroup(BytesWritable keyWritable, // a data buffer. byte[] keyBytes = keyWritable.getBytes(); int keyLength = keyWritable.getLength(); + + // l4j.info("ReduceRecordSource processVectorGroup keyBytes " + keyLength + " " + + // VectorizedBatchUtil.displayBytes(keyBytes, 0, keyLength)); + keyBinarySortableDeserializeToRow.setBytes(keyBytes, 0, keyLength); keyBinarySortableDeserializeToRow.deserializeByValue(batch, 0); for(int i = 0; i < firstValueColumnOffset; i++) { @@ -426,6 +430,10 @@ private void processVectorGroup(BytesWritable keyWritable, BytesWritable valueWritable = (BytesWritable) value; byte[] valueBytes = valueWritable.getBytes(); int valueLength = valueWritable.getLength(); + + // l4j.info("ReduceRecordSource processVectorGroup valueBytes " + valueLength + " " + + // VectorizedBatchUtil.displayBytes(valueBytes, 0, valueLength)); + valueLazyBinaryDeserializeToRow.setBytes(valueBytes, 0, valueLength); valueLazyBinaryDeserializeToRow.deserializeByValue(batch, rowIdx); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java index e621745..4d86db6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java @@ -31,15 +31,10 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.fast.DeserializeRead; -import org.apache.hadoop.hive.serde2.objectinspector.StructField; -import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory; import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo; -import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; -import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo; import org.apache.hive.common.util.DateUtils; @@ -53,20 +48,21 @@ * field-by-field from a serialization format into the primitive values of the VectorizedRowBatch. */ -public class VectorDeserializeRow { +public final class VectorDeserializeRow { + private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(VectorDeserializeRow.class); - private DeserializeRead deserializeRead; + private T deserializeRead; - private Reader[] readersByValue; - private Reader[] readersByReference; - private PrimitiveTypeInfo[] primitiveTypeInfos; + private Reader[] readersByValue; + private Reader[] readersByReference; + private TypeInfo[] typeInfos; - public VectorDeserializeRow(DeserializeRead deserializeRead) { + public VectorDeserializeRow(T deserializeRead) { this(); this.deserializeRead = deserializeRead; - primitiveTypeInfos = deserializeRead.primitiveTypeInfos(); + typeInfos = deserializeRead.typeInfos(); } @@ -74,7 +70,7 @@ public VectorDeserializeRow(DeserializeRead deserializeRead) { private VectorDeserializeRow() { } - private abstract class Reader { + private abstract class Reader { protected int columnIndex; Reader(int columnIndex) { @@ -84,7 +80,7 @@ private VectorDeserializeRow() { abstract void apply(VectorizedRowBatch batch, int batchIndex) throws IOException; } - private abstract class AbstractLongReader extends Reader { + private abstract class AbstractLongReader extends Reader { AbstractLongReader(int columnIndex) { super(columnIndex); @@ -277,7 +273,7 @@ void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private abstract class AbstractDoubleReader extends Reader { + private abstract class AbstractDoubleReader extends Reader { AbstractDoubleReader(int columnIndex) { super(columnIndex); @@ -322,7 +318,7 @@ void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private abstract class AbstractBytesReader extends Reader { + private abstract class AbstractBytesReader extends Reader { AbstractBytesReader(int columnIndex) { super(columnIndex); @@ -537,7 +533,7 @@ void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private class HiveDecimalReader extends Reader { + private class HiveDecimalReader extends Reader { private DeserializeRead.ReadDecimalResults readDecimalResults; @@ -561,10 +557,10 @@ void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } private void addReader(int index, int outputColumn) throws HiveException { - Reader readerByValue = null; - Reader readerByReference = null; + Reader readerByValue = null; + Reader readerByReference = null; - PrimitiveTypeInfo primitiveTypeInfo = primitiveTypeInfos[index]; + PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfos[index]; PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory(); switch (primitiveCategory) { // case VOID: @@ -642,10 +638,10 @@ private void addReader(int index, int outputColumn) throws HiveException { public void init(int[] outputColumns) throws HiveException { - readersByValue = new Reader[primitiveTypeInfos.length]; - readersByReference = new Reader[primitiveTypeInfos.length]; + readersByValue = new Reader[typeInfos.length]; + readersByReference = new Reader[typeInfos.length]; - for (int i = 0; i < primitiveTypeInfos.length; i++) { + for (int i = 0; i < typeInfos.length; i++) { int outputColumn = outputColumns[i]; addReader(i, outputColumn); } @@ -653,10 +649,10 @@ public void init(int[] outputColumns) throws HiveException { public void init(List outputColumns) throws HiveException { - readersByValue = new Reader[primitiveTypeInfos.length]; - readersByReference = new Reader[primitiveTypeInfos.length]; + readersByValue = new Reader[typeInfos.length]; + readersByReference = new Reader[typeInfos.length]; - for (int i = 0; i < primitiveTypeInfos.length; i++) { + for (int i = 0; i < typeInfos.length; i++) { int outputColumn = outputColumns.get(i); addReader(i, outputColumn); } @@ -664,10 +660,10 @@ public void init(List outputColumns) throws HiveException { public void init(int startColumn) throws HiveException { - readersByValue = new Reader[primitiveTypeInfos.length]; - readersByReference = new Reader[primitiveTypeInfos.length]; + readersByValue = new Reader[typeInfos.length]; + readersByReference = new Reader[typeInfos.length]; - for (int i = 0; i < primitiveTypeInfos.length; i++) { + for (int i = 0; i < typeInfos.length; i++) { int outputColumn = startColumn + i; addReader(i, outputColumn); } @@ -709,12 +705,12 @@ public void deserializeByReference(VectorizedRowBatch batch, int batchIndex) thr private void throwMoreDetailedException(IOException e, int index) throws EOFException { StringBuilder sb = new StringBuilder(); - sb.append("Detail: \"" + e.toString() + "\" occured for field " + index + " of " + primitiveTypeInfos.length + " fields ("); - for (int i = 0; i < primitiveTypeInfos.length; i++) { + sb.append("Detail: \"" + e.toString() + "\" occured for field " + index + " of " + typeInfos.length + " fields ("); + for (int i = 0; i < typeInfos.length; i++) { if (i > 0) { sb.append(", "); } - sb.append(primitiveTypeInfos[i].getPrimitiveCategory().name()); + sb.append(((PrimitiveTypeInfo) typeInfos[i]).getPrimitiveCategory().name()); } sb.append(")"); throw new EOFException(sb.toString()); diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java index e2934e3..fe889b5 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java @@ -22,8 +22,6 @@ import java.sql.Timestamp; import java.util.List; -import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; -import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.ByteStream.Output; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; @@ -46,11 +44,11 @@ * Note that when serializing a row, the logical mapping using selected in use has already * been performed. */ -public class VectorSerializeRow { +public final class VectorSerializeRow { - private SerializeWrite serializeWrite; + private T serializeWrite; - public VectorSerializeRow(SerializeWrite serializeWrite) { + public VectorSerializeRow(T serializeWrite) { this(); this.serializeWrite = serializeWrite; } @@ -59,7 +57,7 @@ public VectorSerializeRow(SerializeWrite serializeWrite) { private VectorSerializeRow() { } - private abstract class Writer { + private abstract class Writer { protected int columnIndex; Writer(int columnIndex) { @@ -69,7 +67,7 @@ private VectorSerializeRow() { abstract boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException; } - private abstract class AbstractLongWriter extends Writer { + private abstract class AbstractLongWriter extends Writer { AbstractLongWriter(int columnIndex) { super(columnIndex); @@ -351,7 +349,7 @@ boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private abstract class AbstractDoubleWriter extends Writer { + private abstract class AbstractDoubleWriter extends Writer { AbstractDoubleWriter(int columnIndex) { super(columnIndex); @@ -418,7 +416,7 @@ boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private class StringWriter extends Writer { + private class StringWriter extends Writer { StringWriter(int columnIndex) { super(columnIndex); @@ -449,7 +447,7 @@ boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private class BinaryWriter extends Writer { + private class BinaryWriter extends Writer { BinaryWriter(int columnIndex) { super(columnIndex); @@ -480,7 +478,7 @@ boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private class HiveDecimalWriter extends Writer { + private class HiveDecimalWriter extends Writer { protected HiveDecimalWritable[] vector; HiveDecimalWriter(int columnIndex) { @@ -511,10 +509,10 @@ boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException { } } - private Writer[] writers; + private Writer[] writers; - private Writer createWriter(TypeInfo typeInfo, int columnIndex) throws HiveException { - Writer writer; + private Writer createWriter(TypeInfo typeInfo, int columnIndex) throws HiveException { + Writer writer; Category category = typeInfo.getCategory(); switch (category) { case PRIMITIVE: @@ -588,7 +586,7 @@ public void init(List typeNames, int[] columnMap) throws HiveException { String typeName = typeNames.get(i); TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName); int columnIndex = columnMap[i]; - Writer writer = createWriter(typeInfo, columnIndex); + Writer writer = createWriter(typeInfo, columnIndex); writers[i] = writer; } } @@ -599,18 +597,18 @@ public void init(List typeNames) throws HiveException { for (int i = 0; i < typeNames.size(); i++) { String typeName = typeNames.get(i); TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName); - Writer writer = createWriter(typeInfo, i); + Writer writer = createWriter(typeInfo, i); writers[i] = writer; } } - public void init(PrimitiveTypeInfo[] primitiveTypeInfos, List columnMap) + public void init(TypeInfo[] typeInfos, int[] columnMap) throws HiveException { - writers = new Writer[primitiveTypeInfos.length]; - for (int i = 0; i < primitiveTypeInfos.length; i++) { - int columnIndex = columnMap.get(i); - Writer writer = createWriter(primitiveTypeInfos[i], columnIndex); + writers = new Writer[typeInfos.length]; + for (int i = 0; i < typeInfos.length; i++) { + int columnIndex = columnMap[i]; + Writer writer = createWriter(typeInfos[i], columnIndex); writers[i] = writer; } } @@ -627,17 +625,31 @@ public void setOutputAppend(Output output) { serializeWrite.setAppend(output); } + private boolean hasAnyNulls; + private boolean isAllNulls; + /* * Note that when serializing a row, the logical mapping using selected in use has already * been performed. batchIndex is the actual index of the row. */ - public boolean serializeWrite(VectorizedRowBatch batch, int batchIndex) throws IOException { - boolean anyNulls = false; - for (Writer writer : writers) { + public void serializeWrite(VectorizedRowBatch batch, int batchIndex) throws IOException { + + hasAnyNulls = false; + isAllNulls = true; + for (Writer writer : writers) { if (!writer.apply(batch, batchIndex)) { - anyNulls = true; + hasAnyNulls = true; + } else { + isAllNulls = false; } } - return anyNulls; + } + + public boolean getHasAnyNulls() { + return hasAnyNulls; + } + + public boolean getIsAllNulls() { + return isAllNulls; } } \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRowNoNulls.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRowNoNulls.java deleted file mode 100644 index c67945b..0000000 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRowNoNulls.java +++ /dev/null @@ -1,412 +0,0 @@ -/** - * 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.hadoop.hive.ql.exec.vector; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; -import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; -import org.apache.hadoop.hive.ql.metadata.HiveException; -import org.apache.hadoop.hive.serde2.ByteStream.Output; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; -import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory; -import org.apache.hadoop.hive.serde2.fast.SerializeWrite; -import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; -import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; -import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; - -/** - * This class serializes columns from a row in a VectorizedRowBatch into a serialization format. - * - * The caller provides the hive type names and column numbers in the order desired to - * serialize. - * - * This class uses an provided SerializeWrite object to directly serialize by writing - * field-by-field into a serialization format from the primitive values of the VectorizedRowBatch. - * - * Note that when serializing a row, the logical mapping using selected in use has already - * been performed. - * - * NOTE: This class is a variation of VectorSerializeRow for serialization of columns that - * have no nulls. - */ -public class VectorSerializeRowNoNulls { - private static final Logger LOG = LoggerFactory.getLogger(VectorSerializeRowNoNulls.class.getName()); - - private SerializeWrite serializeWrite; - - public VectorSerializeRowNoNulls(SerializeWrite serializeWrite) { - this(); - this.serializeWrite = serializeWrite; - } - - // Not public since we must have the serialize write object. - private VectorSerializeRowNoNulls() { - } - - private abstract class Writer { - protected int columnIndex; - - Writer(int columnIndex) { - this.columnIndex = columnIndex; - } - - abstract void apply(VectorizedRowBatch batch, int batchIndex) throws IOException; - } - - private abstract class AbstractLongWriter extends Writer { - - AbstractLongWriter(int columnIndex) { - super(columnIndex); - } - } - - private class BooleanWriter extends AbstractLongWriter { - - BooleanWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeBoolean(colVector.vector[colVector.isRepeating ? 0 : batchIndex] != 0); - } - } - - private class ByteWriter extends AbstractLongWriter { - - ByteWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeByte((byte) colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class ShortWriter extends AbstractLongWriter { - - ShortWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeShort((short) colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class IntWriter extends AbstractLongWriter { - - IntWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeInt((int) colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class LongWriter extends AbstractLongWriter { - - LongWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeLong(colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class DateWriter extends AbstractLongWriter { - - DateWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeDate((int) colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class TimestampWriter extends AbstractLongWriter { - - Timestamp scratchTimestamp; - - TimestampWriter(int columnIndex) { - super(columnIndex); - scratchTimestamp = new Timestamp(0); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - TimestampUtils.assignTimeInNanoSec(colVector.vector[colVector.isRepeating ? 0 : batchIndex], scratchTimestamp); - serializeWrite.writeTimestamp(scratchTimestamp); - } - } - - private class IntervalYearMonthWriter extends AbstractLongWriter { - - IntervalYearMonthWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeHiveIntervalYearMonth((int) colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class IntervalDayTimeWriter extends AbstractLongWriter { - - IntervalDayTimeWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex]; - serializeWrite.writeHiveIntervalDayTime(colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private abstract class AbstractDoubleWriter extends Writer { - - AbstractDoubleWriter(int columnIndex) { - super(columnIndex); - } - } - - private class FloatWriter extends AbstractDoubleWriter { - - FloatWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - DoubleColumnVector colVector = (DoubleColumnVector) batch.cols[columnIndex]; - serializeWrite.writeFloat((float) colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class DoubleWriter extends AbstractDoubleWriter { - - DoubleWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - DoubleColumnVector colVector = (DoubleColumnVector) batch.cols[columnIndex]; - serializeWrite.writeDouble(colVector.vector[colVector.isRepeating ? 0 : batchIndex]); - } - } - - private class StringWriter extends Writer { - - StringWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex]; - - if (colVector.isRepeating) { - serializeWrite.writeString(colVector.vector[0], colVector.start[0], colVector.length[0]); - } else { - serializeWrite.writeString(colVector.vector[batchIndex], colVector.start[batchIndex], colVector.length[batchIndex]); - } - } - } - - private class BinaryWriter extends Writer { - - BinaryWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex]; - - if (colVector.isRepeating) { - serializeWrite.writeBinary(colVector.vector[0], colVector.start[0], colVector.length[0]); - } else { - serializeWrite.writeBinary(colVector.vector[batchIndex], colVector.start[batchIndex], colVector.length[batchIndex]); - } - } - } - - private class HiveDecimalWriter extends Writer { - - HiveDecimalWriter(int columnIndex) { - super(columnIndex); - } - - @Override - void apply(VectorizedRowBatch batch, int batchIndex) throws IOException { - DecimalColumnVector colVector = (DecimalColumnVector) batch.cols[columnIndex]; - serializeWrite.writeHiveDecimal(colVector.vector[colVector.isRepeating ? 0 : batchIndex].getHiveDecimal()); - } - } - - private Writer[] writers; - - private Writer createWriter(TypeInfo typeInfo, int columnIndex) throws HiveException { - Writer writer; - Category category = typeInfo.getCategory(); - switch (category) { - case PRIMITIVE: - { - PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfo; - PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory(); - switch (primitiveCategory) { - // case VOID: - // UNDONE: - // break; - case BOOLEAN: - writer = new BooleanWriter(columnIndex); - break; - case BYTE: - writer = new ByteWriter(columnIndex); - break; - case SHORT: - writer = new ShortWriter(columnIndex); - break; - case INT: - writer = new IntWriter(columnIndex); - break; - case LONG: - writer = new LongWriter(columnIndex); - break; - case DATE: - writer = new DateWriter(columnIndex); - break; - case TIMESTAMP: - writer = new TimestampWriter(columnIndex); - break; - case FLOAT: - writer = new FloatWriter(columnIndex); - break; - case DOUBLE: - writer = new DoubleWriter(columnIndex); - break; - case STRING: - case CHAR: - case VARCHAR: - // We store CHAR and VARCHAR without pads, so use STRING writer class. - writer = new StringWriter(columnIndex); - break; - case BINARY: - writer = new BinaryWriter(columnIndex); - break; - case DECIMAL: - writer = new HiveDecimalWriter(columnIndex); - break; - case INTERVAL_YEAR_MONTH: - writer = new IntervalYearMonthWriter(columnIndex); - break; - case INTERVAL_DAY_TIME: - writer = new IntervalDayTimeWriter(columnIndex); - break; - default: - throw new HiveException("Unexpected primitive type category " + primitiveCategory); - } - } - break; - default: - throw new HiveException("Unexpected type category " + category); - } - return writer; - } - - public void init(List typeNames, int[] columnMap) throws HiveException { - - writers = new Writer[typeNames.size()]; - for (int i = 0; i < typeNames.size(); i++) { - String typeName = typeNames.get(i); - TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName); - int columnIndex = columnMap[i]; - Writer writer = createWriter(typeInfo, columnIndex); - writers[i] = writer; - } - } - - public void init(List typeNames) throws HiveException { - - writers = new Writer[typeNames.size()]; - for (int i = 0; i < typeNames.size(); i++) { - String typeName = typeNames.get(i); - TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName); - Writer writer = createWriter(typeInfo, i); - writers[i] = writer; - } - } - - public void init(PrimitiveTypeInfo[] primitiveTypeInfos, List columnMap) - throws HiveException { - - writers = new Writer[primitiveTypeInfos.length]; - for (int i = 0; i < primitiveTypeInfos.length; i++) { - int columnIndex = columnMap.get(i); - Writer writer = createWriter(primitiveTypeInfos[i], columnIndex); - writers[i] = writer; - } - } - - public int getCount() { - return writers.length; - } - - public void setOutput(Output output) { - serializeWrite.set(output); - } - - public void setOutputAppend(Output output) { - serializeWrite.setAppend(output); - } - - /* - * Note that when serializing a row, the logical mapping using selected in use has already - * been performed. batchIndex is the actual index of the row. - */ - public void serializeWriteNoNulls(VectorizedRowBatch batch, int batchIndex) throws IOException { - for (Writer writer : writers) { - writer.apply(batch, batchIndex); - } - } -} diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeries.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeries.java new file mode 100644 index 0000000..16856c4 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeries.java @@ -0,0 +1,98 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +import java.io.IOException; + +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; + +/** + * An abstraction of keys within a VectorizedRowBatch. + * + * A key is one or more columns. + * + * When there is a sequential "run" of equal keys, they are collapsed and represented by a + * duplicate count. + * + * The batch keys (with collapsed duplicates) is called a series. + * + * A key can be all null, or a key with no or some nulls. + * + * All keys have a duplicate count. + * + * A key with no or some nulls has: + * 1) A hash code. + * 2) Key values and other value(s) defined by other interfaces. + * + * The key series is logically indexed. That is, if batch.selectedInUse is true, the indices + * will be logical and need to be mapped through batch.selected to get the physical batch + * indices. Otherwise, the indices are physical batch indices. + */ +public interface VectorKeySeries { + + /** + * Process a non-empty batch of rows and compute a key series. + * + * The key series will be positioned to the beginning. + * + * @param batch + * @throws IOException + */ + void processBatch(VectorizedRowBatch batch) throws IOException; + + /** + * Position to the beginning of the key series. + */ + void positionToFirst(); + + /** + * @return the current logical index of the first row of the current key. + * The next duplicate count rows have the same key. + */ + int getCurrentLogical(); + + /** + * @return true when the current key is all nulls. + */ + boolean getCurrentIsAllNull(); + + /** + * @return the number of duplicate keys of the current key. + */ + int getCurrentDuplicateCount(); + + + /** + * @return true when there is at least one null in the current key. + * Only valid when getCurrentIsAllNull is false. Otherwise, undefined. + */ + boolean getCurrentHasAnyNulls(); + + /** + * @return the hash code of the current key. + * Only valid when getCurrentIsAllNull is false. Otherwise, undefined. + */ + int getCurrentHashCode(); + + /** + * Move to the next key. + * @return true when there is another key. Otherwise, the key series is complete. + */ + boolean next(); +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesBytesSerialized.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesBytesSerialized.java new file mode 100644 index 0000000..8bdaef4 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesBytesSerialized.java @@ -0,0 +1,271 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +import java.io.IOException; +import java.util.Arrays; + +import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; +import org.apache.hadoop.hive.serde2.fast.SerializeWrite; +import com.google.common.base.Preconditions; + +/** + * A key series of a single column of byte array keys where the keys get serialized. + */ +public class VectorKeySeriesBytesSerialized + extends VectorKeySeriesSerializedImpl implements VectorKeySeriesSerialized { + + private final int columnNum; + + private int outputStartPosition; + + public VectorKeySeriesBytesSerialized(int columnNum, T serializeWrite) { + super(serializeWrite); + this.columnNum = columnNum; + } + + @Override + public void processBatch(VectorizedRowBatch batch) throws IOException { + + currentBatchSize = batch.size; + Preconditions.checkState(currentBatchSize > 0); + + BytesColumnVector bytesColVector = (BytesColumnVector) batch.cols[columnNum]; + + byte[][] vectorBytesArrays = bytesColVector.vector; + int[] vectorStarts = bytesColVector.start; + int[] vectorLengths = bytesColVector.length; + + // The serialize routine uses this to build serializedKeyLengths. + outputStartPosition = 0; + output.reset(); + + if (bytesColVector.isRepeating){ + duplicateCounts[0] = currentBatchSize; + if (bytesColVector.noNulls || !bytesColVector.isNull[0]) { + seriesIsAllNull[0] = false; + serialize(0, vectorBytesArrays[0], vectorStarts[0], vectorLengths[0]); + valueCount = 1; + } else { + seriesIsAllNull[0] = true; + valueCount = 0; + } + seriesCount = 1; + Preconditions.checkState(seriesCount <= currentBatchSize); + } else { + seriesCount = 0; + valueCount = 0; + if (batch.selectedInUse) { + int[] selected = batch.selected; + if (bytesColVector.noNulls) { + + duplicateCounts[0] = 1; + int index; + index = selected[0]; + byte[] prevKeyBytes = vectorBytesArrays[index]; + int prevKeyStart = vectorStarts[index]; + int prevKeyLength = vectorLengths[index]; + serialize(0, prevKeyBytes, prevKeyStart, prevKeyLength); + + int currentKeyStart; + int currentKeyLength; + byte[] currentKeyBytes; + for (int logical = 1; logical < currentBatchSize; logical++) { + index = selected[logical]; + currentKeyBytes = vectorBytesArrays[index]; + currentKeyStart = vectorStarts[index]; + currentKeyLength = vectorLengths[index]; + if (StringExpr.equal(prevKeyBytes, prevKeyStart, prevKeyLength, + currentKeyBytes, currentKeyStart, currentKeyLength)) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + serialize(seriesCount, currentKeyBytes, currentKeyStart, currentKeyLength); + prevKeyBytes = currentKeyBytes; + prevKeyStart = currentKeyStart; + prevKeyLength = currentKeyLength; + } + } + Arrays.fill(seriesIsAllNull, 0, ++seriesCount, false); + valueCount = seriesCount; + Preconditions.checkState(seriesCount <= currentBatchSize); + } else { + boolean[] isNull = bytesColVector.isNull; + + boolean prevKeyIsNull; + byte[] prevKeyBytes = null; + int prevKeyStart = 0; + int prevKeyLength = 0; + duplicateCounts[0] = 1; + int index = selected[0]; + if (isNull[index]) { + seriesIsAllNull[0] = true; + prevKeyIsNull = true; + } else { + seriesIsAllNull[0] = false; + prevKeyIsNull = false; + prevKeyBytes = vectorBytesArrays[index]; + prevKeyStart = vectorStarts[index]; + prevKeyLength = vectorLengths[index]; + serialize(0, prevKeyBytes, prevKeyStart, prevKeyLength); + valueCount = 1; + } + + int currentKeyStart; + int currentKeyLength; + byte[] currentKeyBytes; + for (int logical = 1; logical < currentBatchSize; logical++) { + index = selected[logical]; + if (isNull[index]) { + if (prevKeyIsNull) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = true; + prevKeyIsNull = true; + } + } else { + currentKeyBytes = vectorBytesArrays[index]; + currentKeyStart = vectorStarts[index]; + currentKeyLength = vectorLengths[index]; + if (!prevKeyIsNull && + StringExpr.equal(prevKeyBytes, prevKeyStart, prevKeyLength, + currentKeyBytes, currentKeyStart, currentKeyLength)) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = false; + serialize(valueCount++, currentKeyBytes, currentKeyStart, currentKeyLength); + prevKeyIsNull = false; + prevKeyBytes = currentKeyBytes; + prevKeyStart = currentKeyStart; + prevKeyLength = currentKeyLength; + } + } + } + seriesCount++; + Preconditions.checkState(seriesCount <= currentBatchSize); + } + } else { + + // NOT selectedInUse + + if (bytesColVector.noNulls) { + + duplicateCounts[0] = 1; + byte[] prevKeyBytes = vectorBytesArrays[0]; + int prevKeyStart = vectorStarts[0]; + int prevKeyLength = vectorLengths[0]; + serialize(0, prevKeyBytes, prevKeyStart, prevKeyLength); + + int currentKeyStart; + int currentKeyLength; + byte[] currentKeyBytes; + for (int index = 1; index < currentBatchSize; index++) { + currentKeyBytes = vectorBytesArrays[index]; + currentKeyStart = vectorStarts[index]; + currentKeyLength = vectorLengths[index]; + if (StringExpr.equal(prevKeyBytes, prevKeyStart, prevKeyLength, + currentKeyBytes, currentKeyStart, currentKeyLength)) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + serialize(seriesCount, currentKeyBytes, currentKeyStart, currentKeyLength); + prevKeyBytes = currentKeyBytes; + prevKeyStart = currentKeyStart; + prevKeyLength = currentKeyLength; + } + } + Arrays.fill(seriesIsAllNull, 0, ++seriesCount, false); + valueCount = seriesCount; + Preconditions.checkState(seriesCount <= currentBatchSize); + } else { + boolean[] isNull = bytesColVector.isNull; + + boolean prevKeyIsNull; + byte[] prevKeyBytes = null; + int prevKeyStart = 0; + int prevKeyLength = 0; + duplicateCounts[0] = 1; + if (isNull[0]) { + seriesIsAllNull[0] = true; + prevKeyIsNull = true; + } else { + seriesIsAllNull[0] = false; + prevKeyIsNull = false; + prevKeyBytes = vectorBytesArrays[0]; + prevKeyStart = vectorStarts[0]; + prevKeyLength = vectorLengths[0]; + serialize(0, prevKeyBytes, prevKeyStart, prevKeyLength); + valueCount = 1; + } + + byte[] currentKeyBytes; + int currentKeyStart; + int currentKeyLength; + for (int index = 1; index < currentBatchSize; index++) { + if (isNull[index]) { + if (prevKeyIsNull) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = true; + prevKeyIsNull = true; + } + } else { + currentKeyBytes = vectorBytesArrays[index]; + currentKeyStart = vectorStarts[index]; + currentKeyLength = vectorLengths[index]; + if (!prevKeyIsNull && + StringExpr.equal(prevKeyBytes, prevKeyStart, prevKeyLength, + currentKeyBytes, currentKeyStart, currentKeyLength)) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = false; + serialize(valueCount++, currentKeyBytes, currentKeyStart, currentKeyLength); + prevKeyIsNull = false; + prevKeyBytes = currentKeyBytes; + prevKeyStart = currentKeyStart; + prevKeyLength = currentKeyLength; + } + } + } + seriesCount++; + Preconditions.checkState(seriesCount <= currentBatchSize); + } + } + } + + // Finally. + computeSerializedHashCodes(); + positionToFirst(); + validate(); + } + + private void serialize(int pos, byte[] bytes, int start, int length) throws IOException { + serializeWrite.setAppend(output); + serializeWrite.writeString(bytes, start, length); + int outputNewPosition = output.getLength(); + serializedKeyLengths[pos] = outputNewPosition - outputStartPosition; + outputStartPosition = outputNewPosition; + } +} diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesImpl.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesImpl.java new file mode 100644 index 0000000..55e923e --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesImpl.java @@ -0,0 +1,68 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +/** + * A base implementation of VectorKeySeries. + * + */ +public abstract class VectorKeySeriesImpl implements VectorKeySeries { + + protected int currentLogical; + protected boolean currentIsAllNull; + protected boolean currentHasAnyNulls; + protected int currentDuplicateCount; + protected int currentHashCode; + + VectorKeySeriesImpl() { + currentLogical = 0; + currentIsAllNull = false; + + // Set to true by default. Only actively set in the multiple key case to support Outer Join. + currentHasAnyNulls = true; + + currentDuplicateCount = 0; + currentHashCode = 0; + } + + @Override + public int getCurrentLogical() { + return currentLogical; + } + + @Override + public boolean getCurrentIsAllNull() { + return currentIsAllNull; + } + + @Override + public boolean getCurrentHasAnyNulls() { + return currentHasAnyNulls; + } + + @Override + public int getCurrentDuplicateCount() { + return currentDuplicateCount; + } + + @Override + public int getCurrentHashCode() { + return currentHashCode; + } +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesLongSerialized.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesLongSerialized.java new file mode 100644 index 0000000..0f8ec29 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesLongSerialized.java @@ -0,0 +1,249 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +import java.io.IOException; +import java.util.Arrays; + +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.serde2.fast.SerializeWrite; +import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; + +import com.google.common.base.Preconditions; + +/** + * A key series of a single column of long keys where the keys get serialized. + */ +public class VectorKeySeriesLongSerialized + extends VectorKeySeriesSerializedImpl implements VectorKeySeriesSerialized { + + private final int columnNum; + private PrimitiveCategory primitiveCategory; + + private int currentKeyStart; + + public VectorKeySeriesLongSerialized(int columnNum, PrimitiveTypeInfo primitiveTypeInfo, + T serializeWrite) { + super(serializeWrite); + this.columnNum = columnNum; + primitiveCategory = primitiveTypeInfo.getPrimitiveCategory(); + } + + @Override + public void processBatch(VectorizedRowBatch batch) throws IOException { + + currentBatchSize = batch.size; + Preconditions.checkState(currentBatchSize > 0); + + LongColumnVector longColVector = (LongColumnVector) batch.cols[columnNum]; + + long[] vector = longColVector.vector; + + // The serialize routine uses this to build serializedKeyLengths. + currentKeyStart = 0; + output.reset(); + + if (longColVector.isRepeating){ + duplicateCounts[0] = currentBatchSize; + if (longColVector.noNulls || !longColVector.isNull[0]) { + seriesIsAllNull[0] = false; + serialize(0, vector[0]); + valueCount = 1; + } else { + seriesIsAllNull[0] = true; + valueCount = 0; + } + seriesCount = 1; + Preconditions.checkState(seriesCount <= currentBatchSize); + } else { + seriesCount = 0; + valueCount = 0; + if (batch.selectedInUse) { + int[] selected = batch.selected; + if (longColVector.noNulls) { + + duplicateCounts[0] = 1; + long prevKey = vector[selected[0]]; + serialize(0, prevKey); + + long currentKey; + for (int logical = 1; logical < currentBatchSize; logical++) { + currentKey = vector[selected[logical]]; + if (prevKey == currentKey) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + serialize(seriesCount, currentKey); + prevKey = currentKey; + } + } + Arrays.fill(seriesIsAllNull, 0, ++seriesCount, false); + valueCount = seriesCount; + Preconditions.checkState(seriesCount <= currentBatchSize); + } else { + boolean[] isNull = longColVector.isNull; + + boolean prevKeyIsNull; + long prevKey = 0; + duplicateCounts[0] = 1; + int index = selected[0]; + if (isNull[index]) { + seriesIsAllNull[0] = true; + prevKeyIsNull = true; + valueCount = 0; + } else { + seriesIsAllNull[0] = false; + prevKeyIsNull = false; + prevKey = vector[index]; + serialize(0, prevKey); + valueCount = 1; + } + + long currentKey; + for (int logical = 1; logical < currentBatchSize; logical++) { + index = selected[logical]; + if (isNull[index]) { + if (prevKeyIsNull) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = true; + prevKeyIsNull = true; + } + } else { + currentKey = vector[index]; + if (!prevKeyIsNull && prevKey == currentKey) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = false; + serialize(valueCount++, currentKey); + prevKeyIsNull = false; + prevKey = currentKey; + } + } + } + seriesCount++; + Preconditions.checkState(seriesCount <= currentBatchSize); + } + } else { + + // NOT selectedInUse + + if (longColVector.noNulls) { + + duplicateCounts[0] = 1; + long prevKey = vector[0]; + serialize(0, prevKey); + long currentKey; + for (int index = 1; index < currentBatchSize; index++) { + currentKey = vector[index]; + if (prevKey == currentKey) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + serialize(seriesCount, currentKey); + prevKey = currentKey; + } + } + Arrays.fill(seriesIsAllNull, 0, ++seriesCount, false); + valueCount = seriesCount; + Preconditions.checkState(seriesCount <= currentBatchSize); + } else { + boolean[] isNull = longColVector.isNull; + + boolean prevKeyIsNull; + long prevKey = 0; + duplicateCounts[0] = 1; + if (isNull[0]) { + seriesIsAllNull[0] = true; + prevKeyIsNull = true; + valueCount = 0; + } else { + seriesIsAllNull[0] = false; + prevKeyIsNull = false; + prevKey = vector[0]; + serialize(0, prevKey); + valueCount = 1; + } + + for (int index = 1; index < currentBatchSize; index++) { + if (isNull[index]) { + if (prevKeyIsNull) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = true; + prevKeyIsNull = true; + } + } else { + long currentKey = vector[index]; + if (!prevKeyIsNull && prevKey == currentKey) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = false; + serialize(valueCount++, currentKey); + prevKeyIsNull = false; + prevKey = currentKey; + } + } + } + seriesCount++; + Preconditions.checkState(seriesCount <= currentBatchSize); + } + } + } + + // Finally. + computeSerializedHashCodes(); + positionToFirst(); + validate(); + } + + private void serialize(int pos, long value) throws IOException { + serializeWrite.setAppend(output); + + // UNDONE: How to add support for DATE, TIMESTAMP, INTERVAL_YEAR_MONTH, INTERVAL_DAY_TIME... + switch (primitiveCategory) { + case BOOLEAN: + serializeWrite.writeBoolean(value != 0); + break; + case BYTE: + serializeWrite.writeByte((byte) value); + break; + case SHORT: + serializeWrite.writeShort((short) value); + break; + case INT: + serializeWrite.writeInt((int) value); + break; + case LONG: + serializeWrite.writeLong(value); + break; + default: + throw new RuntimeException("Unexpected primitive category " + primitiveCategory.name()); + } + int outputNewPosition = output.getLength(); + serializedKeyLengths[pos] = outputNewPosition - currentKeyStart; + currentKeyStart = outputNewPosition; + } +} diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesMultiSerialized.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesMultiSerialized.java new file mode 100644 index 0000000..5ed42ad --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesMultiSerialized.java @@ -0,0 +1,179 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +import java.io.IOException; +import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; +import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.serde2.fast.SerializeWrite; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; + +import com.google.common.base.Preconditions; + +/** + * A key series of a multiple columns of keys where the keys get serialized. + * (Or, it can be 1 column). + */ +public class VectorKeySeriesMultiSerialized + extends VectorKeySeriesSerializedImpl implements VectorKeySeriesSerialized { + + private VectorSerializeRow keySerializeRow; + + private boolean[] hasAnyNulls; + + public VectorKeySeriesMultiSerialized(T serializeWrite) { + super(serializeWrite); + } + + public void init(TypeInfo[] typeInfos, int[] columnNums) throws HiveException { + keySerializeRow = new VectorSerializeRow(serializeWrite); + keySerializeRow.init(typeInfos, columnNums); + hasAnyNulls = new boolean[VectorizedRowBatch.DEFAULT_SIZE]; + } + + @Override + public void processBatch(VectorizedRowBatch batch) throws IOException { + + currentBatchSize = batch.size; + Preconditions.checkState(currentBatchSize > 0); + + int prevKeyStart = 0; + int prevKeyLength; + int currentKeyStart = 0; + output.reset(); + + seriesCount = 0; + boolean prevKeyIsNull; + duplicateCounts[0] = 1; + if (batch.selectedInUse) { + int[] selected = batch.selected; + int index = selected[0]; + keySerializeRow.setOutputAppend(output); + keySerializeRow.serializeWrite(batch, index); + if (keySerializeRow.getIsAllNulls()) { + seriesIsAllNull[0] = prevKeyIsNull = true; + prevKeyLength = 0; + output.setPosition(0); + valueCount = 0; + } else { + seriesIsAllNull[0] = prevKeyIsNull = false; + serializedKeyLengths[0] = currentKeyStart = prevKeyLength = output.getLength(); + hasAnyNulls[0] = keySerializeRow.getHasAnyNulls(); + valueCount = 1; + } + + int keyLength; + for (int logical = 1; logical < currentBatchSize; logical++) { + index = selected[logical]; + keySerializeRow.setOutputAppend(output); + keySerializeRow.serializeWrite(batch, index); + if (keySerializeRow.getIsAllNulls()) { + if (prevKeyIsNull) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = prevKeyIsNull = true; + } + output.setPosition(currentKeyStart); + } else { + keyLength = output.getLength() - currentKeyStart; + if (!prevKeyIsNull && + StringExpr.equal( + output.getData(), prevKeyStart, prevKeyLength, + output.getData(), currentKeyStart, keyLength)) { + duplicateCounts[seriesCount]++; + output.setPosition(currentKeyStart); + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = prevKeyIsNull = false; + prevKeyStart = currentKeyStart; + serializedKeyLengths[valueCount] = prevKeyLength = keyLength; + currentKeyStart += keyLength; + hasAnyNulls[valueCount] = keySerializeRow.getHasAnyNulls(); + valueCount++; + } + } + } + seriesCount++; + Preconditions.checkState(seriesCount <= currentBatchSize); + } else { + keySerializeRow.setOutputAppend(output); + keySerializeRow.serializeWrite(batch, 0); + if (keySerializeRow.getIsAllNulls()) { + seriesIsAllNull[0] = prevKeyIsNull = true; + prevKeyLength = 0; + output.setPosition(0); + valueCount = 0; + } else { + seriesIsAllNull[0] = prevKeyIsNull = false; + serializedKeyLengths[0] = currentKeyStart = prevKeyLength = output.getLength(); + hasAnyNulls[0] = keySerializeRow.getHasAnyNulls(); + valueCount = 1; + } + + int keyLength; + for (int index = 1; index < currentBatchSize; index++) { + keySerializeRow.setOutputAppend(output); + keySerializeRow.serializeWrite(batch, index); + if (keySerializeRow.getIsAllNulls()) { + if (prevKeyIsNull) { + duplicateCounts[seriesCount]++; + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = prevKeyIsNull = true; + } + output.setPosition(currentKeyStart); + } else { + keyLength = output.getLength() - currentKeyStart; + if (!prevKeyIsNull && + StringExpr.equal( + output.getData(), prevKeyStart, prevKeyLength, + output.getData(), currentKeyStart, keyLength)) { + duplicateCounts[seriesCount]++; + output.setPosition(currentKeyStart); + } else { + duplicateCounts[++seriesCount] = 1; + seriesIsAllNull[seriesCount] = prevKeyIsNull = false; + prevKeyStart = currentKeyStart; + serializedKeyLengths[valueCount] = prevKeyLength = keyLength; + currentKeyStart += keyLength; + hasAnyNulls[valueCount] = keySerializeRow.getHasAnyNulls(); + valueCount++; + } + } + } + seriesCount++; + Preconditions.checkState(seriesCount <= currentBatchSize); + } + + // Finally. + computeSerializedHashCodes(); + positionToFirst(); + validate(); + } + + @Override + public void setNextValue(int valuePosition) { + super.setNextValue(valuePosition); + + currentHasAnyNulls = hasAnyNulls[valuePosition]; + } +} diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSerialized.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSerialized.java new file mode 100644 index 0000000..1dfb3df --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSerialized.java @@ -0,0 +1,35 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +/** + * An abstract adding serialization to key series. + * + * A key with no or some nulls has serialized bytes, offset, and length. + */ +public interface VectorKeySeriesSerialized extends VectorKeySeries { + + /** + * @return the serialized bytes (including optional key tag), start offset of the key in the + * bytes, and key byte length. + */ + byte[] getSerializedBytes(); + int getSerializedStart(); + int getSerializedLength(); +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSerializedImpl.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSerializedImpl.java new file mode 100644 index 0000000..f4c23e2 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSerializedImpl.java @@ -0,0 +1,111 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.serde2.WriteBuffers; +import org.apache.hadoop.hive.serde2.ByteStream.Output; +import org.apache.hadoop.hive.serde2.fast.SerializeWrite; +import com.google.common.base.Preconditions; + +/** + * Implementation of base serialization interface. + * + */ +public abstract class VectorKeySeriesSerializedImpl + extends VectorKeySeriesSingleImpl implements VectorKeySeriesSerialized { + + protected T serializeWrite; + + protected int bufferOffset; + + public int serializedStart; + public int serializedLength; + public byte[] serializedBytes; + + protected final Output output; + + protected final int[] serializedKeyLengths; + + public VectorKeySeriesSerializedImpl(T serializeWrite) { + super(); + this.serializeWrite = serializeWrite; + output = new Output(); + serializedKeyLengths = new int[VectorizedRowBatch.DEFAULT_SIZE]; + } + + public void validate() { + super.validate(); + + int lengthSum = 0; + int keyLength; + for (int i = 0; i < valueCount; i++) { + keyLength = serializedKeyLengths[i]; + Preconditions.checkState(keyLength > 0); + lengthSum += keyLength; + Preconditions.checkState(lengthSum <= output.getLength()); + } + } + + @Override + public byte[] getSerializedBytes() { + return serializedBytes; + } + + @Override + public int getSerializedStart() { + return serializedStart; + } + + @Override + public int getSerializedLength() { + return serializedLength; + } + + protected void computeSerializedHashCodes() { + int offset = 0; + int keyLength; + byte[] bytes = output.getData(); + for (int i = 0; i < valueCount; i++) { + keyLength = serializedKeyLengths[i]; + hashCodes[i] = WriteBuffers.murmurHash(bytes, offset, keyLength); + offset += keyLength; + } + } + + @Override + public void positionToFirst() { + + // Reset this before calling positionToFirst. + bufferOffset = 0; + + super.positionToFirst(); + + // This is constant for whole series. + serializedBytes = output.getData(); + } + + @Override + public void setNextValue(int valuePosition) { + serializedStart = bufferOffset; + serializedLength = serializedKeyLengths[valuePosition]; + Preconditions.checkState(serializedStart + serializedLength <= output.getData().length); + bufferOffset += serializedLength; + } +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSingleImpl.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSingleImpl.java new file mode 100644 index 0000000..29caeaa --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/keyseries/VectorKeySeriesSingleImpl.java @@ -0,0 +1,147 @@ +/** + * 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.hadoop.hive.ql.exec.vector.keyseries; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + +/** + * Implementation of when a one key series or a serialized key series is being presented. + * + */ +public abstract class VectorKeySeriesSingleImpl extends VectorKeySeriesImpl + implements VectorKeySeries { + + private static final Log LOG = LogFactory.getLog(VectorKeySeriesSingleImpl.class.getName()); + + protected int currentBatchSize; + + protected int seriesCount; + protected int position; + + protected final int[] duplicateCounts; + protected final boolean[] seriesIsAllNull; + + protected int valueCount; + protected int valuePosition; + + protected final int[] hashCodes; + + VectorKeySeriesSingleImpl() { + super(); + + seriesCount = 0; + position = 0; + + duplicateCounts = new int[VectorizedRowBatch.DEFAULT_SIZE]; + seriesIsAllNull = new boolean[VectorizedRowBatch.DEFAULT_SIZE]; + + valueCount = 0; + valuePosition = -1; + + hashCodes = new int[VectorizedRowBatch.DEFAULT_SIZE]; + } + + public void validate() { + Preconditions.checkState(seriesCount > 0); + Preconditions.checkState(seriesCount <= currentBatchSize); + Preconditions.checkState(valueCount >= 0); + Preconditions.checkState(valueCount <= seriesCount); + + validateDuplicateCount(); + } + + private void validateDuplicateCount() { + int sum = 0; + int duplicateCount; + for (int i = 0; i < seriesCount; i++) { + duplicateCount = duplicateCounts[i]; + Preconditions.checkState(duplicateCount > 0); + Preconditions.checkState(duplicateCount <= currentBatchSize); + sum += duplicateCount; + } + Preconditions.checkState(sum == currentBatchSize); + } + + @Override + public void positionToFirst() { + position = 0; + + currentLogical = 0; + currentDuplicateCount = duplicateCounts[0]; + currentIsAllNull = seriesIsAllNull[0]; + + if (!currentIsAllNull) { + valuePosition = 0; + currentHashCode = hashCodes[0]; + setNextValue(0); + } else { + valuePosition = -1; + } + Preconditions.checkState(currentDuplicateCount > 0); + } + + // Consumes whole key. + @Override + public boolean next() { + + currentLogical += currentDuplicateCount; + if (currentLogical >= currentBatchSize) { + return false; + } + + Preconditions.checkState(position + 1 < seriesCount); + + position++; + currentDuplicateCount = duplicateCounts[position]; + currentIsAllNull = seriesIsAllNull[position]; + + if (!currentIsAllNull) { + Preconditions.checkState(valuePosition + 1 < valueCount); + valuePosition++; + currentHashCode = hashCodes[valuePosition]; + setNextValue(valuePosition); + } + Preconditions.checkState(currentDuplicateCount > 0); + return true; + } + + // For use by VectorKeySeriesMulti so that the minimum equal key can be advanced. + public void advance(int duplicateCount) { + + currentLogical += currentDuplicateCount; + + currentDuplicateCount -= duplicateCount; + if (currentDuplicateCount == 0) { + position++; + currentIsAllNull = seriesIsAllNull[position]; + currentDuplicateCount = duplicateCounts[position]; + + if (!currentIsAllNull) { + valuePosition++; + currentHashCode = hashCodes[valuePosition]; + setNextValue(valuePosition); + } + } + } + + protected abstract void setNextValue(int valuePosition); +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java index afea926..435b438 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java @@ -168,7 +168,7 @@ // This helper object deserializes LazyBinary format small table values into columns of a row // in a vectorized row batch. - protected transient VectorDeserializeRow smallTableVectorDeserializeRow; + protected transient VectorDeserializeRow smallTableVectorDeserializeRow; // This a 2nd batch with the same "column schema" as the big table batch that can be used to // build join output results in. If we can create some join output results in the big table @@ -573,10 +573,11 @@ protected void initializeOp(Configuration hconf) throws HiveException { * Create our vectorized copy row and deserialize row helper objects. */ if (smallTableMapping.getCount() > 0) { - smallTableVectorDeserializeRow = new VectorDeserializeRow( - new LazyBinaryDeserializeRead( - VectorizedBatchUtil.primitiveTypeInfosFromTypeNames( - smallTableMapping.getTypeNames()))); + smallTableVectorDeserializeRow = + new VectorDeserializeRow( + new LazyBinaryDeserializeRead( + VectorizedBatchUtil.primitiveTypeInfosFromTypeNames( + smallTableMapping.getTypeNames()))); smallTableVectorDeserializeRow.init(smallTableMapping.getOutputColumns()); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java index 260f4e1..4e2bd7b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java @@ -47,6 +47,7 @@ import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinarySerializeWrite; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.ByteStream.Output; /** @@ -73,7 +74,9 @@ private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinGenerateResultOperator.class.getName()); private static final String CLASS_NAME = VectorMapJoinGenerateResultOperator.class.getName(); - private transient PrimitiveTypeInfo[] bigTablePrimitiveTypeInfos; + //------------------------------------------------------------------------------------------------ + + private transient TypeInfo[] bigTableTypeInfos; private transient VectorSerializeRow bigTableVectorSerializeRow; @@ -417,7 +420,7 @@ private void setupSpillSerDe(VectorizedRowBatch batch) throws HiveException { List projectedColumns = vContext.getProjectedColumns(); int projectionSize = vContext.getProjectedColumns().size(); - List typeInfoList = new ArrayList(); + List typeInfoList = new ArrayList(); List noNullsProjectionList = new ArrayList(); for (int i = 0; i < projectionSize; i++) { int projectedColumn = projectedColumns.get(i); @@ -429,17 +432,19 @@ private void setupSpillSerDe(VectorizedRowBatch batch) throws HiveException { int[] noNullsProjection = ArrayUtils.toPrimitive(noNullsProjectionList.toArray(new Integer[0])); int noNullsProjectionSize = noNullsProjection.length; - bigTablePrimitiveTypeInfos = typeInfoList.toArray(new PrimitiveTypeInfo[0]); + bigTableTypeInfos = typeInfoList.toArray(new TypeInfo[0]); bigTableVectorSerializeRow = - new VectorSerializeRow(new LazyBinarySerializeWrite(noNullsProjectionSize)); + new VectorSerializeRow( + new LazyBinarySerializeWrite(noNullsProjectionSize)); bigTableVectorSerializeRow.init( - bigTablePrimitiveTypeInfos, - noNullsProjectionList); + bigTableTypeInfos, + noNullsProjection); - bigTableVectorDeserializeRow = new VectorDeserializeRow( - new LazyBinaryDeserializeRead(bigTablePrimitiveTypeInfos)); + bigTableVectorDeserializeRow = + new VectorDeserializeRow( + new LazyBinaryDeserializeRead(bigTableTypeInfos)); bigTableVectorDeserializeRow.init(noNullsProjection); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java index a2559f8..02a3746 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java @@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.exec.vector.mapjoin.hashtable.VectorMapJoinBytesHashMultiSet; // Multi-Key specific imports. -import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRowNoNulls; +import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow; import org.apache.hadoop.hive.serde2.ByteStream.Output; import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite; @@ -65,7 +65,7 @@ // Object that can take a set of columns in row in a vectorized row batch and serialized it. // Known to not have any nulls. - private transient VectorSerializeRowNoNulls keyVectorSerializeWriteNoNulls; + private transient VectorSerializeRow keyVectorSerializeWrite; // The BinarySortable serialization of the current key. private transient Output currentKeyOutput; @@ -105,9 +105,9 @@ public void process(Object row, int tag) throws HiveException { * Initialize Multi-Key members for this specialized class. */ - keyVectorSerializeWriteNoNulls = new VectorSerializeRowNoNulls( + keyVectorSerializeWrite = new VectorSerializeRow( new BinarySortableSerializeWrite(bigTableKeyColumnMap.length)); - keyVectorSerializeWriteNoNulls.init(bigTableKeyTypeNames, bigTableKeyColumnMap); + keyVectorSerializeWrite.init(bigTableKeyTypeNames, bigTableKeyColumnMap); currentKeyOutput = new Output(); saveKeyOutput = new Output(); @@ -194,8 +194,12 @@ public void process(Object row, int tag) throws HiveException { * Multi-Key specific repeated lookup. */ - keyVectorSerializeWriteNoNulls.setOutput(currentKeyOutput); - keyVectorSerializeWriteNoNulls.serializeWriteNoNulls(batch, 0); + keyVectorSerializeWrite.setOutput(currentKeyOutput); + keyVectorSerializeWrite.serializeWrite(batch, 0); + if (keyVectorSerializeWrite.getHasAnyNulls()) { + // Not expecting NULLs in MapJoin -- they should have been filtered out. + throw new HiveException("Null key not expected in MapJoin"); + } byte[] keyBytes = currentKeyOutput.getData(); int keyLength = currentKeyOutput.getLength(); JoinUtil.JoinResult joinResult = hashMultiSet.contains(keyBytes, 0, keyLength, hashMultiSetResults[0]); @@ -248,8 +252,12 @@ public void process(Object row, int tag) throws HiveException { */ // Generate binary sortable key for current row in vectorized row batch. - keyVectorSerializeWriteNoNulls.setOutput(currentKeyOutput); - keyVectorSerializeWriteNoNulls.serializeWriteNoNulls(batch, batchIndex); + keyVectorSerializeWrite.setOutput(currentKeyOutput); + keyVectorSerializeWrite.serializeWrite(batch, batchIndex); + if (keyVectorSerializeWrite.getHasAnyNulls()) { + // Not expecting NULLs in MapJoin -- they should have been filtered out. + throw new HiveException("Null key not expected in MapJoin"); + } /* * Equal key series checking. diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java index 7e58c75..6b63200 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java @@ -34,7 +34,7 @@ import org.apache.hadoop.hive.ql.exec.vector.mapjoin.hashtable.VectorMapJoinBytesHashMap; // Multi-Key specific imports. -import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRowNoNulls; +import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow; import org.apache.hadoop.hive.serde2.ByteStream.Output; import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite; @@ -63,7 +63,7 @@ // Object that can take a set of columns in row in a vectorized row batch and serialized it. // Known to not have any nulls. - private transient VectorSerializeRowNoNulls keyVectorSerializeWriteNoNulls; + private transient VectorSerializeRow keyVectorSerializeWrite; // The BinarySortable serialization of the current key. private transient Output currentKeyOutput; @@ -103,9 +103,9 @@ public void process(Object row, int tag) throws HiveException { * Initialize Multi-Key members for this specialized class. */ - keyVectorSerializeWriteNoNulls = new VectorSerializeRowNoNulls( + keyVectorSerializeWrite = new VectorSerializeRow( new BinarySortableSerializeWrite(bigTableKeyColumnMap.length)); - keyVectorSerializeWriteNoNulls.init(bigTableKeyTypeNames, bigTableKeyColumnMap); + keyVectorSerializeWrite.init(bigTableKeyTypeNames, bigTableKeyColumnMap); currentKeyOutput = new Output(); saveKeyOutput = new Output(); @@ -191,8 +191,12 @@ public void process(Object row, int tag) throws HiveException { * Multi-Key specific repeated lookup. */ - keyVectorSerializeWriteNoNulls.setOutput(currentKeyOutput); - keyVectorSerializeWriteNoNulls.serializeWriteNoNulls(batch, 0); + keyVectorSerializeWrite.setOutput(currentKeyOutput); + keyVectorSerializeWrite.serializeWrite(batch, 0); + if (keyVectorSerializeWrite.getHasAnyNulls()) { + // Not expecting NULLs in MapJoin -- they should have been filtered out. + throw new HiveException("Null key not expected in MapJoin"); + } byte[] keyBytes = currentKeyOutput.getData(); int keyLength = currentKeyOutput.getLength(); JoinUtil.JoinResult joinResult = hashMap.lookup(keyBytes, 0, keyLength, hashMapResults[0]); @@ -245,8 +249,12 @@ public void process(Object row, int tag) throws HiveException { */ // Generate binary sortable key for current row in vectorized row batch. - keyVectorSerializeWriteNoNulls.setOutput(currentKeyOutput); - keyVectorSerializeWriteNoNulls.serializeWriteNoNulls(batch, batchIndex); + keyVectorSerializeWrite.setOutput(currentKeyOutput); + keyVectorSerializeWrite.serializeWrite(batch, batchIndex); + if (keyVectorSerializeWrite.getHasAnyNulls()) { + // Not expecting NULLs in MapJoin -- they should have been filtered out. + throw new HiveException("Null key not expected in MapJoin"); + } /* * Equal key series checking. diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java index 43e6fa7..f03bf6f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java @@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.exec.vector.mapjoin.hashtable.VectorMapJoinBytesHashSet; // Multi-Key specific imports. -import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRowNoNulls; +import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow; import org.apache.hadoop.hive.serde2.ByteStream.Output; import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite; @@ -64,7 +64,7 @@ // Object that can take a set of columns in row in a vectorized row batch and serialized it. // Known to not have any nulls. - private transient VectorSerializeRowNoNulls keyVectorSerializeWriteNoNulls; + private transient VectorSerializeRow keyVectorSerializeWrite; // The BinarySortable serialization of the current key. private transient Output currentKeyOutput; @@ -104,9 +104,9 @@ public void process(Object row, int tag) throws HiveException { * Initialize Multi-Key members for this specialized class. */ - keyVectorSerializeWriteNoNulls = new VectorSerializeRowNoNulls( + keyVectorSerializeWrite = new VectorSerializeRow( new BinarySortableSerializeWrite(bigTableKeyColumnMap.length)); - keyVectorSerializeWriteNoNulls.init(bigTableKeyTypeNames, bigTableKeyColumnMap); + keyVectorSerializeWrite.init(bigTableKeyTypeNames, bigTableKeyColumnMap); currentKeyOutput = new Output(); saveKeyOutput = new Output(); @@ -193,8 +193,12 @@ public void process(Object row, int tag) throws HiveException { * Multi-Key specific repeated lookup. */ - keyVectorSerializeWriteNoNulls.setOutput(currentKeyOutput); - keyVectorSerializeWriteNoNulls.serializeWriteNoNulls(batch, 0); + keyVectorSerializeWrite.setOutput(currentKeyOutput); + keyVectorSerializeWrite.serializeWrite(batch, 0); + if (keyVectorSerializeWrite.getHasAnyNulls()) { + // Not expecting NULLs in MapJoin -- they should have been filtered out. + throw new HiveException("Null key not expected in MapJoin"); + } byte[] keyBytes = currentKeyOutput.getData(); int keyLength = currentKeyOutput.getLength(); // LOG.debug(CLASS_NAME + " processOp all " + displayBytes(keyBytes, 0, keyLength)); @@ -247,8 +251,12 @@ public void process(Object row, int tag) throws HiveException { */ // Generate binary sortable key for current row in vectorized row batch. - keyVectorSerializeWriteNoNulls.setOutput(currentKeyOutput); - keyVectorSerializeWriteNoNulls.serializeWriteNoNulls(batch, batchIndex); + keyVectorSerializeWrite.setOutput(currentKeyOutput); + keyVectorSerializeWrite.serializeWrite(batch, batchIndex); + if (keyVectorSerializeWrite.getHasAnyNulls()) { + // Not expecting NULLs in MapJoin -- they should have been filtered out. + throw new HiveException("Null key not expected in MapJoin"); + } // LOG.debug(CLASS_NAME + " currentKey " + // VectorizedBatchUtil.displayBytes(currentKeyOutput.getData(), 0, currentKeyOutput.getLength())); diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java index 49e0e85..2c98a24 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java @@ -294,9 +294,8 @@ public void process(Object row, int tag) throws HiveException { // Generate binary sortable key for current row in vectorized row batch. keyVectorSerializeWrite.setOutput(currentKeyOutput); - boolean isNull = keyVectorSerializeWrite.serializeWrite(batch, batchIndex); - - if (isNull) { + keyVectorSerializeWrite.serializeWrite(batch, batchIndex); + if (keyVectorSerializeWrite.getHasAnyNulls()) { // Have that the NULL does not interfere with the current equal key series, if there // is one. We do not set saveJoinResult. diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java new file mode 100644 index 0000000..6d1c155 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java @@ -0,0 +1,410 @@ +/** + * 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.hadoop.hive.ql.exec.vector.reducesink; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Properties; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.ql.exec.TerminalOperator; +import org.apache.hadoop.hive.ql.exec.Utilities; +import org.apache.hadoop.hive.ql.exec.persistence.HashTableUtil; +import org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow; +import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext; +import org.apache.hadoop.hive.ql.exec.vector.VectorizationContextRegion; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedBatchUtil; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; +import org.apache.hadoop.hive.ql.exec.vector.keyseries.VectorKeySeriesSerialized; +import org.apache.hadoop.hive.ql.io.HiveKey; +import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.plan.BaseWork; +import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc; +import org.apache.hadoop.hive.ql.plan.OperatorDesc; +import org.apache.hadoop.hive.ql.plan.TableDesc; +import org.apache.hadoop.hive.ql.plan.VectorReduceSinkDesc; +import org.apache.hadoop.hive.ql.plan.VectorReduceSinkInfo; +import org.apache.hadoop.hive.ql.plan.api.OperatorType; +import org.apache.hadoop.hive.serde.serdeConstants; +import org.apache.hadoop.hive.serde2.Serializer; +import org.apache.hadoop.hive.serde2.ByteStream.Output; +import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite; +import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinarySerializeWrite; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; +import org.apache.hadoop.io.BytesWritable; +import org.apache.hadoop.io.LongWritable; +import org.apache.hadoop.io.Writable; +import org.apache.hadoop.mapred.OutputCollector; + +/** + * This class is common operator class for native vectorized reduce sink. + */ +public abstract class VectorReduceSinkCommonOperator extends TerminalOperator + implements VectorizationContextRegion { + + private static final long serialVersionUID = 1L; + private static final String CLASS_NAME = VectorReduceSinkCommonOperator.class.getName(); + private static final Log LOG = LogFactory.getLog(CLASS_NAME); + + protected VectorReduceSinkDesc vectorDesc; + + /** + * Information about our native vectorized reduce sink created by the Vectorizer class during + * it decision process and useful for execution. + */ + protected VectorReduceSinkInfo vectorReduceSinkInfo; + + protected VectorizationContext vContext; + + /** + * Reduce sink key vector expressions. + */ + + // This is map of which vectorized row batch columns are the key columns. + // And, their types. + protected int[] reduceSinkKeyColumnMap; + protected TypeInfo[] reduceSinkKeyTypeInfos; + + // Optional vectorized key expressions that need to be run on each batch. + protected VectorExpression[] reduceSinkKeyExpressions; + + // This is map of which vectorized row batch columns are the value columns. + // And, their types. + protected int[] reduceSinkValueColumnMap; + protected TypeInfo[] reduceSinkValueTypeInfos; + + // Optional vectorized value expressions that need to be run on each batch. + protected VectorExpression[] reduceSinkValueExpressions; + + // The above members are initialized by the constructor and must not be + // transient. + //--------------------------------------------------------------------------- + + // Whether there is to be a tag added to the end of each key and the tag value. + private transient boolean reduceSkipTag; + private transient byte reduceTagByte; + + // Binary sortable key serializer. + protected transient BinarySortableSerializeWrite keyBinarySortableSerializeWrite; + + // The serialized all null key and its hash code. + private transient byte[] nullBytes; + private transient int nullKeyHashCode; + + // Lazy binary value serializer. + private transient LazyBinarySerializeWrite valueLazyBinarySerializeWrite; + + // This helper object serializes LazyBinary format reducer values from columns of a row + // in a vectorized row batch. + private transient VectorSerializeRow valueVectorSerializeRow; + + // The output buffer used to serialize a value into. + private transient Output valueOutput; + + // The hive key and bytes writable value needed to pass the key and value to the collector. + private transient HiveKey keyWritable; + private transient BytesWritable valueBytesWritable; + + // Where to write our key and value pairs. + private transient OutputCollector out; + + // The object that determines equal key series. + protected transient VectorKeySeriesSerialized serializedKeySeries; + + private transient long numRows = 0; + private transient long cntr = 1; + private transient long logEveryNRows = 0; + private final transient LongWritable recordCounter = new LongWritable(); + + // For debug tracing: the name of the map or reduce task. + protected transient String taskName; + + // Debug display. + protected transient long batchCounter; + + //--------------------------------------------------------------------------- + + public VectorReduceSinkCommonOperator() { + super(); + } + + public VectorReduceSinkCommonOperator(VectorizationContext vContext, OperatorDesc conf) + throws HiveException { + super(); + + ReduceSinkDesc desc = (ReduceSinkDesc) conf; + this.conf = desc; + vectorDesc = desc.getVectorDesc(); + vectorReduceSinkInfo = vectorDesc.getVectorReduceSinkInfo(); + this.vContext = vContext; + + // Since a key expression can be a calculation and the key will go into a scratch column, + // we need the mapping and type information. + reduceSinkKeyColumnMap = vectorReduceSinkInfo.getReduceSinkKeyColumnMap(); + reduceSinkKeyTypeInfos = vectorReduceSinkInfo.getReduceSinkKeyTypeInfos(); + reduceSinkKeyExpressions = vectorReduceSinkInfo.getReduceSinkKeyExpressions(); + + reduceSinkValueColumnMap = vectorReduceSinkInfo.getReduceSinkValueColumnMap(); + reduceSinkValueTypeInfos = vectorReduceSinkInfo.getReduceSinkValueTypeInfos(); + reduceSinkValueExpressions = vectorReduceSinkInfo.getReduceSinkValueExpressions(); + } + + // Get the sort order + private boolean[] getColumnSortOrder(Properties properties, int columnCount) { + String columnSortOrder = properties.getProperty(serdeConstants.SERIALIZATION_SORT_ORDER); + boolean[] columnSortOrderIsDesc = new boolean[columnCount]; + if (columnSortOrder == null) { + Arrays.fill(columnSortOrderIsDesc, false); + } else { + for (int i = 0; i < columnSortOrderIsDesc.length; i++) { + columnSortOrderIsDesc[i] = (columnSortOrder.charAt(i) == '-'); + } + } + return columnSortOrderIsDesc; + } + + @Override + protected void initializeOp(Configuration hconf) throws HiveException { + super.initializeOp(hconf); + + if (LOG.isDebugEnabled()) { + // Determine the name of our map or reduce task for debug tracing. + BaseWork work = Utilities.getMapWork(hconf); + if (work == null) { + work = Utilities.getReduceWork(hconf); + } + taskName = work.getName(); + } + + reduceSkipTag = conf.getSkipTag(); + reduceTagByte = (byte) conf.getTag(); + + if (isLogInfoEnabled) { + LOG.info("Using tag = " + (int) reduceTagByte); + } + + TableDesc keyTableDesc = conf.getKeySerializeInfo(); + boolean[] columnSortOrder = + getColumnSortOrder(keyTableDesc.getProperties(), reduceSinkKeyColumnMap.length); + + keyBinarySortableSerializeWrite = new BinarySortableSerializeWrite(columnSortOrder); + + // Create all nulls key. + try { + Output nullKeyOutput = new Output(); + keyBinarySortableSerializeWrite.set(nullKeyOutput); + for (int i = 0; i < reduceSinkKeyColumnMap.length; i++) { + keyBinarySortableSerializeWrite.writeNull(); + } + int nullBytesLength = nullKeyOutput.getLength(); + nullBytes = new byte[nullBytesLength]; + System.arraycopy(nullKeyOutput.getData(), 0, nullBytes, 0, nullBytesLength); + nullKeyHashCode = HashTableUtil.calculateBytesHashCode(nullBytes, 0, nullBytesLength); + } catch (Exception e) { + throw new HiveException(e); + } + + valueLazyBinarySerializeWrite = new LazyBinarySerializeWrite(reduceSinkValueColumnMap.length); + + valueVectorSerializeRow = + new VectorSerializeRow( + valueLazyBinarySerializeWrite); + valueVectorSerializeRow.init(reduceSinkValueTypeInfos, reduceSinkValueColumnMap); + + valueOutput = new Output(); + valueVectorSerializeRow.setOutput(valueOutput); + + keyWritable = new HiveKey(); + + valueBytesWritable = new BytesWritable(); + + batchCounter = 0; + } + + @Override + public void process(Object row, int tag) throws HiveException { + + try { + VectorizedRowBatch batch = (VectorizedRowBatch) row; + + batchCounter++; + + if (batch.size == 0) { + if (LOG.isDebugEnabled()) { + LOG.debug(CLASS_NAME + " batch #" + batchCounter + " empty"); + } + return; + } + + // Perform any key expressions. Results will go into scratch columns. + if (reduceSinkKeyExpressions != null) { + for (VectorExpression ve : reduceSinkKeyExpressions) { + ve.evaluate(batch); + } + } + + // Perform any value expressions. Results will go into scratch columns. + if (reduceSinkValueExpressions != null) { + for (VectorExpression ve : reduceSinkValueExpressions) { + ve.evaluate(batch); + } + } + + serializedKeySeries.processBatch(batch); + + boolean selectedInUse = batch.selectedInUse; + int[] selected = batch.selected; + + int keyLength; + int logical; + int end; + int batchIndex; + do { + if (serializedKeySeries.getCurrentIsAllNull()) { + + // Use the same logic as ReduceSinkOperator.toHiveKey. + // + if (tag == -1 || reduceSkipTag) { + keyWritable.set(nullBytes, 0, nullBytes.length); + } else { + keyWritable.setSize(nullBytes.length + 1); + System.arraycopy(nullBytes, 0, keyWritable.get(), 0, nullBytes.length); + keyWritable.get()[nullBytes.length] = reduceTagByte; + } + keyWritable.setDistKeyLength(nullBytes.length); + keyWritable.setHashCode(nullKeyHashCode); + + } else { + + // One serialized key for 1 or more rows for the duplicate keys. + // LOG.info("reduceSkipTag " + reduceSkipTag + " tag " + tag + " reduceTagByte " + (int) reduceTagByte + " keyLength " + serializedKeySeries.getSerializedLength()); + // LOG.info("process offset " + serializedKeySeries.getSerializedStart() + " length " + serializedKeySeries.getSerializedLength()); + keyLength = serializedKeySeries.getSerializedLength(); + if (tag == -1 || reduceSkipTag) { + keyWritable.set(serializedKeySeries.getSerializedBytes(), + serializedKeySeries.getSerializedStart(), keyLength); + } else { + keyWritable.setSize(keyLength + 1); + System.arraycopy(serializedKeySeries.getSerializedBytes(), + serializedKeySeries.getSerializedStart(), keyWritable.get(), 0, keyLength); + keyWritable.get()[keyLength] = reduceTagByte; + } + keyWritable.setDistKeyLength(keyLength); + keyWritable.setHashCode(serializedKeySeries.getCurrentHashCode()); + } + + logical = serializedKeySeries.getCurrentLogical(); + end = logical + serializedKeySeries.getCurrentDuplicateCount(); + do { + batchIndex = (selectedInUse ? selected[logical] : logical); + + valueLazyBinarySerializeWrite.reset(); + valueVectorSerializeRow.serializeWrite(batch, batchIndex); + + valueBytesWritable.set(valueOutput.getData(), 0, valueOutput.getLength()); + + collect(keyWritable, valueBytesWritable); + } while (++logical < end); + + if (!serializedKeySeries.next()) { + break; + } + } while (true); + + } catch (Exception e) { + throw new HiveException(e); + } + } + + protected void collect(BytesWritable keyWritable, Writable valueWritable) throws IOException { + // Since this is a terminal operator, update counters explicitly - + // forward is not called + if (null != out) { + numRows++; + if (isLogInfoEnabled) { + if (numRows == cntr) { + cntr = logEveryNRows == 0 ? cntr * 10 : numRows + logEveryNRows; + if (cntr < 0 || numRows < 0) { + cntr = 0; + numRows = 1; + } + LOG.info(toString() + ": records written - " + numRows); + } + } + + // BytesWritable valueBytesWritable = (BytesWritable) valueWritable; + // LOG.info("VectorReduceSinkCommonOperator collect keyWritable " + keyWritable.getLength() + " " + + // VectorizedBatchUtil.displayBytes(keyWritable.getBytes(), 0, keyWritable.getLength()) + + // " valueWritable " + valueBytesWritable.getLength() + + // VectorizedBatchUtil.displayBytes(valueBytesWritable.getBytes(), 0, valueBytesWritable.getLength())); + + out.collect(keyWritable, valueWritable); + } + } + + @Override + protected void closeOp(boolean abort) throws HiveException { + super.closeOp(abort); + out = null; + if (isLogInfoEnabled) { + LOG.info(toString() + ": records written - " + numRows); + } + recordCounter.set(numRows); + } + + /** + * @return the name of the operator + */ + @Override + public String getName() { + return getOperatorName(); + } + + static public String getOperatorName() { + return "RS"; + } + + @Override + public OperatorType getType() { + return OperatorType.REDUCESINK; + } + + @Override + public VectorizationContext getOuputVectorizationContext() { + return vContext; + } + + @Override + public boolean getIsReduceSink() { + return true; + } + + @Override + public String getReduceOutputName() { + return conf.getOutputName(); + } + + @Override + public void setOutputCollector(OutputCollector _out) { + this.out = _out; + } +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkLongOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkLongOperator.java new file mode 100644 index 0000000..cec5660 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkLongOperator.java @@ -0,0 +1,72 @@ +/** + * 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.hadoop.hive.ql.exec.vector.reducesink; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext; +import org.apache.hadoop.hive.ql.exec.vector.keyseries.VectorKeySeriesLongSerialized; +import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.plan.OperatorDesc; +import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; + +/* + * Specialized class for native vectorized reduce sink that is reducing on a single long key column. + */ +public class VectorReduceSinkLongOperator extends VectorReduceSinkCommonOperator { + + private static final long serialVersionUID = 1L; + private static final String CLASS_NAME = VectorReduceSinkLongOperator.class.getName(); + private static final Log LOG = LogFactory.getLog(CLASS_NAME); + + // The column number and type information for this one column long reduce key. + private transient int singleKeyColumn; + private transient PrimitiveTypeInfo singleKeyColumnPrimitiveTypeInfo; + + // The above members are initialized by the constructor and must not be + // transient. + //--------------------------------------------------------------------------- + + //--------------------------------------------------------------------------- + // Pass-thru constructors. + // + + public VectorReduceSinkLongOperator() { + super(); + } + + public VectorReduceSinkLongOperator(VectorizationContext vContext, OperatorDesc conf) + throws HiveException { + super(vContext, conf); + } + + @Override + protected void initializeOp(Configuration hconf) throws HiveException { + super.initializeOp(hconf); + + singleKeyColumn = reduceSinkKeyColumnMap[0]; + singleKeyColumnPrimitiveTypeInfo = (PrimitiveTypeInfo) reduceSinkKeyTypeInfos[0]; + + serializedKeySeries = + new VectorKeySeriesLongSerialized( + singleKeyColumn, singleKeyColumnPrimitiveTypeInfo, keyBinarySortableSerializeWrite); + } +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkMultiKeyOperator.java new file mode 100644 index 0000000..a4ef66b --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkMultiKeyOperator.java @@ -0,0 +1,68 @@ +/** + * 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.hadoop.hive.ql.exec.vector.reducesink; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext; +import org.apache.hadoop.hive.ql.exec.vector.keyseries.VectorKeySeriesMultiSerialized; +import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.plan.OperatorDesc; +import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite; + +/* + * Specialized class for native vectorized reduce sink that is reducing on multiple key columns + * (or a single non-long / non-string column). + */ +public class VectorReduceSinkMultiKeyOperator extends VectorReduceSinkCommonOperator { + + private static final long serialVersionUID = 1L; + private static final String CLASS_NAME = VectorReduceSinkMultiKeyOperator.class.getName(); + private static final Log LOG = LogFactory.getLog(CLASS_NAME); + + // The above members are initialized by the constructor and must not be + // transient. + //--------------------------------------------------------------------------- + + //--------------------------------------------------------------------------- + // Pass-thru constructors. + // + + public VectorReduceSinkMultiKeyOperator() { + super(); + } + + public VectorReduceSinkMultiKeyOperator(VectorizationContext vContext, OperatorDesc conf) + throws HiveException { + super(vContext, conf); + } + + @Override + protected void initializeOp(Configuration hconf) throws HiveException { + super.initializeOp(hconf); + + VectorKeySeriesMultiSerialized serializedMultiKeySeries = + new VectorKeySeriesMultiSerialized( + keyBinarySortableSerializeWrite); + serializedMultiKeySeries.init(reduceSinkKeyTypeInfos, reduceSinkKeyColumnMap); + + serializedKeySeries = serializedMultiKeySeries; + } +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkStringOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkStringOperator.java new file mode 100644 index 0000000..b6cb527 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkStringOperator.java @@ -0,0 +1,70 @@ +/** + * 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.hadoop.hive.ql.exec.vector.reducesink; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext; +import org.apache.hadoop.hive.ql.exec.vector.keyseries.VectorKeySeriesBytesSerialized; +import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.plan.OperatorDesc; +import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; + +/* + * Specialized class for native vectorized reduce sink that is reducing on a single long key column. + */ +public class VectorReduceSinkStringOperator extends VectorReduceSinkCommonOperator { + + private static final long serialVersionUID = 1L; + private static final String CLASS_NAME = VectorReduceSinkStringOperator.class.getName(); + private static final Log LOG = LogFactory.getLog(CLASS_NAME); + + // The column number and type information for this one column string reduce key. + private transient int singleKeyColumn; + + // The above members are initialized by the constructor and must not be + // transient. + //--------------------------------------------------------------------------- + + //--------------------------------------------------------------------------- + // Pass-thru constructors. + // + + public VectorReduceSinkStringOperator() { + super(); + } + + public VectorReduceSinkStringOperator(VectorizationContext vContext, OperatorDesc conf) + throws HiveException { + super(vContext, conf); + } + + @Override + protected void initializeOp(Configuration hconf) throws HiveException { + super.initializeOp(hconf); + + singleKeyColumn = reduceSinkKeyColumnMap[0]; + + serializedKeySeries = + new VectorKeySeriesBytesSerialized( + singleKeyColumn, keyBinarySortableSerializeWrite); + } +} \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java index 4dead18..585572a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java @@ -53,7 +53,10 @@ import org.apache.hadoop.hive.ql.exec.vector.mapjoin.VectorMapJoinOuterLongOperator; import org.apache.hadoop.hive.ql.exec.vector.mapjoin.VectorMapJoinOuterMultiKeyOperator; import org.apache.hadoop.hive.ql.exec.vector.mapjoin.VectorMapJoinOuterStringOperator; -import org.apache.hadoop.hive.ql.exec.vector.ColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.reducesink.VectorReduceSinkLongOperator; +import org.apache.hadoop.hive.ql.exec.vector.reducesink.VectorReduceSinkMultiKeyOperator; +import org.apache.hadoop.hive.ql.exec.vector.reducesink.VectorReduceSinkStringOperator; +import org.apache.hadoop.hive.ql.exec.vector.ColumnVector.Type; import org.apache.hadoop.hive.ql.exec.vector.VectorMapJoinOperator; import org.apache.hadoop.hive.ql.exec.vector.VectorMapJoinOuterFilteredOperator; import org.apache.hadoop.hive.ql.exec.vector.VectorSMBMapJoinOperator; @@ -61,7 +64,10 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext.InConstantType; import org.apache.hadoop.hive.ql.exec.vector.VectorizationContextRegion; import org.apache.hadoop.hive.ql.exec.vector.VectorizedInputFormatInterface; +import org.apache.hadoop.hive.ql.exec.vector.expressions.IdentityExpression; +import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression; +import org.apache.hadoop.hive.ql.io.AcidUtils; import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker; import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher; import org.apache.hadoop.hive.ql.lib.Dispatcher; @@ -89,10 +95,12 @@ import org.apache.hadoop.hive.ql.plan.MapWork; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.PartitionDesc; +import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc; import org.apache.hadoop.hive.ql.plan.ReduceWork; import org.apache.hadoop.hive.ql.plan.SMBJoinDesc; import org.apache.hadoop.hive.ql.plan.SparkHashTableSinkDesc; import org.apache.hadoop.hive.ql.plan.SparkWork; +import org.apache.hadoop.hive.ql.plan.TableDesc; import org.apache.hadoop.hive.ql.plan.TableScanDesc; import org.apache.hadoop.hive.ql.plan.TezWork; import org.apache.hadoop.hive.ql.plan.VectorGroupByDesc; @@ -100,6 +108,8 @@ import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableImplementationType; import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableKeyType; import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableKind; +import org.apache.hadoop.hive.ql.plan.VectorReduceSinkDesc; +import org.apache.hadoop.hive.ql.plan.VectorReduceSinkInfo; import org.apache.hadoop.hive.ql.plan.api.OperatorType; import org.apache.hadoop.hive.ql.udf.UDFAcos; import org.apache.hadoop.hive.ql.udf.UDFAsin; @@ -140,8 +150,10 @@ import org.apache.hadoop.hive.ql.udf.UDFYear; import org.apache.hadoop.hive.ql.udf.generic.*; import org.apache.hadoop.hive.serde.serdeConstants; +import org.apache.hadoop.hive.serde2.Deserializer; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; +import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory; import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; @@ -1716,6 +1728,184 @@ private boolean canSpecializeMapJoin(Operator op, MapJoi return specialize; } + private Operator specializeReduceSinkOperator( + Operator op, VectorizationContext vContext, ReduceSinkDesc desc, + VectorReduceSinkInfo vectorReduceSinkInfo) throws HiveException { + + Operator vectorOp = null; + Class> opClass = null; + + Type[] reduceSinkKeyColumnVectorTypes = vectorReduceSinkInfo.getReduceSinkKeyColumnVectorTypes(); + + // By default, we can always use the multi-key class. + VectorReduceSinkDesc.ReduceSinkKeyType reduceSinkKeyType = VectorReduceSinkDesc.ReduceSinkKeyType.MULTI_KEY; + + // Look for single column optimization. + if (reduceSinkKeyColumnVectorTypes.length == 1) { + LOG.info("Vectorizer vectorizeOperator groupby typeName " + vectorReduceSinkInfo.getReduceSinkKeyTypeInfos()[0]); + Type columnVectorType = reduceSinkKeyColumnVectorTypes[0]; + switch (columnVectorType) { + case LONG: + { + PrimitiveCategory primitiveCategory = + ((PrimitiveTypeInfo) vectorReduceSinkInfo.getReduceSinkKeyTypeInfos()[0]).getPrimitiveCategory(); + switch (primitiveCategory) { + case BOOLEAN: + case BYTE: + case SHORT: + case INT: + case LONG: + reduceSinkKeyType = VectorReduceSinkDesc.ReduceSinkKeyType.LONG; + break; + default: + // Other integer types not supported yet. + break; + } + } + break; + case BYTES: + reduceSinkKeyType = VectorReduceSinkDesc.ReduceSinkKeyType.STRING; + default: + // Stay with multi-key. + break; + } + } + + switch (reduceSinkKeyType) { + case LONG: + opClass = VectorReduceSinkLongOperator.class; + break; + case STRING: + opClass = VectorReduceSinkStringOperator.class; + break; + case MULTI_KEY: + opClass = VectorReduceSinkMultiKeyOperator.class; + break; + default: + throw new HiveException("Unknown reduce sink key type " + reduceSinkKeyType); + } + + VectorReduceSinkDesc vectorDesc = new VectorReduceSinkDesc(); + desc.setVectorDesc(vectorDesc); + vectorDesc.setReduceSinkKeyType(reduceSinkKeyType); + vectorDesc.setVectorReduceSinkInfo(vectorReduceSinkInfo); + + vectorOp = OperatorFactory.getVectorOperator(opClass, op.getConf(), vContext); + LOG.info("Vectorizer vectorizeOperator reduce sink class " + vectorOp.getClass().getSimpleName()); + + return vectorOp; + } + + private boolean canSpecializeReduceSink(ReduceSinkDesc desc, + boolean isTez, VectorizationContext vContext, + VectorReduceSinkInfo vectorReduceSinkInfo) throws HiveException { + + if (!HiveConf.getBoolVar(hiveConf, + HiveConf.ConfVars.HIVE_VECTORIZATION_REDUCESINK_NEW_ENABLED)) { + return false; + } + + // Many restrictions. + + if (!isTez) { + return false; + } + + if (desc.getWriteType() == AcidUtils.Operation.UPDATE || + desc.getWriteType() == AcidUtils.Operation.DELETE) { + return false; + } + + if (desc.getBucketCols() != null && !desc.getBucketCols().isEmpty()) { + return false; + } + + if (desc.getPartitionCols().size() > 0) { + return false; + } + + if (desc.getTopN() >= 0) { + return false; + } + + TableDesc keyTableDesc = desc.getKeySerializeInfo(); + Class keySerializerClass = keyTableDesc.getDeserializerClass(); + if (keySerializerClass != org.apache.hadoop.hive.serde2.binarysortable.BinarySortableSerDe.class) { + return false; + } + + TableDesc valueTableDesc = desc.getValueSerializeInfo(); + Class valueDeserializerClass = valueTableDesc.getDeserializerClass(); + if (valueDeserializerClass != org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe.class) { + return false; + } + + // We are doing work here we'd normally do in VectorGroupByCommonOperator's constructor. + // So if we later decide not to specialize, we'll just waste any scratch columns allocated... + + List keysDescs = desc.getKeyCols(); + VectorExpression[] allKeyExpressions = vContext.getVectorExpressions(keysDescs); + + // Since a key expression can be a calculation and the key will go into a scratch column, + // we need the mapping and type information. + int[] reduceSinkKeyColumnMap = new int[allKeyExpressions.length]; + TypeInfo[] reduceSinkKeyTypeInfos = new TypeInfo[allKeyExpressions.length]; + Type[] reduceSinkKeyColumnVectorTypes = new Type[allKeyExpressions.length]; + ArrayList groupByKeyExpressionsList = new ArrayList(); + VectorExpression[] reduceSinkKeyExpressions; + for (int i = 0; i < reduceSinkKeyColumnMap.length; i++) { + VectorExpression ve = allKeyExpressions[i]; + reduceSinkKeyColumnMap[i] = ve.getOutputColumn(); + reduceSinkKeyTypeInfos[i] = keysDescs.get(i).getTypeInfo(); + reduceSinkKeyColumnVectorTypes[i] = + VectorizationContext.getColumnVectorTypeFromTypeInfo(reduceSinkKeyTypeInfos[i]); + if (!IdentityExpression.isColumnOnly(ve)) { + groupByKeyExpressionsList.add(ve); + } + } + if (groupByKeyExpressionsList.size() == 0) { + reduceSinkKeyExpressions = null; + } else { + reduceSinkKeyExpressions = groupByKeyExpressionsList.toArray(new VectorExpression[0]); + } + + ArrayList valueDescs = desc.getValueCols(); + VectorExpression[] allValueExpressions = vContext.getVectorExpressions(valueDescs); + + int[] reduceSinkValueColumnMap = new int[valueDescs.size()]; + TypeInfo[] reduceSinkValueTypeInfos = new TypeInfo[valueDescs.size()]; + Type[] reduceSinkValueColumnVectorTypes = new Type[valueDescs.size()]; + ArrayList reduceSinkValueExpressionsList = new ArrayList(); + VectorExpression[] reduceSinkValueExpressions; + for (int i = 0; i < valueDescs.size(); ++i) { + VectorExpression ve = allValueExpressions[i]; + reduceSinkValueColumnMap[i] = ve.getOutputColumn(); + reduceSinkValueTypeInfos[i] = valueDescs.get(i).getTypeInfo(); + reduceSinkValueColumnVectorTypes[i] = + VectorizationContext.getColumnVectorTypeFromTypeInfo(reduceSinkValueTypeInfos[i]); + if (!IdentityExpression.isColumnOnly(ve)) { + reduceSinkValueExpressionsList.add(ve); + } + } + if (reduceSinkValueExpressionsList.size() == 0) { + reduceSinkValueExpressions = null; + } else { + reduceSinkValueExpressions = reduceSinkValueExpressionsList.toArray(new VectorExpression[0]); + } + + vectorReduceSinkInfo.setReduceSinkKeyColumnMap(reduceSinkKeyColumnMap); + vectorReduceSinkInfo.setReduceSinkKeyTypeInfos(reduceSinkKeyTypeInfos); + vectorReduceSinkInfo.setReduceSinkKeyColumnVectorTypes(reduceSinkKeyColumnVectorTypes); + vectorReduceSinkInfo.setReduceSinkKeyExpressions(reduceSinkKeyExpressions); + + vectorReduceSinkInfo.setReduceSinkValueColumnMap(reduceSinkValueColumnMap); + vectorReduceSinkInfo.setReduceSinkValueTypeInfos(reduceSinkValueTypeInfos); + vectorReduceSinkInfo.setReduceSinkValueColumnVectorTypes(reduceSinkValueColumnVectorTypes); + vectorReduceSinkInfo.setReduceSinkValueExpressions(reduceSinkValueExpressions); + + return true; + } + Operator vectorizeOperator(Operator op, VectorizationContext vContext, boolean isTez) throws HiveException { Operator vectorOp = null; @@ -1756,11 +1946,28 @@ private boolean canSpecializeMapJoin(Operator op, MapJoi } } break; + + case REDUCESINK: + { + VectorReduceSinkInfo vectorReduceSinkInfo = new VectorReduceSinkInfo(); + ReduceSinkDesc desc = (ReduceSinkDesc) op.getConf(); + boolean specialize = canSpecializeReduceSink(desc, isTez, vContext, vectorReduceSinkInfo); + + if (!specialize) { + + vectorOp = OperatorFactory.getVectorOperator(op.getConf(), vContext); + + } else { + + vectorOp = specializeReduceSinkOperator(op, vContext, desc, vectorReduceSinkInfo); + + } + } + break; case GROUPBY: case FILTER: case SELECT: case FILESINK: - case REDUCESINK: case LIMIT: case EXTRACT: case EVENT: diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java index 615739e..2f69b7f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java @@ -120,6 +120,10 @@ private ReducerTraits(int trait) { private transient boolean hasOrderBy = false; private static transient Logger LOG = LoggerFactory.getLogger(ReduceSinkDesc.class); + + // Extra parameters only for vectorization. + private VectorReduceSinkDesc vectorDesc; + public ReduceSinkDesc() { } @@ -146,6 +150,7 @@ public ReduceSinkDesc(ArrayList keyCols, this.setNumBuckets(-1); this.setBucketCols(null); this.writeType = writeType; + this.vectorDesc = null; } @Override @@ -175,9 +180,21 @@ public Object clone() { desc.reduceTraits = reduceTraits.clone(); desc.setDeduplicated(isDeduplicated); desc.setHasOrderBy(hasOrderBy); + if (vectorDesc != null) { + throw new RuntimeException("Clone with vectorization desc not supported"); + } + desc.vectorDesc = null; return desc; } + public void setVectorDesc(VectorReduceSinkDesc vectorDesc) { + this.vectorDesc = vectorDesc; + } + + public VectorReduceSinkDesc getVectorDesc() { + return vectorDesc; + } + public java.util.ArrayList getOutputKeyColumnNames() { return outputKeyColumnNames; } diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/VectorReduceSinkDesc.java ql/src/java/org/apache/hadoop/hive/ql/plan/VectorReduceSinkDesc.java new file mode 100644 index 0000000..c56bff6 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/plan/VectorReduceSinkDesc.java @@ -0,0 +1,64 @@ +/** + * 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.hadoop.hive.ql.plan; + +/** + * VectorReduceSinkDesc. + * + * Extra parameters beyond ReduceSinkDesc just for the VectorReduceSinkOperator. + * + * We don't extend ReduceSinkDesc because the base OperatorDesc doesn't support + * clone and adding it is a lot work for little gain. + */ +public class VectorReduceSinkDesc extends AbstractVectorDesc { + + private static long serialVersionUID = 1L; + + public static enum ReduceSinkKeyType { + NONE, + LONG, + STRING, + MULTI_KEY + } + + private ReduceSinkKeyType reduceSinkKeyType; + + private VectorReduceSinkInfo vectorReduceSinkInfo; + + public VectorReduceSinkDesc() { + reduceSinkKeyType = ReduceSinkKeyType.NONE; + vectorReduceSinkInfo = null; + } + + public ReduceSinkKeyType reduceSinkKeyType() { + return reduceSinkKeyType; + } + + public void setReduceSinkKeyType(ReduceSinkKeyType reduceSinkKeyType) { + this.reduceSinkKeyType = reduceSinkKeyType; + } + + public void setVectorReduceSinkInfo(VectorReduceSinkInfo vectorReduceSinkInfo) { + this.vectorReduceSinkInfo = vectorReduceSinkInfo; + } + + public VectorReduceSinkInfo getVectorReduceSinkInfo() { + return vectorReduceSinkInfo; + } +} diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/VectorReduceSinkInfo.java ql/src/java/org/apache/hadoop/hive/ql/plan/VectorReduceSinkInfo.java new file mode 100644 index 0000000..8c35415 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/plan/VectorReduceSinkInfo.java @@ -0,0 +1,123 @@ +/** + * 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.hadoop.hive.ql.plan; + +import org.apache.hadoop.hive.ql.exec.vector.ColumnVector.Type; +import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; + +/** + * VectorGroupByAggregrationInfo. + * + * A convenience data structure that has information needed to vectorize reduce sink. + * + * It is created by the Vectorizer when it is determining whether it can specialize so the + * information doesn't have to be recreated again and agains by the VectorReduceSinkOperator's + * constructors and later during execution. + */ +public class VectorReduceSinkInfo { + + private static long serialVersionUID = 1L; + + private int[] reduceSinkKeyColumnMap; + private TypeInfo[] reduceSinkKeyTypeInfos; + private Type[] reduceSinkKeyColumnVectorTypes; + private VectorExpression[] reduceSinkKeyExpressions; + + private int[] reduceSinkValueColumnMap; + private TypeInfo[] reduceSinkValueTypeInfos; + private Type[] reduceSinkValueColumnVectorTypes; + private VectorExpression[] reduceSinkValueExpressions; + + public VectorReduceSinkInfo() { + reduceSinkKeyColumnMap = null; + reduceSinkKeyTypeInfos = null; + reduceSinkKeyColumnVectorTypes = null; + reduceSinkKeyExpressions = null; + + reduceSinkValueColumnMap = null; + reduceSinkValueTypeInfos = null; + reduceSinkValueColumnVectorTypes = null; + reduceSinkValueExpressions = null; + } + + public int[] getReduceSinkKeyColumnMap() { + return reduceSinkKeyColumnMap; + } + + public void setReduceSinkKeyColumnMap(int[] reduceSinkKeyColumnMap) { + this.reduceSinkKeyColumnMap = reduceSinkKeyColumnMap; + } + + public TypeInfo[] getReduceSinkKeyTypeInfos() { + return reduceSinkKeyTypeInfos; + } + + public void setReduceSinkKeyTypeInfos(TypeInfo[] reduceSinkKeyTypeInfos) { + this.reduceSinkKeyTypeInfos = reduceSinkKeyTypeInfos; + } + + public Type[] getReduceSinkKeyColumnVectorTypes() { + return reduceSinkKeyColumnVectorTypes; + } + + public void setReduceSinkKeyColumnVectorTypes(Type[] reduceSinkKeyColumnVectorTypes) { + this.reduceSinkKeyColumnVectorTypes = reduceSinkKeyColumnVectorTypes; + } + + public VectorExpression[] getReduceSinkKeyExpressions() { + return reduceSinkKeyExpressions; + } + + public void setReduceSinkKeyExpressions(VectorExpression[] reduceSinkKeyExpressions) { + this.reduceSinkKeyExpressions = reduceSinkKeyExpressions; + } + + public int[] getReduceSinkValueColumnMap() { + return reduceSinkValueColumnMap; + } + + public void setReduceSinkValueColumnMap(int[] reduceSinkValueColumnMap) { + this.reduceSinkValueColumnMap = reduceSinkValueColumnMap; + } + + public TypeInfo[] getReduceSinkValueTypeInfos() { + return reduceSinkValueTypeInfos; + } + + public void setReduceSinkValueTypeInfos(TypeInfo[] reduceSinkValueTypeInfos) { + this.reduceSinkValueTypeInfos = reduceSinkValueTypeInfos; + } + + public Type[] getReduceSinkValueColumnVectorTypes() { + return reduceSinkValueColumnVectorTypes; + } + + public void setReduceSinkValueColumnVectorTypes(Type[] reduceSinkValueColumnVectorTypes) { + this.reduceSinkValueColumnVectorTypes = reduceSinkValueColumnVectorTypes; + } + + public VectorExpression[] getReduceSinkValueExpressions() { + return reduceSinkValueExpressions; + } + + public void setReduceSinkValueExpressions(VectorExpression[] reduceSinkValueExpressions) { + this.reduceSinkValueExpressions = reduceSinkValueExpressions; + } +} diff --git ql/src/test/queries/clientpositive/vector_reduce1.q ql/src/test/queries/clientpositive/vector_reduce1.q new file mode 100644 index 0000000..6284d76 --- /dev/null +++ ql/src/test/queries/clientpositive/vector_reduce1.q @@ -0,0 +1,47 @@ +set hive.explain.user=false; +SET hive.vectorized.execution.enabled=true; +SET hive.vectorized.execution.reducesink.new.enabled=true; + +-- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +explain +select b from vectortab2korc order by b; + +select b from vectortab2korc order by b; diff --git ql/src/test/queries/clientpositive/vector_reduce2.q ql/src/test/queries/clientpositive/vector_reduce2.q new file mode 100644 index 0000000..e8607e2 --- /dev/null +++ ql/src/test/queries/clientpositive/vector_reduce2.q @@ -0,0 +1,47 @@ +set hive.explain.user=false; +SET hive.vectorized.execution.enabled=true; +SET hive.vectorized.execution.reducesink.new.enabled=true; + +-- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +explain +select s, i, s2 from vectortab2korc order by s, i, s2; + +select s, i, s2 from vectortab2korc order by s, i, s2; diff --git ql/src/test/queries/clientpositive/vector_reduce3.q ql/src/test/queries/clientpositive/vector_reduce3.q new file mode 100644 index 0000000..c0c4288 --- /dev/null +++ ql/src/test/queries/clientpositive/vector_reduce3.q @@ -0,0 +1,47 @@ +set hive.explain.user=false; +SET hive.vectorized.execution.enabled=true; +SET hive.vectorized.execution.reducesink.new.enabled=true; + +-- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +explain +select s from vectortab2korc order by s; + +select s from vectortab2korc order by s; diff --git ql/src/test/results/clientpositive/tez/vector_aggregate_without_gby.q.out ql/src/test/results/clientpositive/tez/vector_aggregate_without_gby.q.out new file mode 100644 index 0000000..9718871 --- /dev/null +++ ql/src/test/results/clientpositive/tez/vector_aggregate_without_gby.q.out @@ -0,0 +1,85 @@ +PREHOOK: query: create table testvec(id int, dt int, greg_dt string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@testvec +POSTHOOK: query: create table testvec(id int, dt int, greg_dt string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@testvec +PREHOOK: query: insert into table testvec +values +(1,20150330, '2015-03-30'), +(2,20150301, '2015-03-01'), +(3,20150502, '2015-05-02'), +(4,20150401, '2015-04-01'), +(5,20150313, '2015-03-13'), +(6,20150314, '2015-03-14'), +(7,20150404, '2015-04-04') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@testvec +POSTHOOK: query: insert into table testvec +values +(1,20150330, '2015-03-30'), +(2,20150301, '2015-03-01'), +(3,20150502, '2015-05-02'), +(4,20150401, '2015-04-01'), +(5,20150313, '2015-03-13'), +(6,20150314, '2015-03-14'), +(7,20150404, '2015-04-04') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@testvec +POSTHOOK: Lineage: testvec.dt EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +POSTHOOK: Lineage: testvec.greg_dt SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ] +POSTHOOK: Lineage: testvec.id EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: explain select max(dt), max(greg_dt) from testvec where id=5 +PREHOOK: type: QUERY +POSTHOOK: query: explain select max(dt), max(greg_dt) from testvec where id=5 +POSTHOOK: type: QUERY +Plan optimized by CBO. + +Vertex dependency in root stage +Reducer 2 <- Map 1 (SIMPLE_EDGE) + +Stage-0 + Fetch Operator + limit:-1 + Stage-1 + Reducer 2 + File Output Operator [FS_7] + compressed:false + Statistics:Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: NONE + table:{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","serde:":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"} + Group By Operator [OP_12] + | aggregations:["max(VALUE._col0)","max(VALUE._col1)"] + | outputColumnNames:["_col0","_col1"] + | Statistics:Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: NONE + |<-Map 1 [SIMPLE_EDGE] + Reduce Output Operator [RS_4] + sort order: + Statistics:Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: NONE + value expressions:_col0 (type: int), _col1 (type: string) + Group By Operator [OP_11] + aggregations:["max(dt)","max(greg_dt)"] + outputColumnNames:["_col0","_col1"] + Statistics:Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: NONE + Select Operator [OP_10] + outputColumnNames:["dt","greg_dt"] + Statistics:Num rows: 3 Data size: 306 Basic stats: COMPLETE Column stats: NONE + Filter Operator [FIL_9] + predicate:(id = 5) (type: boolean) + Statistics:Num rows: 3 Data size: 306 Basic stats: COMPLETE Column stats: NONE + TableScan [TS_0] + alias:testvec + Statistics:Num rows: 7 Data size: 714 Basic stats: COMPLETE Column stats: NONE + +PREHOOK: query: select max(dt), max(greg_dt) from testvec where id=5 +PREHOOK: type: QUERY +PREHOOK: Input: default@testvec +#### A masked pattern was here #### +POSTHOOK: query: select max(dt), max(greg_dt) from testvec where id=5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testvec +#### A masked pattern was here #### +20150313 2015-03-13 diff --git ql/src/test/results/clientpositive/tez/vector_bround.q.out ql/src/test/results/clientpositive/tez/vector_bround.q.out new file mode 100644 index 0000000..b520006 --- /dev/null +++ ql/src/test/results/clientpositive/tez/vector_bround.q.out @@ -0,0 +1,66 @@ +PREHOOK: query: create table test_vector_bround(v0 double, v1 double) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test_vector_bround +POSTHOOK: query: create table test_vector_bround(v0 double, v1 double) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test_vector_bround +PREHOOK: query: insert into table test_vector_bround +values +(2.5, 1.25), +(3.5, 1.35), +(-2.5, -1.25), +(-3.5, -1.35), +(2.49, 1.249), +(3.49, 1.349), +(2.51, 1.251), +(3.51, 1.351) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@test_vector_bround +POSTHOOK: query: insert into table test_vector_bround +values +(2.5, 1.25), +(3.5, 1.35), +(-2.5, -1.25), +(-3.5, -1.35), +(2.49, 1.249), +(3.49, 1.349), +(2.51, 1.251), +(3.51, 1.351) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@test_vector_bround +POSTHOOK: Lineage: test_vector_bround.v0 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: test_vector_bround.v1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: explain select bround(v0), bround(v1, 1) from test_vector_bround +PREHOOK: type: QUERY +POSTHOOK: query: explain select bround(v0), bround(v1, 1) from test_vector_bround +POSTHOOK: type: QUERY +Plan optimized by CBO. + +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_1] + outputColumnNames:["_col0","_col1"] + TableScan [TS_0] + alias:test_vector_bround + +PREHOOK: query: select bround(v0), bround(v1, 1) from test_vector_bround +PREHOOK: type: QUERY +PREHOOK: Input: default@test_vector_bround +#### A masked pattern was here #### +POSTHOOK: query: select bround(v0), bround(v1, 1) from test_vector_bround +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_vector_bround +#### A masked pattern was here #### +2.0 1.2 +4.0 1.4 +-2.0 -1.2 +-4.0 -1.4 +2.0 1.2 +3.0 1.3 +3.0 1.3 +4.0 1.4 diff --git ql/src/test/results/clientpositive/tez/vector_nvl.q.out ql/src/test/results/clientpositive/tez/vector_nvl.q.out new file mode 100644 index 0000000..b3f83ce --- /dev/null +++ ql/src/test/results/clientpositive/tez/vector_nvl.q.out @@ -0,0 +1,194 @@ +PREHOOK: query: EXPLAIN SELECT cdouble, nvl(cdouble, 100) as n +FROM alltypesorc +WHERE (cdouble IS NULL) +LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdouble, nvl(cdouble, 100) as n +FROM alltypesorc +WHERE (cdouble IS NULL) +LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: cdouble is null (type: boolean) + Select Operator + expressions: null (type: double), 100.0 (type: double) + outputColumnNames: _col0, _col1 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT cdouble, nvl(cdouble, 100) as n +FROM alltypesorc +WHERE (cdouble IS NULL) +LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdouble, nvl(cdouble, 100) as n +FROM alltypesorc +WHERE (cdouble IS NULL) +LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL 100.0 +NULL 100.0 +NULL 100.0 +NULL 100.0 +NULL 100.0 +NULL 100.0 +NULL 100.0 +NULL 100.0 +NULL 100.0 +NULL 100.0 +PREHOOK: query: EXPLAIN SELECT cfloat, nvl(cfloat, 1) as n +FROM alltypesorc +LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cfloat, nvl(cfloat, 1) as n +FROM alltypesorc +LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Select Operator + expressions: cfloat (type: float), if cfloat is null returns1 (type: float) + outputColumnNames: _col0, _col1 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT cfloat, nvl(cfloat, 1) as n +FROM alltypesorc +LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cfloat, nvl(cfloat, 1) as n +FROM alltypesorc +LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-50.0 -50.0 +NULL 1.0 +-28.0 -28.0 +31.0 31.0 +-34.0 -34.0 +29.0 29.0 +31.0 31.0 +27.0 27.0 +-11.0 -11.0 +61.0 61.0 +PREHOOK: query: EXPLAIN SELECT nvl(null, 10) as n +FROM alltypesorc +LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT nvl(null, 10) as n +FROM alltypesorc +LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Select Operator + expressions: 10 (type: int) + outputColumnNames: _col0 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT nvl(null, 10) as n +FROM alltypesorc +LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT nvl(null, 10) as n +FROM alltypesorc +LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +PREHOOK: query: EXPLAIN SELECT nvl(null, null) as n +FROM alltypesorc +LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT nvl(null, null) as n +FROM alltypesorc +LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Select Operator + expressions: null (type: void) + outputColumnNames: _col0 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT nvl(null, null) as n +FROM alltypesorc +LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT nvl(null, null) as n +FROM alltypesorc +LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL diff --git ql/src/test/results/clientpositive/tez/vector_reduce1.q.out ql/src/test/results/clientpositive/tez/vector_reduce1.q.out new file mode 100644 index 0000000..6035582 --- /dev/null +++ ql/src/test/results/clientpositive/tez/vector_reduce1.q.out @@ -0,0 +1,2167 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select b from vectortab2korc order by b +PREHOOK: type: QUERY +POSTHOOK: query: explain +select b from vectortab2korc order by b +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: b (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select b from vectortab2korc order by b +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select b from vectortab2korc order by b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +-6917607783359897600 +-6919476845891313664 +-6920172215209426944 +-6921654334727036928 +-6933565857643814912 +-6934304742087655424 +-6935038507792801792 +-6935548339131138048 +-6938706403992854528 +-6941777546186579968 +-6947955278050181120 +-6951350560260784128 +-6957946688477274112 +-6960947572095770624 +-6962271229404348416 +-6962292590214234112 +-6968771079156654080 +-6968892545529896960 +-6970396058557005824 +-6974654664348033024 +-6975459232300236800 +-6986178228432322560 +-6988811476286873600 +-6988970700649168896 +-6992217501957169152 +-6997233584896229376 +-7000925438663041024 +-7003696402314215424 +-7011425384222244864 +-7017212700635545600 +-7020852530219171840 +-7030489936116252672 +-7035132060308643840 +-7036607470351654912 +-7037375807670501376 +-7037638331316469760 +-7038455462786334720 +-7040248820505149440 +-7041362811802148864 +-7042183597114081280 +-7046180371529351168 +-7049618574399692800 +-7052619594823221248 +-7055619148037554176 +-7055760785575665664 +-7057750467944931328 +-7058986555327307776 +-7063777488249085952 +-7078068944081002496 +-7079898537463537664 +-7081500255163727872 +-7083646746411720704 +-7085247548404178944 +-7093825013581979648 +-7094189393339678720 +-7094827141662539776 +-7104310188119834624 +-7106210529681350656 +-7109790267244814336 +-7115054815375073280 +-7120456708338688000 +-7127548949860818944 +-7138415011665043456 +-7139677575412686848 +-7140008543769042944 +-7144791190333546496 +-7145585429014888448 +-7147490721376591872 +-7152177800841502720 +-7155539549555105792 +-7158472098920390656 +-7159700138947862528 +-7161165959057334272 +-7162299524557471744 +-7172594404186693632 +-7185369278665605120 +-7192529627893858304 +-7194281951646187520 +-7195217207163166720 +-7198372044947275776 +-7199983995864711168 +-7201085131997011968 +-7209060152494817280 +-7213775605408178176 +-7220731681653604352 +-7221474017515347968 +-7228589258642194432 +-7240213957902663680 +-7242345057866285056 +-7245872320493322240 +-7246123871306244096 +-7255010240787030016 +-7255686273677328384 +-7262049693594943488 +-7262384251828518912 +-7262798781688651776 +-7263060340185194496 +-7265998318110711808 +-7266719102957125632 +-7270034223527993344 +-7273590251991162880 +-7273694358642851840 +-7276111129363046400 +-7287583262310350848 +-7292078334519894016 +-7296096276653391872 +-7303847963918393344 +-7319315187617587200 +-7326863346317598720 +-7328087811698909184 +-7329767178250018816 +-7329807949048193024 +-7330203470474985472 +-7330413050756235264 +-7333278178640953344 +-7333362172439035904 +-7340231535789727744 +-7344146703223496704 +-7344947507044466688 +-7345562788132315136 +-7356685674003021824 +-7357888618985873408 +-7362189611124563968 +-7366430883634929664 +-7378096180613840896 +-7380731416973295616 +-7395343938785738752 +-7395553021620731904 +-7399631791131074560 +-7404052043914526720 +-7404057145074712576 +-7409317158045442048 +-7409653086454030336 +-7412431471807283200 +-7413317118463164416 +-7419068456205385728 +-7420448501073051648 +-7425160895830573056 +-7429331808102899712 +-7433265617153343488 +-7442593976514420736 +-7444070205513138176 +-7451660755269853184 +-7453525026342617088 +-7455898404374921216 +-7456869587112255488 +-7461750143936897024 +-7464270453557993472 +-7469660864676585472 +-7470307155642245120 +-7476082621253402624 +-7483435388852559872 +-7488345684795342848 +-7488415863027367936 +-7494411162675691520 +-7496839341561954304 +-7497303453253402624 +-7500200359698907136 +-7501803640821456896 +-7506254246954500096 +-7507424948896415744 +-7507578199583694848 +-7510418793070075904 +-7511202710200885248 +-7511952204985049088 +-7512289590991544320 +-7512297136103800832 +-7515996202498473984 +-7524170566881329152 +-7526793959592140800 +-7528526815026692096 +-7532751268425261056 +-7535857766791577600 +-7535958203887706112 +-7536330682873937920 +-7540104552219860992 +-7541860097718902784 +-7542857121910046720 +-7547245548870025216 +-7547432761381339136 +-7551394356730339328 +-7557017910095650816 +-7558524160894427136 +-7571293705217687552 +-7571957778022178816 +-7572262898020278272 +-7572962089372991488 +-7576194692683563008 +-7593363318079610880 +-7594824008626372608 +-7598782894648565760 +-7600138468036386816 +-7603467428164009984 +-7603569103205916672 +-7610137349734883328 +-7611584069753552896 +-7612455481940246528 +-7612466483992051712 +-7616522969329262592 +-7617860842651017216 +-7623047151287754752 +-7623359796281999360 +-7623405558242500608 +-7624057992767782912 +-7629401308029976576 +-7637494527844343808 +-7637755520917741568 +-7642381493746483200 +-7647020450676146176 +-7661192563533062144 +-7661250850555633664 +-7663293054873812992 +-7665186441284968448 +-7668388017287020544 +-7669169138124275712 +-7673901622181953536 +-7679894005808693248 +-7686220526274502656 +-7687052294777208832 +-7692192232238678016 +-7695491171376291840 +-7700203302632210432 +-7703540456272994304 +-7707242953271500800 +-7707867749256445952 +-7708932208121225216 +-7709958788604936192 +-7712425776235274240 +-7720966287634112512 +-7739424919198187520 +-7744462446680375296 +-7751265769984491520 +-7751427073017544704 +-7753051494275432448 +-7759238919361888256 +-7759425383684849664 +-7772064021830574080 +-7773957003968675840 +-7777884099756122112 +-7778829032042790912 +-7779270198785875968 +-7782344916178796544 +-7784419454650843136 +-7792903881635938304 +-7793447076762345472 +-7797149520019062784 +-7797151404935618560 +-7800879252150779904 +-7802538500225777664 +-7804116532814151680 +-7805985795815342080 +-7811060170911375360 +-7818454479651135488 +-7819437864839495680 +-7822452149325094912 +-7824788571789279232 +-7827420207675105280 +-7831320202242228224 +-7831595638727565312 +-7833618000492109824 +-7835907977757245440 +-7838598833900584960 +-7840338174858199040 +-7845896959112658944 +-7848043121524228096 +-7849504559236210688 +-7858505678035951616 +-7866079955473989632 +-7867219225874571264 +-7868306678534193152 +-7873753603299540992 +-7875953567586451456 +-7877598807023386624 +-7878145001776152576 +-7879864376629567488 +-7881262505761710080 +-7881351200983613440 +-7883252982752665600 +-7884460946615984128 +-7888051992910274560 +-7892780594910871552 +-7893577088764174336 +-7894382303337832448 +-7895991410072928256 +-7902517224300036096 +-7903158849011843072 +-7904188195431661568 +-7907355742053883904 +-7910019233726242816 +-7911421221625077760 +-7915999634274369536 +-7916510129632296960 +-7928062266382778368 +-7928440849566146560 +-7939634346485858304 +-7949309059286163456 +-7949445503604604928 +-7953426740065312768 +-7964801953178091520 +-7966960765508280320 +-7978782649203228672 +-7989766326847807488 +-7998947380180819968 +-8007017894942638080 +-8013397854633648128 +-8016589197379289088 +-8017791189288869888 +-8018511948141748224 +-8021859935185928192 +-8022573309127000064 +-8023708819947323392 +-8028275725610909696 +-8028910243475038208 +-8030058711611629568 +-8034414142083170304 +-8046189486447017984 +-8046238369820344320 +-8047774491688255488 +-8051395538179063808 +-8051587217208967168 +-8051871680800120832 +-8054581198284668928 +-8067243114610532352 +-8070535484085895168 +-8076479329071955968 +-8082793390939193344 +-8084716955963252736 +-8086577583338061824 +-8088337436168830976 +-8099313480512716800 +-8103788088118018048 +-8104684579106914304 +-8108693586698706944 +-8115963579415650304 +-8117838333114212352 +-8122639684164501504 +-8127494999848919040 +-8131997716860526592 +-8136227554401107968 +-8140349174954893312 +-8142667274351345664 +-8147405381260345344 +-8158011642485825536 +-8161047750470279168 +-8172827216441573376 +-8182421179156905984 +-8191825921746305024 +-8194062064124362752 +-8203008052020879360 +-8203075743525806080 +-8205148279289085952 +-8214462866994339840 +-8219876839318716416 +-8232763638546694144 +-8240034910581153792 +-8240684139569233920 +-8243487285852766208 +-8244116388227104768 +-8244657976255889408 +-8260340354454503424 +-8269917980278980608 +-8270479187688816640 +-8275337702906757120 +-8280276629934981120 +-8293833565967810560 +-8297230235506343936 +-8300526097982226432 +-8300764106868350976 +-8302817097848307712 +-8317591428117274624 +-8318886086186213376 +-8322751250650218496 +-8330233444291084288 +-8335810316927213568 +-8340523561480437760 +-8345065519816695808 +-8347088645602050048 +-8357136656913686528 +-8358130693961195520 +-8359839265974165504 +-8368269352975982592 +-8368487814665895936 +-8369487968903897088 +-8379109122834997248 +-8379964450833367040 +-8384695077413412864 +-8387347109404286976 +-8387536830476820480 +-8395998375405912064 +-8400045653258444800 +-8411282676082565120 +-8418913260807217152 +-8425998949410889728 +-8426531414463545344 +-8430283518005846016 +-8430370933326536704 +-8431492599012163584 +-8438554249514491904 +-8445801063348281344 +-8453491903284994048 +-8454143651040444416 +-8465978403747037184 +-8469607298426437632 +-8471480409335513088 +-8485389240529354752 +-8488247955875618816 +-8490382417169408000 +-8494118409594650624 +-8503342882470019072 +-8503573595507761152 +-8507279516485566464 +-8509547439040757760 +-8518060755719585792 +-8518258741831680000 +-8521578237232529408 +-8522878384019169280 +-8523434203900674048 +-8525212657458348032 +-8535957064499879936 +-8536369662934401024 +-8543982423727128576 +-8544299740525461504 +-8545239748068941824 +-8546758906409312256 +-8552393882631389184 +-8555709701170552832 +-8559008501282832384 +-8559252110266564608 +-8562524688907485184 +-8566856504746352640 +-8566940231897874432 +-8570933074545745920 +-8572823448513445888 +-8572949572756774912 +-8581765103969312768 +-8581979259158929408 +-8584520406368493568 +-8585134536083660800 +-8585966098173870080 +-8593419958317056000 +-8603817012434198528 +-8604758220106014720 +-8607195685207408640 +-8615168537390571520 +-8619303037130301440 +-8623238306523824128 +-8623965248051789824 +-8632237187473088512 +-8649711322250362880 +-8651641150831362048 +-8654433008222797824 +-8654797319350927360 +-8658387566611996672 +-8659643752269242368 +-8659692318743314432 +-8660149447361404928 +-8664374244449050624 +-8664806103426252800 +-8665218198816497664 +-8665764757143658496 +-8675661101615489024 +-8675892979328212992 +-8683802826440105984 +-8688153842294595584 +-8689606130068611072 +-8694818694700048384 +-8696162322976997376 +-8703026916864802816 +-8704234107608203264 +-8705403811649355776 +-8710298418608619520 +-8714995808835444736 +-8719510423723155456 +-8730803262481580032 +-8731068123910987776 +-8746702976270385152 +-8754966081778565120 +-8754992450211692544 +-8756989568739835904 +-8760655406971863040 +-8763062627136864256 +-8768744394742235136 +-8782213262837530624 +-8783777723063099392 +-8789178184387641344 +-8797972842900307968 +-8807361476639629312 +-8813211231120031744 +-8831091081349758976 +-8832750849949892608 +-8833019327569510400 +-8835408234247168000 +-8836899523028312064 +-8843859708698583040 +-8844949406948671488 +-8845239510002753536 +-8852770376039219200 +-8853553406533894144 +-8856151919723003904 +-8856821118526734336 +-8857335871148171264 +-8858063395050110976 +-8859107121649893376 +-8866442231663067136 +-8870186814744420352 +-8870673219965001728 +-8875546987176206336 +-8877053610728161280 +-8877431933441327104 +-8879742387365429248 +-8881446757271846912 +-8887058200926093312 +-8892963883085578240 +-8896045754034978816 +-8914039133569400832 +-8916987977485312000 +-8922409715403112448 +-8923529803981905920 +-8927968289860370432 +-8930307926221807616 +-8938849835283677184 +-8940944155843461120 +-8941201923743703040 +-8946656952763777024 +-8948335470186373120 +-8959796625322680320 +-8961059046745669632 +-8962547695651323904 +-8965578088652095488 +-8989473881707921408 +-8990843030306717696 +-8992599250893979648 +-8996954350906294272 +-9002912355472736256 +-9004892183139811328 +-9008631121684832256 +-9012093603044245504 +-9013952631912325120 +-9014145341570203648 +-9022154842129547264 +-9032650742739836928 +-9049720998034137088 +-9051477157204770816 +-9058029636530003968 +-9066993118333706240 +-9071565764086521856 +-9075302542655684608 +-9075486079396069376 +-9078662294976061440 +-9079801920509001728 +-9080568167841226752 +-9080956291212132352 +-9084940280061485056 +-9088239683374350336 +-9091113592821972992 +-9095689235523264512 +-9101953184875757568 +-9102482277760983040 +-9105358806324035584 +-9105701280936501248 +-9109392978217484288 +-9117959922369060864 +-9126793997498957824 +-9136398397785948160 +-9142610685888192512 +-9145593811310010368 +-9148197394287779840 +-9149719074367946752 +-9157613004431998976 +-9175038118837149696 +-9175279464813223936 +-9178166810751909888 +-9187662685618348032 +-9189155542884474880 +-9203804401302323200 +-9203942396257984512 +-9206329156028112896 +-9210275791460499456 +-9213132862973829120 +-9215144824304721920 +-9218875542187065344 +-9219066990552760320 +1021 +1030 +1032 +1039 +1046 +1048 +1053 +1055 +1058 +1065 +1066 +1074 +1075 +1075 +1075 +108 +1086 +1093 +1094 +1095 +1099 +1115 +112 +1127 +1128 +1132 +1134 +1141 +1142 +1145 +1153 +1157 +1158 +1165 +1165 +1168 +1177 +1187 +1189 +1198 +120 +1201 +1217 +1234 +1243 +1247 +1252 +1261 +1270 +1280 +1282 +1286 +1287 +1290 +1291 +1299 +130 +1307 +1312 +1316 +1321 +1337 +1341 +1342 +1343 +1345 +1346 +135 +1366 +1368 +1368 +1371 +1371 +138 +1386 +1398 +1409 +1422 +1423 +1436 +1439 +1447 +1450 +1454 +1458 +1462 +1466 +1470 +1477 +1481 +1481 +1489 +1493 +1495 +1501 +1506 +1508 +1509 +1509 +1518 +1520 +1521 +1524 +1530 +1537 +1537 +154 +154 +1541 +1542 +1545 +1556 +1559 +1561 +1566 +1604 +1606 +1608 +1613 +1614 +1620 +1638 +1641 +1643 +1648 +1651 +1667 +1671 +1674 +1676 +1678 +168 +1681 +169 +1693 +1701 +1701 +1704 +1719 +1719 +1726 +1728 +1745 +1751 +1752 +1769 +1774 +1775 +1777 +1777 +1780 +1781 +1785 +1786 +1788 +1789 +1791 +1796 +1806 +181 +1811 +1813 +1826 +1827 +1835 +1837 +1845 +1846 +1856 +1856 +1862 +1863 +1864 +1866 +187 +1870 +188 +1880 +1890 +1892 +1899 +19 +19 +1906 +1910 +1914 +1914 +1926 +1937 +1940 +1941 +1948 +1948 +1948 +1955 +1965 +1972 +1981 +1983 +1987 +1990 +1995 +1999 +2001 +2002 +2004 +2009 +2011 +2013 +2016 +2017 +2020 +2020 +2025 +2026 +2029 +203 +204 +2046 +2056 +2067 +2072 +2073 +2085 +2089 +2092 +2105 +2106 +2108 +213 +213 +2131 +2138 +2140 +2144 +2155 +2177 +2179 +2180 +2183 +2186 +2187 +2189 +2193 +2193 +2194 +22 +2201 +2205 +2214 +2217 +2218 +2223 +2227 +2229 +2232 +2241 +2244 +2255 +2262 +2264 +2270 +2274 +2277 +2279 +228 +2283 +2285 +2285 +2295 +2306 +2320 +2323 +2325 +2325 +2335 +2341 +2348 +2358 +236 +2373 +238 +2386 +2393 +2393 +2398 +2400 +2410 +2412 +2412 +2420 +2426 +2434 +244 +2461 +2463 +2463 +2463 +2465 +2469 +2475 +2476 +2485 +2485 +2487 +2492 +2494 +2502 +2506 +2509 +2512 +2514 +2515 +2517 +2524 +2533 +2539 +2540 +255 +2551 +2553 +2560 +2560 +2563 +2565 +2569 +2579 +2580 +2587 +259 +2599 +2607 +2608 +2619 +2619 +2625 +2626 +263 +263 +2637 +2647 +2649 +2662 +2663 +2675 +268 +268 +2680 +2682 +2688 +2689 +2692 +2700 +2712 +2714 +2715 +2715 +2719 +2724 +2725 +2735 +2745 +275 +2752 +2762 +2772 +2776 +2786 +2786 +279 +2790 +2791 +2803 +2803 +2803 +2805 +281 +2810 +2811 +2816 +2821 +2824 +2835 +2842 +2843 +2843 +2846 +2847 +2848 +2850 +2855 +2855 +2862 +2878 +2886 +289 +2897 +2897 +2900 +2903 +2905 +2911 +2915 +2919 +2933 +2933 +2938 +294 +2941 +2942 +296 +296 +2962 +2968 +2968 +2971 +2977 +2979 +2984 +2986 +2988 +2991 +3002 +3006 +301 +302 +3021 +3021 +3024 +3029 +3031 +3036 +3043 +3054 +3055 +3058 +3059 +3060 +3060 +3067 +3071 +3073 +3079 +3079 +3083 +3084 +3089 +3094 +3103 +311 +3111 +3118 +3119 +3144 +3147 +3159 +3159 +3163 +3174 +3183 +3190 +3197 +3199 +320 +3203 +3206 +3208 +3212 +3213 +3231 +3232 +3235 +3244 +3245 +3248 +3249 +3253 +3255 +3263 +3286 +3300 +3307 +3322 +3333 +3352 +336 +3365 +3366 +3397 +34 +3401 +3407 +3409 +341 +3418 +3418 +342 +3421 +3430 +3443 +3446 +345 +3456 +346 +346 +3460 +3462 +3462 +3462 +3467 +3467 +347 +3472 +3478 +3493 +350 +3507 +3510 +3512 +3533 +3534 +3541 +3542 +355 +3554 +3555 +3555 +3563 +3566 +3567 +3568 +3579 +3588 +3588 +3599 +3606 +3608 +3609 +361 +3613 +3622 +3622 +3625 +3630 +3637 +364 +3648 +3663 +3664 +367 +3672 +3673 +3677 +3680 +3682 +3690 +3691 +3701 +3702 +3703 +3707 +3722 +3724 +3725 +3725 +3728 +3728 +3739 +3747 +3749 +375 +3755 +3763 +3764 +3769 +3770 +3770 +378 +3781 +3781 +3789 +379 +3810 +3812 +3823 +3824 +383 +383 +3830 +3835 +3841 +3848 +3858 +3860 +3866 +3866 +3874 +3879 +388 +3887 +3901 +3904 +3907 +391 +3910 +3911 +3913 +392 +3932 +3940 +3941 +3945 +3946 +3949 +3958 +3960 +3961 +3962 +3965 +3974 +3974 +3980 +3990 +4018 +4020 +4024 +4030 +4037 +4051 +4054 +4056 +4075 +4078 +4088 +41 +412 +412 +417 +425 +443 +454 +455 +462 +470 +471 +481 +482 +485 +489 +49 +490 +491 +5 +500 +501 +501 +504 +522 +523 +524 +530 +535 +579 +583 +584 +586 +587 +590 +597 +601 +612 +615 +618 +65 +650 +658 +66 +661 +661 +663 +664 +677 +68 +681 +687 +688 +690 +691 +6923604860394528768 +6924820982050758656 +6926925215281774592 +6927260280037097472 +6928080429732536320 +6933001829416034304 +6933451028794925056 +6933731240564056064 +6934570741217755136 +694 +6947488599548215296 +695 +6960137166475911168 +6962726713896484864 +6963217546192322560 +6964585306125008896 +6967631925774639104 +6969599299897163776 +6974475559697768448 +6982145326341423104 +6987889924212203520 +6991316084916879360 +6996686091335884800 +7006803044329021440 +7013693841855774720 +7014537632150224896 +7017956982081404928 +7022349041913978880 +7027529814236192768 +7031339012080549888 +7039820685967343616 +7045967493826387968 +7049773031131283456 +7052226236896256000 +7054271419461812224 +7054938591408996352 +7060236714847412224 +7061498706968428544 +7061809776248545280 +7062382339142156288 +7062605127422894080 +7065344324692443136 +7068517339681259520 +7069729473166090240 +707 +7077311975029555200 +7078641038157643776 +7080269176324218880 +7084659344078970880 +7086206629592252416 +7091300332052062208 +7099005292698550272 +71 +7107604675626008576 +7125231541858205696 +7128222874437238784 +7130159794259353600 +7130306447560826880 +7149417430082027520 +7153922334283776000 +7157247449513484288 +7164349895861829632 +7165364563962191872 +7166263463731421184 +7175638927948562432 +7186401810812059648 +7195454019231834112 +7198687580227043328 +7199539820886958080 +7204802700490858496 +7210160489915236352 +7212016545671348224 +7212090742612467712 +7217123582035116032 +7220131672176058368 +7220581538170413056 +7223569671814987776 +7226360892091416576 +7229607057201127424 +723 +7231399302953377792 +7232273749940838400 +7235109456886816768 +7237310132329488384 +7238339720750948352 +724 +7242751359672631296 +7249443195032985600 +7250237407877382144 +7254710367022645248 +7255302164215013376 +7259955893466931200 +7260908278294560768 +7265141874315517952 +7266437490436341760 +7271786885641666560 +7271887863395459072 +7274777328897802240 +7291432593139507200 +7295502697317097472 +7295926343524163584 +7296164580491075584 +7299197687217856512 +73 +7304839835188609024 +7308289763456000000 +7309156463509061632 +7310869618402910208 +7319711402123149312 +7333512171174223872 +7339426767877390336 +7343171468838567936 +7344029858387820544 +7345991518378442752 +7347732772348870656 +7348598907182800896 +735 +7354813692542304256 +7359004378440146944 +736 +7368920486374989824 +7370078518278397952 +7370803940448305152 +7375521127126089728 +7376467688511455232 +7378993334503694336 +738 +7381659098423926784 +7384150968511315968 +7386087924003676160 +7391208370547269632 +7393308503950548992 +7394967727502467072 +7401968422230032384 +7410096605330227200 +7410872053689794560 +7411793502161182720 +7412924364686458880 +7414865343000322048 +7418271723644403712 +743 +7432428551399669760 +7432998950057975808 +7436133434239229952 +7440265908266827776 +7450416810848313344 +7452756603516190720 +7454442625055145984 +7454632396542074880 +7461153404961128448 +7471208109437304832 +7473537548003352576 +7486884806277611520 +7487338208419823616 +7487538600082554880 +7490717730239250432 +7491898395977523200 +7492436934952574976 +7497276415392407552 +7497306924248834048 +7500716020874674176 +7514552840617558016 +7517159036469575680 +7524958388842078208 +7528074274555305984 +7528211148397944832 +7534042483076857856 +7534145866886782976 +7534549597202194432 +7545689659010949120 +7548958830580563968 +7549858023389003776 +7555301305375858688 +7566273236152721408 +7569249672628789248 +7570474972934488064 +7573530789362262016 +7575087487730196480 +7581052107944361984 +7581614118458335232 +7584007864107778048 +7592440105065308160 +7593521922173419520 +7596563216912211968 +7599019810193211392 +7608447395949109248 +7614435638888210432 +7620183559667081216 +7621013099259527168 +7625728883085025280 +7626715182847090688 +763 +7637152193832886272 +7647481735646363648 +7648729477297987584 +7652123583449161728 +7659279803863146496 +7662037650719850496 +7675009476762918912 +7678790769408172032 +7682327310082531328 +7686992843032010752 +7689489436826804224 +7690986322714066944 +7691062622443044864 +7696737688942567424 +7697541332524376064 +7700734109530767360 +7701723309715685376 +7705445437881278464 +7710447533880614912 +7718825401976684544 +7720187583697502208 +7731443941834678272 +7735566678126616576 +774 +7741854854673367040 +7746402369011277824 +7747874976739016704 +7748799008146366464 +7752740515534422016 +7753359568986636288 +7753882935005880320 +7761834341179375616 +7762823913046556672 +7765456790394871808 +7768984605670604800 +7775034125776363520 +7778936842502275072 +7779486624537370624 +7779735136559579136 +7782245855193874432 +7784169796350730240 +7784489776013295616 +779 +7790728456522784768 +7792036342592348160 +7794244032613703680 +78 +780 +7800332581637259264 +7801697837312884736 +7818464507324121088 +782 +7823874904139849728 +784 +7843804446688264192 +7844258063629852672 +7845953007588401152 +7857878068300898304 +7868367829080506368 +7870277756614623232 +7871189141676998656 +7871554728617025536 +7874764415950176256 +7885697257930588160 +7888238729321496576 +789 +7892026679115554816 +7892281003266408448 +7898670840507031552 +7909645665163804672 +7917494645725765632 +7919597361814577152 +7921639119138070528 +7922443154272395264 +7926898770090491904 +7933040277013962752 +7936149988210212864 +7944741547145502720 +7947544013461512192 +7948803266578161664 +7955126053367119872 +7961515985722605568 +7961909238130270208 +797 +7983789401706094592 +7989119273552158720 +7989160253372817408 +7997694023324975104 +7998357471114969088 +7998687089080467456 +80 +8000440057238052864 +8002769767000145920 +8004633750273925120 +8011181697250631680 +8011602724663336960 +8014986215157530624 +8017403886247927808 +803 +8045070943673671680 +8048726769133592576 +8059284960252731392 +8069531888205086720 +8071961599867387904 +8073733016154431488 +8079573715140485120 +808 +8087737899452432384 +809 +8091421389575282688 +8099215208813903872 +8100036735858401280 +8109381965028548608 +8111757081791733760 +8113585123802529792 +8116738401948377088 +812 +8120593157178228736 +8129551357032259584 +8135164922674872320 +8142241016679735296 +8143462899383345152 +8144552446127972352 +8145745969573666816 +8145750910080745472 +8146288732715196416 +8146492373537660928 +8148211378319933440 +815 +8150115791664340992 +8156018594610790400 +8156782979767238656 +8160569434550403072 +8160662610166194176 +8163948965373386752 +8168742078705262592 +8169878743136043008 +8171188598958407680 +8183233196086214656 +8184799300477943808 +8190539859890601984 +8190967051000659968 +8192304692696383488 +8195103847607967744 +8199513544090730496 +820 +820 +8201303040648052736 +8201491077550874624 +8208354137450766336 +8210813831744118784 +8213810702473183232 +8219326436390821888 +8220104397160169472 +8221561626658881536 +8222714144797368320 +8223732800007864320 +823 +8230371298967609344 +8235179243092090880 +8244041599171862528 +8254763178969915392 +8268875586442256384 +8269730157217062912 +8272001752345690112 +8279056098670198784 +8282648443538710528 +8283099811330506752 +8286706213485297664 +8287522765741301760 +8290014929764040704 +8290944180915871744 +8294315622451740672 +8295110846998233088 +83 +8302473563519950848 +8316336224427483136 +8323460620425330688 +8325227661920133120 +8332670681629106176 +8333523087360901120 +8337549596011102208 +8345435427356090368 +835 +8351163199364390912 +8362046808797306880 +8365058996333953024 +8367680396909404160 +8368012468775608320 +837 +8371939471056470016 +8372408423196270592 +8372588378498777088 +8374321007870836736 +8376440110255243264 +8383159090746204160 +8388363436324085760 +8391407951622815744 +8391785334471589888 +8396433451610652672 +8398862954249560064 +8407869317250220032 +8410599906334097408 +8411494452500930560 +8415171956168417280 +8416121695917498368 +8417381121663746048 +8419958579638157312 +8424515140664360960 +8435912708683087872 +845 +8451612303224520704 +8454154705460666368 +8455496814886002688 +8457906374051020800 +8461498293348065280 +8463868417649524736 +8467976965865799680 +8470141334513098752 +8472429318602268672 +8473699639908261888 +8487573502287478784 +8489584373231919104 +8489735221193138176 +85 +8501910015960735744 +8508401924853850112 +8509508263705477120 +8514851182589771776 +8514979402185596928 +8515682078777081856 +8518454006987948032 +8519937082746634240 +8523972434954510336 +8524940073536954368 +8525336514806317056 +8525894870444638208 +8532016240026279936 +8536948829863198720 +8540237852367446016 +8543177193114779648 +8547243497773457408 +8551446856960942080 +8553195689344991232 +8554899472487596032 +8555933456197828608 +8555948987770511360 +8557218322962644992 +8558000156325707776 +8560526613401714688 +8569030475428511744 +8570983266408103936 +8571268359622172672 +8573305425181941760 +8577096957495025664 +8579974641030365184 +8583916402383601664 +8613562211893919744 +8625937019655200768 +8631515095562887168 +8637720762289659904 +8639254009546055680 +8641221723991433216 +8643198489997254656 +8644602243484803072 +8649296591032172544 +8652485812846567424 +8656571350884048896 +8660248367767076864 +8665969966920990720 +8666178591503564800 +8677632093825916928 +8677794924343164928 +868 +8682955459667951616 +8687042963221159936 +8688483860094599168 +8693036785094565888 +8697823501349609472 +8698055291501543424 +8708232769657815040 +8708845895460577280 +871 +8714829359200747520 +8716401555586727936 +8720504651219001344 +8723248113030782976 +873 +8731960288562044928 +8734584858442498048 +8736061027343859712 +874 +8752150411997356032 +8759089349412847616 +8759184090543857664 +8760285623204290560 +8761174805938331648 +8769199243315814400 +8773222500321361920 +8775009214012456960 +8779073705407963136 +8779711700787298304 +878 +8780196485890555904 +8782900615468302336 +8783241818558193664 +8785153741735616512 +8792059919353348096 +8793387410919038976 +8795069490394882048 +8806507556248731648 +8808467247666241536 +8811693967537774592 +8815398225009967104 +8817665768680906752 +8822384228057604096 +8825059717746376704 +8829545979081744384 +883 +8836228556823977984 +8837420822750314496 +8849475396952514560 +8850055384477401088 +8853989376829833216 +8854495099223375872 +8854677881758162944 +8854715632851345408 +8856674723376668672 +8868529429494071296 +8871707618793996288 +8875745082589929472 +888 +8895174927321243648 +8896237972875370496 +8897901899039473664 +8899122608190930944 +8900180888218329088 +8900351886974279680 +8900545829211299840 +8905330479248064512 +8910706980937261056 +8920344895701393408 +8920533610804609024 +8927691194719174656 +8928133990107881472 +8935252708196999168 +8936639033158410240 +8939431770838810624 +8945004737083555840 +8945302550165004288 +8962097525980225536 +8972161729142095872 +8979012655944220672 +898 +898 +8983857919580209152 +8983912573761167360 +8984935029383389184 +8987827141270880256 +8991071342495531008 +8991442360387584000 +8994608999945125888 +8995562121346260992 +8996824426131390464 +9000633029632499712 +9001907486943993856 +9005866015985713152 +9016280522993975296 +9020143715350814720 +9023663198045544448 +9030480306789818368 +9038087402564657152 +9040958359122640896 +9043089884440068096 +9048002942653710336 +9048297564833079296 +9050032047355125760 +9053187076403060736 +9054887854393950208 +9062227900376203264 +9064847977742032896 +9067985867711291392 +9073672806863790080 +9075404705968840704 +9078604269481148416 +908 +9083076230151864320 +9083704659251798016 +9084402694981533696 +9085381906890203136 +9085434340468473856 +9086905513121890304 +9089435102788009984 +9091082386452684800 +9091085792947666944 +9094945190752903168 +9096395849845194752 +91 +9104574294205636608 +9107991000536498176 +9112400579327483904 +9114850402293882880 +9116137265342169088 +9117063974299148288 +9119046173224370176 +9123116008004288512 +913 +9131533983989358592 +9132009829414584320 +9136234417125007360 +9136548192574529536 +9139805788041134080 +914 +9148071980848742400 +9149216169284091904 +9165199002069458944 +9169248521377374208 +917 +9174894805640142848 +918 +9180098147855769600 +9182828596851990528 +9185458640237641728 +9185952983951343616 +9188173682239275008 +919 +9190466190353661952 +9191943992860327936 +9194388393453060096 +9199741683232399360 +9207107990561972224 +9207927479837319168 +9209153648361848832 +921 +9211455920344088576 +922 +923 +927 +928 +939 +94 +945 +947 +950 +950 +958 +961 +965 +967 +976 +979 +982 +987 +997 +999 +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL diff --git ql/src/test/results/clientpositive/tez/vector_reduce2.q.out ql/src/test/results/clientpositive/tez/vector_reduce2.q.out new file mode 100644 index 0000000..81038ff --- /dev/null +++ ql/src/test/results/clientpositive/tez/vector_reduce2.q.out @@ -0,0 +1,2167 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select s, i, s2 from vectortab2korc order by s, i, s2 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select s, i, s2 from vectortab2korc order by s, i, s2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string), i (type: int), s2 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) + sort order: +++ + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: int), KEY.reducesinkkey2 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select s, i, s2 from vectortab2korc order by s, i, s2 +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select s, i, s2 from vectortab2korc order by s, i, s2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + -1036720157 david king + -1125605439 ethan zipper + -1180153422 nick ovid + -1198465530 rachel quirinius + -1232183416 sarah underhill + -125419186 zach laertes + -1351437382 alice xylophone + -1369253050 katie white + -1411407810 xavier brown + -1442424087 luke ichabod + -1556127172 fred nixon + -1605045257 calvin ovid + -1656822229 priscilla ichabod + -1674623501 gabriella ichabod + -1741895392 rachel underhill + -1822850051 calvin ovid + -1830870295 david quirinius + -1862095575 tom ichabod + -1871446009 david johnson + -1933192293 rachel white + -1939362279 sarah carson + -1952235832 + -1974972123 rachel laertes + -199587670 priscilla miller + -2007662579 wendy quirinius + -2074079977 wendy white + -213198503 holly allen + -2136052026 + -234278308 rachel robinson + -397683105 + -44426049 victor polk + -507015439 holly underhill + -507250351 ethan king + -595769210 bob polk + -598552521 holly carson + -600315936 priscilla garcia + -694520014 quinn steinbeck + -737624128 victor falkner + -785261879 + -87470856 irene miller + -934008333 ethan ovid + 1000106109 ethan brown + 1013517056 xavier ovid + 1070989126 fred carson + 1107502179 oscar brown + 1112783661 nick king + 1117805438 calvin zipper + 1141303816 quinn xylophone + 1271280812 mike hernandez + 1273798925 priscilla thompson + 1283898734 irene nixon + 1284956108 ulysses johnson + 1318606691 quinn young + 1425362689 mike quirinius + 1513689502 bob allen + 1640192895 fred laertes + 1647411522 mike ellison + 1660278264 priscilla ellison + 1695098246 holly underhill + 1765173148 yuri polk + 187718349 quinn thompson + 1956887369 bob king + 1968813171 sarah miller + 196980893 mike johnson + 2018442973 tom falkner + 2081243058 + 2126491387 oscar underhill + 2144365072 bob nixon + 229688868 tom davidson + 230954385 wendy robinson + 273256071 ulysses white + 330302407 calvin davidson + 397255100 zach brown + 434679307 katie carson + 435426302 ulysses hernandez + 44628821 gabriella carson + 449788961 priscilla ichabod + 536876888 wendy young + 546555204 victor thompson + 548375173 priscilla xylophone + 644934949 irene hernandez + 669484010 yuri ovid + 742059797 quinn quirinius + 765656980 victor thompson + 771827308 luke white + 826143442 zach zipper + 906074599 wendy nixon + 976870621 calvin polk + 996831203 quinn quirinius + NULL + NULL bob davidson + NULL jessica white + NULL quinn zipper + NULL ulysses falkner +american history -1045771991 yuri king +american history -1079231269 victor carson +american history -1092872261 +american history -1168823523 fred white +american history -1210907929 yuri ellison +american history -123529324 luke underhill +american history -1240912824 david brown +american history -1289501869 irene king +american history -1312782341 ethan robinson +american history -1333770335 david miller +american history -1409508377 katie laertes +american history -1434562279 +american history -1527024213 ethan laertes +american history -1660344634 nick polk +american history -1668736016 xavier allen +american history -1701492480 jessica carson +american history -1721763321 david davidson +american history -1755088362 oscar ovid +american history -1870912732 holly hernandez +american history -1900894010 xavier van buren +american history -1940205653 david xylophone +american history -2144138362 victor laertes +american history -226635871 alice davidson +american history -316678117 holly brown +american history -329336519 luke robinson +american history -396852483 jessica nixon +american history -455114104 sarah zipper +american history -469870330 wendy van buren +american history -564495517 sarah steinbeck +american history -573787626 priscilla nixon +american history -695775663 yuri king +american history -705887590 ethan white +american history -71449585 fred brown +american history -853606287 alice van buren +american history -870900240 +american history -990781312 victor xylophone +american history 1008698636 ethan polk +american history 1082837515 jessica carson +american history 1106995930 sarah ovid +american history 1153811197 victor brown +american history 1187495452 xavier ellison +american history 1190554937 bob ovid +american history 1204834275 katie thompson +american history 1219616145 quinn quirinius +american history 1240875512 david quirinius +american history 1300798829 katie garcia +american history 1310360849 mike van buren +american history 1367179645 fred falkner +american history 1495575878 quinn king +american history 1543611951 tom quirinius +american history 1550112473 victor carson +american history 1556919269 yuri white +american history 156101201 katie white +american history 1604076720 david xylophone +american history 1616782308 jessica quirinius +american history 1660088606 ulysses nixon +american history 1797164732 holly thompson +american history 198017473 nick brown +american history 2051470532 rachel zipper +american history 214068706 bob thompson +american history 290921475 tom thompson +american history 316438994 sarah white +american history 458190500 calvin xylophone +american history 604460005 priscilla king +american history 636901402 bob quirinius +american history 672919099 +american history 731241198 xavier davidson +american history 747122546 david thompson +american history 84231802 holly laertes +american history 874824958 ethan king +american history 916057807 katie ellison +american history 92777932 ulysses davidson +american history 95356298 tom ovid +american history 977624089 ulysses ellison +american history 985634256 quinn miller +american history NULL alice king +american history NULL irene allen +american history NULL oscar nixon +american history NULL sarah quirinius +american history NULL wendy johnson +biology -1006768637 mike xylophone +biology -1031592590 yuri miller +biology -1050029724 wendy king +biology -1054609414 +biology -1062159435 oscar zipper +biology -1065248998 sarah ellison +biology -1098379914 holly johnson +biology -113253627 david robinson +biology -1147471772 quinn polk +biology -1227085134 victor robinson +biology -1231821948 luke young +biology -1262842192 ulysses quirinius +biology -1344287228 holly davidson +biology -1359838019 quinn miller +biology -1424770359 katie davidson +biology -1464762852 bob garcia +biology -1491722659 ethan laertes +biology -1568536214 ethan ichabod +biology -1628799508 alice underhill +biology -1644966759 calvin quirinius +biology -1726585032 katie polk +biology -1733560816 david davidson +biology -1805915233 ulysses brown +biology -1836166334 zach ellison +biology -194270271 luke johnson +biology -2011708220 katie zipper +biology -2065080832 priscilla falkner +biology -2086352100 holly king +biology -217785690 mike miller +biology -235238928 quinn hernandez +biology -236700442 holly carson +biology -270683864 zach robinson +biology -345542922 tom steinbeck +biology -348628614 katie johnson +biology -352146259 xavier van buren +biology -36682325 fred laertes +biology -387395264 +biology -457341338 nick robinson +biology -519978947 bob van buren +biology -524189419 xavier van buren +biology -707108808 quinn johnson +biology -7929246 calvin thompson +biology -837506172 +biology -858439361 +biology -938342473 wendy thompson +biology -946349935 oscar white +biology -983874694 wendy carson +biology 1012696613 david hernandez +biology 1090344463 sarah van buren +biology 1102561039 priscilla carson +biology 1119976718 yuri laertes +biology 1130840708 zach garcia +biology 1184001017 ulysses ovid +biology 1373871781 ethan ellison +biology 1395450272 zach xylophone +biology 149701884 oscar thompson +biology 1509573831 wendy hernandez +biology 152654715 xavier steinbeck +biology 1533817551 david underhill +biology 1565313938 oscar carson +biology 1595326878 +biology 1645753684 wendy falkner +biology 1747664003 priscilla ellison +biology 1814570016 fred carson +biology 1851654062 yuri carson +biology 1851805558 ulysses white +biology 196581473 ethan johnson +biology 1969239701 yuri nixon +biology 198624903 fred ichabod +biology 2022944702 +biology 2045579147 jessica van buren +biology 29680001 david thompson +biology 304860245 mike miller +biology 315055746 ethan white +biology 470575409 jessica falkner +biology 524808 calvin van buren +biology 663222148 quinn zipper +biology 670667262 wendy carson +biology 710856472 bob allen +biology 765084282 ulysses johnson +biology 766737781 sarah zipper +biology 780859673 katie van buren +biology 810157660 wendy falkner +biology 814544198 wendy johnson +biology 825977391 irene young +biology 843282593 zach van buren +biology 85774760 mike underhill +biology 868714547 zach falkner +biology 899810881 quinn garcia +biology 94220511 oscar brown +biology NULL holly young +chemistry -1048181367 holly robinson +chemistry -1100641049 luke miller +chemistry -1128317466 ethan young +chemistry -1146055387 quinn van buren +chemistry -1210261177 tom johnson +chemistry -1218581850 ethan ovid +chemistry -1218592418 gabriella ovid +chemistry -1326025787 calvin garcia +chemistry -1352545619 yuri carson +chemistry -1380191654 wendy steinbeck +chemistry -1380678829 gabriella nixon +chemistry -1407817977 tom quirinius +chemistry -1478812842 sarah robinson +chemistry -1484787952 wendy davidson +chemistry -1516259168 priscilla falkner +chemistry -1599905147 mike miller +chemistry -1754347372 nick allen +chemistry -1818380492 jessica young +chemistry -1875699183 bob polk +chemistry -1878838836 tom ellison +chemistry -1903090602 sarah ellison +chemistry -2032576637 quinn nixon +chemistry -203911033 calvin carson +chemistry -2087815643 fred young +chemistry -2133145181 yuri thompson +chemistry -310343273 holly carson +chemistry -392713245 tom carson +chemistry -395499919 wendy zipper +chemistry -423074450 irene ellison +chemistry -423945469 fred brown +chemistry -480058682 jessica nixon +chemistry -496915240 oscar allen +chemistry -514010922 yuri laertes +chemistry -758973175 alice ovid +chemistry -799249885 quinn ichabod +chemistry -940504641 victor robinson +chemistry -971615370 calvin allen +chemistry 1126157283 wendy xylophone +chemistry 1137950964 +chemistry 1281159709 priscilla davidson +chemistry 1295073553 sarah king +chemistry 1301426600 irene hernandez +chemistry 1330219997 holly xylophone +chemistry 1385883394 fred brown +chemistry 1398486099 sarah robinson +chemistry 1420099773 ulysses falkner +chemistry 1575300276 ulysses allen +chemistry 1652349607 victor young +chemistry 1664736741 jessica king +chemistry 170870820 alice ichabod +chemistry 1718167702 quinn king +chemistry 184879574 quinn davidson +chemistry 1883400319 irene allen +chemistry 1895282160 wendy van buren +chemistry 1928365430 alice thompson +chemistry 1998185704 quinn hernandez +chemistry 2008211296 +chemistry 2090496825 wendy polk +chemistry 2111462911 katie zipper +chemistry 217476429 jessica thompson +chemistry 254921167 priscilla allen +chemistry 436093771 katie davidson +chemistry 43983130 luke allen +chemistry 505902480 ulysses garcia +chemistry 514833409 katie nixon +chemistry 541923995 rachel miller +chemistry 563507584 katie robinson +chemistry 605946758 calvin ellison +chemistry 648935848 luke laertes +chemistry 652118640 holly ellison +chemistry 683320224 nick carson +chemistry 794783516 mike van buren +chemistry 830944953 irene davidson +chemistry 842283345 gabriella underhill +chemistry 964810954 tom ellison +chemistry 991397535 luke nixon +chemistry NULL katie hernandez +chemistry NULL victor polk +chemistry NULL victor steinbeck +debate -1179668872 wendy garcia +debate -1184620079 wendy falkner +debate -1210550573 bob king +debate -1366059787 bob ellison +debate -1371840597 jessica xylophone +debate -1511162508 calvin van buren +debate -1534238977 katie steinbeck +debate -1614194712 alice laertes +debate -1700451326 rachel ichabod +debate -1726479726 victor davidson +debate -1745449855 +debate -1921909135 ethan hernandez +debate -2071851852 ethan ichabod +debate -207899360 tom ellison +debate -223311809 gabriella miller +debate -273937943 sarah steinbeck +debate -290558484 ulysses allen +debate -298221893 fred zipper +debate -453739759 priscilla king +debate -483740394 ethan polk +debate -491882534 ethan garcia +debate -500921094 irene van buren +debate -511198293 rachel ichabod +debate -532755480 rachel van buren +debate -538812082 xavier king +debate -624029057 irene robinson +debate -628446314 +debate -655118881 bob laertes +debate -66010816 rachel davidson +debate -664111469 katie king +debate -674478103 ethan van buren +debate -728015067 +debate -896274896 zach johnson +debate -912429611 sarah steinbeck +debate -993029335 oscar laertes +debate -997463353 xavier white +debate 1012230484 sarah polk +debate 1061638369 mike polk +debate 1083855659 alice johnson +debate 1159353899 ulysses polk +debate 133276416 jessica young +debate 1352649032 ethan miller +debate 1482983157 quinn johnson +debate 1566607834 david brown +debate 1579460630 xavier ellison +debate 1592467112 yuri thompson +debate 1673218677 xavier falkner +debate 1766517223 +debate 1920863389 priscilla xylophone +debate 1938788165 quinn steinbeck +debate 1951869763 yuri brown +debate 1969650228 bob white +debate 2005560498 alice king +debate 2044130430 luke brown +debate 291866793 nick hernandez +debate 323919214 sarah davidson +debate 435407142 david allen +debate 44595790 xavier brown +debate 564349193 tom laertes +debate 58313734 fred ovid +debate 60847311 oscar young +debate 618321042 tom xylophone +debate 667283966 jessica king +debate 818313200 sarah johnson +debate 873035819 calvin johnson +debate 879500678 mike king +debate 904604938 mike steinbeck +debate 945683736 gabriella quirinius +debate NULL mike van buren +debate NULL nick xylophone +debate NULL rachel allen +education -1021859098 irene brown +education -1078579367 katie nixon +education -1138530007 +education -1240048334 sarah ellison +education -1272838092 gabriella brown +education -1283465451 xavier quirinius +education -1421396891 irene zipper +education -1429346144 zach miller +education -1439424023 zach white +education -1471147786 nick brown +education -1497098905 gabriella nixon +education -1506324615 alice ellison +education -1517536924 ulysses ellison +education -170643477 oscar johnson +education -1770250407 victor davidson +education -1867014618 nick zipper +education -2009569943 alice laertes +education -2015780444 calvin underhill +education -2027812975 wendy davidson +education -267130580 fred steinbeck +education -295751373 ulysses carson +education -337586880 gabriella steinbeck +education -371779520 fred xylophone +education -374337252 bob davidson +education -434656160 quinn white +education -521886983 tom underhill +education -560322190 ulysses ellison +education -591879497 david garcia +education -596963345 yuri ovid +education -688296901 bob zipper +education -722294882 quinn quirinius +education -733756717 fred zipper +education -749042352 katie young +education -839512271 priscilla steinbeck +education -966979668 alice falkner +education -9958400 zach miller +education 1027147837 ethan zipper +education 1107258026 quinn steinbeck +education 1136976809 katie garcia +education 1194243726 luke miller +education 1304812803 ethan quirinius +education 1370723240 +education 1372224352 tom underhill +education 1410516523 yuri ovid +education 1412102605 ulysses hernandez +education 1447462863 tom nixon +education 1452244326 wendy quirinius +education 1493555718 katie thompson +education 1552351592 gabriella underhill +education 1568180994 alice underhill +education 1602631923 sarah laertes +education 1625699061 ethan johnson +education 1626868156 tom garcia +education 1636364987 alice white +education 1767019352 yuri carson +education 177294487 tom quirinius +education 1802498539 quinn garcia +education 1829544791 tom miller +education 1836499981 yuri davidson +education 1893512909 ethan ichabod +education 1902676205 david brown +education 2076370203 bob thompson +education 2134433675 irene ovid +education 2140632003 david davidson +education 219415594 calvin steinbeck +education 232405034 quinn robinson +education 277582670 tom underhill +education 315973457 fred davidson +education 413090363 rachel king +education 418182899 luke xylophone +education 453613037 holly allen +education 472901914 zach miller +education 492120544 tom xylophone +education 516479816 wendy ellison +education 622925063 rachel miller +education 66182203 quinn ichabod +education 713031549 oscar johnson +education 793047956 mike laertes +education 879289168 +education NULL ethan davidson +education NULL mike van buren +education NULL sarah garcia +education NULL zach miller +forestry -1081766449 holly ichabod +forestry -1106469823 wendy thompson +forestry -1134786190 katie allen +forestry -1230459100 mike laertes +forestry -1249011023 alice van buren +forestry -1345391395 yuri falkner +forestry -1358159222 quinn king +forestry -1402821064 luke brown +forestry -1454941039 victor underhill +forestry -1541281934 bob quirinius +forestry -1688105985 sarah garcia +forestry -1728171376 rachel carson +forestry -1826997220 luke polk +forestry -2041825946 jessica falkner +forestry -310584775 nick van buren +forestry -346607939 +forestry -454598288 xavier young +forestry -470798506 wendy carson +forestry -536315467 luke allen +forestry -559270035 zach polk +forestry -561932449 yuri ovid +forestry -619311578 +forestry -859535015 bob garcia +forestry -866304147 holly young +forestry -886741158 nick quirinius +forestry -932525608 zach quirinius +forestry -958165276 calvin johnson +forestry -980869630 oscar falkner +forestry -987995271 oscar davidson +forestry 1002519329 mike king +forestry 1033836308 david thompson +forestry 1153089364 bob falkner +forestry 1202593021 rachel carson +forestry 1346627771 +forestry 1447438548 david thompson +forestry 1464695860 alice hernandez +forestry 1517488324 luke quirinius +forestry 152891873 irene underhill +forestry 1575091509 quinn thompson +forestry 1583280136 bob carson +forestry 1594107168 jessica underhill +forestry 1626884085 nick robinson +forestry 1677494300 victor van buren +forestry 172075892 sarah nixon +forestry 1751468853 tom ellison +forestry 1776456512 ulysses thompson +forestry 1796013407 wendy underhill +forestry 1815882183 fred robinson +forestry 1848935036 mike van buren +forestry 1861276585 alice underhill +forestry 1882932986 ulysses nixon +forestry 1933545427 victor allen +forestry 1958701268 ulysses miller +forestry 2058640744 wendy polk +forestry 2080412555 fred van buren +forestry 2097519027 sarah laertes +forestry 259204652 victor white +forestry 284646137 alice van buren +forestry 340929437 quinn brown +forestry 374283948 wendy laertes +forestry 3999930 fred thompson +forestry 415234946 bob brown +forestry 477857533 jessica ovid +forestry 530274409 fred quirinius +forestry 566646177 calvin ovid +forestry 584084934 tom van buren +forestry 633813435 oscar king +forestry 768198315 oscar brown +forestry 860658464 fred brown +forestry 922373046 nick miller +forestry 950545385 priscilla carson +forestry 962091264 tom polk +forestry NULL david davidson +forestry NULL david nixon +forestry NULL holly ellison +forestry NULL wendy allen +geology -1004204053 luke johnson +geology -1017629298 wendy brown +geology -1039040287 xavier quirinius +geology -1081328752 luke johnson +geology -1127100849 oscar white +geology -1141801925 oscar young +geology -120692484 calvin white +geology -1288198020 luke zipper +geology -1379039356 yuri white +geology -1439293109 priscilla nixon +geology -1538558250 zach young +geology -158233823 +geology -158848747 sarah ellison +geology -1620148746 nick robinson +geology -1798573685 ulysses white +geology -181122344 irene davidson +geology -1831957182 sarah garcia +geology -1878572820 ulysses underhill +geology -1918847735 priscilla miller +geology -1947868215 +geology -1968097621 ulysses hernandez +geology -1998652546 ethan thompson +geology -203416622 nick miller +geology -2042647152 holly steinbeck +geology -296195507 victor thompson +geology -36038293 holly allen +geology -491377296 calvin zipper +geology -533281137 jessica allen +geology -553349593 alice ovid +geology -575513309 ulysses ichabod +geology -588160623 david van buren +geology -630900418 oscar steinbeck +geology -679230165 bob brown +geology -682333536 ulysses steinbeck +geology -693249555 nick king +geology -817093900 priscilla polk +geology -841268868 ulysses ellison +geology -909127123 rachel xylophone +geology 1028204648 bob falkner +geology 1136548971 +geology 1203482872 david underhill +geology 127917714 +geology 1301997393 victor van buren +geology 1312270193 oscar falkner +geology 1317690178 holly miller +geology 1394370866 mike carson +geology 141492068 ethan polk +geology 1425456189 +geology 1475025489 alice davidson +geology 1503176016 david nixon +geology 1505168716 +geology 1550375386 sarah carson +geology 1701817607 tom hernandez +geology 1860113703 priscilla young +geology 1996235654 mike underhill +geology 2013178181 tom laertes +geology 2040926345 yuri underhill +geology 2068538934 quinn polk +geology 278601840 ulysses king +geology 283618733 quinn ovid +geology 287239980 katie johnson +geology 297577612 bob ovid +geology 314232856 fred thompson +geology 345556325 irene laertes +geology 373031319 alice johnson +geology 440393309 sarah ovid +geology 447426619 alice quirinius +geology 458910170 holly ellison +geology 550186724 jessica polk +geology 589546540 david hernandez +geology 596595603 tom johnson +geology 722737062 irene brown +geology 824743780 priscilla falkner +geology 915505006 luke hernandez +geology 975932228 victor carson +geology NULL mike ichabod +history -1024500955 rachel thompson +history -1066775085 katie zipper +history -1144976744 katie robinson +history -1412187081 gabriella robinson +history -1431196400 ulysses johnson +history -1446132523 ulysses polk +history -1459528251 quinn ellison +history -1575588203 calvin zipper +history -1594957608 ethan xylophone +history -1603071732 calvin nixon +history -1625062942 tom young +history -1627366321 david allen +history -178568841 nick quirinius +history -1801684055 calvin steinbeck +history -186600427 sarah thompson +history -189393743 irene ellison +history -1900369503 gabriella thompson +history -1949698319 +history -1989378509 +history -202409329 bob zipper +history -2076460151 bob ichabod +history -306214368 mike steinbeck +history -4393552 rachel ichabod +history -445353909 quinn davidson +history -45439614 david ichabod +history -499533481 oscar underhill +history -549167249 holly nixon +history -800799595 luke ovid +history -807242371 quinn xylophone +history -817383093 quinn davidson +history -846450672 david white +history -882028850 xavier ovid +history -88576126 ethan allen +history -891543038 holly carson +history -906986958 wendy johnson +history 1033609549 irene johnson +history 1141595012 xavier steinbeck +history 1142098316 yuri van buren +history 1164895226 +history 1238986437 ulysses underhill +history 1352739140 luke miller +history 1467284000 victor nixon +history 1500437122 bob laertes +history 1665724041 luke laertes +history 1669519977 wendy ichabod +history 1754025802 victor steinbeck +history 1772349172 victor van buren +history 1784291853 yuri falkner +history 1807358029 calvin brown +history 1813010930 quinn ovid +history 1844415080 holly xylophone +history 253621570 calvin carson +history 278643258 xavier ichabod +history 283322761 ethan ichabod +history 334208532 bob zipper +history 363981930 +history 44009986 rachel young +history 488559595 ethan hernandez +history 523289079 gabriella ellison +history 62293025 sarah falkner +history 696229550 bob brown +history 742866312 victor zipper +history 760466914 +history 786565385 quinn van buren +history 805672638 irene thompson +history 877053605 holly falkner +history 901084309 jessica quirinius +history 917891418 quinn carson +history 919363072 mike zipper +history 930008274 priscilla zipper +history 998793176 xavier falkner +history NULL ethan van buren +history NULL katie ellison +history NULL zach miller +industrial engineering -1011125931 zach ichabod +industrial engineering -1078397698 david robinson +industrial engineering -1108723753 luke quirinius +industrial engineering -1156193121 yuri johnson +industrial engineering -1247325089 calvin falkner +industrial engineering -1259611508 calvin brown +industrial engineering -1665164127 victor polk +industrial engineering -1706867123 calvin allen +industrial engineering -1718163874 priscilla white +industrial engineering -1730740504 xavier laertes +industrial engineering -1908696083 +industrial engineering -1946023520 irene brown +industrial engineering -2022383454 gabriella underhill +industrial engineering -211669740 alice allen +industrial engineering -2119539915 holly carson +industrial engineering -2122509553 nick nixon +industrial engineering -2137168636 katie garcia +industrial engineering -373034494 ethan polk +industrial engineering -379643543 david quirinius +industrial engineering -399643110 ethan johnson +industrial engineering -44559184 priscilla garcia +industrial engineering -616724730 mike brown +industrial engineering -841634659 victor nixon +industrial engineering -890374552 gabriella polk +industrial engineering 1074488452 tom polk +industrial engineering 1081187102 oscar brown +industrial engineering 1111985530 wendy falkner +industrial engineering 1222217404 luke steinbeck +industrial engineering 1258721737 jessica nixon +industrial engineering 1336365018 gabriella hernandez +industrial engineering 1409872356 katie white +industrial engineering 1483580941 oscar allen +industrial engineering 15020431 ulysses zipper +industrial engineering 1516236846 bob steinbeck +industrial engineering 1577999613 quinn ovid +industrial engineering 1712411993 quinn garcia +industrial engineering 1742536084 sarah robinson +industrial engineering 206942178 zach miller +industrial engineering 2084666529 mike brown +industrial engineering 2114363167 calvin falkner +industrial engineering 215759857 sarah steinbeck +industrial engineering 290601612 calvin white +industrial engineering 376076075 katie king +industrial engineering 386741352 sarah ichabod +industrial engineering 414645489 yuri young +industrial engineering 430686478 ulysses polk +industrial engineering 470993066 luke garcia +industrial engineering 480849725 priscilla ovid +industrial engineering 494570380 jessica ichabod +industrial engineering 52667480 david ichabod +industrial engineering 574069547 tom falkner +industrial engineering 674547678 tom johnson +industrial engineering 748185058 alice quirinius +industrial engineering 776606164 alice laertes +industrial engineering 851975276 xavier xylophone +industrial engineering 868717604 +industrial engineering 879290165 mike young +industrial engineering 990246086 holly allen +industrial engineering NULL alice young +industrial engineering NULL calvin steinbeck +industrial engineering NULL katie ichabod +industrial engineering NULL katie robinson +industrial engineering NULL priscilla brown +joggying -1017027298 victor young +joggying -1096013673 nick falkner +joggying -1111937842 irene white +joggying -1117019030 calvin xylophone +joggying -1202975006 alice ichabod +joggying -1218871391 priscilla steinbeck +joggying -122391516 alice garcia +joggying -1270523286 victor nixon +joggying -1302592941 quinn steinbeck +joggying -1305139473 mike underhill +joggying -1313618168 xavier hernandez +joggying -1339495001 wendy ichabod +joggying -1524081566 ethan van buren +joggying -1524554771 luke johnson +joggying -1563676282 victor polk +joggying -1602792666 yuri brown +joggying -161884324 oscar nixon +joggying -1622653291 oscar hernandez +joggying -1904737684 ethan nixon +joggying -1918651448 mike davidson +joggying -1948257321 tom hernandez +joggying -2112149052 calvin robinson +joggying -2119724898 holly young +joggying -267554590 david van buren +joggying -337073639 priscilla nixon +joggying -540401598 david brown +joggying -570632618 victor laertes +joggying -656478771 tom quirinius +joggying -779743333 ethan white +joggying -870624802 calvin davidson +joggying -896261100 katie davidson +joggying 1012843193 ulysses xylophone +joggying 1052255272 fred carson +joggying 1173098061 calvin brown +joggying 1216287232 jessica polk +joggying 1336194583 tom underhill +joggying 1377144283 +joggying 144499388 zach miller +joggying 1450881368 david robinson +joggying 1478365409 calvin white +joggying 1535954353 xavier carson +joggying 1572563948 zach laertes +joggying 1645067708 luke ichabod +joggying 1759741857 nick steinbeck +joggying 1773417290 oscar brown +joggying 177837042 katie ovid +joggying 1835749815 wendy carson +joggying 1905812339 oscar polk +joggying 2133950868 +joggying 218917585 quinn ellison +joggying 344239980 david hernandez +joggying 391186487 nick allen +joggying 479566810 oscar brown +joggying 514046604 mike hernandez +joggying 587206979 alice zipper +joggying 63706286 katie johnson +joggying 658850444 ulysses ovid +joggying 65956045 nick laertes +joggying 686081268 holly laertes +joggying 700341242 victor king +joggying 706823078 calvin ovid +joggying 780938234 luke falkner +joggying 826519029 holly hernandez +joggying 865013617 fred miller +joggying 889772203 +joggying 908943372 fred ovid +joggying 972835688 victor quirinius +joggying NULL calvin johnson +joggying NULL luke falkner +joggying NULL luke steinbeck +joggying NULL mike garcia +joggying NULL quinn johnson +joggying NULL quinn nixon +kindergarten -1052493316 mike van buren +kindergarten -1057522129 ethan quirinius +kindergarten -1091003492 holly robinson +kindergarten -1116100266 priscilla ovid +kindergarten -1140071443 mike laertes +kindergarten -1155174991 luke robinson +kindergarten -1205034356 +kindergarten -1213081886 fred allen +kindergarten -1228063838 +kindergarten -1299159155 alice ellison +kindergarten -1838281337 ulysses carson +kindergarten -1851680302 fred van buren +kindergarten -187804718 calvin miller +kindergarten -1880783574 irene zipper +kindergarten -1919939921 xavier van buren +kindergarten -1988508336 bob young +kindergarten -269702086 holly ellison +kindergarten -370093295 bob thompson +kindergarten -41242237 rachel johnson +kindergarten -533227056 +kindergarten -574475259 wendy polk +kindergarten -583908704 fred allen +kindergarten -632803945 xavier white +kindergarten -664856187 alice xylophone +kindergarten -677778959 calvin quirinius +kindergarten -738157651 david allen +kindergarten -789126455 irene steinbeck +kindergarten -828724467 tom king +kindergarten -835107230 sarah carson +kindergarten -835198551 rachel van buren +kindergarten -890552359 sarah young +kindergarten -922875124 fred nixon +kindergarten -935723237 +kindergarten 1036391201 victor ovid +kindergarten 1042237722 gabriella falkner +kindergarten 1056997296 jessica laertes +kindergarten 1190302173 priscilla ichabod +kindergarten 1202720813 katie ovid +kindergarten 1307148254 jessica xylophone +kindergarten 1540680149 mike white +kindergarten 1582537271 jessica garcia +kindergarten 1590744669 quinn white +kindergarten 1605596441 calvin ovid +kindergarten 1634441052 rachel steinbeck +kindergarten 1709983738 wendy zipper +kindergarten 1787826883 sarah allen +kindergarten 1830870769 ulysses robinson +kindergarten 2048533360 +kindergarten 2066707767 zach thompson +kindergarten 2089198703 victor ichabod +kindergarten 346562088 zach quirinius +kindergarten 459269456 mike nixon +kindergarten 488014426 holly thompson +kindergarten 56316391 sarah polk +kindergarten 615619268 xavier underhill +kindergarten 693331761 priscilla thompson +kindergarten 88774647 priscilla miller +kindergarten 963854010 mike robinson +kindergarten NULL david young +kindergarten NULL irene ovid +kindergarten NULL nick laertes +linguistics -101960322 ethan robinson +linguistics -1124028213 katie ellison +linguistics -121162464 luke davidson +linguistics -1248781172 calvin quirinius +linguistics -1341627565 fred van buren +linguistics -1356601829 tom robinson +linguistics -139448716 irene brown +linguistics -1447263708 yuri miller +linguistics -1462604138 +linguistics -1533934649 calvin thompson +linguistics -1534307678 yuri young +linguistics -1699049982 yuri carson +linguistics -1721368386 wendy brown +linguistics -1889139541 irene davidson +linguistics -1890963712 tom ellison +linguistics -19116270 zach davidson +linguistics -1928197479 calvin falkner +linguistics -1967660827 +linguistics -2057666812 fred thompson +linguistics -2096425960 gabriella polk +linguistics -297664578 quinn zipper +linguistics -336625622 yuri underhill +linguistics -343173797 fred ellison +linguistics -370901197 katie laertes +linguistics -379174037 yuri robinson +linguistics -472303419 rachel garcia +linguistics -579916775 priscilla ovid +linguistics -605370177 priscilla davidson +linguistics -671853199 fred falkner +linguistics -684022323 victor falkner +linguistics -764412063 victor falkner +linguistics -768305191 rachel johnson +linguistics -839176151 bob white +linguistics -897622427 tom van buren +linguistics -90029636 wendy laertes +linguistics -922200749 ulysses polk +linguistics 1121512594 xavier king +linguistics 1145627305 jessica ellison +linguistics 1198701102 sarah underhill +linguistics 1225312439 alice ellison +linguistics 1275228381 david young +linguistics 1392980712 victor carson +linguistics 1416850873 bob polk +linguistics 161210995 priscilla thompson +linguistics 1637295757 +linguistics 1809795770 david ichabod +linguistics 1914993018 yuri laertes +linguistics 1991072829 mike ichabod +linguistics 2018249426 jessica steinbeck +linguistics 2038381675 quinn ichabod +linguistics 2057486961 alice laertes +linguistics 2081152819 gabriella underhill +linguistics 209430502 victor falkner +linguistics 43672187 alice johnson +linguistics 605141554 luke xylophone +linguistics 65172363 sarah ovid +linguistics 712625264 jessica brown +linguistics 712816880 alice king +linguistics 735600165 katie thompson +linguistics 746904285 fred laertes +linguistics 75823003 oscar king +linguistics 776459017 wendy steinbeck +linguistics 819069589 zach thompson +linguistics 849859032 irene quirinius +linguistics 881673558 nick underhill +linguistics NULL calvin robinson +linguistics NULL luke allen +linguistics NULL mike zipper +linguistics NULL wendy underhill +mathematics -1061859761 victor nixon +mathematics -1112062809 victor nixon +mathematics -1129489281 tom ellison +mathematics -1198036877 +mathematics -1254129998 ulysses brown +mathematics -1319753324 yuri ellison +mathematics -1421860505 yuri nixon +mathematics -1423467446 mike quirinius +mathematics -1424027104 rachel laertes +mathematics -1544877665 katie quirinius +mathematics -1554130090 sarah zipper +mathematics -158420748 ethan davidson +mathematics -1651993300 yuri steinbeck +mathematics -1735287250 david allen +mathematics -175727228 fred ovid +mathematics -180280420 bob laertes +mathematics -1857500489 oscar ellison +mathematics -1892816721 sarah van buren +mathematics -191704948 wendy carson +mathematics -1974257754 jessica nixon +mathematics -2081809883 gabriella brown +mathematics -2117280385 zach xylophone +mathematics -234758376 ethan van buren +mathematics -23865350 irene falkner +mathematics -295186284 rachel thompson +mathematics -402441123 zach ichabod +mathematics -40284975 +mathematics -496870819 tom quirinius +mathematics -599396052 quinn zipper +mathematics -71305062 ethan young +mathematics -765102534 oscar king +mathematics -76654979 zach van buren +mathematics -809805200 +mathematics -816661030 priscilla steinbeck +mathematics -835002549 katie ovid +mathematics -856843296 jessica polk +mathematics -893863493 zach miller +mathematics -917062754 ethan polk +mathematics -938762477 ethan steinbeck +mathematics -94709066 oscar garcia +mathematics 1054864168 jessica carson +mathematics 1127080164 ulysses carson +mathematics 1196151988 jessica king +mathematics 1198172036 ethan ellison +mathematics 1224662770 calvin van buren +mathematics 1229172951 quinn hernandez +mathematics 1335803002 david young +mathematics 1363568842 ulysses white +mathematics 1377359511 ethan davidson +mathematics 1384071499 zach garcia +mathematics 139661585 priscilla quirinius +mathematics 1404346934 irene quirinius +mathematics 1443426396 +mathematics 1489169773 +mathematics 1505665168 +mathematics 1640445482 jessica xylophone +mathematics 1785455842 ulysses robinson +mathematics 1832650234 alice garcia +mathematics 195281533 tom thompson +mathematics 1974939899 gabriella steinbeck +mathematics 2064448036 alice steinbeck +mathematics 318631333 ulysses davidson +mathematics 338805871 priscilla falkner +mathematics 375106978 luke ichabod +mathematics 485105934 irene laertes +mathematics 491758252 tom falkner +mathematics 740883263 quinn nixon +mathematics 748358417 ulysses brown +mathematics 881695885 zach laertes +mathematics NULL david ovid +mathematics NULL jessica carson +mathematics NULL nick xylophone +mathematics NULL oscar ellison +mathematics NULL quinn garcia +mathematics NULL zach steinbeck +nap time -103219371 xavier zipper +nap time -116484575 ulysses quirinius +nap time -1183469360 alice king +nap time -1343327 oscar king +nap time -16094879 quinn king +nap time -1669227632 calvin robinson +nap time -1818456584 fred garcia +nap time -1849091666 oscar carson +nap time -1851280202 fred hernandez +nap time -1992388855 jessica hernandez +nap time -2111312205 katie nixon +nap time -292588406 calvin steinbeck +nap time -309571354 gabriella steinbeck +nap time -337829479 yuri garcia +nap time -359943425 victor miller +nap time -397951021 katie falkner +nap time -434747475 jessica underhill +nap time -490337498 jessica falkner +nap time -504529358 mike allen +nap time -607667405 ethan young +nap time -626484313 ethan underhill +nap time -665623523 sarah johnson +nap time -805288503 xavier hernandez +nap time -913906252 calvin ovid +nap time -946830673 wendy underhill +nap time -971203543 quinn miller +nap time -982238309 calvin polk +nap time 1166237779 irene steinbeck +nap time 1273877405 calvin nixon +nap time 1372705672 victor thompson +nap time 1516165279 zach johnson +nap time 1520375588 david steinbeck +nap time 1571267481 gabriella underhill +nap time 1775355987 david ovid +nap time 1818213677 xavier ichabod +nap time 2013444562 ulysses white +nap time 2031604236 quinn johnson +nap time 2080249726 ethan robinson +nap time 2145269593 priscilla steinbeck +nap time 2146312499 calvin allen +nap time 215508794 ulysses van buren +nap time 268888160 bob hernandez +nap time 398960205 tom king +nap time 503752931 irene miller +nap time 516843026 victor ichabod +nap time 595836061 priscilla johnson +nap time 618991041 quinn underhill +nap time 738356485 ethan king +nap time 785382955 gabriella garcia +nap time 922553769 jessica ichabod +nap time 92834720 bob falkner +nap time 950997304 nick thompson +nap time 962712814 ulysses brown +nap time 980732494 holly polk +nap time NULL jessica johnson +nap time NULL wendy young +opthamology -1079633326 katie robinson +opthamology -1104268719 ulysses brown +opthamology -1126628450 sarah hernandez +opthamology -1226425562 mike robinson +opthamology -1234163924 holly miller +opthamology -1244527286 bob carson +opthamology -1364322216 holly hernandez +opthamology -1422780798 bob davidson +opthamology -1502924486 rachel nixon +opthamology -1561738723 fred underhill +opthamology -1616030844 irene falkner +opthamology -1652600376 victor zipper +opthamology -1655030261 oscar ovid +opthamology -1676261015 katie polk +opthamology -1709117770 calvin miller +opthamology -1769423338 gabriella johnson +opthamology -177025818 yuri young +opthamology -181523892 sarah quirinius +opthamology -1901806083 luke xylophone +opthamology -1960344717 holly steinbeck +opthamology -1969751342 victor ichabod +opthamology -1979314577 oscar underhill +opthamology -2081501748 priscilla falkner +opthamology -287400633 gabriella thompson +opthamology -327648289 rachel robinson +opthamology -332125121 ethan white +opthamology -360113158 bob king +opthamology -400501472 fred van buren +opthamology -406264741 mike robinson +opthamology -41864614 victor king +opthamology -425196209 sarah nixon +opthamology -442839889 sarah davidson +opthamology -4943292 oscar quirinius +opthamology -505879576 holly steinbeck +opthamology -759911896 katie white +opthamology -78240945 yuri underhill +opthamology -800975421 rachel thompson +opthamology 100270148 victor ellison +opthamology 1044196568 holly white +opthamology 1063524922 +opthamology 1069486136 victor ichabod +opthamology 1134416796 quinn thompson +opthamology 1142481557 mike falkner +opthamology 117620760 katie polk +opthamology 1211873318 oscar ellison +opthamology 1281277970 fred young +opthamology 1305668933 calvin allen +opthamology 1336951982 oscar hernandez +opthamology 144428297 rachel falkner +opthamology 1603612975 gabriella steinbeck +opthamology 1632769786 sarah zipper +opthamology 1678220496 +opthamology 1752520642 +opthamology 1852725744 david garcia +opthamology 2065408093 priscilla polk +opthamology 2069258195 nick allen +opthamology 266601601 irene quirinius +opthamology 307333276 wendy polk +opthamology 340384179 david thompson +opthamology 39723411 bob ellison +opthamology 402173272 quinn garcia +opthamology 461680901 quinn zipper +opthamology 491016124 luke allen +opthamology 511836073 calvin ellison +opthamology 609917172 luke ovid +opthamology 6266567 jessica van buren +opthamology 718692886 victor white +opthamology 759899363 wendy van buren +opthamology 787925706 xavier robinson +opthamology 816439627 jessica polk +opthamology 819875108 irene underhill +opthamology 936133387 gabriella van buren +opthamology 955171928 +opthamology NULL +opthamology NULL yuri ichabod +philosophy -1096771844 ethan van buren +philosophy -1109134719 katie hernandez +philosophy -1131684944 quinn white +philosophy -1196808950 irene polk +philosophy -120704505 luke king +philosophy -1319686435 jessica steinbeck +philosophy -1345085327 bob johnson +philosophy -1460613213 priscilla brown +philosophy -1477897348 nick ovid +philosophy -1489628668 tom quirinius +philosophy -1538978853 +philosophy -1545572711 victor underhill +philosophy -1603374745 alice zipper +philosophy -1679120527 jessica quirinius +philosophy -1699044525 nick zipper +philosophy -1744964279 oscar zipper +philosophy -1770229099 alice miller +philosophy -1811563127 jessica hernandez +philosophy -1817938378 sarah laertes +philosophy -1819075185 luke miller +philosophy -1949359208 alice carson +philosophy -2042831105 +philosophy -2053551539 jessica zipper +philosophy -2077771325 fred brown +philosophy -217930632 rachel robinson +philosophy -340951385 xavier robinson +philosophy -42151403 calvin young +philosophy -436386350 victor young +philosophy -47662800 zach polk +philosophy -540820650 sarah davidson +philosophy -606214770 holly king +philosophy -745678338 priscilla steinbeck +philosophy -752222556 tom allen +philosophy -884796655 oscar robinson +philosophy -938756287 fred steinbeck +philosophy -985817478 nick ovid +philosophy -996953616 victor zipper +philosophy 1204325852 calvin ovid +philosophy 1314531900 jessica king +philosophy 1319589591 +philosophy 1406029775 +philosophy 1541249928 calvin miller +philosophy 1569269522 ethan xylophone +philosophy 1756592797 luke ovid +philosophy 1772545157 gabriella laertes +philosophy 1942004879 katie xylophone +philosophy 1972940844 nick quirinius +philosophy 2009215103 bob thompson +philosophy 2083836439 sarah davidson +philosophy 2100839074 calvin ovid +philosophy 2124297747 ethan carson +philosophy 22308780 mike ovid +philosophy 344989592 +philosophy 390124976 gabriella laertes +philosophy 41063276 wendy brown +philosophy 626941809 victor ellison +philosophy 631711489 victor johnson +philosophy 684561551 oscar van buren +philosophy 737149747 sarah davidson +philosophy 789871166 david ovid +philosophy 825677248 alice miller +philosophy 888896424 zach white +philosophy 889733679 priscilla zipper +philosophy 89366322 wendy underhill +philosophy 936752497 ethan nixon +philosophy NULL xavier hernandez +quiet hour -1001529082 wendy nixon +quiet hour -1012329052 david quirinius +quiet hour -1026746699 rachel hernandez +quiet hour -1058166020 oscar robinson +quiet hour -117723745 oscar white +quiet hour -1403154847 luke ellison +quiet hour -1464514590 nick garcia +quiet hour -1493282775 +quiet hour -1505397109 rachel xylophone +quiet hour -1655396452 mike hernandez +quiet hour -1668974292 bob falkner +quiet hour -1727003541 +quiet hour -191434898 sarah underhill +quiet hour -191899537 rachel thompson +quiet hour -2028355450 quinn thompson +quiet hour -2069439395 nick steinbeck +quiet hour -357680544 holly white +quiet hour -407089271 wendy carson +quiet hour -448060992 alice miller +quiet hour -464804906 luke ellison +quiet hour -512198016 katie miller +quiet hour -742707249 yuri underhill +quiet hour -774406989 oscar zipper +quiet hour -941433219 oscar white +quiet hour -950738312 ulysses johnson +quiet hour -971698865 bob carson +quiet hour -99916247 ethan white +quiet hour 1002132158 mike nixon +quiet hour 1182390248 fred xylophone +quiet hour 1216016081 ulysses garcia +quiet hour 121663320 bob ovid +quiet hour 1260101584 yuri allen +quiet hour 1293876597 mike brown +quiet hour 1359437295 rachel white +quiet hour 1366402722 gabriella robinson +quiet hour 1390704286 mike miller +quiet hour 1393262450 ulysses johnson +quiet hour 1437057145 luke johnson +quiet hour 14573904 gabriella thompson +quiet hour 1488440165 irene steinbeck +quiet hour 1614297403 zach falkner +quiet hour 1739911574 ulysses ovid +quiet hour 1743671220 alice quirinius +quiet hour 1807877618 holly ichabod +quiet hour 1847210729 sarah polk +quiet hour 1870464222 +quiet hour 1880017800 bob nixon +quiet hour 1893632113 priscilla quirinius +quiet hour 1978171687 alice johnson +quiet hour 1990792684 nick carson +quiet hour 2029657999 mike ichabod +quiet hour 203688965 yuri garcia +quiet hour 2100377172 quinn allen +quiet hour 2127682701 sarah garcia +quiet hour 257821327 bob ellison +quiet hour 410340192 calvin brown +quiet hour 592011541 tom garcia +quiet hour 619884480 katie king +quiet hour 669871113 ethan laertes +quiet hour 704038411 quinn van buren +quiet hour 735732067 rachel ovid +quiet hour 76381404 rachel garcia +quiet hour 856986735 +quiet hour 882762933 holly white +quiet hour NULL mike garcia +quiet hour NULL priscilla ellison +quiet hour NULL zach falkner +religion -1043413503 mike allen +religion -1063673827 irene miller +religion -1144920802 ulysses king +religion -1197602595 alice steinbeck +religion -1216206795 xavier young +religion -1247229632 victor robinson +religion -1343425152 wendy xylophone +religion -1432316859 alice laertes +religion -1552053883 calvin xylophone +religion -1626062014 jessica allen +religion -1643714866 luke ovid +religion -1701502632 mike xylophone +religion -1749415887 ulysses steinbeck +religion -1802746460 mike robinson +religion -1884780525 oscar xylophone +religion -192181579 luke allen +religion -1969235238 fred thompson +religion -201554470 luke brown +religion -2052386812 tom robinson +religion -20660936 david hernandez +religion -214166042 jessica falkner +religion -2146432765 nick van buren +religion -38458614 calvin polk +religion -409673169 fred johnson +religion -419335927 sarah van buren +religion -618505946 nick white +religion -667383951 alice white +religion -670925379 ethan ovid +religion -71433796 mike johnson +religion -76430653 nick robinson +religion -772236518 +religion -853967587 irene thompson +religion -939348081 mike johnson +religion 1022214896 luke quirinius +religion 1061043704 mike underhill +religion 1075444504 luke robinson +religion 1182646662 fred ellison +religion 1228837108 fred davidson +religion 129675822 alice ichabod +religion 1318956413 victor falkner +religion 1336842978 oscar steinbeck +religion 1363459426 bob laertes +religion 1436480682 ethan falkner +religion 1456367662 quinn xylophone +religion 1472487454 priscilla steinbeck +religion 1499399891 ulysses carson +religion 1592153312 ulysses young +religion 1597303154 +religion 166320811 nick allen +religion 177391521 oscar falkner +religion 1845797092 alice zipper +religion 1891680787 +religion 1910930064 jessica steinbeck +religion 1911809937 david allen +religion 194754262 luke carson +religion 2009890220 nick underhill +religion 2070969353 zach davidson +religion 210728566 fred xylophone +religion 2125311222 alice polk +religion 493977568 nick polk +religion 51376784 fred young +religion 550594651 nick garcia +religion 596802082 david brown +religion 597657990 david falkner +religion 673904922 calvin steinbeck +religion 824836988 ethan king +religion 829101712 calvin garcia +religion 895763504 bob steinbeck +religion 914062370 luke robinson +religion 947846543 quinn garcia +religion NULL gabriella allen +religion NULL irene ichabod +religion NULL luke carson +religion NULL mike nixon +religion NULL nick allen +religion NULL xavier van buren +study skills -1164833898 rachel white +study skills -1212524805 tom steinbeck +study skills -1242677422 zach young +study skills -1266138408 gabriella steinbeck +study skills -1318045616 irene young +study skills -136514115 irene ovid +study skills -1392487784 irene carson +study skills -1419573027 holly ichabod +study skills -1528033060 ulysses ichabod +study skills -1669848306 holly thompson +study skills -1719427168 mike ichabod +study skills -1762037754 ulysses van buren +study skills -1784633305 zach laertes +study skills -1856034030 gabriella nixon +study skills -1914072976 alice ovid +study skills -1937640350 oscar robinson +study skills -1955647385 irene steinbeck +study skills -235819331 yuri xylophone +study skills -283378057 ulysses xylophone +study skills -314935936 yuri ellison +study skills -318206520 nick xylophone +study skills -359194591 zach young +study skills -414207254 quinn carson +study skills -425103007 tom brown +study skills -442732016 +study skills -507955215 fred xylophone +study skills -535056977 wendy laertes +study skills -621365995 ethan johnson +study skills -648766606 tom polk +study skills -758231588 calvin steinbeck +study skills -849551464 oscar davidson +study skills -851663638 gabriella robinson +study skills -887663189 katie laertes +study skills -887790938 priscilla ichabod +study skills -897586947 wendy van buren +study skills -978892011 xavier underhill +study skills -99205196 priscilla hernandez +study skills 1004241194 calvin hernandez +study skills 1028092807 ulysses quirinius +study skills 1076088102 rachel quirinius +study skills 1091736925 yuri nixon +study skills 1115197541 ethan quirinius +study skills 1131663263 david laertes +study skills 1222935237 gabriella garcia +study skills 1286367391 jessica brown +study skills 1316931 priscilla brown +study skills 1321678350 ulysses ovid +study skills 1343581455 mike robinson +study skills 1386071996 bob zipper +study skills 1415647436 quinn carson +study skills 1426152053 bob falkner +study skills 1506907734 wendy quirinius +study skills 1522208504 fred hernandez +study skills 1523657918 fred brown +study skills 1570238232 david polk +study skills 160290374 tom hernandez +study skills 1620529246 katie underhill +study skills 1650573576 alice quirinius +study skills 1668446119 calvin ellison +study skills 1677197847 gabriella ellison +study skills 1743696703 rachel van buren +study skills 1750433588 ethan ovid +study skills 1805139501 katie thompson +study skills 1888675011 wendy white +study skills 1911834442 priscilla white +study skills 198539698 priscilla allen +study skills 1992977592 quinn garcia +study skills 2032271149 mike falkner +study skills 482977302 jessica robinson +study skills 526502851 oscar king +study skills 631207613 tom garcia +study skills 867587289 alice white +study skills 895945459 katie underhill +study skills 925032386 david polk +study skills 958866509 xavier white +study skills NULL jessica miller +study skills NULL katie carson +topology -1058356124 jessica white +topology -1061222139 xavier garcia +topology -1067083033 tom davidson +topology -1216166764 nick king +topology -1240208945 ethan quirinius +topology -1269216718 wendy nixon +topology -1406691044 fred johnson +topology -1462331586 gabriella xylophone +topology -1568646283 rachel brown +topology -1800413845 katie hernandez +topology -1817096156 yuri miller +topology -1955545912 irene ellison +topology -2024003241 +topology -2065287410 rachel quirinius +topology -2147071655 rachel falkner +topology -303747347 ethan nixon +topology -370798230 katie van buren +topology -40407627 quinn underhill +topology -462541618 jessica xylophone +topology -522450861 david white +topology -534991774 wendy falkner +topology -601946913 ulysses robinson +topology -628790799 holly nixon +topology -707228984 alice ovid +topology -714270951 calvin xylophone +topology -728541537 victor xylophone +topology -734921821 zach carson +topology -743680989 priscilla thompson +topology -938112972 rachel polk +topology -954480325 mike thompson +topology -973128166 tom garcia +topology 1003667927 mike polk +topology 1059212450 tom zipper +topology 1124269631 katie ovid +topology 1148500740 luke thompson +topology 1151752586 tom zipper +topology 1309976380 victor davidson +topology 1316369941 rachel ovid +topology 1469775272 quinn falkner +topology 1621606222 priscilla young +topology 1646811064 katie johnson +topology 1677444379 david laertes +topology 174310705 tom king +topology 176792505 oscar thompson +topology 1783034168 quinn young +topology 1895751360 ethan underhill +topology 1924741890 jessica quirinius +topology 1987336880 fred ichabod +topology 2017314998 oscar miller +topology 2075919195 holly hernandez +topology 217823040 rachel xylophone +topology 335359004 bob ichabod +topology 350802495 ulysses carson +topology 477584560 fred steinbeck +topology 527598540 luke ovid +topology 531459992 jessica thompson +topology 538268118 fred laertes +topology 557053197 +topology 661659208 mike nixon +topology 734267314 yuri polk +topology 791096295 david garcia +topology 850625480 zach allen +topology 860708524 yuri steinbeck +topology 960187615 calvin zipper +topology 989475408 jessica brown +topology NULL mike van buren +topology NULL oscar nixon +topology NULL oscar thompson +topology NULL priscilla brown +undecided -1070951602 +undecided -1106685577 ulysses ovid +undecided -1324624386 oscar young +undecided -1353470095 priscilla xylophone +undecided -1554325042 victor van buren +undecided -1562552002 katie brown +undecided -1583445177 luke xylophone +undecided -1938290238 jessica allen +undecided -1974777102 oscar ellison +undecided -1984079412 holly ichabod +undecided -2016985611 calvin ovid +undecided -202035134 katie underhill +undecided -2124994385 ethan young +undecided -216495498 luke zipper +undecided -361944328 david white +undecided -373038706 priscilla ovid +undecided -432218419 nick white +undecided -51612681 calvin ichabod +undecided -53587991 mike xylophone +undecided -558456218 yuri xylophone +undecided -590374062 victor thompson +undecided -733239404 +undecided -828522499 priscilla quirinius +undecided -956668825 ethan van buren +undecided 1042184256 bob miller +undecided 1129173487 luke johnson +undecided 1205391962 calvin miller +undecided 1265528735 ethan robinson +undecided 127051381 +undecided 1328225044 mike garcia +undecided 1332042427 +undecided 1333214263 quinn falkner +undecided 1338047392 victor ovid +undecided 1347876055 david quirinius +undecided 1362740312 irene underhill +undecided 1376818328 sarah ellison +undecided 1504919241 calvin miller +undecided 1563120121 nick polk +undecided 1731764471 katie quirinius +undecided 1765874562 mike ovid +undecided 1805308672 xavier thompson +undecided 1825828852 quinn white +undecided 1918230406 +undecided 1950882901 xavier allen +undecided 1961954939 nick ovid +undecided 1978200605 quinn underhill +undecided 2068018858 rachel ichabod +undecided 2102440065 tom van buren +undecided 260463232 ethan davidson +undecided 272086526 wendy xylophone +undecided 372099650 luke robinson +undecided 37461818 jessica davidson +undecided 407098216 priscilla garcia +undecided 536235636 jessica garcia +undecided 564366133 alice xylophone +undecided 596242714 tom miller +undecided 596280431 bob johnson +undecided 656187584 victor xylophone +undecided 658008867 alice hernandez +undecided 69110370 fred ichabod +undecided 727802564 fred ellison +undecided 821316302 mike brown +undecided 829055499 mike steinbeck +undecided 914583645 nick hernandez +undecided 978044705 jessica white +undecided NULL gabriella thompson +undecided NULL zach garcia +values clariffication -1026458834 irene ovid +values clariffication -1111814111 irene van buren +values clariffication -1212433954 mike underhill +values clariffication -1236536142 quinn ellison +values clariffication -1261099087 sarah van buren +values clariffication -1289665817 +values clariffication -1362178985 quinn laertes +values clariffication -1369302744 quinn thompson +values clariffication -1391183008 ulysses brown +values clariffication -144862954 sarah ovid +values clariffication -1469463456 ethan zipper +values clariffication -1484033125 xavier ellison +values clariffication -1545388906 bob ellison +values clariffication -1621814212 +values clariffication -1738775004 mike hernandez +values clariffication -1743938290 holly quirinius +values clariffication -1759354458 mike ellison +values clariffication -1765795567 +values clariffication -1769037737 victor underhill +values clariffication -1897998366 +values clariffication -1933374662 priscilla ovid +values clariffication -1945738830 sarah carson +values clariffication -1954890941 gabriella van buren +values clariffication -1977762695 oscar quirinius +values clariffication -2098078720 ethan steinbeck +values clariffication -215703544 yuri thompson +values clariffication -224865887 fred nixon +values clariffication -244778184 luke underhill +values clariffication -362603422 rachel falkner +values clariffication -369183838 wendy xylophone +values clariffication -373541958 priscilla quirinius +values clariffication -385247581 ethan steinbeck +values clariffication -588547970 +values clariffication -66112513 calvin brown +values clariffication -837503491 quinn robinson +values clariffication -847235873 oscar young +values clariffication -901778330 david young +values clariffication -928013434 ulysses hernandez +values clariffication -933324607 rachel young +values clariffication 1017953606 gabriella brown +values clariffication 1081920048 tom thompson +values clariffication 1114521964 victor garcia +values clariffication 1130043800 david davidson +values clariffication 128430191 ulysses ovid +values clariffication 1290381132 xavier falkner +values clariffication 1393506704 david white +values clariffication 1418228573 +values clariffication 1421779455 luke young +values clariffication 1430614653 david brown +values clariffication 1473503196 holly davidson +values clariffication 1493152791 ethan allen +values clariffication 1638471881 quinn xylophone +values clariffication 1668094749 luke carson +values clariffication 1679381813 rachel ovid +values clariffication 1686537335 zach quirinius +values clariffication 1701761102 +values clariffication 1817671655 yuri van buren +values clariffication 1916363472 xavier white +values clariffication 1925283040 yuri white +values clariffication 1941527322 katie ellison +values clariffication 2142592987 +values clariffication 311478497 irene hernandez +values clariffication 33234633 yuri van buren +values clariffication 368170021 +values clariffication 476919973 calvin garcia +values clariffication 524317972 ulysses miller +values clariffication 528218910 calvin young +values clariffication 601376532 calvin miller +values clariffication 631954352 xavier ellison +values clariffication 641695802 victor davidson +values clariffication 659397992 fred brown +values clariffication 672266669 jessica underhill +values clariffication 758926227 +values clariffication 76299337 luke zipper +values clariffication 773730574 holly polk +values clariffication 8040290 holly ichabod +values clariffication 832465439 +values clariffication 859140926 jessica robinson +values clariffication 929560791 david polk +values clariffication 987917448 irene zipper +values clariffication NULL fred quirinius +values clariffication NULL fred xylophone +values clariffication NULL gabriella van buren +values clariffication NULL priscilla quirinius +wind surfing -1078214868 victor ellison +wind surfing -1095938490 victor robinson +wind surfing -1153978907 fred robinson +wind surfing -1201785350 quinn thompson +wind surfing -1222897252 zach white +wind surfing -1322736153 jessica polk +wind surfing -1340213051 rachel ovid +wind surfing -1426893312 +wind surfing -1437126017 yuri garcia +wind surfing -1447140800 mike underhill +wind surfing -146961490 alice ellison +wind surfing -1565785026 nick garcia +wind surfing -1578387726 tom thompson +wind surfing -163859725 zach laertes +wind surfing -1642207005 sarah garcia +wind surfing -1716506227 david garcia +wind surfing -1754203978 katie miller +wind surfing -1758125445 ethan brown +wind surfing -1817564067 rachel davidson +wind surfing -1820436871 alice thompson +wind surfing -1829691116 fred ellison +wind surfing -1832606512 jessica van buren +wind surfing -1873004551 irene zipper +wind surfing -18917438 sarah nixon +wind surfing -1914210382 rachel steinbeck +wind surfing -1924909143 tom young +wind surfing -2019287179 alice young +wind surfing -2037628236 luke xylophone +wind surfing -206177972 david hernandez +wind surfing -240529113 alice king +wind surfing -249150336 mike allen +wind surfing -253084551 wendy ichabod +wind surfing -300717684 sarah ovid +wind surfing -311437801 nick miller +wind surfing -409404534 luke nixon +wind surfing -45460011 mike nixon +wind surfing -469749219 calvin underhill +wind surfing -54793232 jessica van buren +wind surfing -571587579 katie underhill +wind surfing -592568201 fred steinbeck +wind surfing -829717122 +wind surfing -838656526 holly allen +wind surfing -915104901 yuri carson +wind surfing -916344293 nick thompson +wind surfing -951728053 ethan ovid +wind surfing 104004730 holly zipper +wind surfing 1045719941 oscar allen +wind surfing 1050809633 tom garcia +wind surfing 106847364 luke garcia +wind surfing 107680423 ulysses ellison +wind surfing 1102069050 oscar polk +wind surfing 1103797891 nick underhill +wind surfing 1109664665 nick king +wind surfing 1182595271 sarah allen +wind surfing 1191238870 xavier xylophone +wind surfing 1251556414 xavier ellison +wind surfing 1260480653 katie nixon +wind surfing 1342923026 rachel laertes +wind surfing 1434588588 nick allen +wind surfing 1566958573 jessica allen +wind surfing 1667594394 jessica zipper +wind surfing 167432368 priscilla hernandez +wind surfing 1767359228 zach brown +wind surfing 1796950944 ulysses garcia +wind surfing 1846184880 zach ellison +wind surfing 1920662116 tom hernandez +wind surfing 1934970004 rachel steinbeck +wind surfing 1949494660 calvin nixon +wind surfing 234452496 victor robinson +wind surfing 239078089 zach quirinius +wind surfing 270090617 holly laertes +wind surfing 371383749 jessica quirinius +wind surfing 37730738 david steinbeck +wind surfing 388707554 nick thompson +wind surfing 476858779 wendy underhill +wind surfing 48554395 gabriella allen +wind surfing 541118710 calvin van buren +wind surfing 581259902 yuri ellison +wind surfing 590719541 +wind surfing 658636280 alice white +wind surfing 659343542 irene thompson +wind surfing 661380540 quinn thompson +wind surfing 693876030 yuri king +wind surfing 715333063 mike young +wind surfing 77063155 zach brown +wind surfing 824235855 bob polk +wind surfing 866084887 david polk +wind surfing 872554087 jessica xylophone +wind surfing 923353533 ethan king +wind surfing 987734049 alice hernandez +xylophone band -1030565036 xavier king +xylophone band -1079086534 alice polk +xylophone band -1114208576 jessica hernandez +xylophone band -1117358187 ulysses falkner +xylophone band -1146649990 ethan ichabod +xylophone band -1257859205 mike garcia +xylophone band -1280919769 +xylophone band -1349876582 fred davidson +xylophone band -1430903652 bob zipper +xylophone band -1444011944 jessica miller +xylophone band -1565671389 bob underhill +xylophone band -1606567895 holly nixon +xylophone band -1648991909 holly white +xylophone band -1702587308 +xylophone band -1731820254 luke robinson +xylophone band -1850492820 victor miller +xylophone band -1858443953 tom zipper +xylophone band -1881263242 ulysses zipper +xylophone band -1953605752 oscar xylophone +xylophone band -1989778424 luke falkner +xylophone band -2017279089 alice ellison +xylophone band -2043805661 yuri robinson +xylophone band -2066134281 alice zipper +xylophone band -2076886223 ethan carson +xylophone band -2138343289 xavier davidson +xylophone band -318380015 katie ichabod +xylophone band -393723522 gabriella carson +xylophone band -412333994 mike ichabod +xylophone band -423190290 nick underhill +xylophone band -603273425 ethan steinbeck +xylophone band -675125724 nick garcia +xylophone band -726879427 calvin young +xylophone band -765190882 mike white +xylophone band -909024258 ethan carson +xylophone band -914329027 zach xylophone +xylophone band -916495008 priscilla polk +xylophone band -932921363 alice xylophone +xylophone band 1094778643 zach king +xylophone band 115470151 mike ellison +xylophone band 1179528290 luke falkner +xylophone band 1256676429 mike ovid +xylophone band 1333148555 katie allen +xylophone band 1440427914 katie garcia +xylophone band 1517915751 quinn ovid +xylophone band 1519993904 gabriella ellison +xylophone band 1544482684 priscilla quirinius +xylophone band 1768399622 ulysses king +xylophone band 197056787 xavier white +xylophone band 2052773366 katie carson +xylophone band 206121314 xavier brown +xylophone band 26270580 oscar hernandez +xylophone band 323817967 yuri king +xylophone band 343362793 nick johnson +xylophone band 471464395 calvin allen +xylophone band 492639283 bob van buren +xylophone band 522895626 luke davidson +xylophone band 583458404 fred falkner +xylophone band 596045726 calvin quirinius +xylophone band 626251612 nick young +xylophone band 6526476 sarah brown +xylophone band 656636097 luke carson +xylophone band 688547276 +xylophone band 720703232 oscar garcia +xylophone band 882331889 katie zipper +xylophone band 923980398 katie van buren +xylophone band 945911081 xavier miller +xylophone band 955267058 quinn carson +xylophone band 977292235 luke van buren +xylophone band 994798486 ulysses ellison +xylophone band 997193329 david johnson +xylophone band NULL jessica quirinius +yard duty -1032306832 katie davidson +yard duty -1038565721 wendy laertes +yard duty -1249134513 priscilla underhill +yard duty -1274158260 oscar ichabod +yard duty -1404921781 rachel miller +yard duty -1458382451 gabriella brown +yard duty -1463884101 katie ichabod +yard duty -1531040609 rachel davidson +yard duty -1609864597 ethan hernandez +yard duty -1621721177 nick thompson +yard duty -1635301453 luke ichabod +yard duty -186764959 xavier steinbeck +yard duty -1871209811 fred polk +yard duty -1909635960 priscilla quirinius +yard duty -1983567458 nick laertes +yard duty -20639382 mike falkner +yard duty -251576563 luke laertes +yard duty -291577538 irene white +yard duty -300429552 calvin johnson +yard duty -463071187 quinn young +yard duty -520725912 victor king +yard duty -534894953 xavier ovid +yard duty -607285491 sarah thompson +yard duty -625788713 katie robinson +yard duty -693207128 jessica xylophone +yard duty -714594143 priscilla brown +yard duty -797889292 oscar miller +yard duty -812431220 holly robinson +yard duty -884109192 alice zipper +yard duty -892839693 wendy davidson +yard duty 1001732850 yuri king +yard duty 1022707418 +yard duty 115111911 priscilla allen +yard duty 1194089079 nick falkner +yard duty 1304431147 priscilla thompson +yard duty 1332181668 ulysses laertes +yard duty 1458051497 wendy garcia +yard duty 1464703053 david white +yard duty 1516149502 david ichabod +yard duty 1625751062 jessica nixon +yard duty 1678261510 wendy davidson +yard duty 1796486238 bob nixon +yard duty 1912175355 alice nixon +yard duty 2042816480 zach steinbeck +yard duty 210003006 xavier falkner +yard duty 2133492883 gabriella thompson +yard duty 252169185 katie laertes +yard duty 25400543 quinn robinson +yard duty 259524903 bob nixon +yard duty 467753905 gabriella xylophone +yard duty 538766635 irene laertes +yard duty 615661052 bob ellison +yard duty 654939016 katie steinbeck +yard duty 692666133 mike miller +yard duty 703111607 nick young +yard duty 745725681 mike polk +yard duty 770574055 +yard duty 881396599 luke white +yard duty 900992177 fred king +yard duty 932774185 bob king +yard duty NULL calvin ichabod +yard duty NULL gabriella ovid +yard duty NULL holly hernandez +yard duty NULL irene garcia +yard duty NULL rachel steinbeck +yard duty NULL tom miller +yard duty NULL zach hernandez +zync studies -1009249550 calvin laertes +zync studies -1141652793 sarah ovid +zync studies -1171326281 irene xylophone +zync studies -1196101029 david king +zync studies -134686276 oscar nixon +zync studies -1348149160 oscar hernandez +zync studies -1423477356 katie ovid +zync studies -1425942083 katie zipper +zync studies -1625800024 fred falkner +zync studies -1703620970 calvin allen +zync studies -1709246310 yuri polk +zync studies -1749841790 katie thompson +zync studies -1804244259 sarah thompson +zync studies -1808960215 ethan davidson +zync studies -1880877824 tom quirinius +zync studies -207546600 jessica van buren +zync studies -2144241640 quinn ichabod +zync studies -308225568 yuri white +zync studies -329695030 holly van buren +zync studies -340462064 calvin quirinius +zync studies -37773326 fred hernandez +zync studies -37876543 bob van buren +zync studies -423378447 oscar white +zync studies -43858652 mike king +zync studies -449333854 katie white +zync studies -604362582 gabriella ichabod +zync studies -641062448 wendy carson +zync studies -876122064 sarah ellison +zync studies -901079162 fred ovid +zync studies -906545548 xavier falkner +zync studies -968377273 +zync studies 107941738 wendy nixon +zync studies 1103878879 gabriella xylophone +zync studies 1107757211 zach robinson +zync studies 1257621270 katie miller +zync studies 1303632852 quinn robinson +zync studies 131031898 calvin allen +zync studies 135341845 rachel young +zync studies 1372982791 ulysses robinson +zync studies 142722637 xavier quirinius +zync studies 1471913583 rachel robinson +zync studies 1485934602 tom garcia +zync studies 1524010024 zach xylophone +zync studies 1618123796 ethan ichabod +zync studies 1650676897 sarah nixon +zync studies 1687784247 bob king +zync studies 1723691683 +zync studies 1769324649 alice johnson +zync studies 187893585 luke ichabod +zync studies 2013376408 priscilla allen +zync studies 206454818 rachel allen +zync studies 2090044777 +zync studies 2125479431 tom davidson +zync studies 2144454927 irene young +zync studies 25644069 holly falkner +zync studies 30036142 wendy polk +zync studies 352214248 calvin allen +zync studies 407233168 katie young +zync studies 474795096 mike young +zync studies 476704350 sarah polk +zync studies 492968645 sarah underhill +zync studies 587797446 priscilla ellison +zync studies 854230650 ethan laertes +zync studies 869288953 alice miller +zync studies 929751599 +zync studies NULL holly young +zync studies NULL holly zipper +zync studies NULL priscilla young +zync studies NULL quinn quirinius +zync studies NULL yuri polk diff --git ql/src/test/results/clientpositive/tez/vector_reduce3.q.out ql/src/test/results/clientpositive/tez/vector_reduce3.q.out new file mode 100644 index 0000000..319caef --- /dev/null +++ ql/src/test/results/clientpositive/tez/vector_reduce3.q.out @@ -0,0 +1,2167 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select s from vectortab2korc order by s +PREHOOK: type: QUERY +POSTHOOK: query: explain +select s from vectortab2korc order by s +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select s from vectortab2korc order by s +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select s from vectortab2korc order by s +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies diff --git ql/src/test/results/clientpositive/tez/vector_struct_in.q.out ql/src/test/results/clientpositive/tez/vector_struct_in.q.out new file mode 100644 index 0000000..078c07c --- /dev/null +++ ql/src/test/results/clientpositive/tez/vector_struct_in.q.out @@ -0,0 +1,645 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +-- 2 Strings +create table test_1 (`id` string, `lineid` string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test_1 +POSTHOOK: query: -- SORT_QUERY_RESULTS + +-- 2 Strings +create table test_1 (`id` string, `lineid` string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test_1 +PREHOOK: query: insert into table test_1 values ('one','1'), ('seven','1') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@test_1 +POSTHOOK: query: insert into table test_1 values ('one','1'), ('seven','1') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@test_1 +POSTHOOK: Lineage: test_1.id SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: test_1.lineid SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: explain +select * from test_1 where struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from test_1 where struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_2] + outputColumnNames:["_col0","_col1"] + Filter Operator [FIL_4] + predicate:(struct(id,lineid)) IN (const struct('two','3'), const struct('three','1'), const struct('one','1'), const struct('five','2'), const struct('six','1'), const struct('eight','1'), const struct('seven','1'), const struct('nine','1'), const struct('ten','1')) (type: boolean) + TableScan [TS_0] + alias:test_1 + +PREHOOK: query: select * from test_1 where struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) +PREHOOK: type: QUERY +PREHOOK: Input: default@test_1 +#### A masked pattern was here #### +POSTHOOK: query: select * from test_1 where struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_1 +#### A masked pattern was here #### +one 1 +seven 1 +PREHOOK: query: explain +select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) as b from test_1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) as b from test_1 +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_1] + outputColumnNames:["_col0","_col1","_col2"] + TableScan [TS_0] + alias:test_1 + +PREHOOK: query: select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) as b from test_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@test_1 +#### A masked pattern was here #### +POSTHOOK: query: select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two','3'), +struct('three','1'), +struct('one','1'), +struct('five','2'), +struct('six','1'), +struct('eight','1'), +struct('seven','1'), +struct('nine','1'), +struct('ten','1') +) as b from test_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_1 +#### A masked pattern was here #### +one 1 true +seven 1 true +PREHOOK: query: -- 2 Integers +create table test_2 (`id` int, `lineid` int) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test_2 +POSTHOOK: query: -- 2 Integers +create table test_2 (`id` int, `lineid` int) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test_2 +PREHOOK: query: insert into table test_2 values (1,1), (7,1) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@test_2 +POSTHOOK: query: insert into table test_2 values (1,1), (7,1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@test_2 +POSTHOOK: Lineage: test_2.id EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: test_2.lineid EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: explain +select * from test_2 where struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from test_2 where struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_2] + outputColumnNames:["_col0","_col1"] + Filter Operator [FIL_4] + predicate:(struct(id,lineid)) IN (const struct(2,3), const struct(3,1), const struct(1,1), const struct(5,2), const struct(6,1), const struct(8,1), const struct(7,1), const struct(9,1), const struct(10,1)) (type: boolean) + TableScan [TS_0] + alias:test_2 + +PREHOOK: query: select * from test_2 where struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) +PREHOOK: type: QUERY +PREHOOK: Input: default@test_2 +#### A masked pattern was here #### +POSTHOOK: query: select * from test_2 where struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_2 +#### A masked pattern was here #### +1 1 +7 1 +PREHOOK: query: explain +select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) as b from test_2 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) as b from test_2 +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_1] + outputColumnNames:["_col0","_col1","_col2"] + TableScan [TS_0] + alias:test_2 + +PREHOOK: query: select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) as b from test_2 +PREHOOK: type: QUERY +PREHOOK: Input: default@test_2 +#### A masked pattern was here #### +POSTHOOK: query: select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct(2,3), +struct(3,1), +struct(1,1), +struct(5,2), +struct(6,1), +struct(8,1), +struct(7,1), +struct(9,1), +struct(10,1) +) as b from test_2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_2 +#### A masked pattern was here #### +1 1 true +7 1 true +PREHOOK: query: -- 1 String and 1 Integer +create table test_3 (`id` string, `lineid` int) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test_3 +POSTHOOK: query: -- 1 String and 1 Integer +create table test_3 (`id` string, `lineid` int) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test_3 +PREHOOK: query: insert into table test_3 values ('one',1), ('seven',1) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__3 +PREHOOK: Output: default@test_3 +POSTHOOK: query: insert into table test_3 values ('one',1), ('seven',1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__3 +POSTHOOK: Output: default@test_3 +POSTHOOK: Lineage: test_3.id SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: test_3.lineid EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: explain +select * from test_3 where struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from test_3 where struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_2] + outputColumnNames:["_col0","_col1"] + Filter Operator [FIL_4] + predicate:(struct(id,lineid)) IN (const struct('two',3), const struct('three',1), const struct('one',1), const struct('five',2), const struct('six',1), const struct('eight',1), const struct('seven',1), const struct('nine',1), const struct('ten',1)) (type: boolean) + TableScan [TS_0] + alias:test_3 + +PREHOOK: query: select * from test_3 where struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) +PREHOOK: type: QUERY +PREHOOK: Input: default@test_3 +#### A masked pattern was here #### +POSTHOOK: query: select * from test_3 where struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_3 +#### A masked pattern was here #### +one 1 +seven 1 +PREHOOK: query: explain +select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) as b from test_3 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) as b from test_3 +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_1] + outputColumnNames:["_col0","_col1","_col2"] + TableScan [TS_0] + alias:test_3 + +PREHOOK: query: select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) as b from test_3 +PREHOOK: type: QUERY +PREHOOK: Input: default@test_3 +#### A masked pattern was here #### +POSTHOOK: query: select `id`, `lineid`, struct(`id`, `lineid`) +IN ( +struct('two',3), +struct('three',1), +struct('one',1), +struct('five',2), +struct('six',1), +struct('eight',1), +struct('seven',1), +struct('nine',1), +struct('ten',1) +) as b from test_3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_3 +#### A masked pattern was here #### +one 1 true +seven 1 true +PREHOOK: query: -- 1 Integer and 1 String and 1 Double +create table test_4 (`my_bigint` bigint, `my_string` string, `my_double` double) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test_4 +POSTHOOK: query: -- 1 Integer and 1 String and 1 Double +create table test_4 (`my_bigint` bigint, `my_string` string, `my_double` double) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test_4 +PREHOOK: query: insert into table test_4 values (1, "b", 1.5), (1, "a", 0.5), (2, "b", 1.5) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__4 +PREHOOK: Output: default@test_4 +POSTHOOK: query: insert into table test_4 values (1, "b", 1.5), (1, "a", 0.5), (2, "b", 1.5) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__4 +POSTHOOK: Output: default@test_4 +POSTHOOK: Lineage: test_4.my_bigint EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: test_4.my_double EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ] +POSTHOOK: Lineage: test_4.my_string SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: explain +select * from test_4 where struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from test_4 where struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_2] + outputColumnNames:["_col0","_col1","_col2"] + Filter Operator [FIL_4] + predicate:(struct(my_bigint,my_string,my_double)) IN (const struct(1,'a',1.5), const struct(1,'b',-0.5), const struct(3,'b',1.5), const struct(1,'d',1.5), const struct(1,'c',1.5), const struct(1,'b',2.5), const struct(1,'b',0.5), const struct(5,'b',1.5), const struct(1,'a',0.5), const struct(3,'b',1.5)) (type: boolean) + TableScan [TS_0] + alias:test_4 + +PREHOOK: query: select * from test_4 where struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) +PREHOOK: type: QUERY +PREHOOK: Input: default@test_4 +#### A masked pattern was here #### +POSTHOOK: query: select * from test_4 where struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_4 +#### A masked pattern was here #### +1 a 0.5 +PREHOOK: query: explain +select `my_bigint`, `my_string`, `my_double`, struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) as b from test_4 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select `my_bigint`, `my_string`, `my_double`, struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) as b from test_4 +POSTHOOK: type: QUERY +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_1] + outputColumnNames:["_col0","_col1","_col2","_col3"] + TableScan [TS_0] + alias:test_4 + +PREHOOK: query: select `my_bigint`, `my_string`, `my_double`, struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) as b from test_4 +PREHOOK: type: QUERY +PREHOOK: Input: default@test_4 +#### A masked pattern was here #### +POSTHOOK: query: select `my_bigint`, `my_string`, `my_double`, struct(`my_bigint`, `my_string`, `my_double`) +IN ( +struct(1L, "a", 1.5), +struct(1L, "b", -0.5), +struct(3L, "b", 1.5), +struct(1L, "d", 1.5), +struct(1L, "c", 1.5), +struct(1L, "b", 2.5), +struct(1L, "b", 0.5), +struct(5L, "b", 1.5), +struct(1L, "a", 0.5), +struct(3L, "b", 1.5) +) as b from test_4 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test_4 +#### A masked pattern was here #### +1 a 0.5 true +1 b 1.5 false +2 b 1.5 false diff --git ql/src/test/results/clientpositive/tez/vectorization_part_varchar.q.out ql/src/test/results/clientpositive/tez/vectorization_part_varchar.q.out new file mode 100644 index 0000000..c351de7 --- /dev/null +++ ql/src/test/results/clientpositive/tez/vectorization_part_varchar.q.out @@ -0,0 +1,72 @@ +PREHOOK: query: CREATE TABLE alltypesorc_part_varchar(ctinyint tinyint, csmallint smallint, cint int, cbigint bigint, cfloat float, cdouble double, cstring1 string, cstring2 string, ctimestamp1 timestamp, ctimestamp2 timestamp, cboolean1 boolean, cboolean2 boolean) partitioned by (ds varchar(4)) STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alltypesorc_part_varchar +POSTHOOK: query: CREATE TABLE alltypesorc_part_varchar(ctinyint tinyint, csmallint smallint, cint int, cbigint bigint, cfloat float, cdouble double, cstring1 string, cstring2 string, ctimestamp1 timestamp, ctimestamp2 timestamp, cboolean1 boolean, cboolean2 boolean) partitioned by (ds varchar(4)) STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alltypesorc_part_varchar +PREHOOK: query: insert overwrite table alltypesorc_part_varchar partition (ds='2011') select * from alltypesorc limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@alltypesorc_part_varchar@ds=2011 +POSTHOOK: query: insert overwrite table alltypesorc_part_varchar partition (ds='2011') select * from alltypesorc limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@alltypesorc_part_varchar@ds=2011 +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2011).ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ] +PREHOOK: query: insert overwrite table alltypesorc_part_varchar partition (ds='2012') select * from alltypesorc limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@alltypesorc_part_varchar@ds=2012 +POSTHOOK: query: insert overwrite table alltypesorc_part_varchar partition (ds='2012') select * from alltypesorc limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@alltypesorc_part_varchar@ds=2012 +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part_varchar PARTITION(ds=2012).ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ] +PREHOOK: query: select count(cdouble), cint from alltypesorc_part_varchar where ds='2011' group by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc_part_varchar +PREHOOK: Input: default@alltypesorc_part_varchar@ds=2011 +#### A masked pattern was here #### +POSTHOOK: query: select count(cdouble), cint from alltypesorc_part_varchar where ds='2011' group by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc_part_varchar +POSTHOOK: Input: default@alltypesorc_part_varchar@ds=2011 +#### A masked pattern was here #### +100 528534767 +PREHOOK: query: select count(*) from alltypesorc_part_varchar A join alltypesorc_part_varchar B on A.ds=B.ds +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc_part_varchar +PREHOOK: Input: default@alltypesorc_part_varchar@ds=2011 +PREHOOK: Input: default@alltypesorc_part_varchar@ds=2012 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from alltypesorc_part_varchar A join alltypesorc_part_varchar B on A.ds=B.ds +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc_part_varchar +POSTHOOK: Input: default@alltypesorc_part_varchar@ds=2011 +POSTHOOK: Input: default@alltypesorc_part_varchar@ds=2012 +#### A masked pattern was here #### +20000 diff --git ql/src/test/results/clientpositive/tez/vectorized_parquet_types.q.out ql/src/test/results/clientpositive/tez/vectorized_parquet_types.q.out index 63e1e11..a7ff528 100644 --- ql/src/test/results/clientpositive/tez/vectorized_parquet_types.q.out +++ ql/src/test/results/clientpositive/tez/vectorized_parquet_types.q.out @@ -127,20 +127,15 @@ explain SELECT cint, ctinyint, csmallint, cfloat, cdouble, cstring1, t, cchar, cvarchar, hex(cbinary), cdecimal FROM parquet_types POSTHOOK: type: QUERY -STAGE DEPENDENCIES: - Stage-0 is a root stage +Plan optimized by CBO. -STAGE PLANS: - Stage: Stage-0 - Fetch Operator - limit: -1 - Processor Tree: - TableScan - alias: parquet_types - Select Operator - expressions: cint (type: int), ctinyint (type: tinyint), csmallint (type: smallint), cfloat (type: float), cdouble (type: double), cstring1 (type: string), t (type: timestamp), cchar (type: char(5)), cvarchar (type: varchar(10)), hex(cbinary) (type: string), cdecimal (type: decimal(4,2)) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 - ListSink +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_1] + outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10"] + TableScan [TS_0] + alias:parquet_types PREHOOK: query: SELECT cint, ctinyint, csmallint, cfloat, cdouble, cstring1, t, cchar, cvarchar, hex(cbinary), cdecimal FROM parquet_types @@ -180,20 +175,15 @@ PREHOOK: type: QUERY POSTHOOK: query: explain SELECT cchar, LENGTH(cchar), cvarchar, LENGTH(cvarchar), cdecimal, SIGN(cdecimal) FROM parquet_types POSTHOOK: type: QUERY -STAGE DEPENDENCIES: - Stage-0 is a root stage +Plan optimized by CBO. -STAGE PLANS: - Stage: Stage-0 - Fetch Operator - limit: -1 - Processor Tree: - TableScan - alias: parquet_types - Select Operator - expressions: cchar (type: char(5)), length(cchar) (type: int), cvarchar (type: varchar(10)), length(cvarchar) (type: int), cdecimal (type: decimal(4,2)), sign(cdecimal) (type: int) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - ListSink +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_1] + outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5"] + TableScan [TS_0] + alias:parquet_types PREHOOK: query: SELECT cchar, LENGTH(cchar), cvarchar, LENGTH(cvarchar), cdecimal, SIGN(cdecimal) FROM parquet_types PREHOOK: type: QUERY @@ -249,72 +239,53 @@ FROM parquet_types GROUP BY ctinyint ORDER BY ctinyint POSTHOOK: type: QUERY -STAGE DEPENDENCIES: - Stage-1 is a root stage - Stage-0 depends on stages: Stage-1 +Plan optimized by CBO. -STAGE PLANS: - Stage: Stage-1 - Tez - Edges: - Reducer 2 <- Map 1 (SIMPLE_EDGE) - Reducer 3 <- Reducer 2 (SIMPLE_EDGE) -#### A masked pattern was here #### - Vertices: - Map 1 - Map Operator Tree: - TableScan - alias: parquet_types - Statistics: Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: ctinyint (type: tinyint), cint (type: int), csmallint (type: smallint), cstring1 (type: string), cfloat (type: float), cdouble (type: double), cdecimal (type: decimal(4,2)) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 - Statistics: Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE - Group By Operator - aggregations: max(_col1), min(_col2), count(_col3), avg(_col4), stddev_pop(_col5), max(_col6) - keys: _col0 (type: tinyint) - mode: hash - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 - Statistics: Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: tinyint) - sort order: + - Map-reduce partition columns: _col0 (type: tinyint) - Statistics: Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: struct), _col5 (type: struct), _col6 (type: decimal(4,2)) - Reducer 2 - Reduce Operator Tree: - Group By Operator - aggregations: max(VALUE._col0), min(VALUE._col1), count(VALUE._col2), avg(VALUE._col3), stddev_pop(VALUE._col4), max(VALUE._col5) - keys: KEY._col0 (type: tinyint) - mode: mergepartial - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 - Statistics: Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: tinyint) - sort order: + - Statistics: Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: double), _col5 (type: double), _col6 (type: decimal(4,2)) - Reducer 3 - Reduce Operator Tree: - Select Operator - expressions: KEY.reducesinkkey0 (type: tinyint), VALUE._col0 (type: int), VALUE._col1 (type: smallint), VALUE._col2 (type: bigint), VALUE._col3 (type: double), VALUE._col4 (type: double), VALUE._col5 (type: decimal(4,2)) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 - Statistics: Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - Execution mode: vectorized +Vertex dependency in root stage +Reducer 2 <- Map 1 (SIMPLE_EDGE) +Reducer 3 <- Reducer 2 (SIMPLE_EDGE) - Stage: Stage-0 - Fetch Operator - limit: -1 - Processor Tree: - ListSink +Stage-0 + Fetch Operator + limit:-1 + Stage-1 + Reducer 3 + File Output Operator [FS_10] + compressed:false + Statistics:Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE + table:{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","serde:":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"} + Select Operator [OP_9] + | outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] + | Statistics:Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE + |<-Reducer 2 [SIMPLE_EDGE] + Reduce Output Operator [RS_6] + key expressions:_col0 (type: tinyint) + sort order:+ + Statistics:Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE + value expressions:_col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: double), _col5 (type: double), _col6 (type: decimal(4,2)) + Group By Operator [GBY_4] + | aggregations:["max(VALUE._col0)","min(VALUE._col1)","count(VALUE._col2)","avg(VALUE._col3)","stddev_pop(VALUE._col4)","max(VALUE._col5)"] + | keys:KEY._col0 (type: tinyint) + | outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] + | Statistics:Num rows: 11 Data size: 121 Basic stats: COMPLETE Column stats: NONE + |<-Map 1 [SIMPLE_EDGE] + Reduce Output Operator [RS_3] + key expressions:_col0 (type: tinyint) + Map-reduce partition columns:_col0 (type: tinyint) + sort order:+ + Statistics:Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE + value expressions:_col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: struct), _col5 (type: struct), _col6 (type: decimal(4,2)) + Group By Operator [GBY_2] + aggregations:["max(cint)","min(csmallint)","count(cstring1)","avg(cfloat)","stddev_pop(cdouble)","max(cdecimal)"] + keys:ctinyint (type: tinyint) + outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] + Statistics:Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE + Select Operator [SEL_1] + outputColumnNames:["ctinyint","cint","csmallint","cstring1","cfloat","cdouble","cdecimal"] + Statistics:Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE + TableScan [TS_0] + alias:parquet_types + Statistics:Num rows: 22 Data size: 242 Basic stats: COMPLETE Column stats: NONE PREHOOK: query: SELECT ctinyint, MAX(cint), diff --git ql/src/test/results/clientpositive/tez/vectorized_timestamp_ints_casts.q.out ql/src/test/results/clientpositive/tez/vectorized_timestamp_ints_casts.q.out index 1e74446..8f9b305 100644 --- ql/src/test/results/clientpositive/tez/vectorized_timestamp_ints_casts.q.out +++ ql/src/test/results/clientpositive/tez/vectorized_timestamp_ints_casts.q.out @@ -34,22 +34,17 @@ from alltypesorc -- limit output to a reasonably small number of rows where cbigint % 250 = 0 POSTHOOK: type: QUERY -STAGE DEPENDENCIES: - Stage-0 is a root stage +Plan optimized by CBO. -STAGE PLANS: - Stage: Stage-0 - Fetch Operator - limit: -1 - Processor Tree: - TableScan - alias: alltypesorc - Filter Operator - predicate: ((cbigint % 250) = 0) (type: boolean) - Select Operator - expressions: CAST( ctinyint AS TIMESTAMP) (type: timestamp), CAST( csmallint AS TIMESTAMP) (type: timestamp), CAST( cint AS TIMESTAMP) (type: timestamp), CAST( cbigint AS TIMESTAMP) (type: timestamp), CAST( cfloat AS TIMESTAMP) (type: timestamp), CAST( cdouble AS TIMESTAMP) (type: timestamp), CAST( cboolean1 AS TIMESTAMP) (type: timestamp), CAST( (cbigint * 0) AS TIMESTAMP) (type: timestamp), ctimestamp1 (type: timestamp), CAST( cstring1 AS TIMESTAMP) (type: timestamp), CAST( substr(cstring1, 1, 1) AS TIMESTAMP) (type: timestamp) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 - ListSink +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_2] + outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10"] + Filter Operator [FIL_4] + predicate:((cbigint % 250) = 0) (type: boolean) + TableScan [TS_0] + alias:alltypesorc PREHOOK: query: select -- to timestamp @@ -151,22 +146,17 @@ from alltypesorc -- limit output to a reasonably small number of rows where cbigint % 250 = 0 POSTHOOK: type: QUERY -STAGE DEPENDENCIES: - Stage-0 is a root stage +Plan optimized by CBO. -STAGE PLANS: - Stage: Stage-0 - Fetch Operator - limit: -1 - Processor Tree: - TableScan - alias: alltypesorc - Filter Operator - predicate: ((cbigint % 250) = 0) (type: boolean) - Select Operator - expressions: CAST( ctinyint AS TIMESTAMP) (type: timestamp), CAST( csmallint AS TIMESTAMP) (type: timestamp), CAST( cint AS TIMESTAMP) (type: timestamp), CAST( cbigint AS TIMESTAMP) (type: timestamp), CAST( cfloat AS TIMESTAMP) (type: timestamp), CAST( cdouble AS TIMESTAMP) (type: timestamp), CAST( cboolean1 AS TIMESTAMP) (type: timestamp), CAST( (cbigint * 0) AS TIMESTAMP) (type: timestamp), ctimestamp1 (type: timestamp), CAST( cstring1 AS TIMESTAMP) (type: timestamp), CAST( substr(cstring1, 1, 1) AS TIMESTAMP) (type: timestamp) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 - ListSink +Stage-0 + Fetch Operator + limit:-1 + Select Operator [SEL_2] + outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10"] + Filter Operator [FIL_4] + predicate:((cbigint % 250) = 0) (type: boolean) + TableScan [TS_0] + alias:alltypesorc PREHOOK: query: select -- to timestamp diff --git ql/src/test/results/clientpositive/vector_reduce1.q.out ql/src/test/results/clientpositive/vector_reduce1.q.out new file mode 100644 index 0000000..06ebf16 --- /dev/null +++ ql/src/test/results/clientpositive/vector_reduce1.q.out @@ -0,0 +1,2160 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select b from vectortab2korc order by b +PREHOOK: type: QUERY +POSTHOOK: query: explain +select b from vectortab2korc order by b +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: b (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select b from vectortab2korc order by b +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select b from vectortab2korc order by b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +-6917607783359897600 +-6919476845891313664 +-6920172215209426944 +-6921654334727036928 +-6933565857643814912 +-6934304742087655424 +-6935038507792801792 +-6935548339131138048 +-6938706403992854528 +-6941777546186579968 +-6947955278050181120 +-6951350560260784128 +-6957946688477274112 +-6960947572095770624 +-6962271229404348416 +-6962292590214234112 +-6968771079156654080 +-6968892545529896960 +-6970396058557005824 +-6974654664348033024 +-6975459232300236800 +-6986178228432322560 +-6988811476286873600 +-6988970700649168896 +-6992217501957169152 +-6997233584896229376 +-7000925438663041024 +-7003696402314215424 +-7011425384222244864 +-7017212700635545600 +-7020852530219171840 +-7030489936116252672 +-7035132060308643840 +-7036607470351654912 +-7037375807670501376 +-7037638331316469760 +-7038455462786334720 +-7040248820505149440 +-7041362811802148864 +-7042183597114081280 +-7046180371529351168 +-7049618574399692800 +-7052619594823221248 +-7055619148037554176 +-7055760785575665664 +-7057750467944931328 +-7058986555327307776 +-7063777488249085952 +-7078068944081002496 +-7079898537463537664 +-7081500255163727872 +-7083646746411720704 +-7085247548404178944 +-7093825013581979648 +-7094189393339678720 +-7094827141662539776 +-7104310188119834624 +-7106210529681350656 +-7109790267244814336 +-7115054815375073280 +-7120456708338688000 +-7127548949860818944 +-7138415011665043456 +-7139677575412686848 +-7140008543769042944 +-7144791190333546496 +-7145585429014888448 +-7147490721376591872 +-7152177800841502720 +-7155539549555105792 +-7158472098920390656 +-7159700138947862528 +-7161165959057334272 +-7162299524557471744 +-7172594404186693632 +-7185369278665605120 +-7192529627893858304 +-7194281951646187520 +-7195217207163166720 +-7198372044947275776 +-7199983995864711168 +-7201085131997011968 +-7209060152494817280 +-7213775605408178176 +-7220731681653604352 +-7221474017515347968 +-7228589258642194432 +-7240213957902663680 +-7242345057866285056 +-7245872320493322240 +-7246123871306244096 +-7255010240787030016 +-7255686273677328384 +-7262049693594943488 +-7262384251828518912 +-7262798781688651776 +-7263060340185194496 +-7265998318110711808 +-7266719102957125632 +-7270034223527993344 +-7273590251991162880 +-7273694358642851840 +-7276111129363046400 +-7287583262310350848 +-7292078334519894016 +-7296096276653391872 +-7303847963918393344 +-7319315187617587200 +-7326863346317598720 +-7328087811698909184 +-7329767178250018816 +-7329807949048193024 +-7330203470474985472 +-7330413050756235264 +-7333278178640953344 +-7333362172439035904 +-7340231535789727744 +-7344146703223496704 +-7344947507044466688 +-7345562788132315136 +-7356685674003021824 +-7357888618985873408 +-7362189611124563968 +-7366430883634929664 +-7378096180613840896 +-7380731416973295616 +-7395343938785738752 +-7395553021620731904 +-7399631791131074560 +-7404052043914526720 +-7404057145074712576 +-7409317158045442048 +-7409653086454030336 +-7412431471807283200 +-7413317118463164416 +-7419068456205385728 +-7420448501073051648 +-7425160895830573056 +-7429331808102899712 +-7433265617153343488 +-7442593976514420736 +-7444070205513138176 +-7451660755269853184 +-7453525026342617088 +-7455898404374921216 +-7456869587112255488 +-7461750143936897024 +-7464270453557993472 +-7469660864676585472 +-7470307155642245120 +-7476082621253402624 +-7483435388852559872 +-7488345684795342848 +-7488415863027367936 +-7494411162675691520 +-7496839341561954304 +-7497303453253402624 +-7500200359698907136 +-7501803640821456896 +-7506254246954500096 +-7507424948896415744 +-7507578199583694848 +-7510418793070075904 +-7511202710200885248 +-7511952204985049088 +-7512289590991544320 +-7512297136103800832 +-7515996202498473984 +-7524170566881329152 +-7526793959592140800 +-7528526815026692096 +-7532751268425261056 +-7535857766791577600 +-7535958203887706112 +-7536330682873937920 +-7540104552219860992 +-7541860097718902784 +-7542857121910046720 +-7547245548870025216 +-7547432761381339136 +-7551394356730339328 +-7557017910095650816 +-7558524160894427136 +-7571293705217687552 +-7571957778022178816 +-7572262898020278272 +-7572962089372991488 +-7576194692683563008 +-7593363318079610880 +-7594824008626372608 +-7598782894648565760 +-7600138468036386816 +-7603467428164009984 +-7603569103205916672 +-7610137349734883328 +-7611584069753552896 +-7612455481940246528 +-7612466483992051712 +-7616522969329262592 +-7617860842651017216 +-7623047151287754752 +-7623359796281999360 +-7623405558242500608 +-7624057992767782912 +-7629401308029976576 +-7637494527844343808 +-7637755520917741568 +-7642381493746483200 +-7647020450676146176 +-7661192563533062144 +-7661250850555633664 +-7663293054873812992 +-7665186441284968448 +-7668388017287020544 +-7669169138124275712 +-7673901622181953536 +-7679894005808693248 +-7686220526274502656 +-7687052294777208832 +-7692192232238678016 +-7695491171376291840 +-7700203302632210432 +-7703540456272994304 +-7707242953271500800 +-7707867749256445952 +-7708932208121225216 +-7709958788604936192 +-7712425776235274240 +-7720966287634112512 +-7739424919198187520 +-7744462446680375296 +-7751265769984491520 +-7751427073017544704 +-7753051494275432448 +-7759238919361888256 +-7759425383684849664 +-7772064021830574080 +-7773957003968675840 +-7777884099756122112 +-7778829032042790912 +-7779270198785875968 +-7782344916178796544 +-7784419454650843136 +-7792903881635938304 +-7793447076762345472 +-7797149520019062784 +-7797151404935618560 +-7800879252150779904 +-7802538500225777664 +-7804116532814151680 +-7805985795815342080 +-7811060170911375360 +-7818454479651135488 +-7819437864839495680 +-7822452149325094912 +-7824788571789279232 +-7827420207675105280 +-7831320202242228224 +-7831595638727565312 +-7833618000492109824 +-7835907977757245440 +-7838598833900584960 +-7840338174858199040 +-7845896959112658944 +-7848043121524228096 +-7849504559236210688 +-7858505678035951616 +-7866079955473989632 +-7867219225874571264 +-7868306678534193152 +-7873753603299540992 +-7875953567586451456 +-7877598807023386624 +-7878145001776152576 +-7879864376629567488 +-7881262505761710080 +-7881351200983613440 +-7883252982752665600 +-7884460946615984128 +-7888051992910274560 +-7892780594910871552 +-7893577088764174336 +-7894382303337832448 +-7895991410072928256 +-7902517224300036096 +-7903158849011843072 +-7904188195431661568 +-7907355742053883904 +-7910019233726242816 +-7911421221625077760 +-7915999634274369536 +-7916510129632296960 +-7928062266382778368 +-7928440849566146560 +-7939634346485858304 +-7949309059286163456 +-7949445503604604928 +-7953426740065312768 +-7964801953178091520 +-7966960765508280320 +-7978782649203228672 +-7989766326847807488 +-7998947380180819968 +-8007017894942638080 +-8013397854633648128 +-8016589197379289088 +-8017791189288869888 +-8018511948141748224 +-8021859935185928192 +-8022573309127000064 +-8023708819947323392 +-8028275725610909696 +-8028910243475038208 +-8030058711611629568 +-8034414142083170304 +-8046189486447017984 +-8046238369820344320 +-8047774491688255488 +-8051395538179063808 +-8051587217208967168 +-8051871680800120832 +-8054581198284668928 +-8067243114610532352 +-8070535484085895168 +-8076479329071955968 +-8082793390939193344 +-8084716955963252736 +-8086577583338061824 +-8088337436168830976 +-8099313480512716800 +-8103788088118018048 +-8104684579106914304 +-8108693586698706944 +-8115963579415650304 +-8117838333114212352 +-8122639684164501504 +-8127494999848919040 +-8131997716860526592 +-8136227554401107968 +-8140349174954893312 +-8142667274351345664 +-8147405381260345344 +-8158011642485825536 +-8161047750470279168 +-8172827216441573376 +-8182421179156905984 +-8191825921746305024 +-8194062064124362752 +-8203008052020879360 +-8203075743525806080 +-8205148279289085952 +-8214462866994339840 +-8219876839318716416 +-8232763638546694144 +-8240034910581153792 +-8240684139569233920 +-8243487285852766208 +-8244116388227104768 +-8244657976255889408 +-8260340354454503424 +-8269917980278980608 +-8270479187688816640 +-8275337702906757120 +-8280276629934981120 +-8293833565967810560 +-8297230235506343936 +-8300526097982226432 +-8300764106868350976 +-8302817097848307712 +-8317591428117274624 +-8318886086186213376 +-8322751250650218496 +-8330233444291084288 +-8335810316927213568 +-8340523561480437760 +-8345065519816695808 +-8347088645602050048 +-8357136656913686528 +-8358130693961195520 +-8359839265974165504 +-8368269352975982592 +-8368487814665895936 +-8369487968903897088 +-8379109122834997248 +-8379964450833367040 +-8384695077413412864 +-8387347109404286976 +-8387536830476820480 +-8395998375405912064 +-8400045653258444800 +-8411282676082565120 +-8418913260807217152 +-8425998949410889728 +-8426531414463545344 +-8430283518005846016 +-8430370933326536704 +-8431492599012163584 +-8438554249514491904 +-8445801063348281344 +-8453491903284994048 +-8454143651040444416 +-8465978403747037184 +-8469607298426437632 +-8471480409335513088 +-8485389240529354752 +-8488247955875618816 +-8490382417169408000 +-8494118409594650624 +-8503342882470019072 +-8503573595507761152 +-8507279516485566464 +-8509547439040757760 +-8518060755719585792 +-8518258741831680000 +-8521578237232529408 +-8522878384019169280 +-8523434203900674048 +-8525212657458348032 +-8535957064499879936 +-8536369662934401024 +-8543982423727128576 +-8544299740525461504 +-8545239748068941824 +-8546758906409312256 +-8552393882631389184 +-8555709701170552832 +-8559008501282832384 +-8559252110266564608 +-8562524688907485184 +-8566856504746352640 +-8566940231897874432 +-8570933074545745920 +-8572823448513445888 +-8572949572756774912 +-8581765103969312768 +-8581979259158929408 +-8584520406368493568 +-8585134536083660800 +-8585966098173870080 +-8593419958317056000 +-8603817012434198528 +-8604758220106014720 +-8607195685207408640 +-8615168537390571520 +-8619303037130301440 +-8623238306523824128 +-8623965248051789824 +-8632237187473088512 +-8649711322250362880 +-8651641150831362048 +-8654433008222797824 +-8654797319350927360 +-8658387566611996672 +-8659643752269242368 +-8659692318743314432 +-8660149447361404928 +-8664374244449050624 +-8664806103426252800 +-8665218198816497664 +-8665764757143658496 +-8675661101615489024 +-8675892979328212992 +-8683802826440105984 +-8688153842294595584 +-8689606130068611072 +-8694818694700048384 +-8696162322976997376 +-8703026916864802816 +-8704234107608203264 +-8705403811649355776 +-8710298418608619520 +-8714995808835444736 +-8719510423723155456 +-8730803262481580032 +-8731068123910987776 +-8746702976270385152 +-8754966081778565120 +-8754992450211692544 +-8756989568739835904 +-8760655406971863040 +-8763062627136864256 +-8768744394742235136 +-8782213262837530624 +-8783777723063099392 +-8789178184387641344 +-8797972842900307968 +-8807361476639629312 +-8813211231120031744 +-8831091081349758976 +-8832750849949892608 +-8833019327569510400 +-8835408234247168000 +-8836899523028312064 +-8843859708698583040 +-8844949406948671488 +-8845239510002753536 +-8852770376039219200 +-8853553406533894144 +-8856151919723003904 +-8856821118526734336 +-8857335871148171264 +-8858063395050110976 +-8859107121649893376 +-8866442231663067136 +-8870186814744420352 +-8870673219965001728 +-8875546987176206336 +-8877053610728161280 +-8877431933441327104 +-8879742387365429248 +-8881446757271846912 +-8887058200926093312 +-8892963883085578240 +-8896045754034978816 +-8914039133569400832 +-8916987977485312000 +-8922409715403112448 +-8923529803981905920 +-8927968289860370432 +-8930307926221807616 +-8938849835283677184 +-8940944155843461120 +-8941201923743703040 +-8946656952763777024 +-8948335470186373120 +-8959796625322680320 +-8961059046745669632 +-8962547695651323904 +-8965578088652095488 +-8989473881707921408 +-8990843030306717696 +-8992599250893979648 +-8996954350906294272 +-9002912355472736256 +-9004892183139811328 +-9008631121684832256 +-9012093603044245504 +-9013952631912325120 +-9014145341570203648 +-9022154842129547264 +-9032650742739836928 +-9049720998034137088 +-9051477157204770816 +-9058029636530003968 +-9066993118333706240 +-9071565764086521856 +-9075302542655684608 +-9075486079396069376 +-9078662294976061440 +-9079801920509001728 +-9080568167841226752 +-9080956291212132352 +-9084940280061485056 +-9088239683374350336 +-9091113592821972992 +-9095689235523264512 +-9101953184875757568 +-9102482277760983040 +-9105358806324035584 +-9105701280936501248 +-9109392978217484288 +-9117959922369060864 +-9126793997498957824 +-9136398397785948160 +-9142610685888192512 +-9145593811310010368 +-9148197394287779840 +-9149719074367946752 +-9157613004431998976 +-9175038118837149696 +-9175279464813223936 +-9178166810751909888 +-9187662685618348032 +-9189155542884474880 +-9203804401302323200 +-9203942396257984512 +-9206329156028112896 +-9210275791460499456 +-9213132862973829120 +-9215144824304721920 +-9218875542187065344 +-9219066990552760320 +1021 +1030 +1032 +1039 +1046 +1048 +1053 +1055 +1058 +1065 +1066 +1074 +1075 +1075 +1075 +108 +1086 +1093 +1094 +1095 +1099 +1115 +112 +1127 +1128 +1132 +1134 +1141 +1142 +1145 +1153 +1157 +1158 +1165 +1165 +1168 +1177 +1187 +1189 +1198 +120 +1201 +1217 +1234 +1243 +1247 +1252 +1261 +1270 +1280 +1282 +1286 +1287 +1290 +1291 +1299 +130 +1307 +1312 +1316 +1321 +1337 +1341 +1342 +1343 +1345 +1346 +135 +1366 +1368 +1368 +1371 +1371 +138 +1386 +1398 +1409 +1422 +1423 +1436 +1439 +1447 +1450 +1454 +1458 +1462 +1466 +1470 +1477 +1481 +1481 +1489 +1493 +1495 +1501 +1506 +1508 +1509 +1509 +1518 +1520 +1521 +1524 +1530 +1537 +1537 +154 +154 +1541 +1542 +1545 +1556 +1559 +1561 +1566 +1604 +1606 +1608 +1613 +1614 +1620 +1638 +1641 +1643 +1648 +1651 +1667 +1671 +1674 +1676 +1678 +168 +1681 +169 +1693 +1701 +1701 +1704 +1719 +1719 +1726 +1728 +1745 +1751 +1752 +1769 +1774 +1775 +1777 +1777 +1780 +1781 +1785 +1786 +1788 +1789 +1791 +1796 +1806 +181 +1811 +1813 +1826 +1827 +1835 +1837 +1845 +1846 +1856 +1856 +1862 +1863 +1864 +1866 +187 +1870 +188 +1880 +1890 +1892 +1899 +19 +19 +1906 +1910 +1914 +1914 +1926 +1937 +1940 +1941 +1948 +1948 +1948 +1955 +1965 +1972 +1981 +1983 +1987 +1990 +1995 +1999 +2001 +2002 +2004 +2009 +2011 +2013 +2016 +2017 +2020 +2020 +2025 +2026 +2029 +203 +204 +2046 +2056 +2067 +2072 +2073 +2085 +2089 +2092 +2105 +2106 +2108 +213 +213 +2131 +2138 +2140 +2144 +2155 +2177 +2179 +2180 +2183 +2186 +2187 +2189 +2193 +2193 +2194 +22 +2201 +2205 +2214 +2217 +2218 +2223 +2227 +2229 +2232 +2241 +2244 +2255 +2262 +2264 +2270 +2274 +2277 +2279 +228 +2283 +2285 +2285 +2295 +2306 +2320 +2323 +2325 +2325 +2335 +2341 +2348 +2358 +236 +2373 +238 +2386 +2393 +2393 +2398 +2400 +2410 +2412 +2412 +2420 +2426 +2434 +244 +2461 +2463 +2463 +2463 +2465 +2469 +2475 +2476 +2485 +2485 +2487 +2492 +2494 +2502 +2506 +2509 +2512 +2514 +2515 +2517 +2524 +2533 +2539 +2540 +255 +2551 +2553 +2560 +2560 +2563 +2565 +2569 +2579 +2580 +2587 +259 +2599 +2607 +2608 +2619 +2619 +2625 +2626 +263 +263 +2637 +2647 +2649 +2662 +2663 +2675 +268 +268 +2680 +2682 +2688 +2689 +2692 +2700 +2712 +2714 +2715 +2715 +2719 +2724 +2725 +2735 +2745 +275 +2752 +2762 +2772 +2776 +2786 +2786 +279 +2790 +2791 +2803 +2803 +2803 +2805 +281 +2810 +2811 +2816 +2821 +2824 +2835 +2842 +2843 +2843 +2846 +2847 +2848 +2850 +2855 +2855 +2862 +2878 +2886 +289 +2897 +2897 +2900 +2903 +2905 +2911 +2915 +2919 +2933 +2933 +2938 +294 +2941 +2942 +296 +296 +2962 +2968 +2968 +2971 +2977 +2979 +2984 +2986 +2988 +2991 +3002 +3006 +301 +302 +3021 +3021 +3024 +3029 +3031 +3036 +3043 +3054 +3055 +3058 +3059 +3060 +3060 +3067 +3071 +3073 +3079 +3079 +3083 +3084 +3089 +3094 +3103 +311 +3111 +3118 +3119 +3144 +3147 +3159 +3159 +3163 +3174 +3183 +3190 +3197 +3199 +320 +3203 +3206 +3208 +3212 +3213 +3231 +3232 +3235 +3244 +3245 +3248 +3249 +3253 +3255 +3263 +3286 +3300 +3307 +3322 +3333 +3352 +336 +3365 +3366 +3397 +34 +3401 +3407 +3409 +341 +3418 +3418 +342 +3421 +3430 +3443 +3446 +345 +3456 +346 +346 +3460 +3462 +3462 +3462 +3467 +3467 +347 +3472 +3478 +3493 +350 +3507 +3510 +3512 +3533 +3534 +3541 +3542 +355 +3554 +3555 +3555 +3563 +3566 +3567 +3568 +3579 +3588 +3588 +3599 +3606 +3608 +3609 +361 +3613 +3622 +3622 +3625 +3630 +3637 +364 +3648 +3663 +3664 +367 +3672 +3673 +3677 +3680 +3682 +3690 +3691 +3701 +3702 +3703 +3707 +3722 +3724 +3725 +3725 +3728 +3728 +3739 +3747 +3749 +375 +3755 +3763 +3764 +3769 +3770 +3770 +378 +3781 +3781 +3789 +379 +3810 +3812 +3823 +3824 +383 +383 +3830 +3835 +3841 +3848 +3858 +3860 +3866 +3866 +3874 +3879 +388 +3887 +3901 +3904 +3907 +391 +3910 +3911 +3913 +392 +3932 +3940 +3941 +3945 +3946 +3949 +3958 +3960 +3961 +3962 +3965 +3974 +3974 +3980 +3990 +4018 +4020 +4024 +4030 +4037 +4051 +4054 +4056 +4075 +4078 +4088 +41 +412 +412 +417 +425 +443 +454 +455 +462 +470 +471 +481 +482 +485 +489 +49 +490 +491 +5 +500 +501 +501 +504 +522 +523 +524 +530 +535 +579 +583 +584 +586 +587 +590 +597 +601 +612 +615 +618 +65 +650 +658 +66 +661 +661 +663 +664 +677 +68 +681 +687 +688 +690 +691 +6923604860394528768 +6924820982050758656 +6926925215281774592 +6927260280037097472 +6928080429732536320 +6933001829416034304 +6933451028794925056 +6933731240564056064 +6934570741217755136 +694 +6947488599548215296 +695 +6960137166475911168 +6962726713896484864 +6963217546192322560 +6964585306125008896 +6967631925774639104 +6969599299897163776 +6974475559697768448 +6982145326341423104 +6987889924212203520 +6991316084916879360 +6996686091335884800 +7006803044329021440 +7013693841855774720 +7014537632150224896 +7017956982081404928 +7022349041913978880 +7027529814236192768 +7031339012080549888 +7039820685967343616 +7045967493826387968 +7049773031131283456 +7052226236896256000 +7054271419461812224 +7054938591408996352 +7060236714847412224 +7061498706968428544 +7061809776248545280 +7062382339142156288 +7062605127422894080 +7065344324692443136 +7068517339681259520 +7069729473166090240 +707 +7077311975029555200 +7078641038157643776 +7080269176324218880 +7084659344078970880 +7086206629592252416 +7091300332052062208 +7099005292698550272 +71 +7107604675626008576 +7125231541858205696 +7128222874437238784 +7130159794259353600 +7130306447560826880 +7149417430082027520 +7153922334283776000 +7157247449513484288 +7164349895861829632 +7165364563962191872 +7166263463731421184 +7175638927948562432 +7186401810812059648 +7195454019231834112 +7198687580227043328 +7199539820886958080 +7204802700490858496 +7210160489915236352 +7212016545671348224 +7212090742612467712 +7217123582035116032 +7220131672176058368 +7220581538170413056 +7223569671814987776 +7226360892091416576 +7229607057201127424 +723 +7231399302953377792 +7232273749940838400 +7235109456886816768 +7237310132329488384 +7238339720750948352 +724 +7242751359672631296 +7249443195032985600 +7250237407877382144 +7254710367022645248 +7255302164215013376 +7259955893466931200 +7260908278294560768 +7265141874315517952 +7266437490436341760 +7271786885641666560 +7271887863395459072 +7274777328897802240 +7291432593139507200 +7295502697317097472 +7295926343524163584 +7296164580491075584 +7299197687217856512 +73 +7304839835188609024 +7308289763456000000 +7309156463509061632 +7310869618402910208 +7319711402123149312 +7333512171174223872 +7339426767877390336 +7343171468838567936 +7344029858387820544 +7345991518378442752 +7347732772348870656 +7348598907182800896 +735 +7354813692542304256 +7359004378440146944 +736 +7368920486374989824 +7370078518278397952 +7370803940448305152 +7375521127126089728 +7376467688511455232 +7378993334503694336 +738 +7381659098423926784 +7384150968511315968 +7386087924003676160 +7391208370547269632 +7393308503950548992 +7394967727502467072 +7401968422230032384 +7410096605330227200 +7410872053689794560 +7411793502161182720 +7412924364686458880 +7414865343000322048 +7418271723644403712 +743 +7432428551399669760 +7432998950057975808 +7436133434239229952 +7440265908266827776 +7450416810848313344 +7452756603516190720 +7454442625055145984 +7454632396542074880 +7461153404961128448 +7471208109437304832 +7473537548003352576 +7486884806277611520 +7487338208419823616 +7487538600082554880 +7490717730239250432 +7491898395977523200 +7492436934952574976 +7497276415392407552 +7497306924248834048 +7500716020874674176 +7514552840617558016 +7517159036469575680 +7524958388842078208 +7528074274555305984 +7528211148397944832 +7534042483076857856 +7534145866886782976 +7534549597202194432 +7545689659010949120 +7548958830580563968 +7549858023389003776 +7555301305375858688 +7566273236152721408 +7569249672628789248 +7570474972934488064 +7573530789362262016 +7575087487730196480 +7581052107944361984 +7581614118458335232 +7584007864107778048 +7592440105065308160 +7593521922173419520 +7596563216912211968 +7599019810193211392 +7608447395949109248 +7614435638888210432 +7620183559667081216 +7621013099259527168 +7625728883085025280 +7626715182847090688 +763 +7637152193832886272 +7647481735646363648 +7648729477297987584 +7652123583449161728 +7659279803863146496 +7662037650719850496 +7675009476762918912 +7678790769408172032 +7682327310082531328 +7686992843032010752 +7689489436826804224 +7690986322714066944 +7691062622443044864 +7696737688942567424 +7697541332524376064 +7700734109530767360 +7701723309715685376 +7705445437881278464 +7710447533880614912 +7718825401976684544 +7720187583697502208 +7731443941834678272 +7735566678126616576 +774 +7741854854673367040 +7746402369011277824 +7747874976739016704 +7748799008146366464 +7752740515534422016 +7753359568986636288 +7753882935005880320 +7761834341179375616 +7762823913046556672 +7765456790394871808 +7768984605670604800 +7775034125776363520 +7778936842502275072 +7779486624537370624 +7779735136559579136 +7782245855193874432 +7784169796350730240 +7784489776013295616 +779 +7790728456522784768 +7792036342592348160 +7794244032613703680 +78 +780 +7800332581637259264 +7801697837312884736 +7818464507324121088 +782 +7823874904139849728 +784 +7843804446688264192 +7844258063629852672 +7845953007588401152 +7857878068300898304 +7868367829080506368 +7870277756614623232 +7871189141676998656 +7871554728617025536 +7874764415950176256 +7885697257930588160 +7888238729321496576 +789 +7892026679115554816 +7892281003266408448 +7898670840507031552 +7909645665163804672 +7917494645725765632 +7919597361814577152 +7921639119138070528 +7922443154272395264 +7926898770090491904 +7933040277013962752 +7936149988210212864 +7944741547145502720 +7947544013461512192 +7948803266578161664 +7955126053367119872 +7961515985722605568 +7961909238130270208 +797 +7983789401706094592 +7989119273552158720 +7989160253372817408 +7997694023324975104 +7998357471114969088 +7998687089080467456 +80 +8000440057238052864 +8002769767000145920 +8004633750273925120 +8011181697250631680 +8011602724663336960 +8014986215157530624 +8017403886247927808 +803 +8045070943673671680 +8048726769133592576 +8059284960252731392 +8069531888205086720 +8071961599867387904 +8073733016154431488 +8079573715140485120 +808 +8087737899452432384 +809 +8091421389575282688 +8099215208813903872 +8100036735858401280 +8109381965028548608 +8111757081791733760 +8113585123802529792 +8116738401948377088 +812 +8120593157178228736 +8129551357032259584 +8135164922674872320 +8142241016679735296 +8143462899383345152 +8144552446127972352 +8145745969573666816 +8145750910080745472 +8146288732715196416 +8146492373537660928 +8148211378319933440 +815 +8150115791664340992 +8156018594610790400 +8156782979767238656 +8160569434550403072 +8160662610166194176 +8163948965373386752 +8168742078705262592 +8169878743136043008 +8171188598958407680 +8183233196086214656 +8184799300477943808 +8190539859890601984 +8190967051000659968 +8192304692696383488 +8195103847607967744 +8199513544090730496 +820 +820 +8201303040648052736 +8201491077550874624 +8208354137450766336 +8210813831744118784 +8213810702473183232 +8219326436390821888 +8220104397160169472 +8221561626658881536 +8222714144797368320 +8223732800007864320 +823 +8230371298967609344 +8235179243092090880 +8244041599171862528 +8254763178969915392 +8268875586442256384 +8269730157217062912 +8272001752345690112 +8279056098670198784 +8282648443538710528 +8283099811330506752 +8286706213485297664 +8287522765741301760 +8290014929764040704 +8290944180915871744 +8294315622451740672 +8295110846998233088 +83 +8302473563519950848 +8316336224427483136 +8323460620425330688 +8325227661920133120 +8332670681629106176 +8333523087360901120 +8337549596011102208 +8345435427356090368 +835 +8351163199364390912 +8362046808797306880 +8365058996333953024 +8367680396909404160 +8368012468775608320 +837 +8371939471056470016 +8372408423196270592 +8372588378498777088 +8374321007870836736 +8376440110255243264 +8383159090746204160 +8388363436324085760 +8391407951622815744 +8391785334471589888 +8396433451610652672 +8398862954249560064 +8407869317250220032 +8410599906334097408 +8411494452500930560 +8415171956168417280 +8416121695917498368 +8417381121663746048 +8419958579638157312 +8424515140664360960 +8435912708683087872 +845 +8451612303224520704 +8454154705460666368 +8455496814886002688 +8457906374051020800 +8461498293348065280 +8463868417649524736 +8467976965865799680 +8470141334513098752 +8472429318602268672 +8473699639908261888 +8487573502287478784 +8489584373231919104 +8489735221193138176 +85 +8501910015960735744 +8508401924853850112 +8509508263705477120 +8514851182589771776 +8514979402185596928 +8515682078777081856 +8518454006987948032 +8519937082746634240 +8523972434954510336 +8524940073536954368 +8525336514806317056 +8525894870444638208 +8532016240026279936 +8536948829863198720 +8540237852367446016 +8543177193114779648 +8547243497773457408 +8551446856960942080 +8553195689344991232 +8554899472487596032 +8555933456197828608 +8555948987770511360 +8557218322962644992 +8558000156325707776 +8560526613401714688 +8569030475428511744 +8570983266408103936 +8571268359622172672 +8573305425181941760 +8577096957495025664 +8579974641030365184 +8583916402383601664 +8613562211893919744 +8625937019655200768 +8631515095562887168 +8637720762289659904 +8639254009546055680 +8641221723991433216 +8643198489997254656 +8644602243484803072 +8649296591032172544 +8652485812846567424 +8656571350884048896 +8660248367767076864 +8665969966920990720 +8666178591503564800 +8677632093825916928 +8677794924343164928 +868 +8682955459667951616 +8687042963221159936 +8688483860094599168 +8693036785094565888 +8697823501349609472 +8698055291501543424 +8708232769657815040 +8708845895460577280 +871 +8714829359200747520 +8716401555586727936 +8720504651219001344 +8723248113030782976 +873 +8731960288562044928 +8734584858442498048 +8736061027343859712 +874 +8752150411997356032 +8759089349412847616 +8759184090543857664 +8760285623204290560 +8761174805938331648 +8769199243315814400 +8773222500321361920 +8775009214012456960 +8779073705407963136 +8779711700787298304 +878 +8780196485890555904 +8782900615468302336 +8783241818558193664 +8785153741735616512 +8792059919353348096 +8793387410919038976 +8795069490394882048 +8806507556248731648 +8808467247666241536 +8811693967537774592 +8815398225009967104 +8817665768680906752 +8822384228057604096 +8825059717746376704 +8829545979081744384 +883 +8836228556823977984 +8837420822750314496 +8849475396952514560 +8850055384477401088 +8853989376829833216 +8854495099223375872 +8854677881758162944 +8854715632851345408 +8856674723376668672 +8868529429494071296 +8871707618793996288 +8875745082589929472 +888 +8895174927321243648 +8896237972875370496 +8897901899039473664 +8899122608190930944 +8900180888218329088 +8900351886974279680 +8900545829211299840 +8905330479248064512 +8910706980937261056 +8920344895701393408 +8920533610804609024 +8927691194719174656 +8928133990107881472 +8935252708196999168 +8936639033158410240 +8939431770838810624 +8945004737083555840 +8945302550165004288 +8962097525980225536 +8972161729142095872 +8979012655944220672 +898 +898 +8983857919580209152 +8983912573761167360 +8984935029383389184 +8987827141270880256 +8991071342495531008 +8991442360387584000 +8994608999945125888 +8995562121346260992 +8996824426131390464 +9000633029632499712 +9001907486943993856 +9005866015985713152 +9016280522993975296 +9020143715350814720 +9023663198045544448 +9030480306789818368 +9038087402564657152 +9040958359122640896 +9043089884440068096 +9048002942653710336 +9048297564833079296 +9050032047355125760 +9053187076403060736 +9054887854393950208 +9062227900376203264 +9064847977742032896 +9067985867711291392 +9073672806863790080 +9075404705968840704 +9078604269481148416 +908 +9083076230151864320 +9083704659251798016 +9084402694981533696 +9085381906890203136 +9085434340468473856 +9086905513121890304 +9089435102788009984 +9091082386452684800 +9091085792947666944 +9094945190752903168 +9096395849845194752 +91 +9104574294205636608 +9107991000536498176 +9112400579327483904 +9114850402293882880 +9116137265342169088 +9117063974299148288 +9119046173224370176 +9123116008004288512 +913 +9131533983989358592 +9132009829414584320 +9136234417125007360 +9136548192574529536 +9139805788041134080 +914 +9148071980848742400 +9149216169284091904 +9165199002069458944 +9169248521377374208 +917 +9174894805640142848 +918 +9180098147855769600 +9182828596851990528 +9185458640237641728 +9185952983951343616 +9188173682239275008 +919 +9190466190353661952 +9191943992860327936 +9194388393453060096 +9199741683232399360 +9207107990561972224 +9207927479837319168 +9209153648361848832 +921 +9211455920344088576 +922 +923 +927 +928 +939 +94 +945 +947 +950 +950 +958 +961 +965 +967 +976 +979 +982 +987 +997 +999 +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL diff --git ql/src/test/results/clientpositive/vector_reduce2.q.out ql/src/test/results/clientpositive/vector_reduce2.q.out new file mode 100644 index 0000000..cf9d20f --- /dev/null +++ ql/src/test/results/clientpositive/vector_reduce2.q.out @@ -0,0 +1,2160 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select s, i, s2 from vectortab2korc order by s, i, s2 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select s, i, s2 from vectortab2korc order by s, i, s2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string), i (type: int), s2 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) + sort order: +++ + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: int), KEY.reducesinkkey2 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select s, i, s2 from vectortab2korc order by s, i, s2 +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select s, i, s2 from vectortab2korc order by s, i, s2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + -1036720157 david king + -1125605439 ethan zipper + -1180153422 nick ovid + -1198465530 rachel quirinius + -1232183416 sarah underhill + -125419186 zach laertes + -1351437382 alice xylophone + -1369253050 katie white + -1411407810 xavier brown + -1442424087 luke ichabod + -1556127172 fred nixon + -1605045257 calvin ovid + -1656822229 priscilla ichabod + -1674623501 gabriella ichabod + -1741895392 rachel underhill + -1822850051 calvin ovid + -1830870295 david quirinius + -1862095575 tom ichabod + -1871446009 david johnson + -1933192293 rachel white + -1939362279 sarah carson + -1952235832 + -1974972123 rachel laertes + -199587670 priscilla miller + -2007662579 wendy quirinius + -2074079977 wendy white + -213198503 holly allen + -2136052026 + -234278308 rachel robinson + -397683105 + -44426049 victor polk + -507015439 holly underhill + -507250351 ethan king + -595769210 bob polk + -598552521 holly carson + -600315936 priscilla garcia + -694520014 quinn steinbeck + -737624128 victor falkner + -785261879 + -87470856 irene miller + -934008333 ethan ovid + 1000106109 ethan brown + 1013517056 xavier ovid + 1070989126 fred carson + 1107502179 oscar brown + 1112783661 nick king + 1117805438 calvin zipper + 1141303816 quinn xylophone + 1271280812 mike hernandez + 1273798925 priscilla thompson + 1283898734 irene nixon + 1284956108 ulysses johnson + 1318606691 quinn young + 1425362689 mike quirinius + 1513689502 bob allen + 1640192895 fred laertes + 1647411522 mike ellison + 1660278264 priscilla ellison + 1695098246 holly underhill + 1765173148 yuri polk + 187718349 quinn thompson + 1956887369 bob king + 1968813171 sarah miller + 196980893 mike johnson + 2018442973 tom falkner + 2081243058 + 2126491387 oscar underhill + 2144365072 bob nixon + 229688868 tom davidson + 230954385 wendy robinson + 273256071 ulysses white + 330302407 calvin davidson + 397255100 zach brown + 434679307 katie carson + 435426302 ulysses hernandez + 44628821 gabriella carson + 449788961 priscilla ichabod + 536876888 wendy young + 546555204 victor thompson + 548375173 priscilla xylophone + 644934949 irene hernandez + 669484010 yuri ovid + 742059797 quinn quirinius + 765656980 victor thompson + 771827308 luke white + 826143442 zach zipper + 906074599 wendy nixon + 976870621 calvin polk + 996831203 quinn quirinius + NULL + NULL bob davidson + NULL jessica white + NULL quinn zipper + NULL ulysses falkner +american history -1045771991 yuri king +american history -1079231269 victor carson +american history -1092872261 +american history -1168823523 fred white +american history -1210907929 yuri ellison +american history -123529324 luke underhill +american history -1240912824 david brown +american history -1289501869 irene king +american history -1312782341 ethan robinson +american history -1333770335 david miller +american history -1409508377 katie laertes +american history -1434562279 +american history -1527024213 ethan laertes +american history -1660344634 nick polk +american history -1668736016 xavier allen +american history -1701492480 jessica carson +american history -1721763321 david davidson +american history -1755088362 oscar ovid +american history -1870912732 holly hernandez +american history -1900894010 xavier van buren +american history -1940205653 david xylophone +american history -2144138362 victor laertes +american history -226635871 alice davidson +american history -316678117 holly brown +american history -329336519 luke robinson +american history -396852483 jessica nixon +american history -455114104 sarah zipper +american history -469870330 wendy van buren +american history -564495517 sarah steinbeck +american history -573787626 priscilla nixon +american history -695775663 yuri king +american history -705887590 ethan white +american history -71449585 fred brown +american history -853606287 alice van buren +american history -870900240 +american history -990781312 victor xylophone +american history 1008698636 ethan polk +american history 1082837515 jessica carson +american history 1106995930 sarah ovid +american history 1153811197 victor brown +american history 1187495452 xavier ellison +american history 1190554937 bob ovid +american history 1204834275 katie thompson +american history 1219616145 quinn quirinius +american history 1240875512 david quirinius +american history 1300798829 katie garcia +american history 1310360849 mike van buren +american history 1367179645 fred falkner +american history 1495575878 quinn king +american history 1543611951 tom quirinius +american history 1550112473 victor carson +american history 1556919269 yuri white +american history 156101201 katie white +american history 1604076720 david xylophone +american history 1616782308 jessica quirinius +american history 1660088606 ulysses nixon +american history 1797164732 holly thompson +american history 198017473 nick brown +american history 2051470532 rachel zipper +american history 214068706 bob thompson +american history 290921475 tom thompson +american history 316438994 sarah white +american history 458190500 calvin xylophone +american history 604460005 priscilla king +american history 636901402 bob quirinius +american history 672919099 +american history 731241198 xavier davidson +american history 747122546 david thompson +american history 84231802 holly laertes +american history 874824958 ethan king +american history 916057807 katie ellison +american history 92777932 ulysses davidson +american history 95356298 tom ovid +american history 977624089 ulysses ellison +american history 985634256 quinn miller +american history NULL alice king +american history NULL irene allen +american history NULL oscar nixon +american history NULL sarah quirinius +american history NULL wendy johnson +biology -1006768637 mike xylophone +biology -1031592590 yuri miller +biology -1050029724 wendy king +biology -1054609414 +biology -1062159435 oscar zipper +biology -1065248998 sarah ellison +biology -1098379914 holly johnson +biology -113253627 david robinson +biology -1147471772 quinn polk +biology -1227085134 victor robinson +biology -1231821948 luke young +biology -1262842192 ulysses quirinius +biology -1344287228 holly davidson +biology -1359838019 quinn miller +biology -1424770359 katie davidson +biology -1464762852 bob garcia +biology -1491722659 ethan laertes +biology -1568536214 ethan ichabod +biology -1628799508 alice underhill +biology -1644966759 calvin quirinius +biology -1726585032 katie polk +biology -1733560816 david davidson +biology -1805915233 ulysses brown +biology -1836166334 zach ellison +biology -194270271 luke johnson +biology -2011708220 katie zipper +biology -2065080832 priscilla falkner +biology -2086352100 holly king +biology -217785690 mike miller +biology -235238928 quinn hernandez +biology -236700442 holly carson +biology -270683864 zach robinson +biology -345542922 tom steinbeck +biology -348628614 katie johnson +biology -352146259 xavier van buren +biology -36682325 fred laertes +biology -387395264 +biology -457341338 nick robinson +biology -519978947 bob van buren +biology -524189419 xavier van buren +biology -707108808 quinn johnson +biology -7929246 calvin thompson +biology -837506172 +biology -858439361 +biology -938342473 wendy thompson +biology -946349935 oscar white +biology -983874694 wendy carson +biology 1012696613 david hernandez +biology 1090344463 sarah van buren +biology 1102561039 priscilla carson +biology 1119976718 yuri laertes +biology 1130840708 zach garcia +biology 1184001017 ulysses ovid +biology 1373871781 ethan ellison +biology 1395450272 zach xylophone +biology 149701884 oscar thompson +biology 1509573831 wendy hernandez +biology 152654715 xavier steinbeck +biology 1533817551 david underhill +biology 1565313938 oscar carson +biology 1595326878 +biology 1645753684 wendy falkner +biology 1747664003 priscilla ellison +biology 1814570016 fred carson +biology 1851654062 yuri carson +biology 1851805558 ulysses white +biology 196581473 ethan johnson +biology 1969239701 yuri nixon +biology 198624903 fred ichabod +biology 2022944702 +biology 2045579147 jessica van buren +biology 29680001 david thompson +biology 304860245 mike miller +biology 315055746 ethan white +biology 470575409 jessica falkner +biology 524808 calvin van buren +biology 663222148 quinn zipper +biology 670667262 wendy carson +biology 710856472 bob allen +biology 765084282 ulysses johnson +biology 766737781 sarah zipper +biology 780859673 katie van buren +biology 810157660 wendy falkner +biology 814544198 wendy johnson +biology 825977391 irene young +biology 843282593 zach van buren +biology 85774760 mike underhill +biology 868714547 zach falkner +biology 899810881 quinn garcia +biology 94220511 oscar brown +biology NULL holly young +chemistry -1048181367 holly robinson +chemistry -1100641049 luke miller +chemistry -1128317466 ethan young +chemistry -1146055387 quinn van buren +chemistry -1210261177 tom johnson +chemistry -1218581850 ethan ovid +chemistry -1218592418 gabriella ovid +chemistry -1326025787 calvin garcia +chemistry -1352545619 yuri carson +chemistry -1380191654 wendy steinbeck +chemistry -1380678829 gabriella nixon +chemistry -1407817977 tom quirinius +chemistry -1478812842 sarah robinson +chemistry -1484787952 wendy davidson +chemistry -1516259168 priscilla falkner +chemistry -1599905147 mike miller +chemistry -1754347372 nick allen +chemistry -1818380492 jessica young +chemistry -1875699183 bob polk +chemistry -1878838836 tom ellison +chemistry -1903090602 sarah ellison +chemistry -2032576637 quinn nixon +chemistry -203911033 calvin carson +chemistry -2087815643 fred young +chemistry -2133145181 yuri thompson +chemistry -310343273 holly carson +chemistry -392713245 tom carson +chemistry -395499919 wendy zipper +chemistry -423074450 irene ellison +chemistry -423945469 fred brown +chemistry -480058682 jessica nixon +chemistry -496915240 oscar allen +chemistry -514010922 yuri laertes +chemistry -758973175 alice ovid +chemistry -799249885 quinn ichabod +chemistry -940504641 victor robinson +chemistry -971615370 calvin allen +chemistry 1126157283 wendy xylophone +chemistry 1137950964 +chemistry 1281159709 priscilla davidson +chemistry 1295073553 sarah king +chemistry 1301426600 irene hernandez +chemistry 1330219997 holly xylophone +chemistry 1385883394 fred brown +chemistry 1398486099 sarah robinson +chemistry 1420099773 ulysses falkner +chemistry 1575300276 ulysses allen +chemistry 1652349607 victor young +chemistry 1664736741 jessica king +chemistry 170870820 alice ichabod +chemistry 1718167702 quinn king +chemistry 184879574 quinn davidson +chemistry 1883400319 irene allen +chemistry 1895282160 wendy van buren +chemistry 1928365430 alice thompson +chemistry 1998185704 quinn hernandez +chemistry 2008211296 +chemistry 2090496825 wendy polk +chemistry 2111462911 katie zipper +chemistry 217476429 jessica thompson +chemistry 254921167 priscilla allen +chemistry 436093771 katie davidson +chemistry 43983130 luke allen +chemistry 505902480 ulysses garcia +chemistry 514833409 katie nixon +chemistry 541923995 rachel miller +chemistry 563507584 katie robinson +chemistry 605946758 calvin ellison +chemistry 648935848 luke laertes +chemistry 652118640 holly ellison +chemistry 683320224 nick carson +chemistry 794783516 mike van buren +chemistry 830944953 irene davidson +chemistry 842283345 gabriella underhill +chemistry 964810954 tom ellison +chemistry 991397535 luke nixon +chemistry NULL katie hernandez +chemistry NULL victor polk +chemistry NULL victor steinbeck +debate -1179668872 wendy garcia +debate -1184620079 wendy falkner +debate -1210550573 bob king +debate -1366059787 bob ellison +debate -1371840597 jessica xylophone +debate -1511162508 calvin van buren +debate -1534238977 katie steinbeck +debate -1614194712 alice laertes +debate -1700451326 rachel ichabod +debate -1726479726 victor davidson +debate -1745449855 +debate -1921909135 ethan hernandez +debate -2071851852 ethan ichabod +debate -207899360 tom ellison +debate -223311809 gabriella miller +debate -273937943 sarah steinbeck +debate -290558484 ulysses allen +debate -298221893 fred zipper +debate -453739759 priscilla king +debate -483740394 ethan polk +debate -491882534 ethan garcia +debate -500921094 irene van buren +debate -511198293 rachel ichabod +debate -532755480 rachel van buren +debate -538812082 xavier king +debate -624029057 irene robinson +debate -628446314 +debate -655118881 bob laertes +debate -66010816 rachel davidson +debate -664111469 katie king +debate -674478103 ethan van buren +debate -728015067 +debate -896274896 zach johnson +debate -912429611 sarah steinbeck +debate -993029335 oscar laertes +debate -997463353 xavier white +debate 1012230484 sarah polk +debate 1061638369 mike polk +debate 1083855659 alice johnson +debate 1159353899 ulysses polk +debate 133276416 jessica young +debate 1352649032 ethan miller +debate 1482983157 quinn johnson +debate 1566607834 david brown +debate 1579460630 xavier ellison +debate 1592467112 yuri thompson +debate 1673218677 xavier falkner +debate 1766517223 +debate 1920863389 priscilla xylophone +debate 1938788165 quinn steinbeck +debate 1951869763 yuri brown +debate 1969650228 bob white +debate 2005560498 alice king +debate 2044130430 luke brown +debate 291866793 nick hernandez +debate 323919214 sarah davidson +debate 435407142 david allen +debate 44595790 xavier brown +debate 564349193 tom laertes +debate 58313734 fred ovid +debate 60847311 oscar young +debate 618321042 tom xylophone +debate 667283966 jessica king +debate 818313200 sarah johnson +debate 873035819 calvin johnson +debate 879500678 mike king +debate 904604938 mike steinbeck +debate 945683736 gabriella quirinius +debate NULL mike van buren +debate NULL nick xylophone +debate NULL rachel allen +education -1021859098 irene brown +education -1078579367 katie nixon +education -1138530007 +education -1240048334 sarah ellison +education -1272838092 gabriella brown +education -1283465451 xavier quirinius +education -1421396891 irene zipper +education -1429346144 zach miller +education -1439424023 zach white +education -1471147786 nick brown +education -1497098905 gabriella nixon +education -1506324615 alice ellison +education -1517536924 ulysses ellison +education -170643477 oscar johnson +education -1770250407 victor davidson +education -1867014618 nick zipper +education -2009569943 alice laertes +education -2015780444 calvin underhill +education -2027812975 wendy davidson +education -267130580 fred steinbeck +education -295751373 ulysses carson +education -337586880 gabriella steinbeck +education -371779520 fred xylophone +education -374337252 bob davidson +education -434656160 quinn white +education -521886983 tom underhill +education -560322190 ulysses ellison +education -591879497 david garcia +education -596963345 yuri ovid +education -688296901 bob zipper +education -722294882 quinn quirinius +education -733756717 fred zipper +education -749042352 katie young +education -839512271 priscilla steinbeck +education -966979668 alice falkner +education -9958400 zach miller +education 1027147837 ethan zipper +education 1107258026 quinn steinbeck +education 1136976809 katie garcia +education 1194243726 luke miller +education 1304812803 ethan quirinius +education 1370723240 +education 1372224352 tom underhill +education 1410516523 yuri ovid +education 1412102605 ulysses hernandez +education 1447462863 tom nixon +education 1452244326 wendy quirinius +education 1493555718 katie thompson +education 1552351592 gabriella underhill +education 1568180994 alice underhill +education 1602631923 sarah laertes +education 1625699061 ethan johnson +education 1626868156 tom garcia +education 1636364987 alice white +education 1767019352 yuri carson +education 177294487 tom quirinius +education 1802498539 quinn garcia +education 1829544791 tom miller +education 1836499981 yuri davidson +education 1893512909 ethan ichabod +education 1902676205 david brown +education 2076370203 bob thompson +education 2134433675 irene ovid +education 2140632003 david davidson +education 219415594 calvin steinbeck +education 232405034 quinn robinson +education 277582670 tom underhill +education 315973457 fred davidson +education 413090363 rachel king +education 418182899 luke xylophone +education 453613037 holly allen +education 472901914 zach miller +education 492120544 tom xylophone +education 516479816 wendy ellison +education 622925063 rachel miller +education 66182203 quinn ichabod +education 713031549 oscar johnson +education 793047956 mike laertes +education 879289168 +education NULL ethan davidson +education NULL mike van buren +education NULL sarah garcia +education NULL zach miller +forestry -1081766449 holly ichabod +forestry -1106469823 wendy thompson +forestry -1134786190 katie allen +forestry -1230459100 mike laertes +forestry -1249011023 alice van buren +forestry -1345391395 yuri falkner +forestry -1358159222 quinn king +forestry -1402821064 luke brown +forestry -1454941039 victor underhill +forestry -1541281934 bob quirinius +forestry -1688105985 sarah garcia +forestry -1728171376 rachel carson +forestry -1826997220 luke polk +forestry -2041825946 jessica falkner +forestry -310584775 nick van buren +forestry -346607939 +forestry -454598288 xavier young +forestry -470798506 wendy carson +forestry -536315467 luke allen +forestry -559270035 zach polk +forestry -561932449 yuri ovid +forestry -619311578 +forestry -859535015 bob garcia +forestry -866304147 holly young +forestry -886741158 nick quirinius +forestry -932525608 zach quirinius +forestry -958165276 calvin johnson +forestry -980869630 oscar falkner +forestry -987995271 oscar davidson +forestry 1002519329 mike king +forestry 1033836308 david thompson +forestry 1153089364 bob falkner +forestry 1202593021 rachel carson +forestry 1346627771 +forestry 1447438548 david thompson +forestry 1464695860 alice hernandez +forestry 1517488324 luke quirinius +forestry 152891873 irene underhill +forestry 1575091509 quinn thompson +forestry 1583280136 bob carson +forestry 1594107168 jessica underhill +forestry 1626884085 nick robinson +forestry 1677494300 victor van buren +forestry 172075892 sarah nixon +forestry 1751468853 tom ellison +forestry 1776456512 ulysses thompson +forestry 1796013407 wendy underhill +forestry 1815882183 fred robinson +forestry 1848935036 mike van buren +forestry 1861276585 alice underhill +forestry 1882932986 ulysses nixon +forestry 1933545427 victor allen +forestry 1958701268 ulysses miller +forestry 2058640744 wendy polk +forestry 2080412555 fred van buren +forestry 2097519027 sarah laertes +forestry 259204652 victor white +forestry 284646137 alice van buren +forestry 340929437 quinn brown +forestry 374283948 wendy laertes +forestry 3999930 fred thompson +forestry 415234946 bob brown +forestry 477857533 jessica ovid +forestry 530274409 fred quirinius +forestry 566646177 calvin ovid +forestry 584084934 tom van buren +forestry 633813435 oscar king +forestry 768198315 oscar brown +forestry 860658464 fred brown +forestry 922373046 nick miller +forestry 950545385 priscilla carson +forestry 962091264 tom polk +forestry NULL david davidson +forestry NULL david nixon +forestry NULL holly ellison +forestry NULL wendy allen +geology -1004204053 luke johnson +geology -1017629298 wendy brown +geology -1039040287 xavier quirinius +geology -1081328752 luke johnson +geology -1127100849 oscar white +geology -1141801925 oscar young +geology -120692484 calvin white +geology -1288198020 luke zipper +geology -1379039356 yuri white +geology -1439293109 priscilla nixon +geology -1538558250 zach young +geology -158233823 +geology -158848747 sarah ellison +geology -1620148746 nick robinson +geology -1798573685 ulysses white +geology -181122344 irene davidson +geology -1831957182 sarah garcia +geology -1878572820 ulysses underhill +geology -1918847735 priscilla miller +geology -1947868215 +geology -1968097621 ulysses hernandez +geology -1998652546 ethan thompson +geology -203416622 nick miller +geology -2042647152 holly steinbeck +geology -296195507 victor thompson +geology -36038293 holly allen +geology -491377296 calvin zipper +geology -533281137 jessica allen +geology -553349593 alice ovid +geology -575513309 ulysses ichabod +geology -588160623 david van buren +geology -630900418 oscar steinbeck +geology -679230165 bob brown +geology -682333536 ulysses steinbeck +geology -693249555 nick king +geology -817093900 priscilla polk +geology -841268868 ulysses ellison +geology -909127123 rachel xylophone +geology 1028204648 bob falkner +geology 1136548971 +geology 1203482872 david underhill +geology 127917714 +geology 1301997393 victor van buren +geology 1312270193 oscar falkner +geology 1317690178 holly miller +geology 1394370866 mike carson +geology 141492068 ethan polk +geology 1425456189 +geology 1475025489 alice davidson +geology 1503176016 david nixon +geology 1505168716 +geology 1550375386 sarah carson +geology 1701817607 tom hernandez +geology 1860113703 priscilla young +geology 1996235654 mike underhill +geology 2013178181 tom laertes +geology 2040926345 yuri underhill +geology 2068538934 quinn polk +geology 278601840 ulysses king +geology 283618733 quinn ovid +geology 287239980 katie johnson +geology 297577612 bob ovid +geology 314232856 fred thompson +geology 345556325 irene laertes +geology 373031319 alice johnson +geology 440393309 sarah ovid +geology 447426619 alice quirinius +geology 458910170 holly ellison +geology 550186724 jessica polk +geology 589546540 david hernandez +geology 596595603 tom johnson +geology 722737062 irene brown +geology 824743780 priscilla falkner +geology 915505006 luke hernandez +geology 975932228 victor carson +geology NULL mike ichabod +history -1024500955 rachel thompson +history -1066775085 katie zipper +history -1144976744 katie robinson +history -1412187081 gabriella robinson +history -1431196400 ulysses johnson +history -1446132523 ulysses polk +history -1459528251 quinn ellison +history -1575588203 calvin zipper +history -1594957608 ethan xylophone +history -1603071732 calvin nixon +history -1625062942 tom young +history -1627366321 david allen +history -178568841 nick quirinius +history -1801684055 calvin steinbeck +history -186600427 sarah thompson +history -189393743 irene ellison +history -1900369503 gabriella thompson +history -1949698319 +history -1989378509 +history -202409329 bob zipper +history -2076460151 bob ichabod +history -306214368 mike steinbeck +history -4393552 rachel ichabod +history -445353909 quinn davidson +history -45439614 david ichabod +history -499533481 oscar underhill +history -549167249 holly nixon +history -800799595 luke ovid +history -807242371 quinn xylophone +history -817383093 quinn davidson +history -846450672 david white +history -882028850 xavier ovid +history -88576126 ethan allen +history -891543038 holly carson +history -906986958 wendy johnson +history 1033609549 irene johnson +history 1141595012 xavier steinbeck +history 1142098316 yuri van buren +history 1164895226 +history 1238986437 ulysses underhill +history 1352739140 luke miller +history 1467284000 victor nixon +history 1500437122 bob laertes +history 1665724041 luke laertes +history 1669519977 wendy ichabod +history 1754025802 victor steinbeck +history 1772349172 victor van buren +history 1784291853 yuri falkner +history 1807358029 calvin brown +history 1813010930 quinn ovid +history 1844415080 holly xylophone +history 253621570 calvin carson +history 278643258 xavier ichabod +history 283322761 ethan ichabod +history 334208532 bob zipper +history 363981930 +history 44009986 rachel young +history 488559595 ethan hernandez +history 523289079 gabriella ellison +history 62293025 sarah falkner +history 696229550 bob brown +history 742866312 victor zipper +history 760466914 +history 786565385 quinn van buren +history 805672638 irene thompson +history 877053605 holly falkner +history 901084309 jessica quirinius +history 917891418 quinn carson +history 919363072 mike zipper +history 930008274 priscilla zipper +history 998793176 xavier falkner +history NULL ethan van buren +history NULL katie ellison +history NULL zach miller +industrial engineering -1011125931 zach ichabod +industrial engineering -1078397698 david robinson +industrial engineering -1108723753 luke quirinius +industrial engineering -1156193121 yuri johnson +industrial engineering -1247325089 calvin falkner +industrial engineering -1259611508 calvin brown +industrial engineering -1665164127 victor polk +industrial engineering -1706867123 calvin allen +industrial engineering -1718163874 priscilla white +industrial engineering -1730740504 xavier laertes +industrial engineering -1908696083 +industrial engineering -1946023520 irene brown +industrial engineering -2022383454 gabriella underhill +industrial engineering -211669740 alice allen +industrial engineering -2119539915 holly carson +industrial engineering -2122509553 nick nixon +industrial engineering -2137168636 katie garcia +industrial engineering -373034494 ethan polk +industrial engineering -379643543 david quirinius +industrial engineering -399643110 ethan johnson +industrial engineering -44559184 priscilla garcia +industrial engineering -616724730 mike brown +industrial engineering -841634659 victor nixon +industrial engineering -890374552 gabriella polk +industrial engineering 1074488452 tom polk +industrial engineering 1081187102 oscar brown +industrial engineering 1111985530 wendy falkner +industrial engineering 1222217404 luke steinbeck +industrial engineering 1258721737 jessica nixon +industrial engineering 1336365018 gabriella hernandez +industrial engineering 1409872356 katie white +industrial engineering 1483580941 oscar allen +industrial engineering 15020431 ulysses zipper +industrial engineering 1516236846 bob steinbeck +industrial engineering 1577999613 quinn ovid +industrial engineering 1712411993 quinn garcia +industrial engineering 1742536084 sarah robinson +industrial engineering 206942178 zach miller +industrial engineering 2084666529 mike brown +industrial engineering 2114363167 calvin falkner +industrial engineering 215759857 sarah steinbeck +industrial engineering 290601612 calvin white +industrial engineering 376076075 katie king +industrial engineering 386741352 sarah ichabod +industrial engineering 414645489 yuri young +industrial engineering 430686478 ulysses polk +industrial engineering 470993066 luke garcia +industrial engineering 480849725 priscilla ovid +industrial engineering 494570380 jessica ichabod +industrial engineering 52667480 david ichabod +industrial engineering 574069547 tom falkner +industrial engineering 674547678 tom johnson +industrial engineering 748185058 alice quirinius +industrial engineering 776606164 alice laertes +industrial engineering 851975276 xavier xylophone +industrial engineering 868717604 +industrial engineering 879290165 mike young +industrial engineering 990246086 holly allen +industrial engineering NULL alice young +industrial engineering NULL calvin steinbeck +industrial engineering NULL katie ichabod +industrial engineering NULL katie robinson +industrial engineering NULL priscilla brown +joggying -1017027298 victor young +joggying -1096013673 nick falkner +joggying -1111937842 irene white +joggying -1117019030 calvin xylophone +joggying -1202975006 alice ichabod +joggying -1218871391 priscilla steinbeck +joggying -122391516 alice garcia +joggying -1270523286 victor nixon +joggying -1302592941 quinn steinbeck +joggying -1305139473 mike underhill +joggying -1313618168 xavier hernandez +joggying -1339495001 wendy ichabod +joggying -1524081566 ethan van buren +joggying -1524554771 luke johnson +joggying -1563676282 victor polk +joggying -1602792666 yuri brown +joggying -161884324 oscar nixon +joggying -1622653291 oscar hernandez +joggying -1904737684 ethan nixon +joggying -1918651448 mike davidson +joggying -1948257321 tom hernandez +joggying -2112149052 calvin robinson +joggying -2119724898 holly young +joggying -267554590 david van buren +joggying -337073639 priscilla nixon +joggying -540401598 david brown +joggying -570632618 victor laertes +joggying -656478771 tom quirinius +joggying -779743333 ethan white +joggying -870624802 calvin davidson +joggying -896261100 katie davidson +joggying 1012843193 ulysses xylophone +joggying 1052255272 fred carson +joggying 1173098061 calvin brown +joggying 1216287232 jessica polk +joggying 1336194583 tom underhill +joggying 1377144283 +joggying 144499388 zach miller +joggying 1450881368 david robinson +joggying 1478365409 calvin white +joggying 1535954353 xavier carson +joggying 1572563948 zach laertes +joggying 1645067708 luke ichabod +joggying 1759741857 nick steinbeck +joggying 1773417290 oscar brown +joggying 177837042 katie ovid +joggying 1835749815 wendy carson +joggying 1905812339 oscar polk +joggying 2133950868 +joggying 218917585 quinn ellison +joggying 344239980 david hernandez +joggying 391186487 nick allen +joggying 479566810 oscar brown +joggying 514046604 mike hernandez +joggying 587206979 alice zipper +joggying 63706286 katie johnson +joggying 658850444 ulysses ovid +joggying 65956045 nick laertes +joggying 686081268 holly laertes +joggying 700341242 victor king +joggying 706823078 calvin ovid +joggying 780938234 luke falkner +joggying 826519029 holly hernandez +joggying 865013617 fred miller +joggying 889772203 +joggying 908943372 fred ovid +joggying 972835688 victor quirinius +joggying NULL calvin johnson +joggying NULL luke falkner +joggying NULL luke steinbeck +joggying NULL mike garcia +joggying NULL quinn johnson +joggying NULL quinn nixon +kindergarten -1052493316 mike van buren +kindergarten -1057522129 ethan quirinius +kindergarten -1091003492 holly robinson +kindergarten -1116100266 priscilla ovid +kindergarten -1140071443 mike laertes +kindergarten -1155174991 luke robinson +kindergarten -1205034356 +kindergarten -1213081886 fred allen +kindergarten -1228063838 +kindergarten -1299159155 alice ellison +kindergarten -1838281337 ulysses carson +kindergarten -1851680302 fred van buren +kindergarten -187804718 calvin miller +kindergarten -1880783574 irene zipper +kindergarten -1919939921 xavier van buren +kindergarten -1988508336 bob young +kindergarten -269702086 holly ellison +kindergarten -370093295 bob thompson +kindergarten -41242237 rachel johnson +kindergarten -533227056 +kindergarten -574475259 wendy polk +kindergarten -583908704 fred allen +kindergarten -632803945 xavier white +kindergarten -664856187 alice xylophone +kindergarten -677778959 calvin quirinius +kindergarten -738157651 david allen +kindergarten -789126455 irene steinbeck +kindergarten -828724467 tom king +kindergarten -835107230 sarah carson +kindergarten -835198551 rachel van buren +kindergarten -890552359 sarah young +kindergarten -922875124 fred nixon +kindergarten -935723237 +kindergarten 1036391201 victor ovid +kindergarten 1042237722 gabriella falkner +kindergarten 1056997296 jessica laertes +kindergarten 1190302173 priscilla ichabod +kindergarten 1202720813 katie ovid +kindergarten 1307148254 jessica xylophone +kindergarten 1540680149 mike white +kindergarten 1582537271 jessica garcia +kindergarten 1590744669 quinn white +kindergarten 1605596441 calvin ovid +kindergarten 1634441052 rachel steinbeck +kindergarten 1709983738 wendy zipper +kindergarten 1787826883 sarah allen +kindergarten 1830870769 ulysses robinson +kindergarten 2048533360 +kindergarten 2066707767 zach thompson +kindergarten 2089198703 victor ichabod +kindergarten 346562088 zach quirinius +kindergarten 459269456 mike nixon +kindergarten 488014426 holly thompson +kindergarten 56316391 sarah polk +kindergarten 615619268 xavier underhill +kindergarten 693331761 priscilla thompson +kindergarten 88774647 priscilla miller +kindergarten 963854010 mike robinson +kindergarten NULL david young +kindergarten NULL irene ovid +kindergarten NULL nick laertes +linguistics -101960322 ethan robinson +linguistics -1124028213 katie ellison +linguistics -121162464 luke davidson +linguistics -1248781172 calvin quirinius +linguistics -1341627565 fred van buren +linguistics -1356601829 tom robinson +linguistics -139448716 irene brown +linguistics -1447263708 yuri miller +linguistics -1462604138 +linguistics -1533934649 calvin thompson +linguistics -1534307678 yuri young +linguistics -1699049982 yuri carson +linguistics -1721368386 wendy brown +linguistics -1889139541 irene davidson +linguistics -1890963712 tom ellison +linguistics -19116270 zach davidson +linguistics -1928197479 calvin falkner +linguistics -1967660827 +linguistics -2057666812 fred thompson +linguistics -2096425960 gabriella polk +linguistics -297664578 quinn zipper +linguistics -336625622 yuri underhill +linguistics -343173797 fred ellison +linguistics -370901197 katie laertes +linguistics -379174037 yuri robinson +linguistics -472303419 rachel garcia +linguistics -579916775 priscilla ovid +linguistics -605370177 priscilla davidson +linguistics -671853199 fred falkner +linguistics -684022323 victor falkner +linguistics -764412063 victor falkner +linguistics -768305191 rachel johnson +linguistics -839176151 bob white +linguistics -897622427 tom van buren +linguistics -90029636 wendy laertes +linguistics -922200749 ulysses polk +linguistics 1121512594 xavier king +linguistics 1145627305 jessica ellison +linguistics 1198701102 sarah underhill +linguistics 1225312439 alice ellison +linguistics 1275228381 david young +linguistics 1392980712 victor carson +linguistics 1416850873 bob polk +linguistics 161210995 priscilla thompson +linguistics 1637295757 +linguistics 1809795770 david ichabod +linguistics 1914993018 yuri laertes +linguistics 1991072829 mike ichabod +linguistics 2018249426 jessica steinbeck +linguistics 2038381675 quinn ichabod +linguistics 2057486961 alice laertes +linguistics 2081152819 gabriella underhill +linguistics 209430502 victor falkner +linguistics 43672187 alice johnson +linguistics 605141554 luke xylophone +linguistics 65172363 sarah ovid +linguistics 712625264 jessica brown +linguistics 712816880 alice king +linguistics 735600165 katie thompson +linguistics 746904285 fred laertes +linguistics 75823003 oscar king +linguistics 776459017 wendy steinbeck +linguistics 819069589 zach thompson +linguistics 849859032 irene quirinius +linguistics 881673558 nick underhill +linguistics NULL calvin robinson +linguistics NULL luke allen +linguistics NULL mike zipper +linguistics NULL wendy underhill +mathematics -1061859761 victor nixon +mathematics -1112062809 victor nixon +mathematics -1129489281 tom ellison +mathematics -1198036877 +mathematics -1254129998 ulysses brown +mathematics -1319753324 yuri ellison +mathematics -1421860505 yuri nixon +mathematics -1423467446 mike quirinius +mathematics -1424027104 rachel laertes +mathematics -1544877665 katie quirinius +mathematics -1554130090 sarah zipper +mathematics -158420748 ethan davidson +mathematics -1651993300 yuri steinbeck +mathematics -1735287250 david allen +mathematics -175727228 fred ovid +mathematics -180280420 bob laertes +mathematics -1857500489 oscar ellison +mathematics -1892816721 sarah van buren +mathematics -191704948 wendy carson +mathematics -1974257754 jessica nixon +mathematics -2081809883 gabriella brown +mathematics -2117280385 zach xylophone +mathematics -234758376 ethan van buren +mathematics -23865350 irene falkner +mathematics -295186284 rachel thompson +mathematics -402441123 zach ichabod +mathematics -40284975 +mathematics -496870819 tom quirinius +mathematics -599396052 quinn zipper +mathematics -71305062 ethan young +mathematics -765102534 oscar king +mathematics -76654979 zach van buren +mathematics -809805200 +mathematics -816661030 priscilla steinbeck +mathematics -835002549 katie ovid +mathematics -856843296 jessica polk +mathematics -893863493 zach miller +mathematics -917062754 ethan polk +mathematics -938762477 ethan steinbeck +mathematics -94709066 oscar garcia +mathematics 1054864168 jessica carson +mathematics 1127080164 ulysses carson +mathematics 1196151988 jessica king +mathematics 1198172036 ethan ellison +mathematics 1224662770 calvin van buren +mathematics 1229172951 quinn hernandez +mathematics 1335803002 david young +mathematics 1363568842 ulysses white +mathematics 1377359511 ethan davidson +mathematics 1384071499 zach garcia +mathematics 139661585 priscilla quirinius +mathematics 1404346934 irene quirinius +mathematics 1443426396 +mathematics 1489169773 +mathematics 1505665168 +mathematics 1640445482 jessica xylophone +mathematics 1785455842 ulysses robinson +mathematics 1832650234 alice garcia +mathematics 195281533 tom thompson +mathematics 1974939899 gabriella steinbeck +mathematics 2064448036 alice steinbeck +mathematics 318631333 ulysses davidson +mathematics 338805871 priscilla falkner +mathematics 375106978 luke ichabod +mathematics 485105934 irene laertes +mathematics 491758252 tom falkner +mathematics 740883263 quinn nixon +mathematics 748358417 ulysses brown +mathematics 881695885 zach laertes +mathematics NULL david ovid +mathematics NULL jessica carson +mathematics NULL nick xylophone +mathematics NULL oscar ellison +mathematics NULL quinn garcia +mathematics NULL zach steinbeck +nap time -103219371 xavier zipper +nap time -116484575 ulysses quirinius +nap time -1183469360 alice king +nap time -1343327 oscar king +nap time -16094879 quinn king +nap time -1669227632 calvin robinson +nap time -1818456584 fred garcia +nap time -1849091666 oscar carson +nap time -1851280202 fred hernandez +nap time -1992388855 jessica hernandez +nap time -2111312205 katie nixon +nap time -292588406 calvin steinbeck +nap time -309571354 gabriella steinbeck +nap time -337829479 yuri garcia +nap time -359943425 victor miller +nap time -397951021 katie falkner +nap time -434747475 jessica underhill +nap time -490337498 jessica falkner +nap time -504529358 mike allen +nap time -607667405 ethan young +nap time -626484313 ethan underhill +nap time -665623523 sarah johnson +nap time -805288503 xavier hernandez +nap time -913906252 calvin ovid +nap time -946830673 wendy underhill +nap time -971203543 quinn miller +nap time -982238309 calvin polk +nap time 1166237779 irene steinbeck +nap time 1273877405 calvin nixon +nap time 1372705672 victor thompson +nap time 1516165279 zach johnson +nap time 1520375588 david steinbeck +nap time 1571267481 gabriella underhill +nap time 1775355987 david ovid +nap time 1818213677 xavier ichabod +nap time 2013444562 ulysses white +nap time 2031604236 quinn johnson +nap time 2080249726 ethan robinson +nap time 2145269593 priscilla steinbeck +nap time 2146312499 calvin allen +nap time 215508794 ulysses van buren +nap time 268888160 bob hernandez +nap time 398960205 tom king +nap time 503752931 irene miller +nap time 516843026 victor ichabod +nap time 595836061 priscilla johnson +nap time 618991041 quinn underhill +nap time 738356485 ethan king +nap time 785382955 gabriella garcia +nap time 922553769 jessica ichabod +nap time 92834720 bob falkner +nap time 950997304 nick thompson +nap time 962712814 ulysses brown +nap time 980732494 holly polk +nap time NULL jessica johnson +nap time NULL wendy young +opthamology -1079633326 katie robinson +opthamology -1104268719 ulysses brown +opthamology -1126628450 sarah hernandez +opthamology -1226425562 mike robinson +opthamology -1234163924 holly miller +opthamology -1244527286 bob carson +opthamology -1364322216 holly hernandez +opthamology -1422780798 bob davidson +opthamology -1502924486 rachel nixon +opthamology -1561738723 fred underhill +opthamology -1616030844 irene falkner +opthamology -1652600376 victor zipper +opthamology -1655030261 oscar ovid +opthamology -1676261015 katie polk +opthamology -1709117770 calvin miller +opthamology -1769423338 gabriella johnson +opthamology -177025818 yuri young +opthamology -181523892 sarah quirinius +opthamology -1901806083 luke xylophone +opthamology -1960344717 holly steinbeck +opthamology -1969751342 victor ichabod +opthamology -1979314577 oscar underhill +opthamology -2081501748 priscilla falkner +opthamology -287400633 gabriella thompson +opthamology -327648289 rachel robinson +opthamology -332125121 ethan white +opthamology -360113158 bob king +opthamology -400501472 fred van buren +opthamology -406264741 mike robinson +opthamology -41864614 victor king +opthamology -425196209 sarah nixon +opthamology -442839889 sarah davidson +opthamology -4943292 oscar quirinius +opthamology -505879576 holly steinbeck +opthamology -759911896 katie white +opthamology -78240945 yuri underhill +opthamology -800975421 rachel thompson +opthamology 100270148 victor ellison +opthamology 1044196568 holly white +opthamology 1063524922 +opthamology 1069486136 victor ichabod +opthamology 1134416796 quinn thompson +opthamology 1142481557 mike falkner +opthamology 117620760 katie polk +opthamology 1211873318 oscar ellison +opthamology 1281277970 fred young +opthamology 1305668933 calvin allen +opthamology 1336951982 oscar hernandez +opthamology 144428297 rachel falkner +opthamology 1603612975 gabriella steinbeck +opthamology 1632769786 sarah zipper +opthamology 1678220496 +opthamology 1752520642 +opthamology 1852725744 david garcia +opthamology 2065408093 priscilla polk +opthamology 2069258195 nick allen +opthamology 266601601 irene quirinius +opthamology 307333276 wendy polk +opthamology 340384179 david thompson +opthamology 39723411 bob ellison +opthamology 402173272 quinn garcia +opthamology 461680901 quinn zipper +opthamology 491016124 luke allen +opthamology 511836073 calvin ellison +opthamology 609917172 luke ovid +opthamology 6266567 jessica van buren +opthamology 718692886 victor white +opthamology 759899363 wendy van buren +opthamology 787925706 xavier robinson +opthamology 816439627 jessica polk +opthamology 819875108 irene underhill +opthamology 936133387 gabriella van buren +opthamology 955171928 +opthamology NULL +opthamology NULL yuri ichabod +philosophy -1096771844 ethan van buren +philosophy -1109134719 katie hernandez +philosophy -1131684944 quinn white +philosophy -1196808950 irene polk +philosophy -120704505 luke king +philosophy -1319686435 jessica steinbeck +philosophy -1345085327 bob johnson +philosophy -1460613213 priscilla brown +philosophy -1477897348 nick ovid +philosophy -1489628668 tom quirinius +philosophy -1538978853 +philosophy -1545572711 victor underhill +philosophy -1603374745 alice zipper +philosophy -1679120527 jessica quirinius +philosophy -1699044525 nick zipper +philosophy -1744964279 oscar zipper +philosophy -1770229099 alice miller +philosophy -1811563127 jessica hernandez +philosophy -1817938378 sarah laertes +philosophy -1819075185 luke miller +philosophy -1949359208 alice carson +philosophy -2042831105 +philosophy -2053551539 jessica zipper +philosophy -2077771325 fred brown +philosophy -217930632 rachel robinson +philosophy -340951385 xavier robinson +philosophy -42151403 calvin young +philosophy -436386350 victor young +philosophy -47662800 zach polk +philosophy -540820650 sarah davidson +philosophy -606214770 holly king +philosophy -745678338 priscilla steinbeck +philosophy -752222556 tom allen +philosophy -884796655 oscar robinson +philosophy -938756287 fred steinbeck +philosophy -985817478 nick ovid +philosophy -996953616 victor zipper +philosophy 1204325852 calvin ovid +philosophy 1314531900 jessica king +philosophy 1319589591 +philosophy 1406029775 +philosophy 1541249928 calvin miller +philosophy 1569269522 ethan xylophone +philosophy 1756592797 luke ovid +philosophy 1772545157 gabriella laertes +philosophy 1942004879 katie xylophone +philosophy 1972940844 nick quirinius +philosophy 2009215103 bob thompson +philosophy 2083836439 sarah davidson +philosophy 2100839074 calvin ovid +philosophy 2124297747 ethan carson +philosophy 22308780 mike ovid +philosophy 344989592 +philosophy 390124976 gabriella laertes +philosophy 41063276 wendy brown +philosophy 626941809 victor ellison +philosophy 631711489 victor johnson +philosophy 684561551 oscar van buren +philosophy 737149747 sarah davidson +philosophy 789871166 david ovid +philosophy 825677248 alice miller +philosophy 888896424 zach white +philosophy 889733679 priscilla zipper +philosophy 89366322 wendy underhill +philosophy 936752497 ethan nixon +philosophy NULL xavier hernandez +quiet hour -1001529082 wendy nixon +quiet hour -1012329052 david quirinius +quiet hour -1026746699 rachel hernandez +quiet hour -1058166020 oscar robinson +quiet hour -117723745 oscar white +quiet hour -1403154847 luke ellison +quiet hour -1464514590 nick garcia +quiet hour -1493282775 +quiet hour -1505397109 rachel xylophone +quiet hour -1655396452 mike hernandez +quiet hour -1668974292 bob falkner +quiet hour -1727003541 +quiet hour -191434898 sarah underhill +quiet hour -191899537 rachel thompson +quiet hour -2028355450 quinn thompson +quiet hour -2069439395 nick steinbeck +quiet hour -357680544 holly white +quiet hour -407089271 wendy carson +quiet hour -448060992 alice miller +quiet hour -464804906 luke ellison +quiet hour -512198016 katie miller +quiet hour -742707249 yuri underhill +quiet hour -774406989 oscar zipper +quiet hour -941433219 oscar white +quiet hour -950738312 ulysses johnson +quiet hour -971698865 bob carson +quiet hour -99916247 ethan white +quiet hour 1002132158 mike nixon +quiet hour 1182390248 fred xylophone +quiet hour 1216016081 ulysses garcia +quiet hour 121663320 bob ovid +quiet hour 1260101584 yuri allen +quiet hour 1293876597 mike brown +quiet hour 1359437295 rachel white +quiet hour 1366402722 gabriella robinson +quiet hour 1390704286 mike miller +quiet hour 1393262450 ulysses johnson +quiet hour 1437057145 luke johnson +quiet hour 14573904 gabriella thompson +quiet hour 1488440165 irene steinbeck +quiet hour 1614297403 zach falkner +quiet hour 1739911574 ulysses ovid +quiet hour 1743671220 alice quirinius +quiet hour 1807877618 holly ichabod +quiet hour 1847210729 sarah polk +quiet hour 1870464222 +quiet hour 1880017800 bob nixon +quiet hour 1893632113 priscilla quirinius +quiet hour 1978171687 alice johnson +quiet hour 1990792684 nick carson +quiet hour 2029657999 mike ichabod +quiet hour 203688965 yuri garcia +quiet hour 2100377172 quinn allen +quiet hour 2127682701 sarah garcia +quiet hour 257821327 bob ellison +quiet hour 410340192 calvin brown +quiet hour 592011541 tom garcia +quiet hour 619884480 katie king +quiet hour 669871113 ethan laertes +quiet hour 704038411 quinn van buren +quiet hour 735732067 rachel ovid +quiet hour 76381404 rachel garcia +quiet hour 856986735 +quiet hour 882762933 holly white +quiet hour NULL mike garcia +quiet hour NULL priscilla ellison +quiet hour NULL zach falkner +religion -1043413503 mike allen +religion -1063673827 irene miller +religion -1144920802 ulysses king +religion -1197602595 alice steinbeck +religion -1216206795 xavier young +religion -1247229632 victor robinson +religion -1343425152 wendy xylophone +religion -1432316859 alice laertes +religion -1552053883 calvin xylophone +religion -1626062014 jessica allen +religion -1643714866 luke ovid +religion -1701502632 mike xylophone +religion -1749415887 ulysses steinbeck +religion -1802746460 mike robinson +religion -1884780525 oscar xylophone +religion -192181579 luke allen +religion -1969235238 fred thompson +religion -201554470 luke brown +religion -2052386812 tom robinson +religion -20660936 david hernandez +religion -214166042 jessica falkner +religion -2146432765 nick van buren +religion -38458614 calvin polk +religion -409673169 fred johnson +religion -419335927 sarah van buren +religion -618505946 nick white +religion -667383951 alice white +religion -670925379 ethan ovid +religion -71433796 mike johnson +religion -76430653 nick robinson +religion -772236518 +religion -853967587 irene thompson +religion -939348081 mike johnson +religion 1022214896 luke quirinius +religion 1061043704 mike underhill +religion 1075444504 luke robinson +religion 1182646662 fred ellison +religion 1228837108 fred davidson +religion 129675822 alice ichabod +religion 1318956413 victor falkner +religion 1336842978 oscar steinbeck +religion 1363459426 bob laertes +religion 1436480682 ethan falkner +religion 1456367662 quinn xylophone +religion 1472487454 priscilla steinbeck +religion 1499399891 ulysses carson +religion 1592153312 ulysses young +religion 1597303154 +religion 166320811 nick allen +religion 177391521 oscar falkner +religion 1845797092 alice zipper +religion 1891680787 +religion 1910930064 jessica steinbeck +religion 1911809937 david allen +religion 194754262 luke carson +religion 2009890220 nick underhill +religion 2070969353 zach davidson +religion 210728566 fred xylophone +religion 2125311222 alice polk +religion 493977568 nick polk +religion 51376784 fred young +religion 550594651 nick garcia +religion 596802082 david brown +religion 597657990 david falkner +religion 673904922 calvin steinbeck +religion 824836988 ethan king +religion 829101712 calvin garcia +religion 895763504 bob steinbeck +religion 914062370 luke robinson +religion 947846543 quinn garcia +religion NULL gabriella allen +religion NULL irene ichabod +religion NULL luke carson +religion NULL mike nixon +religion NULL nick allen +religion NULL xavier van buren +study skills -1164833898 rachel white +study skills -1212524805 tom steinbeck +study skills -1242677422 zach young +study skills -1266138408 gabriella steinbeck +study skills -1318045616 irene young +study skills -136514115 irene ovid +study skills -1392487784 irene carson +study skills -1419573027 holly ichabod +study skills -1528033060 ulysses ichabod +study skills -1669848306 holly thompson +study skills -1719427168 mike ichabod +study skills -1762037754 ulysses van buren +study skills -1784633305 zach laertes +study skills -1856034030 gabriella nixon +study skills -1914072976 alice ovid +study skills -1937640350 oscar robinson +study skills -1955647385 irene steinbeck +study skills -235819331 yuri xylophone +study skills -283378057 ulysses xylophone +study skills -314935936 yuri ellison +study skills -318206520 nick xylophone +study skills -359194591 zach young +study skills -414207254 quinn carson +study skills -425103007 tom brown +study skills -442732016 +study skills -507955215 fred xylophone +study skills -535056977 wendy laertes +study skills -621365995 ethan johnson +study skills -648766606 tom polk +study skills -758231588 calvin steinbeck +study skills -849551464 oscar davidson +study skills -851663638 gabriella robinson +study skills -887663189 katie laertes +study skills -887790938 priscilla ichabod +study skills -897586947 wendy van buren +study skills -978892011 xavier underhill +study skills -99205196 priscilla hernandez +study skills 1004241194 calvin hernandez +study skills 1028092807 ulysses quirinius +study skills 1076088102 rachel quirinius +study skills 1091736925 yuri nixon +study skills 1115197541 ethan quirinius +study skills 1131663263 david laertes +study skills 1222935237 gabriella garcia +study skills 1286367391 jessica brown +study skills 1316931 priscilla brown +study skills 1321678350 ulysses ovid +study skills 1343581455 mike robinson +study skills 1386071996 bob zipper +study skills 1415647436 quinn carson +study skills 1426152053 bob falkner +study skills 1506907734 wendy quirinius +study skills 1522208504 fred hernandez +study skills 1523657918 fred brown +study skills 1570238232 david polk +study skills 160290374 tom hernandez +study skills 1620529246 katie underhill +study skills 1650573576 alice quirinius +study skills 1668446119 calvin ellison +study skills 1677197847 gabriella ellison +study skills 1743696703 rachel van buren +study skills 1750433588 ethan ovid +study skills 1805139501 katie thompson +study skills 1888675011 wendy white +study skills 1911834442 priscilla white +study skills 198539698 priscilla allen +study skills 1992977592 quinn garcia +study skills 2032271149 mike falkner +study skills 482977302 jessica robinson +study skills 526502851 oscar king +study skills 631207613 tom garcia +study skills 867587289 alice white +study skills 895945459 katie underhill +study skills 925032386 david polk +study skills 958866509 xavier white +study skills NULL jessica miller +study skills NULL katie carson +topology -1058356124 jessica white +topology -1061222139 xavier garcia +topology -1067083033 tom davidson +topology -1216166764 nick king +topology -1240208945 ethan quirinius +topology -1269216718 wendy nixon +topology -1406691044 fred johnson +topology -1462331586 gabriella xylophone +topology -1568646283 rachel brown +topology -1800413845 katie hernandez +topology -1817096156 yuri miller +topology -1955545912 irene ellison +topology -2024003241 +topology -2065287410 rachel quirinius +topology -2147071655 rachel falkner +topology -303747347 ethan nixon +topology -370798230 katie van buren +topology -40407627 quinn underhill +topology -462541618 jessica xylophone +topology -522450861 david white +topology -534991774 wendy falkner +topology -601946913 ulysses robinson +topology -628790799 holly nixon +topology -707228984 alice ovid +topology -714270951 calvin xylophone +topology -728541537 victor xylophone +topology -734921821 zach carson +topology -743680989 priscilla thompson +topology -938112972 rachel polk +topology -954480325 mike thompson +topology -973128166 tom garcia +topology 1003667927 mike polk +topology 1059212450 tom zipper +topology 1124269631 katie ovid +topology 1148500740 luke thompson +topology 1151752586 tom zipper +topology 1309976380 victor davidson +topology 1316369941 rachel ovid +topology 1469775272 quinn falkner +topology 1621606222 priscilla young +topology 1646811064 katie johnson +topology 1677444379 david laertes +topology 174310705 tom king +topology 176792505 oscar thompson +topology 1783034168 quinn young +topology 1895751360 ethan underhill +topology 1924741890 jessica quirinius +topology 1987336880 fred ichabod +topology 2017314998 oscar miller +topology 2075919195 holly hernandez +topology 217823040 rachel xylophone +topology 335359004 bob ichabod +topology 350802495 ulysses carson +topology 477584560 fred steinbeck +topology 527598540 luke ovid +topology 531459992 jessica thompson +topology 538268118 fred laertes +topology 557053197 +topology 661659208 mike nixon +topology 734267314 yuri polk +topology 791096295 david garcia +topology 850625480 zach allen +topology 860708524 yuri steinbeck +topology 960187615 calvin zipper +topology 989475408 jessica brown +topology NULL mike van buren +topology NULL oscar nixon +topology NULL oscar thompson +topology NULL priscilla brown +undecided -1070951602 +undecided -1106685577 ulysses ovid +undecided -1324624386 oscar young +undecided -1353470095 priscilla xylophone +undecided -1554325042 victor van buren +undecided -1562552002 katie brown +undecided -1583445177 luke xylophone +undecided -1938290238 jessica allen +undecided -1974777102 oscar ellison +undecided -1984079412 holly ichabod +undecided -2016985611 calvin ovid +undecided -202035134 katie underhill +undecided -2124994385 ethan young +undecided -216495498 luke zipper +undecided -361944328 david white +undecided -373038706 priscilla ovid +undecided -432218419 nick white +undecided -51612681 calvin ichabod +undecided -53587991 mike xylophone +undecided -558456218 yuri xylophone +undecided -590374062 victor thompson +undecided -733239404 +undecided -828522499 priscilla quirinius +undecided -956668825 ethan van buren +undecided 1042184256 bob miller +undecided 1129173487 luke johnson +undecided 1205391962 calvin miller +undecided 1265528735 ethan robinson +undecided 127051381 +undecided 1328225044 mike garcia +undecided 1332042427 +undecided 1333214263 quinn falkner +undecided 1338047392 victor ovid +undecided 1347876055 david quirinius +undecided 1362740312 irene underhill +undecided 1376818328 sarah ellison +undecided 1504919241 calvin miller +undecided 1563120121 nick polk +undecided 1731764471 katie quirinius +undecided 1765874562 mike ovid +undecided 1805308672 xavier thompson +undecided 1825828852 quinn white +undecided 1918230406 +undecided 1950882901 xavier allen +undecided 1961954939 nick ovid +undecided 1978200605 quinn underhill +undecided 2068018858 rachel ichabod +undecided 2102440065 tom van buren +undecided 260463232 ethan davidson +undecided 272086526 wendy xylophone +undecided 372099650 luke robinson +undecided 37461818 jessica davidson +undecided 407098216 priscilla garcia +undecided 536235636 jessica garcia +undecided 564366133 alice xylophone +undecided 596242714 tom miller +undecided 596280431 bob johnson +undecided 656187584 victor xylophone +undecided 658008867 alice hernandez +undecided 69110370 fred ichabod +undecided 727802564 fred ellison +undecided 821316302 mike brown +undecided 829055499 mike steinbeck +undecided 914583645 nick hernandez +undecided 978044705 jessica white +undecided NULL gabriella thompson +undecided NULL zach garcia +values clariffication -1026458834 irene ovid +values clariffication -1111814111 irene van buren +values clariffication -1212433954 mike underhill +values clariffication -1236536142 quinn ellison +values clariffication -1261099087 sarah van buren +values clariffication -1289665817 +values clariffication -1362178985 quinn laertes +values clariffication -1369302744 quinn thompson +values clariffication -1391183008 ulysses brown +values clariffication -144862954 sarah ovid +values clariffication -1469463456 ethan zipper +values clariffication -1484033125 xavier ellison +values clariffication -1545388906 bob ellison +values clariffication -1621814212 +values clariffication -1738775004 mike hernandez +values clariffication -1743938290 holly quirinius +values clariffication -1759354458 mike ellison +values clariffication -1765795567 +values clariffication -1769037737 victor underhill +values clariffication -1897998366 +values clariffication -1933374662 priscilla ovid +values clariffication -1945738830 sarah carson +values clariffication -1954890941 gabriella van buren +values clariffication -1977762695 oscar quirinius +values clariffication -2098078720 ethan steinbeck +values clariffication -215703544 yuri thompson +values clariffication -224865887 fred nixon +values clariffication -244778184 luke underhill +values clariffication -362603422 rachel falkner +values clariffication -369183838 wendy xylophone +values clariffication -373541958 priscilla quirinius +values clariffication -385247581 ethan steinbeck +values clariffication -588547970 +values clariffication -66112513 calvin brown +values clariffication -837503491 quinn robinson +values clariffication -847235873 oscar young +values clariffication -901778330 david young +values clariffication -928013434 ulysses hernandez +values clariffication -933324607 rachel young +values clariffication 1017953606 gabriella brown +values clariffication 1081920048 tom thompson +values clariffication 1114521964 victor garcia +values clariffication 1130043800 david davidson +values clariffication 128430191 ulysses ovid +values clariffication 1290381132 xavier falkner +values clariffication 1393506704 david white +values clariffication 1418228573 +values clariffication 1421779455 luke young +values clariffication 1430614653 david brown +values clariffication 1473503196 holly davidson +values clariffication 1493152791 ethan allen +values clariffication 1638471881 quinn xylophone +values clariffication 1668094749 luke carson +values clariffication 1679381813 rachel ovid +values clariffication 1686537335 zach quirinius +values clariffication 1701761102 +values clariffication 1817671655 yuri van buren +values clariffication 1916363472 xavier white +values clariffication 1925283040 yuri white +values clariffication 1941527322 katie ellison +values clariffication 2142592987 +values clariffication 311478497 irene hernandez +values clariffication 33234633 yuri van buren +values clariffication 368170021 +values clariffication 476919973 calvin garcia +values clariffication 524317972 ulysses miller +values clariffication 528218910 calvin young +values clariffication 601376532 calvin miller +values clariffication 631954352 xavier ellison +values clariffication 641695802 victor davidson +values clariffication 659397992 fred brown +values clariffication 672266669 jessica underhill +values clariffication 758926227 +values clariffication 76299337 luke zipper +values clariffication 773730574 holly polk +values clariffication 8040290 holly ichabod +values clariffication 832465439 +values clariffication 859140926 jessica robinson +values clariffication 929560791 david polk +values clariffication 987917448 irene zipper +values clariffication NULL fred quirinius +values clariffication NULL fred xylophone +values clariffication NULL gabriella van buren +values clariffication NULL priscilla quirinius +wind surfing -1078214868 victor ellison +wind surfing -1095938490 victor robinson +wind surfing -1153978907 fred robinson +wind surfing -1201785350 quinn thompson +wind surfing -1222897252 zach white +wind surfing -1322736153 jessica polk +wind surfing -1340213051 rachel ovid +wind surfing -1426893312 +wind surfing -1437126017 yuri garcia +wind surfing -1447140800 mike underhill +wind surfing -146961490 alice ellison +wind surfing -1565785026 nick garcia +wind surfing -1578387726 tom thompson +wind surfing -163859725 zach laertes +wind surfing -1642207005 sarah garcia +wind surfing -1716506227 david garcia +wind surfing -1754203978 katie miller +wind surfing -1758125445 ethan brown +wind surfing -1817564067 rachel davidson +wind surfing -1820436871 alice thompson +wind surfing -1829691116 fred ellison +wind surfing -1832606512 jessica van buren +wind surfing -1873004551 irene zipper +wind surfing -18917438 sarah nixon +wind surfing -1914210382 rachel steinbeck +wind surfing -1924909143 tom young +wind surfing -2019287179 alice young +wind surfing -2037628236 luke xylophone +wind surfing -206177972 david hernandez +wind surfing -240529113 alice king +wind surfing -249150336 mike allen +wind surfing -253084551 wendy ichabod +wind surfing -300717684 sarah ovid +wind surfing -311437801 nick miller +wind surfing -409404534 luke nixon +wind surfing -45460011 mike nixon +wind surfing -469749219 calvin underhill +wind surfing -54793232 jessica van buren +wind surfing -571587579 katie underhill +wind surfing -592568201 fred steinbeck +wind surfing -829717122 +wind surfing -838656526 holly allen +wind surfing -915104901 yuri carson +wind surfing -916344293 nick thompson +wind surfing -951728053 ethan ovid +wind surfing 104004730 holly zipper +wind surfing 1045719941 oscar allen +wind surfing 1050809633 tom garcia +wind surfing 106847364 luke garcia +wind surfing 107680423 ulysses ellison +wind surfing 1102069050 oscar polk +wind surfing 1103797891 nick underhill +wind surfing 1109664665 nick king +wind surfing 1182595271 sarah allen +wind surfing 1191238870 xavier xylophone +wind surfing 1251556414 xavier ellison +wind surfing 1260480653 katie nixon +wind surfing 1342923026 rachel laertes +wind surfing 1434588588 nick allen +wind surfing 1566958573 jessica allen +wind surfing 1667594394 jessica zipper +wind surfing 167432368 priscilla hernandez +wind surfing 1767359228 zach brown +wind surfing 1796950944 ulysses garcia +wind surfing 1846184880 zach ellison +wind surfing 1920662116 tom hernandez +wind surfing 1934970004 rachel steinbeck +wind surfing 1949494660 calvin nixon +wind surfing 234452496 victor robinson +wind surfing 239078089 zach quirinius +wind surfing 270090617 holly laertes +wind surfing 371383749 jessica quirinius +wind surfing 37730738 david steinbeck +wind surfing 388707554 nick thompson +wind surfing 476858779 wendy underhill +wind surfing 48554395 gabriella allen +wind surfing 541118710 calvin van buren +wind surfing 581259902 yuri ellison +wind surfing 590719541 +wind surfing 658636280 alice white +wind surfing 659343542 irene thompson +wind surfing 661380540 quinn thompson +wind surfing 693876030 yuri king +wind surfing 715333063 mike young +wind surfing 77063155 zach brown +wind surfing 824235855 bob polk +wind surfing 866084887 david polk +wind surfing 872554087 jessica xylophone +wind surfing 923353533 ethan king +wind surfing 987734049 alice hernandez +xylophone band -1030565036 xavier king +xylophone band -1079086534 alice polk +xylophone band -1114208576 jessica hernandez +xylophone band -1117358187 ulysses falkner +xylophone band -1146649990 ethan ichabod +xylophone band -1257859205 mike garcia +xylophone band -1280919769 +xylophone band -1349876582 fred davidson +xylophone band -1430903652 bob zipper +xylophone band -1444011944 jessica miller +xylophone band -1565671389 bob underhill +xylophone band -1606567895 holly nixon +xylophone band -1648991909 holly white +xylophone band -1702587308 +xylophone band -1731820254 luke robinson +xylophone band -1850492820 victor miller +xylophone band -1858443953 tom zipper +xylophone band -1881263242 ulysses zipper +xylophone band -1953605752 oscar xylophone +xylophone band -1989778424 luke falkner +xylophone band -2017279089 alice ellison +xylophone band -2043805661 yuri robinson +xylophone band -2066134281 alice zipper +xylophone band -2076886223 ethan carson +xylophone band -2138343289 xavier davidson +xylophone band -318380015 katie ichabod +xylophone band -393723522 gabriella carson +xylophone band -412333994 mike ichabod +xylophone band -423190290 nick underhill +xylophone band -603273425 ethan steinbeck +xylophone band -675125724 nick garcia +xylophone band -726879427 calvin young +xylophone band -765190882 mike white +xylophone band -909024258 ethan carson +xylophone band -914329027 zach xylophone +xylophone band -916495008 priscilla polk +xylophone band -932921363 alice xylophone +xylophone band 1094778643 zach king +xylophone band 115470151 mike ellison +xylophone band 1179528290 luke falkner +xylophone band 1256676429 mike ovid +xylophone band 1333148555 katie allen +xylophone band 1440427914 katie garcia +xylophone band 1517915751 quinn ovid +xylophone band 1519993904 gabriella ellison +xylophone band 1544482684 priscilla quirinius +xylophone band 1768399622 ulysses king +xylophone band 197056787 xavier white +xylophone band 2052773366 katie carson +xylophone band 206121314 xavier brown +xylophone band 26270580 oscar hernandez +xylophone band 323817967 yuri king +xylophone band 343362793 nick johnson +xylophone band 471464395 calvin allen +xylophone band 492639283 bob van buren +xylophone band 522895626 luke davidson +xylophone band 583458404 fred falkner +xylophone band 596045726 calvin quirinius +xylophone band 626251612 nick young +xylophone band 6526476 sarah brown +xylophone band 656636097 luke carson +xylophone band 688547276 +xylophone band 720703232 oscar garcia +xylophone band 882331889 katie zipper +xylophone band 923980398 katie van buren +xylophone band 945911081 xavier miller +xylophone band 955267058 quinn carson +xylophone band 977292235 luke van buren +xylophone band 994798486 ulysses ellison +xylophone band 997193329 david johnson +xylophone band NULL jessica quirinius +yard duty -1032306832 katie davidson +yard duty -1038565721 wendy laertes +yard duty -1249134513 priscilla underhill +yard duty -1274158260 oscar ichabod +yard duty -1404921781 rachel miller +yard duty -1458382451 gabriella brown +yard duty -1463884101 katie ichabod +yard duty -1531040609 rachel davidson +yard duty -1609864597 ethan hernandez +yard duty -1621721177 nick thompson +yard duty -1635301453 luke ichabod +yard duty -186764959 xavier steinbeck +yard duty -1871209811 fred polk +yard duty -1909635960 priscilla quirinius +yard duty -1983567458 nick laertes +yard duty -20639382 mike falkner +yard duty -251576563 luke laertes +yard duty -291577538 irene white +yard duty -300429552 calvin johnson +yard duty -463071187 quinn young +yard duty -520725912 victor king +yard duty -534894953 xavier ovid +yard duty -607285491 sarah thompson +yard duty -625788713 katie robinson +yard duty -693207128 jessica xylophone +yard duty -714594143 priscilla brown +yard duty -797889292 oscar miller +yard duty -812431220 holly robinson +yard duty -884109192 alice zipper +yard duty -892839693 wendy davidson +yard duty 1001732850 yuri king +yard duty 1022707418 +yard duty 115111911 priscilla allen +yard duty 1194089079 nick falkner +yard duty 1304431147 priscilla thompson +yard duty 1332181668 ulysses laertes +yard duty 1458051497 wendy garcia +yard duty 1464703053 david white +yard duty 1516149502 david ichabod +yard duty 1625751062 jessica nixon +yard duty 1678261510 wendy davidson +yard duty 1796486238 bob nixon +yard duty 1912175355 alice nixon +yard duty 2042816480 zach steinbeck +yard duty 210003006 xavier falkner +yard duty 2133492883 gabriella thompson +yard duty 252169185 katie laertes +yard duty 25400543 quinn robinson +yard duty 259524903 bob nixon +yard duty 467753905 gabriella xylophone +yard duty 538766635 irene laertes +yard duty 615661052 bob ellison +yard duty 654939016 katie steinbeck +yard duty 692666133 mike miller +yard duty 703111607 nick young +yard duty 745725681 mike polk +yard duty 770574055 +yard duty 881396599 luke white +yard duty 900992177 fred king +yard duty 932774185 bob king +yard duty NULL calvin ichabod +yard duty NULL gabriella ovid +yard duty NULL holly hernandez +yard duty NULL irene garcia +yard duty NULL rachel steinbeck +yard duty NULL tom miller +yard duty NULL zach hernandez +zync studies -1009249550 calvin laertes +zync studies -1141652793 sarah ovid +zync studies -1171326281 irene xylophone +zync studies -1196101029 david king +zync studies -134686276 oscar nixon +zync studies -1348149160 oscar hernandez +zync studies -1423477356 katie ovid +zync studies -1425942083 katie zipper +zync studies -1625800024 fred falkner +zync studies -1703620970 calvin allen +zync studies -1709246310 yuri polk +zync studies -1749841790 katie thompson +zync studies -1804244259 sarah thompson +zync studies -1808960215 ethan davidson +zync studies -1880877824 tom quirinius +zync studies -207546600 jessica van buren +zync studies -2144241640 quinn ichabod +zync studies -308225568 yuri white +zync studies -329695030 holly van buren +zync studies -340462064 calvin quirinius +zync studies -37773326 fred hernandez +zync studies -37876543 bob van buren +zync studies -423378447 oscar white +zync studies -43858652 mike king +zync studies -449333854 katie white +zync studies -604362582 gabriella ichabod +zync studies -641062448 wendy carson +zync studies -876122064 sarah ellison +zync studies -901079162 fred ovid +zync studies -906545548 xavier falkner +zync studies -968377273 +zync studies 107941738 wendy nixon +zync studies 1103878879 gabriella xylophone +zync studies 1107757211 zach robinson +zync studies 1257621270 katie miller +zync studies 1303632852 quinn robinson +zync studies 131031898 calvin allen +zync studies 135341845 rachel young +zync studies 1372982791 ulysses robinson +zync studies 142722637 xavier quirinius +zync studies 1471913583 rachel robinson +zync studies 1485934602 tom garcia +zync studies 1524010024 zach xylophone +zync studies 1618123796 ethan ichabod +zync studies 1650676897 sarah nixon +zync studies 1687784247 bob king +zync studies 1723691683 +zync studies 1769324649 alice johnson +zync studies 187893585 luke ichabod +zync studies 2013376408 priscilla allen +zync studies 206454818 rachel allen +zync studies 2090044777 +zync studies 2125479431 tom davidson +zync studies 2144454927 irene young +zync studies 25644069 holly falkner +zync studies 30036142 wendy polk +zync studies 352214248 calvin allen +zync studies 407233168 katie young +zync studies 474795096 mike young +zync studies 476704350 sarah polk +zync studies 492968645 sarah underhill +zync studies 587797446 priscilla ellison +zync studies 854230650 ethan laertes +zync studies 869288953 alice miller +zync studies 929751599 +zync studies NULL holly young +zync studies NULL holly zipper +zync studies NULL priscilla young +zync studies NULL quinn quirinius +zync studies NULL yuri polk diff --git ql/src/test/results/clientpositive/vector_reduce3.q.out ql/src/test/results/clientpositive/vector_reduce3.q.out new file mode 100644 index 0000000..5fbaa16 --- /dev/null +++ ql/src/test/results/clientpositive/vector_reduce3.q.out @@ -0,0 +1,2160 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select s from vectortab2korc order by s +PREHOOK: type: QUERY +POSTHOOK: query: explain +select s from vectortab2korc order by s +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select s from vectortab2korc order by s +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select s from vectortab2korc order by s +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +american history +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +biology +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +chemistry +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +debate +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +education +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +forestry +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +geology +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +history +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +industrial engineering +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +joggying +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +kindergarten +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +linguistics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +mathematics +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +nap time +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +opthamology +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +philosophy +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +quiet hour +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +religion +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +study skills +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +topology +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +undecided +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +values clariffication +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +wind surfing +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +xylophone band +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +yard duty +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies +zync studies diff --git serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java index 0643445..c6ff748 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java +++ serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java @@ -42,6 +42,7 @@ import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo; import org.apache.hadoop.io.Text; @@ -59,10 +60,10 @@ * other type specific buffers. So, those references are only valid until the next time set is * called. */ -public class BinarySortableDeserializeRead implements DeserializeRead { +public final class BinarySortableDeserializeRead implements DeserializeRead { public static final Logger LOG = LoggerFactory.getLogger(BinarySortableDeserializeRead.class.getName()); - private PrimitiveTypeInfo[] primitiveTypeInfos; + private TypeInfo[] typeInfos; // The sort order (ascending/descending) for each field. Set to true when descending (invert). private boolean[] columnSortOrderIsDesc; @@ -94,14 +95,14 @@ public BinarySortableDeserializeRead(PrimitiveTypeInfo[] primitiveTypeInfos) { this(primitiveTypeInfos, null); } - public BinarySortableDeserializeRead(PrimitiveTypeInfo[] primitiveTypeInfos, + public BinarySortableDeserializeRead(TypeInfo[] typeInfos, boolean[] columnSortOrderIsDesc) { - this.primitiveTypeInfos = primitiveTypeInfos; - fieldCount = primitiveTypeInfos.length; + this.typeInfos = typeInfos; + fieldCount = typeInfos.length; if (columnSortOrderIsDesc != null) { this.columnSortOrderIsDesc = columnSortOrderIsDesc; } else { - this.columnSortOrderIsDesc = new boolean[primitiveTypeInfos.length]; + this.columnSortOrderIsDesc = new boolean[typeInfos.length]; Arrays.fill(this.columnSortOrderIsDesc, false); } inputByteBuffer = new InputByteBuffer(); @@ -117,8 +118,8 @@ private BinarySortableDeserializeRead() { /* * The primitive type information for all fields. */ - public PrimitiveTypeInfo[] primitiveTypeInfos() { - return primitiveTypeInfos; + public TypeInfo[] typeInfos() { + return typeInfos; } /* @@ -176,7 +177,7 @@ public boolean readCheckNull() throws IOException { // We have a field and are positioned to it. - if (primitiveTypeInfos[fieldIndex].getPrimitiveCategory() != PrimitiveCategory.DECIMAL) { + if (((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory() != PrimitiveCategory.DECIMAL) { return false; } @@ -375,7 +376,7 @@ public void readHiveChar(ReadHiveCharResults readHiveCharResults) throws IOExcep (BinarySortableReadHiveCharResults) readHiveCharResults; if (!binarySortableReadHiveCharResults.isInit()) { - binarySortableReadHiveCharResults.init((CharTypeInfo) primitiveTypeInfos[fieldIndex]); + binarySortableReadHiveCharResults.init((CharTypeInfo) typeInfos[fieldIndex]); } HiveCharWritable hiveCharWritable = binarySortableReadHiveCharResults.getHiveCharWritable(); @@ -416,7 +417,7 @@ public void readHiveVarchar(ReadHiveVarcharResults readHiveVarcharResults) throw BinarySortableReadHiveVarcharResults binarySortableReadHiveVarcharResults = (BinarySortableReadHiveVarcharResults) readHiveVarcharResults; if (!binarySortableReadHiveVarcharResults.isInit()) { - binarySortableReadHiveVarcharResults.init((VarcharTypeInfo) primitiveTypeInfos[fieldIndex]); + binarySortableReadHiveVarcharResults.init((VarcharTypeInfo) typeInfos[fieldIndex]); } HiveVarcharWritable hiveVarcharWritable = binarySortableReadHiveVarcharResults.getHiveVarcharWritable(); @@ -733,7 +734,7 @@ private boolean earlyReadHiveDecimal() throws IOException { } tempHiveDecimalWritable.set(bd); - saveDecimalTypeInfo = (DecimalTypeInfo) primitiveTypeInfos[fieldIndex]; + saveDecimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex]; int precision = saveDecimalTypeInfo.getPrecision(); int scale = saveDecimalTypeInfo.getScale(); diff --git serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java index 733798c..709e53f 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java +++ serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableSerializeWrite.java @@ -32,13 +32,8 @@ import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hadoop.hive.serde2.ByteStream.Output; import org.apache.hadoop.hive.serde2.binarysortable.BinarySortableSerDe; -import org.apache.hadoop.hive.serde2.binarysortable.InputByteBuffer; import org.apache.hadoop.hive.serde2.io.DateWritable; -import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable; -import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable; import org.apache.hadoop.hive.serde2.io.TimestampWritable; -import org.apache.hadoop.hive.serde2.lazy.LazyHiveIntervalDayTime; -import org.apache.hadoop.hive.serde2.lazy.LazyHiveIntervalYearMonth; import org.apache.hadoop.hive.serde2.fast.SerializeWrite; import org.apache.hive.common.util.DateUtils; @@ -47,7 +42,7 @@ * * This is an alternative way to serialize than what is provided by BinarySortableSerDe. */ -public class BinarySortableSerializeWrite implements SerializeWrite { +public final class BinarySortableSerializeWrite implements SerializeWrite { public static final Logger LOG = LoggerFactory.getLogger(BinarySortableSerializeWrite.class.getName()); private Output output; diff --git serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java index b187aff..c2b0cfc 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java +++ serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java @@ -35,7 +35,7 @@ import org.apache.hadoop.hive.serde2.io.TimestampWritable; import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo; -import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo; /* @@ -55,9 +55,9 @@ public interface DeserializeRead { /* - * The primitive type information for all fields. + * The type information for all fields. */ - PrimitiveTypeInfo[] primitiveTypeInfos(); + TypeInfo[] typeInfos(); /* * Set the range of bytes to be deserialized. diff --git serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java index 736dae7..f44a84b 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java +++ serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java @@ -30,7 +30,6 @@ import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; import org.apache.hadoop.hive.serde2.fast.DeserializeRead; - import org.apache.hadoop.hive.serde2.io.DateWritable; import org.apache.hadoop.hive.serde2.io.HiveCharWritable; import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable; @@ -47,6 +46,7 @@ import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo; import org.apache.hadoop.io.Text; import org.apache.hive.common.util.TimestampParser; @@ -66,10 +66,10 @@ * other type specific buffers. So, those references are only valid until the next time set is * called. */ -public class LazySimpleDeserializeRead implements DeserializeRead { +public final class LazySimpleDeserializeRead implements DeserializeRead { public static final Logger LOG = LoggerFactory.getLogger(LazySimpleDeserializeRead.class.getName()); - private PrimitiveTypeInfo[] primitiveTypeInfos; + private TypeInfo[] typeInfos; private byte separator; @@ -111,10 +111,11 @@ private boolean readBeyondBufferRangeWarned; private boolean bufferRangeHasExtraDataWarned; - public LazySimpleDeserializeRead(PrimitiveTypeInfo[] primitiveTypeInfos, + public LazySimpleDeserializeRead(TypeInfo[] typeInfos, byte separator, LazySerDeParameters lazyParams) { - this.primitiveTypeInfos = primitiveTypeInfos; + this.typeInfos = typeInfos; + this.separator = separator; isEscaped = lazyParams.isEscaped(); @@ -122,7 +123,7 @@ public LazySimpleDeserializeRead(PrimitiveTypeInfo[] primitiveTypeInfos, nullSequenceBytes = lazyParams.getNullSequence().getBytes(); isExtendedBooleanLiteral = lazyParams.isExtendedBooleanLiteral(); - fieldCount = primitiveTypeInfos.length; + fieldCount = typeInfos.length; tempText = new Text(); readBeyondConfiguredFieldsWarned = false; readBeyondBufferRangeWarned = false; @@ -134,11 +135,11 @@ private LazySimpleDeserializeRead() { } /* - * The primitive type information for all fields. + * The type information for all fields. */ @Override - public PrimitiveTypeInfo[] primitiveTypeInfos() { - return primitiveTypeInfos; + public TypeInfo[] typeInfos() { + return typeInfos; } /* @@ -230,7 +231,7 @@ public boolean readCheckNull() { } } - switch (primitiveTypeInfos[fieldIndex].getPrimitiveCategory()) { + switch (((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory()) { case BOOLEAN: { int i = fieldStart; @@ -478,7 +479,7 @@ public boolean readCheckNull() { } saveDecimal = HiveDecimal.create(byteData); - saveDecimalTypeInfo = (DecimalTypeInfo) primitiveTypeInfos[fieldIndex]; + saveDecimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex]; int precision = saveDecimalTypeInfo.getPrecision(); int scale = saveDecimalTypeInfo.getScale(); saveDecimal = HiveDecimal.enforcePrecisionScale(saveDecimal, precision, @@ -495,7 +496,7 @@ public boolean readCheckNull() { break; default: - throw new Error("Unexpected primitive category " + primitiveTypeInfos[fieldIndex].getPrimitiveCategory()); + throw new Error("Unexpected primitive category " + ((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory()); } return false; @@ -663,7 +664,7 @@ public void readHiveChar(ReadHiveCharResults readHiveCharResults) throws IOExcep LazySimpleReadHiveCharResults LazySimpleReadHiveCharResults = (LazySimpleReadHiveCharResults) readHiveCharResults; if (!LazySimpleReadHiveCharResults.isInit()) { - LazySimpleReadHiveCharResults.init((CharTypeInfo) primitiveTypeInfos[fieldIndex]); + LazySimpleReadHiveCharResults.init((CharTypeInfo) typeInfos[fieldIndex]); } if (LazySimpleReadHiveCharResults.readStringResults == null) { @@ -715,7 +716,7 @@ public void readHiveVarchar(ReadHiveVarcharResults readHiveVarcharResults) throw LazySimpleReadHiveVarcharResults lazySimpleReadHiveVarvarcharResults = (LazySimpleReadHiveVarcharResults) readHiveVarcharResults; if (!lazySimpleReadHiveVarvarcharResults.isInit()) { - lazySimpleReadHiveVarvarcharResults.init((VarcharTypeInfo) primitiveTypeInfos[fieldIndex]); + lazySimpleReadHiveVarvarcharResults.init((VarcharTypeInfo) typeInfos[fieldIndex]); } if (lazySimpleReadHiveVarvarcharResults.readStringResults == null) { diff --git serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java index 4f9c130..986d246 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java +++ serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleSerializeWrite.java @@ -63,7 +63,7 @@ * * This is an alternative way to serialize than what is provided by LazyBinarySerDe. */ -public class LazySimpleSerializeWrite implements SerializeWrite { +public final class LazySimpleSerializeWrite implements SerializeWrite { public static final Logger LOG = LoggerFactory.getLogger(LazySimpleSerializeWrite.class.getName()); private LazySerDeParameters lazyParams; diff --git serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java index 56434a7..c5f0730 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java +++ serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java @@ -40,6 +40,7 @@ import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo; /* @@ -56,10 +57,10 @@ * other type specific buffers. So, those references are only valid until the next time set is * called. */ -public class LazyBinaryDeserializeRead implements DeserializeRead { +public final class LazyBinaryDeserializeRead implements DeserializeRead { public static final Logger LOG = LoggerFactory.getLogger(LazyBinaryDeserializeRead.class.getName()); - private PrimitiveTypeInfo[] primitiveTypeInfos; + private TypeInfo[] typeInfos; private byte[] bytes; private int start; @@ -81,9 +82,9 @@ private boolean readBeyondBufferRangeWarned; private boolean bufferRangeHasExtraDataWarned; - public LazyBinaryDeserializeRead(PrimitiveTypeInfo[] primitiveTypeInfos) { - this.primitiveTypeInfos = primitiveTypeInfos; - fieldCount = primitiveTypeInfos.length; + public LazyBinaryDeserializeRead(TypeInfo[] typeInfos) { + this.typeInfos = typeInfos; + fieldCount = typeInfos.length; tempVInt = new VInt(); tempVLong = new VLong(); readBeyondConfiguredFieldsWarned = false; @@ -96,10 +97,10 @@ private LazyBinaryDeserializeRead() { } /* - * The primitive type information for all fields. + * The type information for all fields. */ - public PrimitiveTypeInfo[] primitiveTypeInfos() { - return primitiveTypeInfos; + public TypeInfo[] typeInfos() { + return typeInfos; } /* @@ -154,7 +155,7 @@ public boolean readCheckNull() throws IOException { // We have a field and are positioned to it. - if (primitiveTypeInfos[fieldIndex].getPrimitiveCategory() != PrimitiveCategory.DECIMAL) { + if (((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory() != PrimitiveCategory.DECIMAL) { return false; } @@ -509,7 +510,7 @@ public void readHiveChar(ReadHiveCharResults readHiveCharResults) throws IOExcep LazyBinaryReadHiveCharResults lazyBinaryReadHiveCharResults = (LazyBinaryReadHiveCharResults) readHiveCharResults; if (!lazyBinaryReadHiveCharResults.isInit()) { - lazyBinaryReadHiveCharResults.init((CharTypeInfo) primitiveTypeInfos[fieldIndex]); + lazyBinaryReadHiveCharResults.init((CharTypeInfo) typeInfos[fieldIndex]); } if (lazyBinaryReadHiveCharResults.readStringResults == null) { @@ -560,7 +561,7 @@ public void readHiveVarchar(ReadHiveVarcharResults readHiveVarcharResults) throw LazyBinaryReadHiveVarcharResults lazyBinaryReadHiveVarcharResults = (LazyBinaryReadHiveVarcharResults) readHiveVarcharResults; if (!lazyBinaryReadHiveVarcharResults.isInit()) { - lazyBinaryReadHiveVarcharResults.init((VarcharTypeInfo) primitiveTypeInfos[fieldIndex]); + lazyBinaryReadHiveVarcharResults.init((VarcharTypeInfo) typeInfos[fieldIndex]); } if (lazyBinaryReadHiveVarcharResults.readStringResults == null) { @@ -917,7 +918,7 @@ private boolean earlyReadHiveDecimal() throws EOFException { LazyBinarySerDe.setFromBytes(bytes, saveStart, length, tempHiveDecimalWritable); - saveDecimalTypeInfo = (DecimalTypeInfo) primitiveTypeInfos[fieldIndex]; + saveDecimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex]; int precision = saveDecimalTypeInfo.getPrecision(); int scale = saveDecimalTypeInfo.getScale(); diff --git storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java index d69cf6b..f2fb7de 100644 --- storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java +++ storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java @@ -36,7 +36,8 @@ /* * The current kinds of column vectors. */ - public enum Type { + public static enum Type { + NONE, LONG, DOUBLE, BYTES,