Author: gates
Date: Tue Sep 23 15:02:59 2014
New Revision: 1627048
URL: http://svn.apache.org/r1627048
Log:
HIVE-8152 Update with expression in set fails (Eugene Koifman, reviewed by Alan
Gates)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/FromClauseParser.g
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java
hive/trunk/ql/src/test/queries/clientpositive/insert_values_tmp_table.q
hive/trunk/ql/src/test/queries/clientpositive/update_all_types.q
hive/trunk/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out
hive/trunk/ql/src/test/results/clientpositive/tez/update_all_types.q.out
hive/trunk/ql/src/test/results/clientpositive/update_all_types.q.out
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/FromClauseParser.g
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/FromClauseParser.g?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/FromClauseParser.g
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/FromClauseParser.g
Tue Sep 23 15:02:59 2014
@@ -263,7 +263,7 @@ searchCondition
// INSERT INTO <table> (col1,col2,...) SELECT * FROM
(VALUES(1,2,3),(4,5,6),...) as Foo(a,b,c)
valueRowConstructor
:
- LPAREN atomExpression (COMMA atomExpression)* RPAREN -> ^(TOK_VALUE_ROW
atomExpression+)
+ LPAREN precedenceUnaryPrefixExpression (COMMA
precedenceUnaryPrefixExpression)* RPAREN -> ^(TOK_VALUE_ROW
precedenceUnaryPrefixExpression+)
;
valuesTableConstructor
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g Tue Sep
23 15:02:59 2014
@@ -2238,7 +2238,7 @@ deleteStatement
/*SET <columName> = (3 + col2)*/
columnAssignmentClause
:
- tableOrColumn EQUAL^ atomExpression
+ tableOrColumn EQUAL^ precedencePlusExpression
;
/*SET col1 = 5, col2 = (4 + col4), ...*/
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
---
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
(original)
+++
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
Tue Sep 23 15:02:59 2014
@@ -343,8 +343,10 @@ public class UpdateDeleteSemanticAnalyze
// Add the setRCols to the input list
for (String colName : setRCols) {
- columnAccessInfo.add(Table.getCompleteName(mTable.getDbName(),
mTable.getTableName()),
+ if(columnAccessInfo != null) {//assuming this means we are not doing
Auth
+ columnAccessInfo.add(Table.getCompleteName(mTable.getDbName(),
mTable.getTableName()),
colName);
+ }
}
}
@@ -386,7 +388,7 @@ public class UpdateDeleteSemanticAnalyze
setRCols.add(colName.getText());
} else if (node.getChildren() != null) {
for (Node n : node.getChildren()) {
- addSetRCols(node, setRCols);
+ addSetRCols((ASTNode)n, setRCols);
}
}
}
Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java
(original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java Tue Sep
23 15:02:59 2014
@@ -24,6 +24,9 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+/**
+ * various Parser tests for INSERT/UPDATE/DELETE
+ */
public class TestIUD {
private static HiveConf conf;
@@ -102,6 +105,18 @@ public class TestIUD {
ast.toStringTree());
}
@Test
+ public void testUpdateWithWhereSingleSetExpr() throws ParseException {
+ ASTNode ast = parse("UPDATE src SET key = -3+(5*9)%8, val = cast(6.1 + c
as INT), d = d - 1 WHERE value IS NULL");
+ Assert.assertEquals("AST doesn't match",
+ "(TOK_UPDATE_TABLE (TOK_TABNAME src) " +
+ "(TOK_SET_COLUMNS_CLAUSE " +
+ "(= (TOK_TABLE_OR_COL key) (+ (- 3) (% (* 5 9) 8))) " +
+ "(= (TOK_TABLE_OR_COL val) (TOK_FUNCTION TOK_INT (+ 6.1
(TOK_TABLE_OR_COL c)))) " +
+ "(= (TOK_TABLE_OR_COL d) (- (TOK_TABLE_OR_COL d) 1))) " +
+ "(TOK_WHERE (TOK_FUNCTION TOK_ISNULL (TOK_TABLE_OR_COL value))))",
+ ast.toStringTree());
+ }
+ @Test
public void testUpdateWithWhereMultiSet() throws ParseException {
ASTNode ast = parse("UPDATE src SET key = 3, value = 8 WHERE VALUE =
1230997");
Assert.assertEquals("AST doesn't match",
@@ -207,13 +222,13 @@ public class TestIUD {
}
@Test
public void testInsertIntoTableFromAnonymousTable() throws ParseException {
- ASTNode ast = parse("insert into table page_view values(1,2),(3,4)");
+ ASTNode ast = parse("insert into table page_view values(-1,2),(3,+4)");
Assert.assertEquals("AST doesn't match",
"(TOK_QUERY " +
"(TOK_FROM " +
"(TOK_VIRTUAL_TABLE " +
"(TOK_VIRTUAL_TABREF TOK_ANONYMOUS) " +
- "(TOK_VALUES_TABLE (TOK_VALUE_ROW 1 2) (TOK_VALUE_ROW 3 4)))) " +
+ "(TOK_VALUES_TABLE (TOK_VALUE_ROW (- 1) 2) (TOK_VALUE_ROW 3 (+
4))))) " +
"(TOK_INSERT (TOK_INSERT_INTO (TOK_TAB (TOK_TABNAME page_view))) " +
"(TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF))))",
ast.toStringTree());
Modified:
hive/trunk/ql/src/test/queries/clientpositive/insert_values_tmp_table.q
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/insert_values_tmp_table.q?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/insert_values_tmp_table.q
(original)
+++ hive/trunk/ql/src/test/queries/clientpositive/insert_values_tmp_table.q Tue
Sep 23 15:02:59 2014
@@ -7,6 +7,7 @@ create temporary table acid_ivtt(i int,
insert into table acid_ivtt values
(1, 109.23, 'mary had a little lamb'),
- (429496729, 0.14, 'its fleece was white as snow');
+ (429496729, 0.14, 'its fleece was white as snow'),
+ (-29496729, -0.14, 'negative values test');
select i, de, vc from acid_ivtt order by i;
Modified: hive/trunk/ql/src/test/queries/clientpositive/update_all_types.q
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/update_all_types.q?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/update_all_types.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/update_all_types.q Tue Sep 23
15:02:59 2014
@@ -53,4 +53,11 @@ update acid_uat set
select * from acid_uat order by i;
+update acid_uat set
+ ti = ti * 2,
+ si = cast(f as int),
+ d = floor(de)
+ where s = 'aw724t8c5558x2xneC624';
+
+select * from acid_uat order by i;
Modified:
hive/trunk/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out
(original)
+++ hive/trunk/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out
Tue Sep 23 15:02:59 2014
@@ -8,13 +8,15 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@acid_ivtt
PREHOOK: query: insert into table acid_ivtt values
(1, 109.23, 'mary had a little lamb'),
- (429496729, 0.14, 'its fleece was white as snow')
+ (429496729, 0.14, 'its fleece was white as snow'),
+ (-29496729, -0.14, 'negative values test')
PREHOOK: type: QUERY
PREHOOK: Input: default@values__tmp__table__1
PREHOOK: Output: default@acid_ivtt
POSTHOOK: query: insert into table acid_ivtt values
(1, 109.23, 'mary had a little lamb'),
- (429496729, 0.14, 'its fleece was white as snow')
+ (429496729, 0.14, 'its fleece was white as snow'),
+ (-29496729, -0.14, 'negative values test')
POSTHOOK: type: QUERY
POSTHOOK: Input: default@values__tmp__table__1
POSTHOOK: Output: default@acid_ivtt
@@ -29,5 +31,6 @@ POSTHOOK: query: select i, de, vc from a
POSTHOOK: type: QUERY
POSTHOOK: Input: default@acid_ivtt
#### A masked pattern was here ####
+-29496729 -0.14 negative values test
1 109.23 mary had a little lamb
429496729 0.14 its fleece was white as snow
Modified:
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
---
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out
(original)
+++
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out
Tue Sep 23 15:02:59 2014
@@ -8,13 +8,15 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@acid_ivtt
PREHOOK: query: insert into table acid_ivtt values
(1, 109.23, 'mary had a little lamb'),
- (429496729, 0.14, 'its fleece was white as snow')
+ (429496729, 0.14, 'its fleece was white as snow'),
+ (-29496729, -0.14, 'negative values test')
PREHOOK: type: QUERY
PREHOOK: Input: default@values__tmp__table__1
PREHOOK: Output: default@acid_ivtt
POSTHOOK: query: insert into table acid_ivtt values
(1, 109.23, 'mary had a little lamb'),
- (429496729, 0.14, 'its fleece was white as snow')
+ (429496729, 0.14, 'its fleece was white as snow'),
+ (-29496729, -0.14, 'negative values test')
POSTHOOK: type: QUERY
POSTHOOK: Input: default@values__tmp__table__1
POSTHOOK: Output: default@acid_ivtt
@@ -29,5 +31,6 @@ POSTHOOK: query: select i, de, vc from a
POSTHOOK: type: QUERY
POSTHOOK: Input: default@acid_ivtt
#### A masked pattern was here ####
+-29496729 -0.14 negative values test
1 109.23 mary had a little lamb
429496729 0.14 its fleece was white as snow
Modified:
hive/trunk/ql/src/test/results/clientpositive/tez/update_all_types.q.out
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/tez/update_all_types.q.out?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/tez/update_all_types.q.out
(original)
+++ hive/trunk/ql/src/test/results/clientpositive/tez/update_all_types.q.out
Tue Sep 23 15:02:59 2014
@@ -151,3 +151,37 @@ NULL -5470 -1072076362 1864027286 NULL
-
NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL
1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false
11 NULL -1069736047 -453772520 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet
qrXLLNX1 true
1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01
its a beautiful day in the neighbhorhood a beautiful day for a neighbor
wont you be mine true
+PREHOOK: query: update acid_uat set
+ ti = ti * 2,
+ si = cast(f as int),
+ d = floor(de)
+ where s = 'aw724t8c5558x2xneC624'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_uat
+PREHOOK: Output: default@acid_uat
+POSTHOOK: query: update acid_uat set
+ ti = ti * 2,
+ si = cast(f as int),
+ d = floor(de)
+ where s = 'aw724t8c5558x2xneC624'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_uat
+POSTHOOK: Output: default@acid_uat
+PREHOOK: query: select * from acid_uat order by i
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_uat
+#### A masked pattern was here ####
+POSTHOOK: query: select * from acid_uat order by i
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_uat
+#### A masked pattern was here ####
+11 NULL -1073279343 -1595604468 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa
P76636jJ6qM17d7DIy true
+NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL
1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d
false
+11 NULL -1072910839 2048385991 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v
false
+NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL
1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P
true
+NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL
1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr
4KWs6gw7lv2WYd66P true
+-102 -51 -1071480828 -1401575336 -51.0 -51.0 -51.0
1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624
4uE7l74tESBiKfu7c8wM7GA true
+8 NULL -1071363017 1349676361 8.0 NULL 8.0
1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g
true
+NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL
1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false
+11 NULL -1069736047 -453772520 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet
qrXLLNX1 true
+1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01
its a beautiful day in the neighbhorhood a beautiful day for a neighbor
wont you be mine true
Modified: hive/trunk/ql/src/test/results/clientpositive/update_all_types.q.out
URL:
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/update_all_types.q.out?rev=1627048&r1=1627047&r2=1627048&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/update_all_types.q.out
(original)
+++ hive/trunk/ql/src/test/results/clientpositive/update_all_types.q.out Tue
Sep 23 15:02:59 2014
@@ -151,3 +151,37 @@ NULL -5470 -1072076362 1864027286 NULL
-
NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL
1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false
11 NULL -1069736047 -453772520 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet
qrXLLNX1 true
1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01
its a beautiful day in the neighbhorhood a beautiful day for a neighbor
wont you be mine true
+PREHOOK: query: update acid_uat set
+ ti = ti * 2,
+ si = cast(f as int),
+ d = floor(de)
+ where s = 'aw724t8c5558x2xneC624'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_uat
+PREHOOK: Output: default@acid_uat
+POSTHOOK: query: update acid_uat set
+ ti = ti * 2,
+ si = cast(f as int),
+ d = floor(de)
+ where s = 'aw724t8c5558x2xneC624'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_uat
+POSTHOOK: Output: default@acid_uat
+PREHOOK: query: select * from acid_uat order by i
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_uat
+#### A masked pattern was here ####
+POSTHOOK: query: select * from acid_uat order by i
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_uat
+#### A masked pattern was here ####
+11 NULL -1073279343 -1595604468 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa
P76636jJ6qM17d7DIy true
+NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL
1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d
false
+11 NULL -1072910839 2048385991 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v
false
+NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL
1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P
true
+NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL
1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr
4KWs6gw7lv2WYd66P true
+-102 -51 -1071480828 -1401575336 -51.0 -51.0 -51.0
1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624
4uE7l74tESBiKfu7c8wM7GA true
+8 NULL -1071363017 1349676361 8.0 NULL 8.0
1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g
true
+NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL
1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false
+11 NULL -1069736047 -453772520 11.0 NULL 11.0
1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet
qrXLLNX1 true
+1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01
its a beautiful day in the neighbhorhood a beautiful day for a neighbor
wont you be mine true