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/12 20:06:25 UTC
svn commit: r1576861 - in /hive/branches/branch-0.13:
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/expressions/
ql/src/test/org/apache/hadoop/h...
Author: jitendra
Date: Wed Mar 12 19:06:25 2014
New Revision: 1576861
URL: http://svn.apache.org/r1576861
Log:
HIVE-6568: Vectorized cast of decimal to string and timestamp produces incorrect result (jitendra reviewed by Eric Hanson)
Modified:
hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java
hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java
hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java
hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestUnsignedInt128.java
hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java
hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java
hive/branches/branch-0.13/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java
hive/branches/branch-0.13/ql/src/test/queries/clientpositive/vector_decimal_expressions.q
hive/branches/branch-0.13/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
Modified: hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java (original)
+++ hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java Wed Mar 12 19:06:25 2014
@@ -1725,6 +1725,67 @@ public final class Decimal128 extends Nu
}
/**
+ * Temporary array used in {@link #getHiveDecimalString}
+ */
+ private int [] tmpArray = new int[2];
+
+ /**
+ * Returns the string representation of this value. It discards the trailing zeros
+ * in the fractional part to match the HiveDecimal's string representation. However,
+ * don't use this string representation for the reconstruction of the object.
+ *
+ * @return string representation of this value
+ */
+ public String getHiveDecimalString() {
+ if (this.signum == 0) {
+ return "0";
+ }
+
+ StringBuilder buf = new StringBuilder(50);
+ if (this.signum < 0) {
+ buf.append('-');
+ }
+
+ char [] unscaled = this.unscaledValue.getDigitsArray(tmpArray);
+ int unscaledLength = tmpArray[0];
+ int trailingZeros = tmpArray[1];
+ int numIntegerDigits = unscaledLength - this.scale;
+ if (numIntegerDigits > 0) {
+
+ // write out integer part first
+ // then write out fractional part
+ for (int i=0; i < numIntegerDigits; i++) {
+ buf.append(unscaled[i]);
+ }
+
+ if (this.scale > trailingZeros) {
+ buf.append('.');
+ for (int i = numIntegerDigits; i < (unscaledLength - trailingZeros); i++) {
+ buf.append(unscaled[i]);
+ }
+ }
+ } else {
+
+ // no integer part
+ buf.append('0');
+
+ if (this.scale > trailingZeros) {
+
+ // fractional part has, starting with zeros
+ buf.append('.');
+ for (int i = unscaledLength; i < this.scale; ++i) {
+ buf.append('0');
+ }
+ for (int i = 0; i < (unscaledLength - trailingZeros); i++) {
+ buf.append(unscaled[i]);
+ }
+ }
+ }
+
+ return new String(buf);
+ }
+
+ /**
* Returns the formal string representation of this value. Unlike the debug
* string returned by {@link #toString()}, this method returns a string that
* can be used to re-construct this object. Remember, toString() is only for
Modified: hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java (original)
+++ hive/branches/branch-0.13/common/src/java/org/apache/hadoop/hive/common/type/UnsignedInt128.java Wed Mar 12 19:06:25 2014
@@ -982,6 +982,63 @@ public final class UnsignedInt128 implem
}
}
+ /**
+ * Similar to {@link #toFormalString()} but returns an array of digits
+ * instead of string. The length of the array and the count of trailing
+ * zeros are returned in the array passed at first and second positions
+ * respectively.
+ * @param meta Array of size two that is populated with length of the returned array
+ * and the count of trailing zeros.
+ * @return Digits of the this value
+ * @throws NullPointerException if meta is null.
+ * @throws ArrayIndexOutOfBoundsException if meta is less than size two.
+ */
+ public char [] getDigitsArray(int [] meta) {
+ char[] buf = new char[MAX_DIGITS + 1];
+ int bufCount = 0;
+ int nonZeroBufCount = 0;
+ int trailingZeros = 0;
+
+ final int tenScale = SqlMathUtil.MAX_POWER_TEN_INT31;
+ final int tenPower = SqlMathUtil.POWER_TENS_INT31[tenScale];
+ UnsignedInt128 tmp = new UnsignedInt128(this);
+
+ while (!tmp.isZero()) {
+ int remainder = tmp.divideDestructive(tenPower);
+ for (int i = 0; i < tenScale && bufCount < buf.length; ++i) {
+ int digit = remainder % 10;
+ remainder /= 10;
+ buf[bufCount] = (char) (digit + '0');
+ ++bufCount;
+ if (digit != 0) {
+ nonZeroBufCount = bufCount;
+ }
+ if (nonZeroBufCount == 0) {
+
+ // Count zeros until first non-zero digit is encountered.
+ trailingZeros++;
+ }
+ }
+ }
+
+ if (bufCount == 0) {
+ meta[0] = 1;
+ meta[1] = 1;
+ buf[0] = '0';
+ return buf;
+ } else {
+ // Reverse in place
+ for (int i = 0, j = nonZeroBufCount - 1; i < j; i++, j--) {
+ char t = buf[i];
+ buf[i] = buf[j];
+ buf[j] = t;
+ }
+ meta[0] = nonZeroBufCount;
+ meta[1] = trailingZeros;
+ return buf;
+ }
+ }
+
@Override
public String toString() {
StringBuilder str = new StringBuilder();
Modified: hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java (original)
+++ hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java Wed Mar 12 19:06:25 2014
@@ -18,7 +18,7 @@ package org.apache.hadoop.hive.common.ty
import static org.junit.Assert.*;
import java.math.BigDecimal;
-import java.math.MathContext;
+import java.math.BigInteger;
import java.math.RoundingMode;
import java.util.Random;
@@ -26,7 +26,6 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.apache.hadoop.hive.common.type.UnsignedInt128;
/**
* This code was originally written for Microsoft PolyBase.
@@ -803,4 +802,56 @@ public class TestDecimal128 {
assertEquals(hd.longValue(), d.longValue());
}
+ @Test
+ public void testToHiveDecimalString() {
+ Decimal128 d1 = new Decimal128("4134.923076923077", (short) 15);
+ assertEquals("4134.923076923077", d1.getHiveDecimalString());
+
+ Decimal128 d2 = new Decimal128("0.00923076923", (short) 15);
+ assertEquals("0.00923076923", d2.getHiveDecimalString());
+
+ Decimal128 d3 = new Decimal128("0.00923076000", (short) 15);
+ assertEquals("0.00923076", d3.getHiveDecimalString());
+
+ Decimal128 d4 = new Decimal128("4294967296.01", (short) 15);
+ assertEquals("4294967296.01", d4.getHiveDecimalString());
+
+ Decimal128 d5 = new Decimal128("4294967296.01", (short) 2);
+ assertEquals("4294967296.01", d5.getHiveDecimalString());
+
+ Decimal128 d6 = new Decimal128();
+ HiveDecimal hd1 = HiveDecimal.create(new BigInteger("42949672"));
+ d6.update(hd1.bigDecimalValue());
+ assertEquals(hd1.toString(), d6.getHiveDecimalString());
+
+ Decimal128 d7 = new Decimal128();
+ HiveDecimal hd2 = HiveDecimal.create(new BigDecimal("0.0"));
+ d7.update(hd2.bigDecimalValue());
+ assertEquals(hd2.toString(), d7.getHiveDecimalString());
+
+ Decimal128 d8 = new Decimal128();
+ HiveDecimal hd3 = HiveDecimal.create(new BigDecimal("0.00023000"));
+ d8.update(hd3.bigDecimalValue());
+ assertEquals(hd3.toString(), d8.getHiveDecimalString());
+
+ Decimal128 d9 = new Decimal128();
+ HiveDecimal hd4 = HiveDecimal.create(new BigDecimal("0.1"));
+ d9.update(hd4.bigDecimalValue());
+ assertEquals(hd4.toString(), d9.getHiveDecimalString());
+
+ Decimal128 d10 = new Decimal128();
+ HiveDecimal hd5 = HiveDecimal.create(new BigDecimal("-00.100"));
+ d10.update(hd5.bigDecimalValue());
+ assertEquals(hd5.toString(), d10.getHiveDecimalString());
+
+ Decimal128 d11 = new Decimal128();
+ HiveDecimal hd6 = HiveDecimal.create(new BigDecimal("00.1"));
+ d11.update(hd6.bigDecimalValue());
+ assertEquals(hd6.toString(), d11.getHiveDecimalString());
+
+ Decimal128 d12 = new Decimal128(27.000, (short)3);
+ HiveDecimal hd7 = HiveDecimal.create(new BigDecimal("27.000"));
+ assertEquals(hd7.toString(), d12.getHiveDecimalString());
+ assertEquals("27", hd7.toString());
+ }
}
Modified: hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestUnsignedInt128.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestUnsignedInt128.java?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestUnsignedInt128.java (original)
+++ hive/branches/branch-0.13/common/src/test/org/apache/hadoop/hive/common/type/TestUnsignedInt128.java Wed Mar 12 19:06:25 2014
@@ -552,8 +552,6 @@ public class TestUnsignedInt128 {
public void testBigIntConversion() {
BigInteger bigInteger = BigInteger.valueOf(0x1ABCDEF0123456L);
UnsignedInt128 uInt128 = new UnsignedInt128(bigInteger);
- System.out.println("Out = "+uInt128.toString());
- System.out.println("Out = "+bigInteger.toString());
assertEquals(bigInteger, uInt128.toBigIntegerSlow());
}
}
Modified: hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java (original)
+++ hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java Wed Mar 12 19:06:25 2014
@@ -38,7 +38,7 @@ public class CastDecimalToString extends
@Override
protected void func(BytesColumnVector outV, DecimalColumnVector inV, int i) {
- String s = inV.vector[i].toFormalString();
+ String s = inV.vector[i].getHiveDecimalString();
byte[] b = null;
try {
b = s.getBytes("UTF-8");
Modified: hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java (original)
+++ hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java Wed Mar 12 19:06:25 2014
@@ -53,7 +53,8 @@ public class CastDecimalToTimestamp exte
@Override
protected void func(LongColumnVector outV, DecimalColumnVector inV, int i) {
tmp.update(inV.vector[i]);
- tmp.multiplyDestructive(tenE9, (short) 0);
+ int newScale = inV.scale > 9 ? (inV.scale - 9) : 0;
+ tmp.multiplyDestructive(tenE9, (short) newScale);
// set output
outV.vector[i] = tmp.longValue();
Modified: hive/branches/branch-0.13/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java (original)
+++ hive/branches/branch-0.13/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java Wed Mar 12 19:06:25 2014
@@ -322,17 +322,17 @@ public class TestVectorTypeCasts {
expr.evaluate(b);
BytesColumnVector r = (BytesColumnVector) b.cols[1];
- byte[] v = toBytes("1.10");
+ byte[] v = toBytes("1.1");
Assert.assertEquals(0,
StringExpr.compare(v, 0, v.length,
r.vector[0], r.start[0], r.length[0]));
- v = toBytes("-2.20");
+ v = toBytes("-2.2");
Assert.assertEquals(0,
StringExpr.compare(v, 0, v.length,
r.vector[1], r.start[1], r.length[1]));
- v = toBytes("9999999999999999.00");
+ v = toBytes("9999999999999999");
Assert.assertEquals(0,
StringExpr.compare(v, 0, v.length,
r.vector[2], r.start[2], r.length[2]));
Modified: hive/branches/branch-0.13/ql/src/test/queries/clientpositive/vector_decimal_expressions.q
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/ql/src/test/queries/clientpositive/vector_decimal_expressions.q?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/ql/src/test/queries/clientpositive/vector_decimal_expressions.q (original)
+++ hive/branches/branch-0.13/ql/src/test/queries/clientpositive/vector_decimal_expressions.q Wed Mar 12 19:06:25 2014
@@ -1,5 +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)), 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;
+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), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) 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;
+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), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) 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/branches/branch-0.13/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out?rev=1576861&r1=1576860&r2=1576861&view=diff
==============================================================================
--- hive/branches/branch-0.13/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out (original)
+++ hive/branches/branch-0.13/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out Wed Mar 12 19:06:25 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)), 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: 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), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) 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)), 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: 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), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) 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
@@ -24,8 +24,8 @@ STAGE PLANS:
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), (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
+ 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), UDFToString(cdecimal2) (type: string), CAST( cdecimal1 AS TIMESTAMP) (type: timestamp)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
Statistics: Num rows: 228 Data size: 39491 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 10
@@ -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)), 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: 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), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) 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)), 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: 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), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) 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 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
+19699.417463617423 -12507.913305613346 0.8351496686995997 2.8303425077026896E7 3.6405405405 8963 10735 -17 8963 true 10735.776923076923 8963.641 10735.776923076923 1969-12-31 18:29:23.64054054
+9216.339708939685 -5851.80644490647 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324
+6514.8403326403464 -4136.5212058211928 0.8355907765708067 3095563.9418919063 4.3864864865 2964 3550 -34 2964 true 3550.4538461538464 2964.3865 3550.4538461538464 1969-12-31 16:49:24.386486486
+7587.301455301477 -4817.467775467754 0.8354976172734904 4198623.24324327 2.3783783784 3452 4134 38 3452 true 4134.923076923077 3452.3784 4134.923076923077 1969-12-31 16:57:32.378378378
+19197.972972973 -12189.527027027 0.835155361813429 2.6880848817567654E7 5.472972973 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973
+17098.9945945946 -10856.8054054054 0.8351828165813104 2.132423090270272E7 0.3945945946 7780 9318 102 7780 true 9318.6 7780.3945 9318.6 1969-12-31 18:09:40.394594594
+12433.723076923077 -7894.646153846154 0.8352770361086894 1.12754688E7 7.6 5657 6776 120 5657 true 6776.123076923077 5657.6 6776.123076923077 1969-12-31 17:34:17.6
+7247.316839916862 -4601.598544698524 0.8355241651897876 3830775.6932432684 7.6783783784 3297 3949 109 3297 true 3949.638461538462 3297.6785 3949.638461538462 1969-12-31 16:54:57.678378378
+14757.1700623700465 -9369.891476091493 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216
+10964.832016631993 -6961.991060291086 0.8353232978714221 8768719.779729689 9.2243243243 4989 5975 87 4989 true 5975.607692307693 4989.224 5975.607692307693 1969-12-31 17:23:09.224324324