You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ji...@apache.org on 2014/03/09 17:57:56 UTC
svn commit: r1575727 - in /hive/trunk:
common/src/java/org/apache/hadoop/hive/common/type/
common/src/test/org/apache/hadoop/hive/common/type/
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressi...
Author: jitendra
Date: Sun Mar 9 16:57:56 2014
New Revision: 1575727
URL: http://svn.apache.org/r1575727
Log:
HIVE-6531 : Runtime errors in vectorized execution (jitendra)
Modified:
hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java
hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java
hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
hive/trunk/ql/src/test/queries/clientpositive/vector_decimal_expressions.q
hive/trunk/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
Modified: hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java
URL: http://svn.apache.org/viewvc/hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java (original)
+++ hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java Sun Mar 9 16:57:56 2014
@@ -90,7 +90,7 @@ public final class Decimal128 extends Nu
* @serial
* @see #getUnscaledValue()
*/
- private final UnsignedInt128 unscaledValue;
+ private UnsignedInt128 unscaledValue;
/**
* The scale of this Decimal128, as returned by {@link #getScale()}. Unlike
@@ -742,8 +742,7 @@ public final class Decimal128 extends Nu
/**
* Serializes the value in a format compatible with the BigDecimal's own representation
- * @param bytes
- * @param offset
+ * @param scratch
*/
public int fastSerializeForHiveDecimal( Decimal128FastBuffer scratch) {
return this.unscaledValue.fastSerializeForHiveDecimal(scratch, this.signum);
@@ -1513,7 +1512,7 @@ public final class Decimal128 extends Nu
cmp = this.unscaledValue.compareToScaleTen(val.unscaledValue,
(short) (this.scale - val.scale));
} else {
- cmp = val.unscaledValue.compareToScaleTen(this.unscaledValue,
+ cmp = - val.unscaledValue.compareToScaleTen(this.unscaledValue,
(short) (val.scale - this.scale));
}
return cmp * this.signum;
@@ -1899,5 +1898,26 @@ public final class Decimal128 extends Nu
return this;
}
+
+ /**
+ * This setter is only for de-serialization, should not be used otherwise.
+ */
+ public void setUnscaledValue(UnsignedInt128 unscaledValue) {
+ this.unscaledValue = unscaledValue;
+ }
+
+ /**
+ * This setter is only for de-serialization, should not be used otherwise.
+ */
+ public void setScale(short scale) {
+ this.scale = scale;
+ }
+
+ /**
+ * This setter is only for de-serialization, should not be used otherwise.
+ */
+ public void setSignum(byte signum) {
+ this.signum = signum;
+ }
}
Modified: hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java
URL: http://svn.apache.org/viewvc/hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java (original)
+++ hive/trunk/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java Sun Mar 9 16:57:56 2014
@@ -15,6 +15,7 @@
*/
package org.apache.hadoop.hive.common.type;
+import java.io.Serializable;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
@@ -35,7 +36,7 @@ import org.apache.hive.common.util.Decim
* SQL (e.g., exact POWER/SQRT).</li>
* </ul>
*/
-public final class UnsignedInt128 implements Comparable<UnsignedInt128> {
+public final class UnsignedInt128 implements Comparable<UnsignedInt128>, Serializable {
/** Number of ints to store this object. */
public static final int INT_COUNT = 4;
@@ -61,7 +62,7 @@ public final class UnsignedInt128 implem
* Int32 elements as little-endian (v[0] is least significant) unsigned
* integers.
*/
- private final int[] v = new int[INT_COUNT];
+ private int[] v = new int[INT_COUNT];
/**
* Number of leading non-zero elements in {@link #v}. For example, if the
@@ -70,7 +71,7 @@ public final class UnsignedInt128 implem
*
* @see #updateCount()
*/
- private transient byte count;
+ private byte count;
/**
* Determines the number of ints to store one value.
@@ -2418,7 +2419,7 @@ public final class UnsignedInt128 implem
}
}
- /** Updates the value of {@link #cnt} by checking {@link #v}. */
+ /** Updates the value of {@link #count} by checking {@link #v}. */
private void updateCount() {
if (v[3] != 0) {
this.count = (byte) 4;
@@ -2634,4 +2635,30 @@ public final class UnsignedInt128 implem
}
return value;
}
+
+ public int[] getV() {
+ return v;
+ }
+
+ /**
+ * This setter is only for de-serialization, should not be used otherwise.
+ */
+ public void setV(int [] v) {
+ this.v[0] = v[0];
+ this.v[1] = v[1];
+ this.v[2] = v[2];
+ this.v[3] = v[3];
+ updateCount();
+ }
+
+ public byte getCount() {
+ return count;
+ }
+
+ /**
+ * This setter is only for de-serialization, should not be used otherwise.
+ */
+ public void setCount(byte count) {
+ this.count = count;
+ }
}
Modified: hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java
URL: http://svn.apache.org/viewvc/hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java (original)
+++ hive/trunk/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java Sun Mar 9 16:57:56 2014
@@ -119,6 +119,16 @@ public class TestDecimal128 {
Decimal128 d3 = new Decimal128(2.0d / 3.0d, (short) 5);
Decimal128 d4 = new Decimal128(2.0d / 3.0d, (short) 8);
assertTrue(d3.compareTo(d4) != 0);
+
+ Decimal128 d5 = new Decimal128(12, (short) 5);
+ Decimal128 d6 = new Decimal128(15, (short) 7);
+ assertTrue(d5.compareTo(d6) < 0);
+ assertTrue(d6.compareTo(d5) > 0);
+
+ Decimal128 d7 = new Decimal128(15, (short) 5);
+ Decimal128 d8 = new Decimal128(12, (short) 7);
+ assertTrue(d7.compareTo(d8) > 0);
+ assertTrue(d8.compareTo(d7) < 0);
}
@Test
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java Sun Mar 9 16:57:56 2014
@@ -20,7 +20,9 @@ package org.apache.hadoop.hive.ql.exec.v
import java.io.IOException;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter;
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
@@ -43,6 +45,10 @@ public class VectorFileSinkOperator exte
private static final long serialVersionUID = 1L;
+ protected transient Object[] singleRow;
+
+ protected transient VectorExpressionWriter[] valueWriters;
+
public VectorFileSinkOperator(VectorizationContext context,
OperatorDesc conf) {
super();
@@ -54,35 +60,44 @@ public class VectorFileSinkOperator exte
}
@Override
+ protected void initializeOp(Configuration hconf) throws HiveException {
+ super.initializeOp(hconf);
+ valueWriters = VectorExpressionWriterFactory.getExpressionWriters(
+ (StructObjectInspector) inputObjInspectors[0]);
+ singleRow = new Object[valueWriters.length];
+ }
+
+ @Override
public void processOp(Object data, int tag) throws HiveException {
VectorizedRowBatch vrg = (VectorizedRowBatch)data;
Writable [] records = null;
boolean vectorizedSerde = false;
- int outputIterations = 1;
try {
if (serializer instanceof VectorizedSerde) {
recordValue = ((VectorizedSerde) serializer).serializeVector(vrg,
inputObjInspectors[0]);
records = (Writable[]) ((ObjectWritable) recordValue).get();
vectorizedSerde = true;
- outputIterations = vrg.size;
}
} catch (SerDeException e1) {
throw new HiveException(e1);
}
- for (int i = 0; i < outputIterations; i++) {
+ for (int i = 0; i < vrg.size; i++) {
Writable row = null;
if (vectorizedSerde) {
row = records[i];
} else {
if (vrg.valueWriters == null) {
- vrg.setValueWriters(VectorExpressionWriterFactory.getExpressionWriters(
- (StructObjectInspector)inputObjInspectors[0]));
+ vrg.setValueWriters(this.valueWriters);
+ }
+ try {
+ row = serializer.serialize(getRowObject(vrg, i), inputObjInspectors[0]);
+ } catch (SerDeException ex) {
+ throw new HiveException(ex);
}
- row = new Text(vrg.toString());
}
/* Create list bucketing sub-directory only if stored-as-directories is on. */
String lbDirName = null;
@@ -159,4 +174,17 @@ public class VectorFileSinkOperator exte
}
}
}
+
+ private Object[] getRowObject(VectorizedRowBatch vrg, int rowIndex)
+ throws HiveException {
+ int batchIndex = rowIndex;
+ if (vrg.selectedInUse) {
+ batchIndex = vrg.selected[rowIndex];
+ }
+ for (int i = 0; i < vrg.projectionSize; i++) {
+ ColumnVector vectorColumn = vrg.cols[vrg.projectedColumns[i]];
+ singleRow[i] = vrg.valueWriters[i].writeValue(vectorColumn, batchIndex);
+ }
+ return singleRow;
+ }
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java Sun Mar 9 16:57:56 2014
@@ -1045,7 +1045,7 @@ public final class VectorExpressionWrite
@Override
public Object writeValue(ColumnVector column, int row)
throws HiveException {
- throw new HiveException("Should never reach here");
+ return baseWriter.writeValue(column, row);
}
@Override
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java Sun Mar 9 16:57:56 2014
@@ -647,7 +647,7 @@ public class Vectorizer implements Physi
boolean ret = validateDataType(typeName);
if (!ret) {
if (LOG.isDebugEnabled()) {
- LOG.debug("Cannot vectorize " + desc.getExprString() + " of type " + typeName);
+ LOG.debug("Cannot vectorize " + desc.toString() + " of type " + typeName);
}
return false;
}
Modified: hive/trunk/ql/src/test/queries/clientpositive/vector_decimal_expressions.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/vector_decimal_expressions.q?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/vector_decimal_expressions.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/vector_decimal_expressions.q Sun Mar 9 16:57:56 2014
@@ -1,4 +1,5 @@
CREATE TABLE decimal_test STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc;
SET hive.vectorized.execution.enabled=true;
-EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)) from decimal_test where cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdouble IS NOT NULL LIMIT 10;
-SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)) from decimal_test where cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdouble IS NOT NULL LIMIT 10;
+EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10;
+
+SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10;
Modified: hive/trunk/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out?rev=1575727&r1=1575726&r2=1575727&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out Sun Mar 9 16:57:56 2014
@@ -5,9 +5,9 @@ POSTHOOK: query: CREATE TABLE decimal_te
POSTHOOK: type: CREATETABLE_AS_SELECT
POSTHOOK: Input: default@alltypesorc
POSTHOOK: Output: default@decimal_test
-PREHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)) from decimal_test where cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdouble IS NOT NULL LIMIT 10
+PREHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10
PREHOOK: type: QUERY
-POSTHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)) from decimal_test where cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdouble IS NOT NULL LIMIT 10
+POSTHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10
POSTHOOK: type: QUERY
STAGE DEPENDENCIES:
Stage-1 is a root stage
@@ -21,12 +21,12 @@ STAGE PLANS:
alias: decimal_test
Statistics: Num rows: 12288 Data size: 2128368 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: ((((cdecimal1 > 0) and (cdecimal1 < 12345.5678)) and (cdecimal2 <> 0)) and cdouble is not null) (type: boolean)
- Statistics: Num rows: 683 Data size: 118300 Basic stats: COMPLETE Column stats: NONE
+ predicate: (((((cdecimal1 > 0) and (cdecimal1 < 12345.5678)) and (cdecimal2 <> 0)) and (cdecimal2 > 1000)) and cdouble is not null) (type: boolean)
+ Statistics: Num rows: 228 Data size: 39491 Basic stats: COMPLETE Column stats: NONE
Select Operator
- expressions: (cdecimal1 + cdecimal2) (type: decimal(25,14)), (cdecimal1 - (2 * cdecimal2)) (type: decimal(26,14)), ((cdecimal1 + 2.34) / cdecimal2) (type: double), (cdecimal1 * (cdecimal2 / 3.4)) (type: double)
- outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 683 Data size: 118300 Basic stats: COMPLETE Column stats: NONE
+ expressions: (cdecimal1 + cdecimal2) (type: decimal(25,14)), (cdecimal1 - (2 * cdecimal2)) (type: decimal(26,14)), ((cdecimal1 + 2.34) / cdecimal2) (type: double), (cdecimal1 * (cdecimal2 / 3.4)) (type: double), (cdecimal1 % 10) (type: decimal(12,10)), UDFToInteger(cdecimal1) (type: int), UDFToShort(cdecimal2) (type: smallint), UDFToByte(cdecimal2) (type: tinyint), UDFToLong(cdecimal1) (type: bigint), UDFToBoolean(cdecimal1) (type: boolean), UDFToDouble(cdecimal2) (type: double), UDFToFloat(cdecimal1) (type: float)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+ Statistics: Num rows: 228 Data size: 39491 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 10
Statistics: Num rows: 10 Data size: 1730 Basic stats: COMPLETE Column stats: NONE
@@ -43,21 +43,21 @@ STAGE PLANS:
Fetch Operator
limit: 10
-PREHOOK: query: SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)) from decimal_test where cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdouble IS NOT NULL LIMIT 10
+PREHOOK: query: SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10
PREHOOK: type: QUERY
PREHOOK: Input: default@decimal_test
#### A masked pattern was here ####
-POSTHOOK: query: SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)) from decimal_test where cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdouble IS NOT NULL LIMIT 10
+POSTHOOK: query: SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_test
#### A masked pattern was here ####
-19699.417463617423 -12507.913305613346 0.8351496686995997 2.8303425077026896E7
-9216.339708939685 -5851.80644490647 0.8353975893550668 6195112.1797296945
-6514.8403326403464 -4136.5212058211928 0.8355907765708067 3095563.9418919063
-7587.301455301477 -4817.467775467754 0.8354976172734904 4198623.24324327
-19197.972972973 -12189.527027027 0.835155361813429 2.6880848817567654E7
-17098.9945945946 -10856.8054054054 0.8351828165813104 2.132423090270272E7
-12433.723076923077 -7894.646153846154 0.8352770361086894 1.12754688E7
-13.12681912684615 -8.3347193346923 1.162028480096775 12.567567567624428
-7247.316839916862 -4601.598544698524 0.8355241651897876 3830775.6932432684
-14757.1700623700465 -9369.891476091493 0.8352226654922171 1.5883214124324286E7
+19699.417463617423 -12507.913305613346 0.8351496686995997 2.8303425077026896E7 3.6405405405 8963 10735 -17 8963 true 10735.776923076923 8963.641
+9216.339708939685 -5851.80644490647 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245
+6514.8403326403464 -4136.5212058211928 0.8355907765708067 3095563.9418919063 4.3864864865 2964 3550 -34 2964 true 3550.4538461538464 2964.3865
+7587.301455301477 -4817.467775467754 0.8354976172734904 4198623.24324327 2.3783783784 3452 4134 38 3452 true 4134.923076923077 3452.3784
+19197.972972973 -12189.527027027 0.835155361813429 2.6880848817567654E7 5.472972973 8735 10462 -34 8735 true 10462.5 8735.473
+17098.9945945946 -10856.8054054054 0.8351828165813104 2.132423090270272E7 0.3945945946 7780 9318 102 7780 true 9318.6 7780.3945
+12433.723076923077 -7894.646153846154 0.8352770361086894 1.12754688E7 7.6 5657 6776 120 5657 true 6776.123076923077 5657.6
+7247.316839916862 -4601.598544698524 0.8355241651897876 3830775.6932432684 7.6783783784 3297 3949 109 3297 true 3949.638461538462 3297.6785
+14757.1700623700465 -9369.891476091493 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164
+10964.832016631993 -6961.991060291086 0.8353232978714221 8768719.779729689 9.2243243243 4989 5975 87 4989 true 5975.607692307693 4989.224