Modified: hive/branches/spark/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out Sat Jul 26 23:45:46 2014 @@ -5,11 +5,11 @@ POSTHOOK: type: DROPFUNCTION PREHOOK: query: create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: row_sequence POSTHOOK: query: create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: row_sequence PREHOOK: query: -- make sure a stateful function inside of CASE throws an exception -- since the short-circuiting requirements are contradictory SELECT CASE WHEN 3 > 2 THEN 10 WHEN row_sequence() > 5 THEN 20 ELSE 30 END
Modified: hive/branches/spark/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out Sat Jul 26 23:45:46 2014 @@ -2,18 +2,18 @@ PREHOOK: query: -- Verify that a statefu drop temporary function row_sequence PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: row_sequence POSTHOOK: query: -- Verify that a stateful UDF cannot be used outside of the SELECT list drop temporary function row_sequence POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: row_sequence PREHOOK: query: create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: row_sequence POSTHOOK: query: create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: row_sequence FAILED: SemanticException [Error 10084]: Stateful UDF's can only be invoked in the SELECT list Modified: hive/branches/spark/contrib/src/test/results/clientnegative/udtf_explode2.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientnegative/udtf_explode2.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientnegative/udtf_explode2.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientnegative/udtf_explode2.q.out Sat Jul 26 23:45:46 2014 @@ -1,7 +1,7 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION explode2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFExplode2' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: explode2 POSTHOOK: query: CREATE TEMPORARY FUNCTION explode2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFExplode2' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: explode2 FAILED: SemanticException [Error 10083]: The number of aliases supplied in the AS clause does not match the number of columns output by the UDTF expected 2 aliases but got 1 Modified: hive/branches/spark/contrib/src/test/results/clientpositive/dboutput.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/dboutput.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/dboutput.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/dboutput.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: dboutput POSTHOOK: query: CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: dboutput PREHOOK: query: DESCRIBE FUNCTION dboutput PREHOOK: type: DESCFUNCTION POSTHOOK: query: DESCRIBE FUNCTION dboutput @@ -186,7 +186,7 @@ POSTHOOK: Input: default@src #### A masked pattern was here #### PREHOOK: query: DROP TEMPORARY FUNCTION dboutput PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: dboutput POSTHOOK: query: DROP TEMPORARY FUNCTION dboutput POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: dboutput Modified: hive/branches/spark/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION explode2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFExplode2' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: explode2 POSTHOOK: query: CREATE TEMPORARY FUNCTION explode2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFExplode2' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: explode2 PREHOOK: query: SELECT col1, col2 FROM src LATERAL VIEW explode2(array(1,2,3)) myTable AS col1, col2 LIMIT 3 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -17,7 +17,7 @@ POSTHOOK: Input: default@src 3 3 PREHOOK: query: DROP TEMPORARY FUNCTION explode2 PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: explode2 POSTHOOK: query: DROP TEMPORARY FUNCTION explode2 POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: explode2 Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_avg.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_avg.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_avg.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_avg.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_avg AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleAvg' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_avg POSTHOOK: query: CREATE TEMPORARY FUNCTION example_avg AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleAvg' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_avg PREHOOK: query: EXPLAIN SELECT example_avg(substr(value,5)), example_avg(IF(substr(value,5) > 250, NULL, substr(value,5))) @@ -77,7 +77,7 @@ POSTHOOK: Input: default@src 260.182 134.82926829268294 PREHOOK: query: DROP TEMPORARY FUNCTION example_avg PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_avg POSTHOOK: query: DROP TEMPORARY FUNCTION example_avg POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_avg Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_group_concat AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleGroupConcat' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_group_concat POSTHOOK: query: CREATE TEMPORARY FUNCTION example_group_concat AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleGroupConcat' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_group_concat PREHOOK: query: EXPLAIN SELECT substr(value,5,1), example_group_concat("(", key, ":", value, ")") FROM src @@ -90,7 +90,7 @@ POSTHOOK: Input: default@src 9 (90:val_90)(90:val_90)(90:val_90)(92:val_92)(95:val_95)(95:val_95)(96:val_96)(97:val_97)(97:val_97)(98:val_98)(98:val_98)(9:val_9) PREHOOK: query: DROP TEMPORARY FUNCTION example_group_concat PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_group_concat POSTHOOK: query: DROP TEMPORARY FUNCTION example_group_concat POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_group_concat Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_max AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMax' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_max POSTHOOK: query: CREATE TEMPORARY FUNCTION example_max AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMax' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_max PREHOOK: query: DESCRIBE FUNCTION EXTENDED example_max PREHOOK: type: DESCFUNCTION POSTHOOK: query: DESCRIBE FUNCTION EXTENDED example_max @@ -82,7 +82,7 @@ POSTHOOK: Input: default@src 98 98 PREHOOK: query: DROP TEMPORARY FUNCTION example_max PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_max POSTHOOK: query: DROP TEMPORARY FUNCTION example_max POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_max Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_max_n AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMaxN' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_max_n POSTHOOK: query: CREATE TEMPORARY FUNCTION example_max_n AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMaxN' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_max_n PREHOOK: query: EXPLAIN SELECT example_max_n(substr(value,5),10), example_max_n(IF(substr(value,5) > 250, NULL, substr(value,5)),10) @@ -77,7 +77,7 @@ POSTHOOK: Input: default@src [498.0,498.0,498.0,497.0,496.0,495.0,494.0,493.0,492.0,492.0] [249.0,248.0,247.0,244.0,242.0,242.0,241.0,239.0,239.0,238.0] PREHOOK: query: DROP TEMPORARY FUNCTION example_max_n PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_max_n POSTHOOK: query: DROP TEMPORARY FUNCTION example_max_n POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_max_n Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_min AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMin' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_min POSTHOOK: query: CREATE TEMPORARY FUNCTION example_min AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMin' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_min PREHOOK: query: DESCRIBE FUNCTION EXTENDED example_min PREHOOK: type: DESCFUNCTION POSTHOOK: query: DESCRIBE FUNCTION EXTENDED example_min @@ -82,7 +82,7 @@ POSTHOOK: Input: default@src 0 0 PREHOOK: query: DROP TEMPORARY FUNCTION example_min PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_min POSTHOOK: query: DROP TEMPORARY FUNCTION example_min POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_min Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_min_n AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMinN' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_min_n POSTHOOK: query: CREATE TEMPORARY FUNCTION example_min_n AS 'org.apache.hadoop.hive.contrib.udaf.example.UDAFExampleMinN' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_min_n PREHOOK: query: EXPLAIN SELECT example_min_n(substr(value,5),10), example_min_n(IF(substr(value,5) < 250, NULL, substr(value,5)),10) @@ -77,7 +77,7 @@ POSTHOOK: Input: default@src [0.0,0.0,0.0,2.0,4.0,5.0,5.0,5.0,8.0,9.0] [252.0,255.0,255.0,256.0,256.0,257.0,258.0,260.0,262.0,263.0] PREHOOK: query: DROP TEMPORARY FUNCTION example_min_n PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_min_n POSTHOOK: query: DROP TEMPORARY FUNCTION example_min_n POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_min_n Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_add.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_add.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_add.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_add.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_add AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleAdd' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_add POSTHOOK: query: CREATE TEMPORARY FUNCTION example_add AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleAdd' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_add PREHOOK: query: EXPLAIN SELECT example_add(1, 2), example_add(1, 2, 3), @@ -36,7 +36,7 @@ STAGE PLANS: alias: src Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE Select Operator - expressions: example_add(1, 2) (type: int), example_add(1, 2, 3) (type: int), example_add(1, 2, 3, 4) (type: int), example_add(1.1, 2.2) (type: double), example_add(1.1, 2.2, 3.3) (type: double), example_add(1.1, 2.2, 3.3, 4.4) (type: double), example_add(1, 2, 3, 4.4) (type: double) + expressions: 3 (type: int), 6 (type: int), 10 (type: int), 3.3000000000000003 (type: double), 6.6 (type: double), 11.0 (type: double), 10.4 (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE Limit @@ -81,7 +81,7 @@ POSTHOOK: Input: default@src 3 6 10 3.3000000000000003 6.6 11.0 10.4 PREHOOK: query: DROP TEMPORARY FUNCTION example_add PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_add POSTHOOK: query: DROP TEMPORARY FUNCTION example_add POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_add Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out Sat Jul 26 23:45:46 2014 @@ -1,21 +1,21 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_arraysum AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleArraySum' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_arraysum POSTHOOK: query: CREATE TEMPORARY FUNCTION example_arraysum AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleArraySum' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_arraysum PREHOOK: query: CREATE TEMPORARY FUNCTION example_mapconcat AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleMapConcat' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_mapconcat POSTHOOK: query: CREATE TEMPORARY FUNCTION example_mapconcat AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleMapConcat' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_mapconcat PREHOOK: query: CREATE TEMPORARY FUNCTION example_structprint AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleStructPrint' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_structprint POSTHOOK: query: CREATE TEMPORARY FUNCTION example_structprint AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleStructPrint' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_structprint PREHOOK: query: EXPLAIN SELECT example_arraysum(lint), example_mapconcat(mstringstring), example_structprint(lintstring[0]) FROM src_thrift @@ -76,19 +76,19 @@ POSTHOOK: Input: default@src_thrift NULL NULL NULL PREHOOK: query: DROP TEMPORARY FUNCTION example_arraysum PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_arraysum POSTHOOK: query: DROP TEMPORARY FUNCTION example_arraysum POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_arraysum PREHOOK: query: DROP TEMPORARY FUNCTION example_mapconcat PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_mapconcat POSTHOOK: query: DROP TEMPORARY FUNCTION example_mapconcat POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_mapconcat PREHOOK: query: DROP TEMPORARY FUNCTION example_structprint PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_structprint POSTHOOK: query: DROP TEMPORARY FUNCTION example_structprint POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_structprint Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_format.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_format.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_format.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udf_example_format.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION example_format AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleFormat' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_format POSTHOOK: query: CREATE TEMPORARY FUNCTION example_format AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleFormat' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_format PREHOOK: query: EXPLAIN SELECT example_format("abc"), example_format("%1$s", 1.1), @@ -30,7 +30,7 @@ STAGE PLANS: alias: src Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE Select Operator - expressions: example_format('abc') (type: string), example_format('%1$s', 1.1) (type: string), example_format('%1$s %2$e', 1.1, 1.2) (type: string), example_format('%1$x %2$o %3$d', 10, 10, 10) (type: string) + expressions: 'abc' (type: string), '1.1' (type: string), '1.1 1.200000e+00' (type: string), 'a 12 10' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE Limit @@ -69,7 +69,7 @@ POSTHOOK: Input: default@src abc 1.1 1.1 1.200000e+00 a 12 10 PREHOOK: query: DROP TEMPORARY FUNCTION example_format PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: example_format POSTHOOK: query: DROP TEMPORARY FUNCTION example_format POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: example_format Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udf_row_sequence.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udf_row_sequence.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udf_row_sequence.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udf_row_sequence.q.out Sat Jul 26 23:45:46 2014 @@ -13,11 +13,11 @@ POSTHOOK: type: DROPFUNCTION PREHOOK: query: create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: row_sequence POSTHOOK: query: create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: row_sequence PREHOOK: query: DESCRIBE FUNCTION EXTENDED row_sequence PREHOOK: type: DESCFUNCTION POSTHOOK: query: DESCRIBE FUNCTION EXTENDED row_sequence @@ -643,7 +643,7 @@ POSTHOOK: Input: default@src 119 false PREHOOK: query: drop temporary function row_sequence PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: row_sequence POSTHOOK: query: drop temporary function row_sequence POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: row_sequence Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udtf_explode2.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udtf_explode2.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udtf_explode2.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udtf_explode2.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION explode2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFExplode2' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: explode2 POSTHOOK: query: CREATE TEMPORARY FUNCTION explode2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFExplode2' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: explode2 PREHOOK: query: SELECT explode2(array(1,2,3)) AS (col1, col2) FROM src LIMIT 3 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -17,7 +17,7 @@ POSTHOOK: Input: default@src 3 3 PREHOOK: query: DROP TEMPORARY FUNCTION explode2 PREHOOK: type: DROPFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: explode2 POSTHOOK: query: DROP TEMPORARY FUNCTION explode2 POSTHOOK: type: DROPFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: explode2 Modified: hive/branches/spark/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out (original) +++ hive/branches/spark/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out Sat Jul 26 23:45:46 2014 @@ -1,9 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION udtfCount2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFCount2' PREHOOK: type: CREATEFUNCTION -PREHOOK: Output: database:default +PREHOOK: Output: udtfcount2 POSTHOOK: query: CREATE TEMPORARY FUNCTION udtfCount2 AS 'org.apache.hadoop.hive.contrib.udtf.example.GenericUDTFCount2' POSTHOOK: type: CREATEFUNCTION -POSTHOOK: Output: database:default +POSTHOOK: Output: udtfcount2 PREHOOK: query: SELECT udtfCount2(key) AS count FROM src PREHOOK: type: QUERY PREHOOK: Input: default@src Modified: hive/branches/spark/data/conf/hive-site.xml URL: http://svn.apache.org/viewvc/hive/branches/spark/data/conf/hive-site.xml?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/data/conf/hive-site.xml (original) +++ hive/branches/spark/data/conf/hive-site.xml Sat Jul 26 23:45:46 2014 @@ -221,4 +221,23 @@ <value>false</value> </property> + +<property> + <name>hive.dummyparam.test.server.specific.config.override</name> + <value>from.hive-site.xml</value> + <description>Using dummy param to test server specific configuration</description> +</property> + +<property> + <name>hive.dummyparam.test.server.specific.config.hivesite</name> + <value>from.hive-site.xml</value> + <description>Using dummy param to test server specific configuration</description> +</property> + + +<property> + <name>hive.fetch.task.conversion</name> + <value>minimal</value> +</property> + </configuration> Modified: hive/branches/spark/hbase-handler/src/java/org/apache/hadoop/hive/hbase/ColumnMappings.java URL: http://svn.apache.org/viewvc/hive/branches/spark/hbase-handler/src/java/org/apache/hadoop/hive/hbase/ColumnMappings.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/hbase-handler/src/java/org/apache/hadoop/hive/hbase/ColumnMappings.java (original) +++ hive/branches/spark/hbase-handler/src/java/org/apache/hadoop/hive/hbase/ColumnMappings.java Sat Jul 26 23:45:46 2014 @@ -285,8 +285,11 @@ public class ColumnMappings implements I return columnsMapping; } + /** + * Represents a mapping from a single Hive column to an HBase column qualifier, column family or row key. + */ // todo use final fields - static class ColumnMapping { + public static class ColumnMapping { ColumnMapping() { binaryStorage = new ArrayList<Boolean>(2); @@ -305,6 +308,50 @@ public class ColumnMappings implements I String qualifierPrefix; byte[] qualifierPrefixBytes; + public String getColumnName() { + return columnName; + } + + public TypeInfo getColumnType() { + return columnType; + } + + public String getFamilyName() { + return familyName; + } + + public String getQualifierName() { + return qualifierName; + } + + public byte[] getFamilyNameBytes() { + return familyNameBytes; + } + + public byte[] getQualifierNameBytes() { + return qualifierNameBytes; + } + + public List<Boolean> getBinaryStorage() { + return binaryStorage; + } + + public boolean isHbaseRowKey() { + return hbaseRowKey; + } + + public String getMappingSpec() { + return mappingSpec; + } + + public String getQualifierPrefix() { + return qualifierPrefix; + } + + public byte[] getQualifierPrefixBytes() { + return qualifierPrefixBytes; + } + public boolean isCategory(ObjectInspector.Category category) { return columnType.getCategory() == category; } Modified: hive/branches/spark/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out (original) +++ hive/branches/spark/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out Sat Jul 26 23:45:46 2014 @@ -193,10 +193,10 @@ STAGE PLANS: Map Operator Tree: TableScan alias: hbase_pushdown - filterExpr: (key >= UDFToString((40 + 50))) (type: boolean) + filterExpr: (key >= '90') (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Filter Operator - predicate: (key >= UDFToString((40 + 50))) (type: boolean) + predicate: (key >= '90') (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) Modified: hive/branches/spark/hbase-handler/src/test/results/positive/hbase_pushdown.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/hbase-handler/src/test/results/positive/hbase_pushdown.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/hbase-handler/src/test/results/positive/hbase_pushdown.q.out (original) +++ hive/branches/spark/hbase-handler/src/test/results/positive/hbase_pushdown.q.out Sat Jul 26 23:45:46 2014 @@ -43,7 +43,7 @@ STAGE PLANS: predicate: (key = 90) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: key (type: int), value (type: string) + expressions: 90 (type: int), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator @@ -235,7 +235,7 @@ STAGE PLANS: predicate: (((key = 80) and (key = 90)) and (value like '%90%')) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: key (type: int), value (type: string) + expressions: 90 (type: int), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator @@ -398,7 +398,7 @@ STAGE PLANS: predicate: (key = 90) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: key (type: int), value (type: string) + expressions: 90 (type: int), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator Modified: hive/branches/spark/hbase-handler/src/test/results/positive/ppd_key_ranges.q.out URL: http://svn.apache.org/viewvc/hive/branches/spark/hbase-handler/src/test/results/positive/ppd_key_ranges.q.out?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/hbase-handler/src/test/results/positive/ppd_key_ranges.q.out (original) +++ hive/branches/spark/hbase-handler/src/test/results/positive/ppd_key_ranges.q.out Sat Jul 26 23:45:46 2014 @@ -191,7 +191,7 @@ STAGE PLANS: predicate: (((key >= 9) and (key < 17)) and (key = 11)) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: key (type: int), value (type: string) + expressions: 11 (type: int), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator Modified: hive/branches/spark/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java URL: http://svn.apache.org/viewvc/hive/branches/spark/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java (original) +++ hive/branches/spark/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java Sat Jul 26 23:45:46 2014 @@ -30,8 +30,6 @@ import org.apache.hadoop.hive.conf.HiveC import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.exec.DDLTask; import org.apache.hadoop.hive.ql.exec.Task; -import org.apache.hadoop.hive.ql.io.RCFileInputFormat; -import org.apache.hadoop.hive.ql.io.RCFileOutputFormat; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.HiveStorageHandler; @@ -41,6 +39,7 @@ import org.apache.hadoop.hive.ql.parse.B import org.apache.hadoop.hive.ql.parse.HiveParser; import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext; import org.apache.hadoop.hive.ql.parse.SemanticException; +import org.apache.hadoop.hive.ql.parse.StorageFormat; import org.apache.hadoop.hive.ql.plan.CreateTableDesc; import org.apache.hadoop.hive.ql.security.authorization.Privilege; import org.apache.hive.hcatalog.common.HCatConstants; @@ -66,14 +65,20 @@ final class CreateTableHook extends HCat // Analyze and create tbl properties object int numCh = ast.getChildCount(); - String inputFormat = null, outputFormat = null; tableName = BaseSemanticAnalyzer.getUnescapedName((ASTNode) ast .getChild(0)); boolean likeTable = false; + StorageFormat format = new StorageFormat(context.getConf()); for (int num = 1; num < numCh; num++) { ASTNode child = (ASTNode) ast.getChild(num); - + if (format.fillStorageFormat(child)) { + if (org.apache.commons.lang.StringUtils + .isNotEmpty(format.getStorageHandler())) { + return ast; + } + continue; + } switch (child.getToken().getType()) { case HiveParser.TOK_QUERY: // CTAS @@ -84,17 +89,6 @@ final class CreateTableHook extends HCat case HiveParser.TOK_TABLEBUCKETS: break; - case HiveParser.TOK_TBLSEQUENCEFILE: - inputFormat = HCatConstants.SEQUENCEFILE_INPUT; - outputFormat = HCatConstants.SEQUENCEFILE_OUTPUT; - break; - - case HiveParser.TOK_TBLTEXTFILE: - inputFormat = org.apache.hadoop.mapred.TextInputFormat.class.getName(); - outputFormat = org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat.class.getName(); - - break; - case HiveParser.TOK_LIKETABLE: likeTable = true; break; @@ -125,43 +119,14 @@ final class CreateTableHook extends HCat } } break; - - case HiveParser.TOK_STORAGEHANDLER: - String storageHandler = BaseSemanticAnalyzer - .unescapeSQLString(child.getChild(0).getText()); - if (org.apache.commons.lang.StringUtils - .isNotEmpty(storageHandler)) { - return ast; - } - - break; - - case HiveParser.TOK_TABLEFILEFORMAT: - if (child.getChildCount() < 2) { - throw new SemanticException( - "Incomplete specification of File Format. " + - "You must provide InputFormat, OutputFormat."); - } - inputFormat = BaseSemanticAnalyzer.unescapeSQLString(child - .getChild(0).getText()); - outputFormat = BaseSemanticAnalyzer.unescapeSQLString(child - .getChild(1).getText()); - break; - - case HiveParser.TOK_TBLRCFILE: - inputFormat = RCFileInputFormat.class.getName(); - outputFormat = RCFileOutputFormat.class.getName(); - break; - } } - if (!likeTable && (inputFormat == null || outputFormat == null)) { + if (!likeTable && (format.getInputFormat() == null || format.getOutputFormat() == null)) { throw new SemanticException( "STORED AS specification is either incomplete or incorrect."); } - return ast; } Modified: hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java (original) +++ hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java Sat Jul 26 23:45:46 2014 @@ -18,8 +18,8 @@ package org.apache.hadoop.hive.jdbc; +import static org.apache.hadoop.hive.conf.SystemVariables.SET_COLUMN_NAME; import static org.apache.hadoop.hive.ql.exec.ExplainTask.EXPL_COLUMN_NAME; -import static org.apache.hadoop.hive.ql.processors.SetProcessor.SET_COLUMN_NAME; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -1158,7 +1158,7 @@ public class TestJdbcDriver extends Test assertEquals("", res.getString(4)); // column assertEquals("hive_test_user", res.getString(5)); assertEquals("USER", res.getString(6)); - assertEquals("Select", res.getString(7)); + assertEquals("SELECT", res.getString(7)); assertEquals(false, res.getBoolean(8)); // grant option assertEquals(-1, res.getLong(9)); assertNotNull(res.getString(10)); // grantor Modified: hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java (original) +++ hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java Sat Jul 26 23:45:46 2014 @@ -123,7 +123,7 @@ public abstract class TestAuthorizationA FunctionInvoker invoker = new FunctionInvoker() { @Override public void invoke() throws Exception { - msc.revoke_privileges(new PrivilegeBag(new ArrayList<HiveObjectPrivilege>())); + msc.revoke_privileges(new PrivilegeBag(new ArrayList<HiveObjectPrivilege>()), false); } }; testFunction(invoker); @@ -145,7 +145,7 @@ public abstract class TestAuthorizationA FunctionInvoker invoker = new FunctionInvoker() { @Override public void invoke() throws Exception { - msc.revoke_role(null, null, null); + msc.revoke_role(null, null, null, false); } }; testFunction(invoker); Modified: hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java (original) +++ hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java Sat Jul 26 23:45:46 2014 @@ -37,7 +37,6 @@ import org.apache.hadoop.hive.ql.process import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.shims.HadoopShims.MiniDFSShim; import org.apache.hadoop.hive.shims.ShimLoader; -import org.junit.BeforeClass; import org.junit.Test; /** @@ -97,7 +96,6 @@ public abstract class FolderPermissionBa SessionState.start(new CliSessionState(conf)); driver = new Driver(conf); - setupDataTable(); } @@ -117,9 +115,53 @@ public abstract class FolderPermissionBa } @Test - public void testCreateTable() throws Exception { + public void testCreateDb() throws Exception { + //see if db inherits permission from warehouse directory. String testDb = "mydb"; String tableName = "createtable"; + + setPermission(warehouseDir.toString()); + verifyPermission(warehouseDir.toString()); + + CommandProcessorResponse ret = driver.run("CREATE DATABASE " + testDb); + Assert.assertEquals(0,ret.getResponseCode()); + + assertExistence(warehouseDir + "/" + testDb + ".db"); + verifyPermission(warehouseDir + "/" + testDb + ".db"); + + ret = driver.run("USE " + testDb); + Assert.assertEquals(0,ret.getResponseCode()); + + ret = driver.run("CREATE TABLE " + tableName + " (key string, value string)"); + Assert.assertEquals(0,ret.getResponseCode()); + + verifyPermission(warehouseDir + "/" + testDb + ".db/" + tableName); + + ret = driver.run("insert into table " + tableName + " select key,value from default.mysrc"); + Assert.assertEquals(0,ret.getResponseCode()); + + assertExistence(warehouseDir + "/" + testDb + ".db/" + tableName); + verifyPermission(warehouseDir + "/" + testDb + ".db/" + tableName); + + Assert.assertTrue(listStatus(warehouseDir + "/" + testDb + ".db/" + tableName).size() > 0); + for (String child : listStatus(warehouseDir + "/" + testDb + ".db/" + tableName)) { + verifyPermission(child); + } + + ret = driver.run("USE default"); + Assert.assertEquals(0,ret.getResponseCode()); + + //cleanup after the test. + fs.delete(warehouseDir, true); + fs.mkdirs(warehouseDir); + Assert.assertEquals(listStatus(warehouseDir.toString()).size(), 0); + setupDataTable(); + } + + @Test + public void testCreateTable() throws Exception { + String testDb = "mydb2"; + String tableName = "createtable"; CommandProcessorResponse ret = driver.run("CREATE DATABASE " + testDb); Assert.assertEquals(0,ret.getResponseCode()); Modified: hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java (original) +++ hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java Sat Jul 26 23:45:46 2014 @@ -18,8 +18,8 @@ package org.apache.hive.jdbc; +import static org.apache.hadoop.hive.conf.SystemVariables.SET_COLUMN_NAME; import static org.apache.hadoop.hive.ql.exec.ExplainTask.EXPL_COLUMN_NAME; -import static org.apache.hadoop.hive.ql.processors.SetProcessor.SET_COLUMN_NAME; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -53,7 +53,6 @@ import org.apache.hadoop.hive.conf.HiveC import org.apache.hadoop.hive.metastore.TableType; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.hive.ql.processors.DfsProcessor; -import org.apache.hadoop.hive.ql.processors.SetProcessor; import org.apache.hive.common.util.HiveVersionInfo; import org.apache.hive.jdbc.Utils.JdbcConnectionParams; import org.apache.hive.service.cli.operation.ClassicTableTypeMapping; @@ -276,22 +275,22 @@ public class TestJdbcDriver2 { Statement s = this.con.createStatement(); ResultSet rs = s.executeQuery("SELECT * FROM " + dataTypeTableName); - rs.close(); - s.close(); - assertTrue(s.getConnection() == this.con); assertTrue(rs.getStatement() == s); + rs.close(); + s.close(); + /* Test parent references from PreparedStatement */ PreparedStatement ps = this.con.prepareStatement("SELECT * FROM " + dataTypeTableName); rs = ps.executeQuery(); - rs.close(); - ps.close(); - assertTrue(ps.getConnection() == this.con); assertTrue(rs.getStatement() == ps); + rs.close(); + ps.close(); + /* Test DatabaseMetaData queries which do not have a parent Statement */ DatabaseMetaData md = this.con.getMetaData(); @@ -1888,7 +1887,7 @@ public class TestJdbcDriver2 { */ @Test public void testFetchFirstSetCmds() throws Exception { - execFetchFirst("set -v", SetProcessor.SET_COLUMN_NAME, false); + execFetchFirst("set -v", SET_COLUMN_NAME, false); } /** @@ -1997,7 +1996,7 @@ public class TestJdbcDriver2 { assertEquals("", res.getString(4)); // column assertEquals("hive_test_user", res.getString(5)); assertEquals("USER", res.getString(6)); - assertEquals("Select", res.getString(7)); + assertEquals("SELECT", res.getString(7)); assertEquals(false, res.getBoolean(8)); // grant option assertEquals(-1, res.getLong(9)); assertNotNull(res.getString(10)); // grantor Modified: hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java (original) +++ hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java Sat Jul 26 23:45:46 2014 @@ -213,6 +213,37 @@ public class TestJdbcWithMiniMr { stmt.execute("DROP TABLE " + tableName); } + @Test + public void testTempTable() throws Exception { + // Create temp table with current connection + String tempTableName = "tmp1"; + stmt.execute("CREATE TEMPORARY TABLE " + tempTableName + " (key string, value string)"); + stmt.execute("load data local inpath '" + + dataFilePath.toString() + "' into table " + tempTableName); + + String resultVal = "val_238"; + String queryStr = "SELECT * FROM " + tempTableName + + " where value = '" + resultVal + "'"; + verifyResult(queryStr, resultVal, 2); + + // A second connection should not be able to see the table + Connection conn2 = DriverManager.getConnection(miniHS2.getJdbcURL(dbName), + System.getProperty("user.name"), "bar"); + Statement stmt2 = conn2.createStatement(); + stmt2.execute("USE " + dbName); + boolean gotException = false; + try { + ResultSet res; + res = stmt2.executeQuery(queryStr); + } catch (SQLException err) { + // This is expected to fail. + assertTrue("Expecting table not found error, instead got: " + err, + err.getMessage().contains("Table not found")); + gotException = true; + } + assertTrue("Exception while querying non-existing temp table", gotException); + } + private void checkForNotExist(ResultSet res) throws Exception { int numRows = 0; while (res.next()) { Modified: hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestJdbcWithSQLAuthorization.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestJdbcWithSQLAuthorization.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestJdbcWithSQLAuthorization.java (original) +++ hive/branches/spark/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestJdbcWithSQLAuthorization.java Sat Jul 26 23:45:46 2014 @@ -125,12 +125,14 @@ public class TestJdbcWithSQLAuthorizatio // create tables try { stmt.execute("dfs -ls /tmp/"); - } catch (SQLException e){ + } catch (SQLException e) { caughtException = true; - assertTrue("Checking error message content", - e.getMessage().contains("Insufficient privileges to execute")); - } - finally { + String msg = "Permission denied: Principal [name=user1, type=USER] does not have " + + "following privileges for operation DFS [[ADMIN PRIVILEGE] on " + + "Object [type=COMMAND_PARAMS, name=[-ls, /tmp/]]]"; + assertTrue("Checking content of error message:" + e.getMessage(), + e.getMessage().contains(msg)); + } finally { stmt.close(); hs2Conn.close(); } Modified: hive/branches/spark/itests/qtest/testconfiguration.properties URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/qtest/testconfiguration.properties?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/qtest/testconfiguration.properties (original) +++ hive/branches/spark/itests/qtest/testconfiguration.properties Sat Jul 26 23:45:46 2014 @@ -1,5 +1,5 @@ -minimr.query.files=stats_counter_partitioned.q,list_bucket_dml_10.q,input16_cc.q,scriptfile1.q,scriptfile1_win.q,bucket4.q,bucketmapjoin6.q,disable_merge_for_bucketing.q,reduce_deduplicate.q,smb_mapjoin_8.q,join1.q,groupby2.q,bucketizedhiveinputformat.q,bucketmapjoin7.q,optrstat_groupby.q,bucket_num_reducers.q,bucket5.q,load_fs2.q,bucket_num_reducers2.q,infer_bucket_sort_merge.q,infer_bucket_sort_reducers_power_two.q,infer_bucket_sort_dyn_part.q,infer_bucket_sort_bucketed_table.q,infer_bucket_sort_map_operators.q,infer_bucket_sort_num_buckets.q,leftsemijoin_mr.q,schemeAuthority.q,schemeAuthority2.q,truncate_column_buckets.q,remote_script.q,,load_hdfs_file_with_space_in_the_name.q,parallel_orderby.q,import_exported_table.q,stats_counter.q,auto_sortmerge_join_16.q,quotedid_smb.q,file_with_header_footer.q,external_table_with_space_in_location_path.q,root_dir_external_table.q,index_bitmap3.q,ql_rewrite_gbtoidx.q,index_bitmap_auto.q,udf_using.q +minimr.query.files=stats_counter_partitioned.q,list_bucket_dml_10.q,input16_cc.q,scriptfile1.q,scriptfile1_win.q,bucket4.q,bucketmapjoin6.q,disable_merge_for_bucketing.q,reduce_deduplicate.q,smb_mapjoin_8.q,join1.q,groupby2.q,bucketizedhiveinputformat.q,bucketmapjoin7.q,optrstat_groupby.q,bucket_num_reducers.q,bucket5.q,load_fs2.q,bucket_num_reducers2.q,infer_bucket_sort_merge.q,infer_bucket_sort_reducers_power_two.q,infer_bucket_sort_dyn_part.q,infer_bucket_sort_bucketed_table.q,infer_bucket_sort_map_operators.q,infer_bucket_sort_num_buckets.q,leftsemijoin_mr.q,schemeAuthority.q,schemeAuthority2.q,truncate_column_buckets.q,remote_script.q,,load_hdfs_file_with_space_in_the_name.q,parallel_orderby.q,import_exported_table.q,stats_counter.q,auto_sortmerge_join_16.q,quotedid_smb.q,file_with_header_footer.q,external_table_with_space_in_location_path.q,root_dir_external_table.q,index_bitmap3.q,ql_rewrite_gbtoidx.q,index_bitmap_auto.q,udf_using.q,empty_dir_in_table.q,temp_table_external.q minimr.query.negative.files=cluster_tasklog_retrieval.q,minimr_broken_pipe.q,mapreduce_stack_trace.q,mapreduce_stack_trace_turnoff.q,mapreduce_stack_trace_hadoop20.q,mapreduce_stack_trace_turnoff_hadoop20.q,file_with_header_footer_negative.q,udf_local_resource.q minitez.query.files=tez_fsstat.q,mapjoin_decimal.q,tez_join_tests.q,tez_joins_explain.q,mrr.q,tez_dml.q,tez_insert_overwrite_local_directory_1.q,tez_union.q,bucket_map_join_tez1.q,bucket_map_join_tez2.q,tez_schema_evolution.q,tez_join_hash.q -minitez.query.files.shared=cross_product_check_1.q,cross_product_check_2.q,dynpart_sort_opt_vectorization.q,dynpart_sort_optimization.q,orc_analyze.q,join0.q,join1.q,auto_join0.q,auto_join1.q,bucket2.q,bucket3.q,bucket4.q,count.q,create_merge_compressed.q,cross_join.q,ctas.q,custom_input_output_format.q,disable_merge_for_bucketing.q,enforce_order.q,filter_join_breaktask.q,filter_join_breaktask2.q,groupby1.q,groupby2.q,groupby3.q,having.q,insert1.q,insert_into1.q,insert_into2.q,leftsemijoin.q,limit_pushdown.q,load_dyn_part1.q,load_dyn_part2.q,load_dyn_part3.q,mapjoin_mapjoin.q,mapreduce1.q,mapreduce2.q,merge1.q,merge2.q,metadata_only_queries.q,sample1.q,subquery_in.q,subquery_exists.q,vectorization_15.q,ptf.q,stats_counter.q,stats_noscan_1.q,stats_counter_partitioned.q,union2.q,union3.q,union4.q,union5.q,union6.q,union7.q,union8.q,union9.q,transform1.q,transform2.q,transform_ppr1.q,transform_ppr2.q,script_env_var1.q,script_env_var2.q,script_pipe.q,scriptfile1.q +minitez.query.files.shared=cross_product_check_1.q,cross_product_check_2.q,dynpart_sort_opt_vectorization.q,dynpart_sort_optimization.q,orc_analyze.q,join0.q,join1.q,auto_join0.q,auto_join1.q,bucket2.q,bucket3.q,bucket4.q,count.q,create_merge_compressed.q,cross_join.q,ctas.q,custom_input_output_format.q,disable_merge_for_bucketing.q,enforce_order.q,filter_join_breaktask.q,filter_join_breaktask2.q,groupby1.q,groupby2.q,groupby3.q,having.q,insert1.q,insert_into1.q,insert_into2.q,leftsemijoin.q,limit_pushdown.q,load_dyn_part1.q,load_dyn_part2.q,load_dyn_part3.q,mapjoin_mapjoin.q,mapreduce1.q,mapreduce2.q,merge1.q,merge2.q,metadata_only_queries.q,sample1.q,subquery_in.q,subquery_exists.q,vectorization_15.q,ptf.q,stats_counter.q,stats_noscan_1.q,stats_counter_partitioned.q,union2.q,union3.q,union4.q,union5.q,union6.q,union7.q,union8.q,union9.q,transform1.q,transform2.q,transform_ppr1.q,transform_ppr2.q,script_env_var1.q,script_env_var2.q,script_pipe.q,scriptfile1.q,metadataonly1.q,temp_t able.q,vectorized_ptf.q,optimize_nullscan.q,vector_cast_constant.q beeline.positive.exclude=add_part_exist.q,alter1.q,alter2.q,alter4.q,alter5.q,alter_rename_partition.q,alter_rename_partition_authorization.q,archive.q,archive_corrupt.q,archive_multi.q,archive_mr_1806.q,archive_multi_mr_1806.q,authorization_1.q,authorization_2.q,authorization_4.q,authorization_5.q,authorization_6.q,authorization_7.q,ba_table1.q,ba_table2.q,ba_table3.q,ba_table_udfs.q,binary_table_bincolserde.q,binary_table_colserde.q,cluster.q,columnarserde_create_shortcut.q,combine2.q,constant_prop.q,create_nested_type.q,create_or_replace_view.q,create_struct_table.q,create_union_table.q,database.q,database_location.q,database_properties.q,ddltime.q,describe_database_json.q,drop_database_removes_partition_dirs.q,escape1.q,escape2.q,exim_00_nonpart_empty.q,exim_01_nonpart.q,exim_02_00_part_empty.q,exim_02_part.q,exim_03_nonpart_over_compat.q,exim_04_all_part.q,exim_04_evolved_parts.q,exim_05_some_part.q,exim_06_one_part.q,exim_07_all_part_over_nonoverlap.q,exim_08_nonpart_rename.q, exim_09_part_spec_nonoverlap.q,exim_10_external_managed.q,exim_11_managed_external.q,exim_12_external_location.q,exim_13_managed_location.q,exim_14_managed_location_over_existing.q,exim_15_external_part.q,exim_16_part_external.q,exim_17_part_managed.q,exim_18_part_external.q,exim_19_00_part_external_location.q,exim_19_part_external_location.q,exim_20_part_managed_location.q,exim_21_export_authsuccess.q,exim_22_import_exist_authsuccess.q,exim_23_import_part_authsuccess.q,exim_24_import_nonexist_authsuccess.q,global_limit.q,groupby_complex_types.q,groupby_complex_types_multi_single_reducer.q,index_auth.q,index_auto.q,index_auto_empty.q,index_bitmap.q,index_bitmap1.q,index_bitmap2.q,index_bitmap3.q,index_bitmap_auto.q,index_bitmap_rc.q,index_compact.q,index_compact_1.q,index_compact_2.q,index_compact_3.q,index_stale_partitioned.q,init_file.q,input16.q,input16_cc.q,input46.q,input_columnarserde.q,input_dynamicserde.q,input_lazyserde.q,input_testxpath3.q,input_testxpath4.q,insert2_overwr ite_partitions.q,insertexternal1.q,join_thrift.q,lateral_view.q,load_binary_data.q,load_exist_part_authsuccess.q,load_nonpart_authsuccess.q,load_part_authsuccess.q,loadpart_err.q,lock1.q,lock2.q,lock3.q,lock4.q,merge_dynamic_partition.q,multi_insert.q,multi_insert_move_tasks_share_dependencies.q,null_column.q,ppd_clusterby.q,query_with_semi.q,rename_column.q,sample6.q,sample_islocalmode_hook.q,set_processor_namespaces.q,show_tables.q,source.q,split_sample.q,str_to_map.q,transform1.q,udaf_collect_set.q,udaf_context_ngrams.q,udaf_histogram_numeric.q,udaf_ngrams.q,udaf_percentile_approx.q,udf_array.q,udf_bitmap_and.q,udf_bitmap_or.q,udf_explode.q,udf_format_number.q,udf_map.q,udf_map_keys.q,udf_map_values.q,udf_max.q,udf_min.q,udf_named_struct.q,udf_percentile.q,udf_printf.q,udf_sentences.q,udf_sort_array.q,udf_split.q,udf_struct.q,udf_substr.q,udf_translate.q,udf_union.q,udf_xpath.q,udtf_stack.q,view.q,virtual_column.q Modified: hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerForTest.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerForTest.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerForTest.java (original) +++ hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerForTest.java Sat Jul 26 23:45:46 2014 @@ -19,11 +19,9 @@ package org.apache.hadoop.hive.ql.securi import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider; import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthzPluginException; import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveMetastoreClientFactory; -import org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAccessController; /** * Extends SQLStdHiveAccessController to relax the restriction of not being able to run dfs @@ -43,9 +41,6 @@ public class SQLStdHiveAccessControllerF public void applyAuthorizationConfigPolicy(HiveConf hiveConf) { super.applyAuthorizationConfigPolicy(hiveConf); - // allow set and dfs commands - hiveConf.setVar(ConfVars.HIVE_SECURITY_COMMAND_WHITELIST, "set,dfs"); - // remove restrictions on the variables that can be set using set command hiveConf.setIsModWhiteListEnabled(false); Modified: hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizerFactoryForTest.java URL: http://svn.apache.org/viewvc/hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizerFactoryForTest.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizerFactoryForTest.java (original) +++ hive/branches/spark/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizerFactoryForTest.java Sat Jul 26 23:45:46 2014 @@ -35,7 +35,7 @@ public class SQLStdHiveAuthorizerFactory new SQLStdHiveAccessControllerForTest(metastoreClientFactory, conf, authenticator); return new HiveAuthorizerImpl( privilegeManager, - new SQLStdHiveAuthorizationValidator(metastoreClientFactory, conf, authenticator, + new SQLStdHiveAuthorizationValidatorForTest(metastoreClientFactory, conf, authenticator, privilegeManager) ); } Modified: hive/branches/spark/jdbc/pom.xml URL: http://svn.apache.org/viewvc/hive/branches/spark/jdbc/pom.xml?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/jdbc/pom.xml (original) +++ hive/branches/spark/jdbc/pom.xml Sat Jul 26 23:45:46 2014 @@ -121,6 +121,7 @@ <goal>shade</goal> </goals> <configuration> + <minimizeJar>true</minimizeJar> <shadedArtifactAttached>true</shadedArtifactAttached> <shadedClassifierName>${hive.jdbc.driver.classifier}</shadedClassifierName> <artifactSet> Modified: hive/branches/spark/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java URL: http://svn.apache.org/viewvc/hive/branches/spark/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java (original) +++ hive/branches/spark/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java Sat Jul 26 23:45:46 2014 @@ -111,26 +111,20 @@ public class HiveStatement implements ja @Override public void cancel() throws SQLException { - if (isClosed) { - throw new SQLException("Can't cancel after statement has been closed"); - } - - if (stmtHandle == null) { - return; - } + checkConnection("cancel"); - TCancelOperationReq cancelReq = new TCancelOperationReq(); - cancelReq.setOperationHandle(stmtHandle); + transportLock.lock(); try { - transportLock.lock(); - TCancelOperationResp cancelResp = client.CancelOperation(cancelReq); - Utils.verifySuccessWithInfo(cancelResp.getStatus()); + if (stmtHandle != null) { + TCancelOperationReq cancelReq = new TCancelOperationReq(stmtHandle); + TCancelOperationResp cancelResp = client.CancelOperation(cancelReq); + Utils.verifySuccessWithInfo(cancelResp.getStatus()); + } } catch (SQLException e) { throw e; } catch (Exception e) { throw new SQLException(e.toString(), "08S01", e); - } - finally { + } finally { transportLock.unlock(); } } @@ -158,11 +152,10 @@ public class HiveStatement implements ja } void closeClientOperation() throws SQLException { + transportLock.lock(); try { if (stmtHandle != null) { - TCloseOperationReq closeReq = new TCloseOperationReq(); - closeReq.setOperationHandle(stmtHandle); - transportLock.lock(); + TCloseOperationReq closeReq = new TCloseOperationReq(stmtHandle); TCloseOperationResp closeResp = client.CloseOperation(closeReq); Utils.verifySuccessWithInfo(closeResp.getStatus()); } @@ -170,8 +163,7 @@ public class HiveStatement implements ja throw e; } catch (Exception e) { throw new SQLException(e.toString(), "08S01", e); - } - finally { + } finally { transportLock.unlock(); } stmtHandle = null; @@ -187,16 +179,14 @@ public class HiveStatement implements ja if (isClosed) { return; } - if (stmtHandle != null) { - closeClientOperation(); - } + closeClientOperation(); client = null; resultSet = null; isClosed = true; } + // JDK 1.7 public void closeOnCompletion() throws SQLException { - // JDK 1.7 throw new SQLException("Method not supported"); } @@ -208,25 +198,22 @@ public class HiveStatement implements ja @Override public boolean execute(String sql) throws SQLException { - if (isClosed) { - throw new SQLException("Can't execute after statement has been closed"); - } + checkConnection("execute"); - try { - if (stmtHandle != null) { - closeClientOperation(); - } + closeClientOperation(); - TExecuteStatementReq execReq = new TExecuteStatementReq(sessHandle, sql); - /** - * Run asynchronously whenever possible - * Currently only a SQLOperation can be run asynchronously, - * in a background operation thread - * Compilation is synchronous and execution is asynchronous - */ - execReq.setRunAsync(true); - execReq.setConfOverlay(sessConf); - transportLock.lock(); + TExecuteStatementReq execReq = new TExecuteStatementReq(sessHandle, sql); + /** + * Run asynchronously whenever possible + * Currently only a SQLOperation can be run asynchronously, + * in a background operation thread + * Compilation is synchronous and execution is asynchronous + */ + execReq.setRunAsync(true); + execReq.setConfOverlay(sessConf); + + transportLock.lock(); + try { TExecuteStatementResp execResp = client.ExecuteStatement(execReq); Utils.verifySuccessWithInfo(execResp.getStatus()); stmtHandle = execResp.getOperationHandle(); @@ -234,8 +221,7 @@ public class HiveStatement implements ja throw eS; } catch (Exception ex) { throw new SQLException(ex.toString(), "08S01", ex); - } - finally { + } finally { transportLock.unlock(); } @@ -253,11 +239,7 @@ public class HiveStatement implements ja transportLock.lock(); try { statusResp = client.GetOperationStatus(statusReq); - } - catch (Exception e) { - throw e; - } - finally { + } finally { transportLock.unlock(); } Utils.verifySuccessWithInfo(statusResp.getStatus()); @@ -300,6 +282,12 @@ public class HiveStatement implements ja return true; } + private void checkConnection(String action) throws SQLException { + if (isClosed) { + throw new SQLException("Can't " + action + " after statement has been closed"); + } + } + /* * (non-Javadoc) * @@ -411,6 +399,7 @@ public class HiveStatement implements ja @Override public Connection getConnection() throws SQLException { + checkConnection("getConnection"); return this.connection; } @@ -422,7 +411,8 @@ public class HiveStatement implements ja @Override public int getFetchDirection() throws SQLException { - throw new SQLException("Method not supported"); + checkConnection("getFetchDirection"); + return ResultSet.FETCH_FORWARD; } /* @@ -433,6 +423,7 @@ public class HiveStatement implements ja @Override public int getFetchSize() throws SQLException { + checkConnection("getFetchSize"); return fetchSize; } @@ -466,6 +457,7 @@ public class HiveStatement implements ja @Override public int getMaxRows() throws SQLException { + checkConnection("getMaxRows"); return maxRows; } @@ -499,7 +491,8 @@ public class HiveStatement implements ja @Override public int getQueryTimeout() throws SQLException { - throw new SQLException("Method not supported"); + checkConnection("getQueryTimeout"); + return 0; } /* @@ -510,6 +503,7 @@ public class HiveStatement implements ja @Override public ResultSet getResultSet() throws SQLException { + checkConnection("getResultSet"); return resultSet; } @@ -543,7 +537,8 @@ public class HiveStatement implements ja @Override public int getResultSetType() throws SQLException { - throw new SQLException("Method not supported"); + checkConnection("getResultSetType"); + return ResultSet.TYPE_FORWARD_ONLY; } /* @@ -554,6 +549,7 @@ public class HiveStatement implements ja @Override public int getUpdateCount() throws SQLException { + checkConnection("getUpdateCount"); return 0; } @@ -565,6 +561,7 @@ public class HiveStatement implements ja @Override public SQLWarning getWarnings() throws SQLException { + checkConnection("getWarnings"); return warningChain; } @@ -579,9 +576,9 @@ public class HiveStatement implements ja return isClosed; } + // JDK 1.7 public boolean isCloseOnCompletion() throws SQLException { - // JDK 1.7 - throw new SQLException("Method not supported"); + return false; } /* @@ -592,7 +589,7 @@ public class HiveStatement implements ja @Override public boolean isPoolable() throws SQLException { - throw new SQLException("Method not supported"); + return false; } /* @@ -625,7 +622,10 @@ public class HiveStatement implements ja @Override public void setFetchDirection(int direction) throws SQLException { - throw new SQLException("Method not supported"); + checkConnection("setFetchDirection"); + if (direction != ResultSet.FETCH_FORWARD) { + throw new SQLException("Not supported direction " + direction); + } } /* @@ -636,6 +636,7 @@ public class HiveStatement implements ja @Override public void setFetchSize(int rows) throws SQLException { + checkConnection("setFetchSize"); fetchSize = rows; } @@ -658,6 +659,7 @@ public class HiveStatement implements ja @Override public void setMaxRows(int max) throws SQLException { + checkConnection("setMaxRows"); if (max < 0) { throw new SQLException("max must be >= 0"); } @@ -694,7 +696,7 @@ public class HiveStatement implements ja @Override public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw new SQLException("Method not supported"); + return false; } /* @@ -705,7 +707,7 @@ public class HiveStatement implements ja @Override public <T> T unwrap(Class<T> iface) throws SQLException { - throw new SQLException("Method not supported"); + throw new SQLException("Cannot unwrap to " + iface); } } Modified: hive/branches/spark/metastore/if/hive_metastore.thrift URL: http://svn.apache.org/viewvc/hive/branches/spark/metastore/if/hive_metastore.thrift?rev=1613740&r1=1613739&r2=1613740&view=diff ============================================================================== --- hive/branches/spark/metastore/if/hive_metastore.thrift (original) +++ hive/branches/spark/metastore/if/hive_metastore.thrift Sat Jul 26 23:45:46 2014 @@ -101,6 +101,11 @@ enum CompactionType { MAJOR = 2, } +enum GrantRevokeType { + GRANT = 1, + REVOKE = 2, +} + struct HiveObjectRef{ 1: HiveObjectType objectType, 2: string dbName, @@ -134,6 +139,16 @@ struct PrincipalPrivilegeSet { 3: map<string, list<PrivilegeGrantInfo>> rolePrivileges, //role name -> privilege grant info } +struct GrantRevokePrivilegeRequest { + 1: GrantRevokeType requestType; + 2: PrivilegeBag privileges; + 3: optional bool revokeGrantOption; // Only for revoke request +} + +struct GrantRevokePrivilegeResponse { + 1: optional bool success; +} + struct Role { 1: string roleName, 2: i32 createTime, @@ -168,6 +183,20 @@ struct GetPrincipalsInRoleResponse { 1: required list<RolePrincipalGrant> principalGrants; } +struct GrantRevokeRoleRequest { + 1: GrantRevokeType requestType; + 2: string roleName; + 3: string principalName; + 4: PrincipalType principalType; + 5: optional string grantor; // Needed for grant + 6: optional PrincipalType grantorType; // Needed for grant + 7: optional bool grantOption; +} + +struct GrantRevokeRoleResponse { + 1: optional bool success; +} + // namespace for tables struct Database { 1: string name, @@ -230,6 +259,7 @@ struct Table { 11: string viewExpandedText, // expanded view text, null for non-view 12: string tableType, // table type enum, e.g. EXTERNAL_TABLE 13: optional PrincipalPrivilegeSet privileges, + 14: optional bool temporary=false } struct Partition { @@ -957,11 +987,14 @@ service ThriftHiveMetastore extends fb30 bool create_role(1:Role role) throws(1:MetaException o1) bool drop_role(1:string role_name) throws(1:MetaException o1) list<string> get_role_names() throws(1:MetaException o1) + // Deprecated, use grant_revoke_role() bool grant_role(1:string role_name, 2:string principal_name, 3:PrincipalType principal_type, 4:string grantor, 5:PrincipalType grantorType, 6:bool grant_option) throws(1:MetaException o1) + // Deprecated, use grant_revoke_role() bool revoke_role(1:string role_name, 2:string principal_name, 3:PrincipalType principal_type) throws(1:MetaException o1) list<Role> list_roles(1:string principal_name, 2:PrincipalType principal_type) throws(1:MetaException o1) + GrantRevokeRoleResponse grant_revoke_role(1:GrantRevokeRoleRequest request) throws(1:MetaException o1) // get all role-grants for users/roles that have been granted the given role // Note that in the returned list of RolePrincipalGrants, the roleName is @@ -978,8 +1011,11 @@ service ThriftHiveMetastore extends fb30 list<HiveObjectPrivilege> list_privileges(1:string principal_name, 2:PrincipalType principal_type, 3: HiveObjectRef hiveObject) throws(1:MetaException o1) + // Deprecated, use grant_revoke_privileges() bool grant_privileges(1:PrivilegeBag privileges) throws(1:MetaException o1) + // Deprecated, use grant_revoke_privileges() bool revoke_privileges(1:PrivilegeBag privileges) throws(1:MetaException o1) + GrantRevokePrivilegeResponse grant_revoke_privileges(1:GrantRevokePrivilegeRequest request) throws(1:MetaException o1); // this is used by metastore client to send UGI information to metastore server immediately // after setting up a connection.
