HIVE-15974: Support real, double precision and numeric data types (Laszlo Bodor via Zoltan Haindrich)
Signed-off-by: Zoltan Haindrich <k...@rxd.hu> Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/d1185065 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/d1185065 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/d1185065 Branch: refs/heads/master Commit: d118506580b0e3a721cae718b28587bb542f63a8 Parents: cac971b Author: Laszlo Bodor <bodorlaszlo0...@gmail.com> Authored: Thu Jul 12 08:55:00 2018 +0200 Committer: Zoltan Haindrich <k...@rxd.hu> Committed: Thu Jul 12 08:55:00 2018 +0200 ---------------------------------------------------------------------- .../org/apache/hadoop/hive/ql/parse/HiveLexer.g | 1 + .../org/apache/hadoop/hive/ql/parse/HiveParser.g | 3 +++ .../apache/hadoop/hive/ql/parse/IdentifiersParser.g | 3 ++- .../ql/parse/TestSQL11ReservedKeyWordsNegative.java | 13 ++++++++++++- ql/src/test/queries/clientpositive/real.q | 2 ++ ql/src/test/results/clientpositive/real.q.out | 16 ++++++++++++++++ 6 files changed, 36 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/d1185065/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g index 43ad7dd..7a63cc4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g @@ -126,6 +126,7 @@ KW_SMALLINT: 'SMALLINT'; KW_INT: 'INT' | 'INTEGER'; KW_BIGINT: 'BIGINT'; KW_FLOAT: 'FLOAT'; +KW_REAL: 'REAL'; KW_DOUBLE: 'DOUBLE'; KW_PRECISION: 'PRECISION'; KW_DATE: 'DATE'; http://git-wip-us.apache.org/repos/asf/hive/blob/d1185065/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 324c804..75a25d5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -123,6 +123,7 @@ TOK_INT; TOK_BIGINT; TOK_BOOLEAN; TOK_FLOAT; +TOK_REAL; TOK_DOUBLE; TOK_DATE; TOK_DATELITERAL; @@ -517,6 +518,7 @@ import org.apache.hadoop.hive.conf.HiveConf; xlateMap.put("KW_INT", "INT"); xlateMap.put("KW_BIGINT", "BIGINT"); xlateMap.put("KW_FLOAT", "FLOAT"); + xlateMap.put("KW_REAL", "REAL"); xlateMap.put("KW_DOUBLE", "DOUBLE"); xlateMap.put("KW_PRECISION", "PRECISION"); xlateMap.put("KW_DATE", "DATE"); @@ -2522,6 +2524,7 @@ primitiveType | KW_BIGINT -> TOK_BIGINT | KW_BOOLEAN -> TOK_BOOLEAN | KW_FLOAT -> TOK_FLOAT + | KW_REAL -> TOK_FLOAT | KW_DOUBLE KW_PRECISION? -> TOK_DOUBLE | KW_DATE -> TOK_DATE | KW_DATETIME -> TOK_DATETIME http://git-wip-us.apache.org/repos/asf/hive/blob/d1185065/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g index 7dc6146..9e43ad5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g @@ -721,6 +721,7 @@ sysFuncNames | KW_INT | KW_BIGINT | KW_FLOAT + | KW_REAL | KW_DOUBLE | KW_BOOLEAN | KW_STRING @@ -844,5 +845,5 @@ nonReserved //The following SQL2011 reserved keywords are used as function name only, but not as identifiers. sql11ReservedKeywordsUsedAsFunctionName : - KW_IF | KW_ARRAY | KW_MAP | KW_BIGINT | KW_BINARY | KW_BOOLEAN | KW_CURRENT_DATE | KW_CURRENT_TIMESTAMP | KW_DATE | KW_DOUBLE | KW_FLOAT | KW_GROUPING | KW_INT | KW_SMALLINT | KW_TIMESTAMP + KW_IF | KW_ARRAY | KW_MAP | KW_BIGINT | KW_BINARY | KW_BOOLEAN | KW_CURRENT_DATE | KW_CURRENT_TIMESTAMP | KW_DATE | KW_DOUBLE | KW_FLOAT | KW_REAL | KW_GROUPING | KW_INT | KW_SMALLINT | KW_TIMESTAMP ; http://git-wip-us.apache.org/repos/asf/hive/blob/d1185065/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java ---------------------------------------------------------------------- diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java index 2ad2990..ea0f4d6 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java @@ -35,7 +35,7 @@ import org.junit.Test; * ,BOOLEAN,BOTH,BY,CONSTRAINT * ,CREATE,CUBE,CURRENT_DATE,CURRENT_TIMESTAMP,CURSOR, * DATE,DECIMAL,DELETE,DESCRIBE - * ,DOUBLE,DROP,EXISTS,EXTERNAL,FALSE,FETCH,FLOAT,FOR + * ,DOUBLE,DROP,EXISTS,EXTERNAL,FALSE,FETCH,FLOAT,REAL,FOR * ,FOREIGN,FULL,GRANT,GROUP,GROUPING * ,IMPORT,IN,INNER,INSERT,INT,INTERSECT,INTO,IS * ,LATERAL,LEFT,LIKE,LOCAL,MINUS,NONE,NULL @@ -435,6 +435,17 @@ public class TestSQL11ReservedKeyWordsNegative { } } + @Test + public void testSQL11ReservedKeyWords_REAL() { + try { + parse("CREATE TABLE REAL (col STRING)"); + Assert.assertFalse("Expected ParseException", true); + } catch (ParseException ex) { + Assert.assertEquals("Failure didn't match.", + "line 1:13 cannot recognize input near 'REAL' '(' 'col' in table name", ex.getMessage()); + } + } + @Test public void testSQL11ReservedKeyWords_FOR() { try { http://git-wip-us.apache.org/repos/asf/hive/blob/d1185065/ql/src/test/queries/clientpositive/real.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/real.q b/ql/src/test/queries/clientpositive/real.q new file mode 100644 index 0000000..bdc5ff8 --- /dev/null +++ b/ql/src/test/queries/clientpositive/real.q @@ -0,0 +1,2 @@ +create table realtype (a real, b real); +describe realtype; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/d1185065/ql/src/test/results/clientpositive/real.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/real.q.out b/ql/src/test/results/clientpositive/real.q.out new file mode 100644 index 0000000..0a72fba --- /dev/null +++ b/ql/src/test/results/clientpositive/real.q.out @@ -0,0 +1,16 @@ +PREHOOK: query: create table realtype (a real, b real) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@realtype +POSTHOOK: query: create table realtype (a real, b real) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@realtype +PREHOOK: query: describe realtype +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@realtype +POSTHOOK: query: describe realtype +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@realtype +a float +b float