IMPALA-4810: add DECIMAL test case to strict_mode tests

The string parsing code already errors if the decimal column either
overflows or underflows (i.e. loses scale). Let's just add a test
case.

Change-Id: Idd66c0fb5a4d201919d39f73dea08b87339d6469
Reviewed-on: http://gerrit.cloudera.org:8080/6150
Reviewed-by: Dan Hecht <[email protected]>
Tested-by: Impala Public Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/bf2e8972
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/bf2e8972
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/bf2e8972

Branch: refs/heads/master
Commit: bf2e897209f1672073380665f84a4209be04b349
Parents: 3a2a380
Author: Dan Hecht <[email protected]>
Authored: Fri Feb 24 14:54:32 2017 -0800
Committer: Impala Public Jenkins <[email protected]>
Committed: Fri Mar 3 01:43:42 2017 +0000

----------------------------------------------------------------------
 testdata/data/overflow.txt                           |  6 +++---
 .../functional/functional_schema_template.sql        |  3 +++
 .../functional-query/queries/QueryTest/overflow.test |  6 ++++--
 .../queries/QueryTest/strict-mode-abort.test         | 15 +++++++++++++++
 .../queries/QueryTest/strict-mode.test               | 14 ++++++++++----
 5 files changed, 35 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/bf2e8972/testdata/data/overflow.txt
----------------------------------------------------------------------
diff --git a/testdata/data/overflow.txt b/testdata/data/overflow.txt
index ded5d49..5186f2c 100644
--- a/testdata/data/overflow.txt
+++ b/testdata/data/overflow.txt
@@ -1,3 +1,3 @@
-1,2,3,4,5.5,6.6
-1000,100000,10000000000000000,10000000000000000000,1e1000000,1e10000
--1000,-100000,-10000000000000000,-10000000000000000000,-1e1000000,-1e10000
+1,2,3,4,5.5,6.6,123456789.1234,99999999999999999999999999999999999999,0.00000000000000000000000000000000000001
+1000,100000,10000000000000000,10000000000000000000,1e1000000,1e10000,1234567890.1234,100000000000000000000000000000000000000,0.000000000000000000000000000000000000009
+-1000,-100000,-10000000000000000,-10000000000000000000,-1e1000000,-1e10000,-123456789.12341,-100000000000000000000000000000000000000,-0.000000000000000000000000000000000000009

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/bf2e8972/testdata/datasets/functional/functional_schema_template.sql
----------------------------------------------------------------------
diff --git a/testdata/datasets/functional/functional_schema_template.sql 
b/testdata/datasets/functional/functional_schema_template.sql
index 97b40f4..1aacf43 100644
--- a/testdata/datasets/functional/functional_schema_template.sql
+++ b/testdata/datasets/functional/functional_schema_template.sql
@@ -1078,6 +1078,9 @@ int_col int
 bigint_col bigint
 float_col float
 double_col double
+decimal0_col DECIMAL(13,4)
+decimal1_col DECIMAL(38,0)
+decimal2_col DECIMAL(38,38)
 ---- ROW_FORMAT
 delimited fields terminated by ','  escaped by '\\'
 ---- LOAD

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/bf2e8972/testdata/workloads/functional-query/queries/QueryTest/overflow.test
----------------------------------------------------------------------
diff --git 
a/testdata/workloads/functional-query/queries/QueryTest/overflow.test 
b/testdata/workloads/functional-query/queries/QueryTest/overflow.test
index 075a4f6..0ce1157 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/overflow.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/overflow.test
@@ -1,7 +1,9 @@
 ====
 ---- QUERY
-# Tests overflow
-select * from Overflow
+# Tests overflow. Note that decimal columns produce error on overflow
+# even without --strict_mode, so we don't select the decimal columns in
+# this test case.
+select tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col 
from Overflow
 ---- TYPES
 tinyint, smallint, int, bigint, float, double
 ---- RESULTS

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/bf2e8972/testdata/workloads/functional-query/queries/QueryTest/strict-mode-abort.test
----------------------------------------------------------------------
diff --git 
a/testdata/workloads/functional-query/queries/QueryTest/strict-mode-abort.test 
b/testdata/workloads/functional-query/queries/QueryTest/strict-mode-abort.test
index 808346f..eb5e82e 100644
--- 
a/testdata/workloads/functional-query/queries/QueryTest/strict-mode-abort.test
+++ 
b/testdata/workloads/functional-query/queries/QueryTest/strict-mode-abort.test
@@ -29,3 +29,18 @@ select double_col from overflow
 ---- CATCH
 Error converting column: 5 to DOUBLE
 ====
+---- QUERY
+select decimal0_col from overflow
+---- CATCH
+Error converting column: 6 to DECIMAL
+====
+---- QUERY
+select decimal1_col from overflow
+---- CATCH
+Error converting column: 7 to DECIMAL
+====
+---- QUERY
+select decimal2_col from overflow
+---- CATCH
+Error converting column: 8 to DECIMAL
+====

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/bf2e8972/testdata/workloads/functional-query/queries/QueryTest/strict-mode.test
----------------------------------------------------------------------
diff --git 
a/testdata/workloads/functional-query/queries/QueryTest/strict-mode.test 
b/testdata/workloads/functional-query/queries/QueryTest/strict-mode.test
index b70c272..27f6fc3 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/strict-mode.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/strict-mode.test
@@ -8,6 +8,9 @@ Error converting column: 2 to INT
 Error converting column: 3 to BIGINT
 Error converting column: 4 to FLOAT
 Error converting column: 5 to DOUBLE
+Error converting column: 6 to DECIMAL(13,4)
+Error converting column: 7 to DECIMAL(38,0)
+Error converting column: 8 to DECIMAL(38,38)
 row_regex: .*Error parsing row: file: $NAMENODE/.* before offset: \d+
 Error converting column: 0 to TINYINT
 Error converting column: 1 to SMALLINT
@@ -15,11 +18,14 @@ Error converting column: 2 to INT
 Error converting column: 3 to BIGINT
 Error converting column: 4 to FLOAT
 Error converting column: 5 to DOUBLE
+Error converting column: 6 to DECIMAL(13,4)
+Error converting column: 7 to DECIMAL(38,0)
+Error converting column: 8 to DECIMAL(38,38)
 row_regex: .*Error parsing row: file: $NAMENODE/.* before offset: \d+
 ---- RESULTS
-1,2,3,4,5.5,6.6
-NULL,NULL,NULL,NULL,NULL,NULL
-NULL,NULL,NULL,NULL,NULL,NULL
+1,2,3,4,5.5,6.6,123456789.1234,99999999999999999999999999999999999999,0.00000000000000000000000000000000000001
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
 ---- TYPES
-tinyint, smallint, int, bigint, float, double
+tinyint, smallint, int, bigint, float, double, decimal, decimal, decimal
 ====

Reply via email to