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                                       

Reply via email to