Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
Impala 1.4
-
None
Description
Stack:
F0506 11:30:19.679318 8757 decimal-operators.cc:457] Check failed: c1->type().type == TYPE_DECIMAL (1 vs. 14) *** Check failure stack trace: *** @ 0x1dad01d google::LogMessage::Fail() @ 0x1daf7bf google::LogMessage::SendToLog() @ 0x1dacc0b google::LogMessage::Flush() @ 0x1db004d google::LogMessageFatal::~LogMessageFatal() @ 0x10d162a impala::DecimalOperators::Subtract_decimal_decimal() @ 0xddeb8f impala::Expr::GetValue() @ 0x10d0fe1 impala::DecimalOperators::Add_decimal_decimal() @ 0xddeb8f impala::Expr::GetValue() @ 0x108128f impala::IsNullPredicate::ComputeFn() @ 0xddeb8f impala::Expr::GetValue() @ 0x107120d impala::Expr::GetValue() @ 0xe965aa Java_com_cloudera_impala_service_FeSupport_NativeEvalConstExpr @ 0x7f10c9c7deee (unknown)
Log:
I0506 11:30:19.670850 8757 InlineViewRef.java:130] inline view t2 smap: smap(t2.string_col_1:CAST(t1.boolean_col_2 AS STRING) (SlotRef{tblName=null, col=string_col_1, id=36}:SlotRef{tblName=null, col=null, id=6}) t2.string_col_2:CAST(t1.boolean_col_2 AS STRING) (SlotRef{tblName=null, col=string_col_2, id=37}:SlotRef{tblName=null, col=null, id=6}) t2.float_col_3:sum(t1.float_col_4 * t1.smallint_col_3) - count(t1.float_col_5 <= t1.float_col_4 AND t1.boolean_col_2) + sum(length(t1.string_col_1) - t1.float_col_5) (SlotRef{tblName=null, col=float_col_3, id=38}:ArithmeticExpr{op=+, (ArithmeticExpr{op=-, (SlotRef{tblName=null, col=null, id=7} CastExpr{isImplicit=true, target=DECIMAL(20,0), (SlotRef{tblName=null, col=null, id=8})})} SlotRef{tblName=null, col=null, id=9})})) I0506 11:30:19.671095 8757 InlineViewRef.java:131] inline view t2 baseTblSmap: smap(t2.string_col_1:CAST(t1.boolean_col_2 AS STRING) (SlotRef{tblName=null, col=string_col_1, id=36}:SlotRef{tblName=null, col=null, id=6}) t2.string_col_2:CAST(t1.boolean_col_2 AS STRING) (SlotRef{tblName=null, col=string_col_2, id=37}:SlotRef{tblName=null, col=null, id=6}) t2.float_col_3:sum(t1.float_col_4 * t1.smallint_col_3) - count(t1.float_col_5 <= t1.float_col_4 AND t1.boolean_col_2) + sum(length(t1.string_col_1) - t1.float_col_5) (SlotRef{tblName=null, col=float_col_3, id=38}:ArithmeticExpr{op=+, (ArithmeticExpr{op=-, (SlotRef{tblName=null, col=null, id=7} CastExpr{isImplicit=true, target=DECIMAL(20,0), (SlotRef{tblName=null, col=null, id=8})})} SlotRef{tblName=null, col=null, id=9})})) F0506 11:30:19.679318 8757 decimal-operators.cc:457] Check failed: c1->type().type == TYPE_DECIMAL (1 vs. 14)
be/src/exprs/decimal-operators.cc
340 #define DECIMAL_ARITHMETIC_OP(FN_NAME, OP_FN) \ 341 void* DecimalOperators::FN_NAME(Expr* e, TupleRow* row) {\ 342 DCHECK_EQ(e->GetNumChildren(), 2);\ 343 Expr* c1 = e->GetChild(0);\ 344 Expr* c2 = e->GetChild(1);\ 345 void* x = c1->GetValue(row);\ 346 void* y = c2->GetValue(row);\ 347 DCHECK_EQ(c1->type().type, TYPE_DECIMAL);\ 348 DCHECK_EQ(c2->type().type, TYPE_DECIMAL);\ 349 if (x == NULL || y == NULL) return NULL;\ . . . 457 DECIMAL_ARITHMETIC_OP(Subtract_decimal_decimal, Subtract)
This query's technically illegal, since we don't have support for floor/ceil yet, but that wasn't why we hit the dcheck. One of these casts is messed up.
Raw query (I'll try to find the minimal reproduction, but no luck yet):
explain SELECT COUNT(t3.float_col_5 <= t2.float_col_3 * t1.float_col_5 AND t4.boolean_col_2) AS int_col_1 FROM table_1 AS t1 LEFT JOIN (SELECT CAST(t1.boolean_col_2 AS STRING) AS string_col_1, CAST(t1.boolean_col_2 AS STRING) AS string_col_2, SUM(t1.float_col_4 * t1.smallint_col_3) - COUNT(t1.float_col_5 <= t1.float_col_4 AND t1.boolean_col_2) + SUM(LENGTH(t1.string_col_1) - t1.float_col_5) AS float_col_3 FROM table_1 AS t1 GROUP BY CAST(t1.boolean_col_2 AS STRING), CAST(t1.boolean_col_2 AS STRING) HAVING MIN(t1.double_col_6 + t1.double_col_6 - t1.float_col_5) IS NULL AND COUNT(t1.string_col_1) + SUM(t1.smallint_col_3) IS NULL AND COUNT(t1.float_col_4 * t1.smallint_col_3 + LENGTH(t1.string_col_1) - CAST(t1.boolean_col_2 AS DOUBLE)) + COUNT(t1.double_col_6 * t1.smallint_col_3 - CAST(t1.boolean_col_2 AS DOUBLE) + t1.float_col_5) - COUNT(t1.float_col_5) + COUNT(CAST(FLOOR(t1.double_col_6 + t1.float_col_5) AS STRING)) + COUNT(t1.boolean_col_2 AND t1.float_col_4 IS NULL) - SUM(t1.smallint_col_3 - t1.float_col_4) + MAX(t1.double_col_6 - LENGTH(t1.string_col_1)) IS NULL AND COUNT(LENGTH(t1.string_col_1) + CAST(t1.boolean_col_2 AS INT) + t1.smallint_col_3) != COUNT(t1.double_col_6 * t1.double_col_6 * t1.double_col_6 + t1.float_col_4 + t1.smallint_col_3 - CAST(t1.boolean_col_2 AND t1.boolean_col_2 AS INT)) AND COUNT(t1.string_col_1) IS NOT NULL AND COUNT(t1.boolean_col_2) - MIN(CAST(t1.boolean_col_2 AS DOUBLE) + t1.double_col_6 * t1.double_col_6) + SUM(t1.double_col_6) != MIN(t1.float_col_4 + t1.float_col_4 * CAST(t1.boolean_col_2 AS DOUBLE)) * AVG(t1.double_col_6 * t1.float_col_5 - LENGTH(t1.string_col_1)) AND COUNT(t1.boolean_col_2 AND t1.double_col_6 < t1.float_col_5) + AVG(t1.float_col_5) IS NULL AND COUNT(t1.string_col_1) + COUNT(t1.string_col_1) - COUNT(t1.boolean_col_2) - COUNT(t1.string_col_1) IS NOT NULL AND COUNT(t1.string_col_1) * MIN(t1.float_col_4) + MIN(t1.smallint_col_3 * CAST(t1.boolean_col_2 AS DOUBLE) - t1.float_col_5) - AVG(t1.float_col_5 + t1.smallint_col_3 - t1.double_col_6 * t1.float_col_5 + t1.float_col_5) >= COUNT(t1.boolean_col_2) - MIN(t1.smallint_col_3 - t1.double_col_6) * SUM(t1.float_col_4 + t1.double_col_6)) AS t2 ON t2.float_col_3 = t1.double_col_6 AND t2.float_col_3 = t1.float_col_4 INNER JOIN table_1 AS t3 ON t3.string_col_1 = t2.string_col_2 LEFT JOIN table_1 AS t4 ON t4.float_col_5 = t3.float_col_4 AND t4.boolean_col_2 = t1.boolean_col_2 WHERE t1.string_col_1 IS NULL AND t4.string_col_1 IS NULL AND t2.string_col_1 IS NOT NULL AND t3.smallint_col_3 IS NULL AND t2.string_col_2 IS NOT NULL AND t4.smallint_col_3 + t3.smallint_col_3 > t3.smallint_col_3 * t3.smallint_col_3;