You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jv...@apache.org on 2011/10/25 21:07:31 UTC
svn commit: r1188858 - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/parse/Hive.g
java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
test/queries/clientpositive/literal_ints.q
test/results/clientpositive/literal_ints.q.out
Author: jvs
Date: Tue Oct 25 19:07:31 2011
New Revision: 1188858
URL: http://svn.apache.org/viewvc?rev=1188858&view=rev
Log:
HIVE-2509. Literal bigint
(Jonathan Chang via jvs)
Added:
hive/trunk/ql/src/test/queries/clientpositive/literal_ints.q
hive/trunk/ql/src/test/results/clientpositive/literal_ints.q.out
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g?rev=1188858&r1=1188857&r2=1188858&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g Tue Oct 25 19:07:31 2011
@@ -1846,6 +1846,9 @@ constant
:
Number
| StringLiteral
+ | BigintLiteral
+ | SmallintLiteral
+ | TinyintLiteral
| charSetStringLiteral
| booleanValue
;
@@ -2400,6 +2403,21 @@ CharSetLiteral
| '0' 'X' (HexDigit|Digit)+
;
+BigintLiteral
+ :
+ (Digit)+ 'L'
+ ;
+
+SmallintLiteral
+ :
+ (Digit)+ 'S'
+ ;
+
+TinyintLiteral
+ :
+ (Digit)+ 'Y'
+ ;
+
Number
:
(Digit)+ ( DOT (Digit)* (Exponent)? | Exponent)?
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java?rev=1188858&r1=1188857&r2=1188858&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java Tue Oct 25 19:07:31 2011
@@ -129,7 +129,10 @@ public final class TypeCheckProcFactory
opRules.put(new RuleRegExp("R1", HiveParser.TOK_NULL + "%"),
getNullExprProcessor());
- opRules.put(new RuleRegExp("R2", HiveParser.Number + "%"),
+ opRules.put(new RuleRegExp("R2", HiveParser.Number + "%|" +
+ HiveParser.TinyintLiteral + "%|" +
+ HiveParser.SmallintLiteral + "%|" +
+ HiveParser.BigintLiteral + "%"),
getNumExprProcessor());
opRules
.put(new RuleRegExp("R3", HiveParser.Identifier + "%|"
@@ -217,9 +220,23 @@ public final class TypeCheckProcFactory
// try to parse the expression in that order to ensure that the
// most specific type is used for conversion.
try {
- v = Double.valueOf(expr.getText());
- v = Long.valueOf(expr.getText());
- v = Integer.valueOf(expr.getText());
+ if (expr.getText().endsWith("L")) {
+ // Literal bigint.
+ v = Long.valueOf(expr.getText().substring(
+ 0, expr.getText().length() - 1));
+ } else if (expr.getText().endsWith("S")) {
+ // Literal smallint.
+ v = Short.valueOf(expr.getText().substring(
+ 0, expr.getText().length() - 1));
+ } else if (expr.getText().endsWith("Y")) {
+ // Literal tinyint.
+ v = Byte.valueOf(expr.getText().substring(
+ 0, expr.getText().length() - 1));
+ } else {
+ v = Double.valueOf(expr.getText());
+ v = Long.valueOf(expr.getText());
+ v = Integer.valueOf(expr.getText());
+ }
} catch (NumberFormatException e) {
// do nothing here, we will throw an exception in the following block
}
Added: hive/trunk/ql/src/test/queries/clientpositive/literal_ints.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/literal_ints.q?rev=1188858&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/literal_ints.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/literal_ints.q Tue Oct 25 19:07:31 2011
@@ -0,0 +1,3 @@
+EXPLAIN SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1;
+
+SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1;
Added: hive/trunk/ql/src/test/results/clientpositive/literal_ints.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/literal_ints.q.out?rev=1188858&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/literal_ints.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/literal_ints.q.out Tue Oct 25 19:07:31 2011
@@ -0,0 +1,51 @@
+PREHOOK: query: EXPLAIN SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1
+POSTHOOK: type: QUERY
+ABSTRACT SYNTAX TREE:
+ (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR 100) (TOK_SELEXPR 100Y) (TOK_SELEXPR 100S) (TOK_SELEXPR 100L)) (TOK_LIMIT 1)))
+
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Alias -> Map Operator Tree:
+ src
+ TableScan
+ alias: src
+ Select Operator
+ expressions:
+ expr: 100
+ type: int
+ expr: 100
+ type: tinyint
+ expr: 100
+ type: smallint
+ expr: 100
+ type: bigint
+ outputColumnNames: _col0, _col1, _col2, _col3
+ Limit
+ File Output Operator
+ compressed: false
+ GlobalTableId: 0
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: 1
+
+
+PREHOOK: query: SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: file:/var/folders/71/h_j6fpg10r33hvx1lcxlgttcw61_4s/T/jonchang/hive_2011-10-21_11-16-07_740_3692263834720831080/-mr-10000
+POSTHOOK: query: SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: file:/var/folders/71/h_j6fpg10r33hvx1lcxlgttcw61_4s/T/jonchang/hive_2011-10-21_11-16-07_740_3692263834720831080/-mr-10000
+100 100 100 100