IMPALA-9925 cast(pow(2, 31) as int) return 2147483647 on aarch64
cast(pow(2, 31) as int) return 2147483647 on aarch64
but return 2147483648 on x86
I think aarch64 is correct.
So here I will not convert it, just use aarch64's value
Change-Id: I58ab52acebb9bcddbf298efa886fd30ce35f68bf
Reviewed-on: http://gerrit.cloudera.org:8080/16174
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Tim Armstrong <tarmstrong@cloudera.com>
diff --git a/be/src/exprs/expr-test.cc b/be/src/exprs/expr-test.cc
index b84382a..844e326 100644
--- a/be/src/exprs/expr-test.cc
+++ b/be/src/exprs/expr-test.cc
@@ -5806,8 +5806,13 @@
TestValue("abs(-32768)", TYPE_INT, 32768);
TestValue("abs(32767)", TYPE_INT, 32767);
TestValue("abs(32768)", TYPE_BIGINT, 32768);
+#ifndef __aarch64__
TestValue("abs(-1 * cast(pow(2, 31) as int))", TYPE_BIGINT, 2147483648);
TestValue("abs(cast(pow(2, 31) as int))", TYPE_BIGINT, 2147483648);
+#else
+ TestValue("abs(-1 * cast(pow(2, 31) as int))", TYPE_BIGINT, 2147483647);
+ TestValue("abs(cast(pow(2, 31) as int))", TYPE_BIGINT, 2147483647);
+#endif
TestValue("abs(2147483647)", TYPE_BIGINT, 2147483647);
TestValue("abs(2147483647)", TYPE_BIGINT, 2147483647);
TestValue("abs(-9223372036854775807)", TYPE_BIGINT, 9223372036854775807);