diff --git a/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out b/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out index db564ff..19e4e48 100644 --- a/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out +++ b/contrib/src/test/results/clientnegative/case_with_row_sequence.q.out @@ -6,10 +6,12 @@ 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 diff --git a/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out b/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out index 89646a2..27d3945 100644 --- a/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out +++ b/contrib/src/test/results/clientnegative/invalid_row_sequence.q.out @@ -3,17 +3,21 @@ PREHOOK: query: -- Verify that a stateful UDF cannot be used outside of the SELE 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 diff --git a/contrib/src/test/results/clientnegative/udtf_explode2.q.out b/contrib/src/test/results/clientnegative/udtf_explode2.q.out index 87dc534..75043cb 100644 --- a/contrib/src/test/results/clientnegative/udtf_explode2.q.out +++ b/contrib/src/test/results/clientnegative/udtf_explode2.q.out @@ -1,7 +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 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 diff --git a/contrib/src/test/results/clientpositive/dboutput.q.out b/contrib/src/test/results/clientpositive/dboutput.q.out index 909ae2e..4cb9950 100644 --- a/contrib/src/test/results/clientpositive/dboutput.q.out +++ b/contrib/src/test/results/clientpositive/dboutput.q.out @@ -1,9 +1,11 @@ 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 @@ -187,6 +189,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out b/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out index 4b849fa..7cd5160 100644 --- a/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out +++ b/contrib/src/test/results/clientpositive/lateral_view_explode2.q.out @@ -1,9 +1,11 @@ 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 @@ -18,6 +20,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udaf_example_avg.q.out b/contrib/src/test/results/clientpositive/udaf_example_avg.q.out index 3786078..99f3075 100644 --- a/contrib/src/test/results/clientpositive/udaf_example_avg.q.out +++ b/contrib/src/test/results/clientpositive/udaf_example_avg.q.out @@ -1,9 +1,11 @@ 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))) @@ -78,6 +80,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out b/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out index 83b4802..477bee9 100644 --- a/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out +++ b/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out @@ -1,9 +1,11 @@ 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 @@ -91,6 +93,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udaf_example_max.q.out b/contrib/src/test/results/clientpositive/udaf_example_max.q.out index b68ec61..257e9ce 100644 --- a/contrib/src/test/results/clientpositive/udaf_example_max.q.out +++ b/contrib/src/test/results/clientpositive/udaf_example_max.q.out @@ -1,9 +1,11 @@ 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 @@ -83,6 +85,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out b/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out index 62632e3..46771f6 100644 --- a/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out +++ b/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out @@ -1,9 +1,11 @@ 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) @@ -78,6 +80,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udaf_example_min.q.out b/contrib/src/test/results/clientpositive/udaf_example_min.q.out index ec3a134..852759d 100644 --- a/contrib/src/test/results/clientpositive/udaf_example_min.q.out +++ b/contrib/src/test/results/clientpositive/udaf_example_min.q.out @@ -1,9 +1,11 @@ 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 @@ -83,6 +85,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out b/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out index 2e802e0..ba39605 100644 --- a/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out +++ b/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out @@ -1,9 +1,11 @@ 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) @@ -78,6 +80,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udf_example_add.q.out b/contrib/src/test/results/clientpositive/udf_example_add.q.out index 4510ba4..3b4e30a 100644 --- a/contrib/src/test/results/clientpositive/udf_example_add.q.out +++ b/contrib/src/test/results/clientpositive/udf_example_add.q.out @@ -1,9 +1,11 @@ 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), @@ -82,6 +84,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out b/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out index 1e3bca4..61d4f22 100644 --- a/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out +++ b/contrib/src/test/results/clientpositive/udf_example_arraymapstruct.q.out @@ -1,21 +1,27 @@ 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 @@ -77,18 +83,24 @@ 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 diff --git a/contrib/src/test/results/clientpositive/udf_example_format.q.out b/contrib/src/test/results/clientpositive/udf_example_format.q.out index 83e508a..98208a6 100644 --- a/contrib/src/test/results/clientpositive/udf_example_format.q.out +++ b/contrib/src/test/results/clientpositive/udf_example_format.q.out @@ -1,9 +1,11 @@ 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), @@ -70,6 +72,8 @@ 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 diff --git a/contrib/src/test/results/clientpositive/udf_row_sequence.q.out b/contrib/src/test/results/clientpositive/udf_row_sequence.q.out index 3b58cb5..84754a1 100644 --- a/contrib/src/test/results/clientpositive/udf_row_sequence.q.out +++ b/contrib/src/test/results/clientpositive/udf_row_sequence.q.out @@ -14,10 +14,12 @@ 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 @@ -644,6 +646,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udtf_explode2.q.out b/contrib/src/test/results/clientpositive/udtf_explode2.q.out index 47512c3..6fa5466 100644 --- a/contrib/src/test/results/clientpositive/udtf_explode2.q.out +++ b/contrib/src/test/results/clientpositive/udtf_explode2.q.out @@ -1,9 +1,11 @@ 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 @@ -18,6 +20,8 @@ POSTHOOK: Input: default@src 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 diff --git a/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out b/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out index 4ce0481..6d062cb 100644 --- a/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out +++ b/contrib/src/test/results/clientpositive/udtf_output_on_close.q.out @@ -1,9 +1,11 @@ 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 diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java index c89f90c..e512199 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -724,18 +724,21 @@ private static void doAuthorizationV2(SessionState ss, HiveOperation op, HashSet //support for authorization on partitions needs to be added String dbname = null; - String tableURI = null; + String objName = null; switch(privObject.getType()){ case DATABASE: dbname = privObject.getDatabase() == null ? null : privObject.getDatabase().getName(); break; case TABLE: dbname = privObject.getTable() == null ? null : privObject.getTable().getDbName(); - tableURI = privObject.getTable() == null ? null : privObject.getTable().getTableName(); + objName = privObject.getTable() == null ? null : privObject.getTable().getTableName(); break; case DFS_DIR: case LOCAL_DIR: - tableURI = privObject.getD(); + objName = privObject.getD(); + break; + case FUNCTION: + objName = privObject.getFunctionName(); break; case DUMMYPARTITION: case PARTITION: @@ -745,7 +748,7 @@ private static void doAuthorizationV2(SessionState ss, HiveOperation op, HashSet throw new AssertionError("Unexpected object type"); } HivePrivObjectActionType actionType = AuthorizationUtils.getActionType(privObject); - HivePrivilegeObject hPrivObject = new HivePrivilegeObject(privObjType, dbname, tableURI, + HivePrivilegeObject hPrivObject = new HivePrivilegeObject(privObjType, dbname, objName, actionType); hivePrivobjs.add(hPrivObject); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 0ffd16c..d2e1779 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -738,7 +738,7 @@ private int showGrantsV2(ShowGrantDesc showGrantDesc) throws HiveException { //only grantInfo is used HiveObjectPrivilege thriftObjectPriv = new HiveObjectPrivilege(new HiveObjectRef( AuthorizationUtils.getThriftHiveObjType(privObj.getType()),privObj.getDbname(), - privObj.getTableViewURI(),null,null), principal.getName(), + privObj.getObjectName(),null,null), principal.getName(), AuthorizationUtils.getThriftPrincipalType(principal.getType()), grantInfo); privList.add(thriftObjectPriv); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/Entity.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/Entity.java index 2a38aad..3e99e7f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/hooks/Entity.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/Entity.java @@ -33,6 +33,10 @@ * query. This object may be a table, partition, dfs directory or a local * directory. */ +/** + * @author thejas + * + */ public class Entity implements Serializable { private static final long serialVersionUID = 1L; @@ -40,7 +44,7 @@ * The type of the entity. */ public static enum Type { - DATABASE, TABLE, PARTITION, DUMMYPARTITION, DFS_DIR, LOCAL_DIR + DATABASE, TABLE, PARTITION, DUMMYPARTITION, DFS_DIR, LOCAL_DIR, FUNCTION } /** @@ -64,11 +68,17 @@ private Partition p; /** - * The directory if this is a directory. + * The directory if this is a directory */ private String d; /** + * An object that is represented as a String + * Currently used for functions + */ + private String stringObject; + + /** * This is derived from t and p, but we need to serialize this field to make * sure Entity.hashCode() does not need to recursively read into t and p. */ @@ -136,6 +146,21 @@ public void setD(String d) { this.d = d; } + public String getFunctionName() { + if (typ == Type.FUNCTION) { + return stringObject; + } + return null; + } + + public void setFunctionName(String funcName) { + if (typ != Type.FUNCTION) { + throw new IllegalArgumentException( + "Set function can't be called on entity if the entity type is not " + Type.FUNCTION); + } + this.stringObject = funcName; + } + /** * Only used by serialization. */ @@ -210,6 +235,24 @@ public Entity(String d, boolean islocal, boolean complete) { } /** + * Create an entity representing a object with given name, database namespace and type + * @param database - database namespace + * @param strObj - object name as string + * @param type - the entity type. this constructor only supports FUNCTION type currently + */ + public Entity(Database database, String strObj, Type type) { + if (type != Type.FUNCTION) { + throw new IllegalArgumentException("This constructor is supported only for type:" + + Type.FUNCTION); + } + this.database = database; + this.stringObject = strObj; + this.typ = type; + this.complete = true; + name = computeName(); + } + + /** * Get the parameter map of the Entity. */ public Map getParameters() { @@ -293,6 +336,8 @@ private String computeName() { return t.getDbName() + "@" + t.getTableName() + "@" + p.getName(); case DUMMYPARTITION: return p.getName(); + case FUNCTION: + return stringObject; default: return d; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java index 26836b6..7f1d71b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java @@ -82,6 +82,19 @@ public WriteEntity(Table t, WriteType type, boolean complete) { } /** + * Constructor for objects represented as String. + * Currently applicable only for function names. + * @param db + * @param objName + * @param type + * @param writeType + */ + public WriteEntity(Database db, String objName, Type type, WriteType writeType) { + super(db, objName, type); + this.writeType = writeType; + } + + /** * Constructor for a partition. * * @param p diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java index 37b1669..4300145 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java @@ -12,10 +12,7 @@ import java.util.regex.Pattern; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.hive.common.FileUtils; -import org.apache.hadoop.hive.conf.HiveConf;; -import org.apache.hadoop.hive.metastore.HiveMetaHook; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaHookLoader; import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.IMetaStoreClient; @@ -176,7 +173,7 @@ protected void drop_table_with_environment_context(String dbname, String name, return tables; } - + @Override public boolean tableExists(String databaseName, String tableName) throws MetaException, TException, UnknownDBException { @@ -334,7 +331,7 @@ private void dropTempTable(org.apache.hadoop.hive.metastore.api.Table table, boo " is not writable by " + conf.getUser()); } } catch (IOException err) { - MetaException metaException = + MetaException metaException = new MetaException("Error checking temp table path for " + table.getTableName()); metaException.initCause(err); throw metaException; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java index e64ef76..35756e1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java @@ -32,14 +32,13 @@ import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.exec.FunctionUtils; import org.apache.hadoop.hive.ql.exec.TaskFactory; +import org.apache.hadoop.hive.ql.hooks.Entity.Type; import org.apache.hadoop.hive.ql.hooks.WriteEntity; -import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.CreateFunctionDesc; import org.apache.hadoop.hive.ql.plan.DropFunctionDesc; import org.apache.hadoop.hive.ql.plan.FunctionWork; import org.apache.hadoop.hive.ql.plan.PlanUtils; -import org.apache.hadoop.hive.ql.session.SessionState; /** * FunctionSemanticAnalyzer. @@ -78,7 +77,7 @@ private void analyzeCreateFunction(ASTNode ast) throws SemanticException { // find any referenced resources List resources = getResourceList(ast); - + CreateFunctionDesc desc = new CreateFunctionDesc(functionName, isTemporaryFunction, className, resources); rootTasks.add(TaskFactory.get(new FunctionWork(desc), conf)); @@ -156,6 +155,7 @@ private ResourceType getResourceType(ASTNode token) throws SemanticException { */ private void addEntities(String functionName, boolean isTemporaryFunction) throws SemanticException { + // Add the relevant database 'namespace' as a WriteEntity Database database = null; if (isTemporaryFunction) { // This means temp function creation is also restricted. @@ -173,5 +173,8 @@ private void addEntities(String functionName, boolean isTemporaryFunction) if (database != null) { outputs.add(new WriteEntity(database, WriteEntity.WriteType.DDL_NO_LOCK)); } + + // Add the function name as a WriteEntity + outputs.add(new WriteEntity(database, functionName,Type.FUNCTION, WriteEntity.WriteType.DDL_NO_LOCK)); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationUtils.java index 604c39d..68b0fbc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationUtils.java @@ -80,6 +80,8 @@ public static HivePrivilegeObjectType getHivePrivilegeObjectType(Type type) { case PARTITION: case DUMMYPARTITION: //need to determine if a different type is needed for dummy partitions return HivePrivilegeObjectType.PARTITION; + case FUNCTION: + return HivePrivilegeObjectType.FUNCTION; default: return null; } @@ -140,12 +142,8 @@ public static HiveObjectType getThriftHiveObjType(HivePrivilegeObjectType type) return HiveObjectType.TABLE; case PARTITION: return HiveObjectType.PARTITION; - case LOCAL_URI: - case DFS_URI: - throw new HiveException("Unsupported type " + type); default: - //should not happen as we have accounted for all types - throw new AssertionError("Unsupported type " + type); + throw new HiveException("Unsupported type " + type); } } @@ -161,7 +159,7 @@ public static HiveObjectRef getThriftHiveObjectRef(HivePrivilegeObject privObj) return null; } HiveObjectType objType = getThriftHiveObjType(privObj.getType()); - return new HiveObjectRef(objType, privObj.getDbname(), privObj.getTableViewURI(), null, null); + return new HiveObjectRef(objType, privObj.getDbname(), privObj.getObjectName(), null, null); } public static HivePrivObjectActionType getActionType(Entity privObject) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HivePrivilegeObject.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HivePrivilegeObject.java index 8cdff5b..76532bc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HivePrivilegeObject.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HivePrivilegeObject.java @@ -30,32 +30,8 @@ @Unstable public class HivePrivilegeObject { - @Override - public String toString() { - String name = null; - switch (type) { - case DATABASE: - name = dbname; - break; - case TABLE_OR_VIEW: - name = (dbname == null ? "" : dbname + ".") + tableviewname; - break; - case LOCAL_URI: - case DFS_URI: - name = tableviewname; - break; - case COMMAND_PARAMS: - name = commandParams.toString(); - break; - case PARTITION: - break; - } - return "Object [type=" + type + ", name=" + name + "]"; - - } - public enum HivePrivilegeObjectType { - DATABASE, TABLE_OR_VIEW, PARTITION, LOCAL_URI, DFS_URI, COMMAND_PARAMS + DATABASE, TABLE_OR_VIEW, PARTITION, LOCAL_URI, DFS_URI, COMMAND_PARAMS, FUNCTION }; public enum HivePrivObjectActionType { @@ -63,7 +39,7 @@ public String toString() { }; private final HivePrivilegeObjectType type; private final String dbname; - private final String tableviewname; + private final String objectName; private final List commandParams; private final HivePrivObjectActionType actionType; @@ -71,9 +47,9 @@ public HivePrivilegeObject(HivePrivilegeObjectType type, String dbname, String t this(type, dbname, tableViewURI, HivePrivObjectActionType.OTHER); } - public HivePrivilegeObject(HivePrivilegeObjectType type, String dbname, String tableViewURI, + public HivePrivilegeObject(HivePrivilegeObjectType type, String dbname, String objectName, HivePrivObjectActionType actionType) { - this(type, dbname, tableViewURI, actionType, null); + this(type, dbname, objectName, actionType, null); } /** @@ -86,11 +62,11 @@ public static HivePrivilegeObject createHivePrivilegeObject(List cmdPara cmdParams); } - public HivePrivilegeObject(HivePrivilegeObjectType type, String dbname, String tableViewURI, + public HivePrivilegeObject(HivePrivilegeObjectType type, String dbname, String objectName, HivePrivObjectActionType actionType, List commandParams) { this.type = type; this.dbname = dbname; - this.tableviewname = tableViewURI; + this.objectName = objectName; this.actionType = actionType; this.commandParams = commandParams; } @@ -103,8 +79,11 @@ public String getDbname() { return dbname; } - public String getTableViewURI() { - return tableviewname; + /** + * @return name of table/view/uri/function name + */ + public String getObjectName() { + return objectName; } public HivePrivObjectActionType getActionType() { @@ -114,4 +93,41 @@ public HivePrivObjectActionType getActionType() { public List getCommandParams() { return commandParams; } + + @Override + public String toString() { + String name = null; + switch (type) { + case DATABASE: + name = dbname; + break; + case TABLE_OR_VIEW: + name = (dbname == null ? "" : dbname + ".") + objectName; + break; + case LOCAL_URI: + case DFS_URI: + case FUNCTION: + name = objectName; + break; + case COMMAND_PARAMS: + name = commandParams.toString(); + break; + case PARTITION: + break; + } + + // get the string representing action type if its non default action type + String actionTypeStr =""; + if (actionType != null) { + switch (actionType) { + case INSERT: + case INSERT_OVERWRITE: + actionTypeStr = ", action=" + actionType; + default: + } + } + + return "Object [type=" + type + ", name=" + name + actionTypeStr + "]"; + } + } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/GrantPrivAuthUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/GrantPrivAuthUtils.java index 1ac6cab..33d3c24 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/GrantPrivAuthUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/GrantPrivAuthUtils.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -64,9 +65,11 @@ private static void checkRequiredPrivileges( metastoreClient, userName, hivePrivObject, curRoles, isAdmin); // check if required privileges is subset of available privileges + List deniedMessages = new ArrayList(); Collection missingPrivs = reqPrivileges.findMissingPrivs(availPrivs); - SQLAuthorizationUtils.assertNoMissingPrivilege(missingPrivs, new HivePrincipal(userName, - HivePrincipalType.USER), hivePrivObject, opType); + SQLAuthorizationUtils.addMissingPrivMsg(missingPrivs, hivePrivObject, deniedMessages); + SQLAuthorizationUtils.assertNoDeniedPermissions(new HivePrincipal(userName, + HivePrincipalType.USER), opType, deniedMessages); } private static RequiredPrivileges getGrantRequiredPrivileges(List hivePrivileges) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLAuthorizationUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLAuthorizationUtils.java index 6b635ce..41fd598 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLAuthorizationUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLAuthorizationUtils.java @@ -260,7 +260,7 @@ private static boolean isOwner(IMetaStoreClient metastoreClient, String userName Table thriftTableObj = null; try { thriftTableObj = metastoreClient.getTable(hivePrivObject.getDbname(), - hivePrivObject.getTableViewURI()); + hivePrivObject.getObjectName()); } catch (Exception e) { throwGetObjErr(e, hivePrivObject); } @@ -348,19 +348,15 @@ private static void addRequiredPrivs(RequiredPrivileges reqPrivs, } } - public static void assertNoMissingPrivilege(Collection missingPrivs, - HivePrincipal hivePrincipal, HivePrivilegeObject hivePrivObject, HiveOperationType opType) - throws HiveAccessControlException { + public static void addMissingPrivMsg(Collection missingPrivs, + HivePrivilegeObject hivePrivObject, List deniedMessages) { if (missingPrivs.size() != 0) { // there are some required privileges missing, create error message // sort the privileges so that error message is deterministic (for tests) List sortedmissingPrivs = new ArrayList(missingPrivs); Collections.sort(sortedmissingPrivs); - - String errMsg = "Permission denied. " + hivePrincipal - + " does not have following privileges on " + hivePrivObject + - " for operation " + opType + " : " + sortedmissingPrivs; - throw new HiveAccessControlException(errMsg.toString()); + String errMsg = sortedmissingPrivs + " on " + hivePrivObject; + deniedMessages.add(errMsg); } } @@ -401,5 +397,16 @@ public static RequiredPrivileges getPrivilegesFromFS(Path filePath, HiveConf con return availPrivs; } + public static void assertNoDeniedPermissions(HivePrincipal hivePrincipal, + HiveOperationType hiveOpType, List deniedMessages) throws HiveAccessControlException { + if (deniedMessages.size() != 0) { + Collections.sort(deniedMessages); + String errorMessage = "Permission denied: " + hivePrincipal + + " does not have following privileges for operation " + hiveOpType + " " + + deniedMessages; + throw new HiveAccessControlException(errorMessage); + } + } + } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java index 932b980..917b349 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java @@ -415,7 +415,7 @@ public void revokeRole(List hivePrincipals, List roleName } HivePrivilegeObject resPrivObj = new HivePrivilegeObject( - getPluginObjType(msObjRef.getObjectType()), msObjRef.getDbName(), + getPluginPrivilegeObjType(msObjRef.getObjectType()), msObjRef.getDbName(), msObjRef.getObjectName()); // result grantor principal @@ -474,8 +474,14 @@ private boolean userBelongsToRole(String roleName) throws HiveAuthzPluginExcepti return false; } - private HivePrivilegeObjectType getPluginObjType(HiveObjectType objectType) - throws HiveAuthzPluginException { + /** + * Convert metastore object type to HivePrivilegeObjectType. + * Also verifies that metastore object type is of a type on which metastore privileges are + * supported by sql std auth. + * @param objectType + * @return corresponding HivePrivilegeObjectType + */ + private HivePrivilegeObjectType getPluginPrivilegeObjType(HiveObjectType objectType) { switch (objectType) { case DATABASE: return HivePrivilegeObjectType.DATABASE; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java index c472cef..83a0b45 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -71,13 +72,16 @@ public void checkPrivileges(HiveOperationType hiveOpType, List deniedMessages = new ArrayList(); + checkPrivileges(hiveOpType, inputHObjs, metastoreClient, userName, IOType.INPUT, deniedMessages); + checkPrivileges(hiveOpType, outputHObjs, metastoreClient, userName, IOType.OUTPUT, deniedMessages); + SQLAuthorizationUtils.assertNoDeniedPermissions(new HivePrincipal(userName, + HivePrincipalType.USER), hiveOpType, deniedMessages); } private void checkPrivileges(HiveOperationType hiveOpType, List hiveObjects, - IMetaStoreClient metastoreClient, String userName, IOType ioType) + IMetaStoreClient metastoreClient, String userName, IOType ioType, List deniedMessages) throws HiveAuthzPluginException, HiveAccessControlException { if (hiveObjects == null) { @@ -95,7 +99,7 @@ private void checkPrivileges(HiveOperationType hiveOpType, List missingPriv = requiredPrivs.findMissingPrivs(availPrivs); - SQLAuthorizationUtils.assertNoMissingPrivilege(missingPriv, new HivePrincipal(userName, - HivePrincipalType.USER), hiveObj, hiveOpType); + SQLAuthorizationUtils.addMissingPrivMsg(missingPriv, hiveObj, deniedMessages); } } diff --git a/ql/src/test/results/clientnegative/authorization_addjar.q.out b/ql/src/test/results/clientnegative/authorization_addjar.q.out index 68c3c60..913b00e 100644 --- a/ql/src/test/results/clientnegative/authorization_addjar.q.out +++ b/ql/src/test/results/clientnegative/authorization_addjar.q.out @@ -1 +1 @@ -Query returned non-zero code: 1, cause: Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=COMMAND_PARAMS, name=[jar, dummy.jar]] for operation ADD : [ADMIN PRIVILEGE] +Query returned non-zero code: 1, cause: Permission denied: Principal [name=hive_test_user, type=USER] does not have following privileges for operation ADD [[ADMIN PRIVILEGE] on Object [type=COMMAND_PARAMS, name=[jar, dummy.jar]]] diff --git a/ql/src/test/results/clientnegative/authorization_addpartition.q.out b/ql/src/test/results/clientnegative/authorization_addpartition.q.out index a14080a..9ab2ef8 100644 --- a/ql/src/test/results/clientnegative/authorization_addpartition.q.out +++ b/ql/src/test/results/clientnegative/authorization_addpartition.q.out @@ -7,4 +7,4 @@ create table tpart(i int, j int) partitioned by (k string) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@tpart -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.tpart] for operation ALTERTABLE_ADDPARTS : [INSERT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation ALTERTABLE_ADDPARTS [[INSERT] on Object [type=TABLE_OR_VIEW, name=default.tpart]] diff --git a/ql/src/test/results/clientnegative/authorization_alter_db_owner.q.out b/ql/src/test/results/clientnegative/authorization_alter_db_owner.q.out index 928e9f5..6f65f30 100644 --- a/ql/src/test/results/clientnegative/authorization_alter_db_owner.q.out +++ b/ql/src/test/results/clientnegative/authorization_alter_db_owner.q.out @@ -6,4 +6,4 @@ PREHOOK: type: CREATEDATABASE create database dbao POSTHOOK: type: CREATEDATABASE -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=DATABASE, name=dbao] for operation ALTERDATABASE_OWNER : [ADMIN PRIVILEGE] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation ALTERDATABASE_OWNER [[ADMIN PRIVILEGE] on Object [type=DATABASE, name=dbao]] diff --git a/ql/src/test/results/clientnegative/authorization_alter_db_owner_default.q.out b/ql/src/test/results/clientnegative/authorization_alter_db_owner_default.q.out index d4a617e..323ffc2 100644 --- a/ql/src/test/results/clientnegative/authorization_alter_db_owner_default.q.out +++ b/ql/src/test/results/clientnegative/authorization_alter_db_owner_default.q.out @@ -1 +1 @@ -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=DATABASE, name=default] for operation ALTERDATABASE_OWNER : [ADMIN PRIVILEGE] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation ALTERDATABASE_OWNER [[ADMIN PRIVILEGE] on Object [type=DATABASE, name=default]] diff --git a/ql/src/test/results/clientnegative/authorization_compile.q.out b/ql/src/test/results/clientnegative/authorization_compile.q.out index cf5e4d1..3d6f8a8 100644 --- a/ql/src/test/results/clientnegative/authorization_compile.q.out +++ b/ql/src/test/results/clientnegative/authorization_compile.q.out @@ -1 +1 @@ -Query returned non-zero code: 1, cause: Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=COMMAND_PARAMS, name=[`dummy code ` AS groovy NAMED something.groovy]] for operation COMPILE : [ADMIN PRIVILEGE] +Query returned non-zero code: 1, cause: Permission denied: Principal [name=hive_test_user, type=USER] does not have following privileges for operation COMPILE [[ADMIN PRIVILEGE] on Object [type=COMMAND_PARAMS, name=[`dummy code ` AS groovy NAMED something.groovy]]] diff --git a/ql/src/test/results/clientnegative/authorization_create_func1.q.out b/ql/src/test/results/clientnegative/authorization_create_func1.q.out index 8863e91..3bc49a6 100644 --- a/ql/src/test/results/clientnegative/authorization_create_func1.q.out +++ b/ql/src/test/results/clientnegative/authorization_create_func1.q.out @@ -1 +1 @@ -FAILED: HiveAccessControlException Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=DATABASE, name=default] for operation CREATEFUNCTION : [ADMIN PRIVILEGE] +FAILED: HiveAccessControlException Permission denied: Principal [name=hive_test_user, type=USER] does not have following privileges for operation CREATEFUNCTION [[ADMIN PRIVILEGE] on Object [type=DATABASE, name=default], [ADMIN PRIVILEGE] on Object [type=FUNCTION, name=perm_fn]] diff --git a/ql/src/test/results/clientnegative/authorization_create_func2.q.out b/ql/src/test/results/clientnegative/authorization_create_func2.q.out index 8863e91..4c01431 100644 --- a/ql/src/test/results/clientnegative/authorization_create_func2.q.out +++ b/ql/src/test/results/clientnegative/authorization_create_func2.q.out @@ -1 +1 @@ -FAILED: HiveAccessControlException Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=DATABASE, name=default] for operation CREATEFUNCTION : [ADMIN PRIVILEGE] +FAILED: HiveAccessControlException Permission denied: Principal [name=hive_test_user, type=USER] does not have following privileges for operation CREATEFUNCTION [[ADMIN PRIVILEGE] on Object [type=DATABASE, name=default], [ADMIN PRIVILEGE] on Object [type=FUNCTION, name=temp_fn]] diff --git a/ql/src/test/results/clientnegative/authorization_create_macro1.q.out b/ql/src/test/results/clientnegative/authorization_create_macro1.q.out index e4d410c..4676b75 100644 --- a/ql/src/test/results/clientnegative/authorization_create_macro1.q.out +++ b/ql/src/test/results/clientnegative/authorization_create_macro1.q.out @@ -1 +1 @@ -FAILED: HiveAccessControlException Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=DATABASE, name=default] for operation CREATEMACRO : [ADMIN PRIVILEGE] +FAILED: HiveAccessControlException Permission denied: Principal [name=hive_test_user, type=USER] does not have following privileges for operation CREATEMACRO [[ADMIN PRIVILEGE] on Object [type=DATABASE, name=default]] diff --git a/ql/src/test/results/clientnegative/authorization_createview.q.out b/ql/src/test/results/clientnegative/authorization_createview.q.out index 3d0d191..ea14743 100644 --- a/ql/src/test/results/clientnegative/authorization_createview.q.out +++ b/ql/src/test/results/clientnegative/authorization_createview.q.out @@ -7,4 +7,4 @@ create table t1(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation CREATEVIEW : [SELECT with grant] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation CREATEVIEW [[SELECT with grant] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_ctas.q.out b/ql/src/test/results/clientnegative/authorization_ctas.q.out index c9d0130..ad704fa 100644 --- a/ql/src/test/results/clientnegative/authorization_ctas.q.out +++ b/ql/src/test/results/clientnegative/authorization_ctas.q.out @@ -7,4 +7,4 @@ create table t1(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation CREATETABLE_AS_SELECT : [SELECT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation CREATETABLE_AS_SELECT [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_deletejar.q.out b/ql/src/test/results/clientnegative/authorization_deletejar.q.out index 71b11fd..5ad3526 100644 --- a/ql/src/test/results/clientnegative/authorization_deletejar.q.out +++ b/ql/src/test/results/clientnegative/authorization_deletejar.q.out @@ -1 +1 @@ -Query returned non-zero code: 1, cause: Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=COMMAND_PARAMS, name=[jar, dummy.jar]] for operation DELETE : [ADMIN PRIVILEGE] +Query returned non-zero code: 1, cause: Permission denied: Principal [name=hive_test_user, type=USER] does not have following privileges for operation DELETE [[ADMIN PRIVILEGE] on Object [type=COMMAND_PARAMS, name=[jar, dummy.jar]]] diff --git a/ql/src/test/results/clientnegative/authorization_desc_table_nosel.q.out b/ql/src/test/results/clientnegative/authorization_desc_table_nosel.q.out index 4583f56..bb402ec 100644 --- a/ql/src/test/results/clientnegative/authorization_desc_table_nosel.q.out +++ b/ql/src/test/results/clientnegative/authorization_desc_table_nosel.q.out @@ -26,4 +26,4 @@ PREHOOK: Output: default@t1 POSTHOOK: query: revoke select on table t1 from user user2 POSTHOOK: type: REVOKE_PRIVILEGE POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation DESCTABLE : [SELECT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation DESCTABLE [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_dfs.q.out b/ql/src/test/results/clientnegative/authorization_dfs.q.out index e95f563..9cb5646 100644 --- a/ql/src/test/results/clientnegative/authorization_dfs.q.out +++ b/ql/src/test/results/clientnegative/authorization_dfs.q.out @@ -1 +1 @@ -Query returned non-zero code: 1, cause: Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=COMMAND_PARAMS, name=[-ls, dummy_file]] for operation DFS : [ADMIN PRIVILEGE] +Query returned non-zero code: 1, cause: Permission denied: Principal [name=hive_test_user, type=USER] does not have following privileges for operation DFS [[ADMIN PRIVILEGE] on Object [type=COMMAND_PARAMS, name=[-ls, dummy_file]]] diff --git a/ql/src/test/results/clientnegative/authorization_drop_db_cascade.q.out b/ql/src/test/results/clientnegative/authorization_drop_db_cascade.q.out index 0bf82fc..2eb7184 100644 --- a/ql/src/test/results/clientnegative/authorization_drop_db_cascade.q.out +++ b/ql/src/test/results/clientnegative/authorization_drop_db_cascade.q.out @@ -50,4 +50,4 @@ POSTHOOK: query: show current roles POSTHOOK: type: SHOW_ROLES public -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=dba2.tab2] for operation DROPDATABASE : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation DROPDATABASE [[OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=dba2.tab2]] diff --git a/ql/src/test/results/clientnegative/authorization_drop_db_empty.q.out b/ql/src/test/results/clientnegative/authorization_drop_db_empty.q.out index 93a3f1c..097f0de 100644 --- a/ql/src/test/results/clientnegative/authorization_drop_db_empty.q.out +++ b/ql/src/test/results/clientnegative/authorization_drop_db_empty.q.out @@ -46,4 +46,4 @@ POSTHOOK: query: show current roles POSTHOOK: type: SHOW_ROLES public -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=DATABASE, name=dba2] for operation DROPDATABASE : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation DROPDATABASE [[OBJECT OWNERSHIP] on Object [type=DATABASE, name=dba2]] diff --git a/ql/src/test/results/clientnegative/authorization_droppartition.q.out b/ql/src/test/results/clientnegative/authorization_droppartition.q.out index 3efabfe..a5b8ce2 100644 --- a/ql/src/test/results/clientnegative/authorization_droppartition.q.out +++ b/ql/src/test/results/clientnegative/authorization_droppartition.q.out @@ -16,4 +16,4 @@ POSTHOOK: type: ALTERTABLE_ADDPARTS #### A masked pattern was here #### POSTHOOK: Output: default@tpart POSTHOOK: Output: default@tpart@k=abc -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.tpart] for operation ALTERTABLE_DROPPARTS : [DELETE] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation ALTERTABLE_DROPPARTS [[DELETE] on Object [type=TABLE_OR_VIEW, name=default.tpart]] diff --git a/ql/src/test/results/clientnegative/authorization_fail_8.q.out b/ql/src/test/results/clientnegative/authorization_fail_8.q.out index 10dd71b..6c9fcf4 100644 --- a/ql/src/test/results/clientnegative/authorization_fail_8.q.out +++ b/ql/src/test/results/clientnegative/authorization_fail_8.q.out @@ -45,4 +45,4 @@ PREHOOK: query: -- Now that grant option has been revoked, granting to other use GRANT SELECT ON authorization_fail TO USER user3 PREHOOK: type: GRANT_PRIVILEGE PREHOOK: Output: default@authorization_fail -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.authorization_fail] : [SELECT with grant] +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation GRANT_PRIVILEGE [[SELECT with grant] on Object [type=TABLE_OR_VIEW, name=default.authorization_fail]] diff --git a/ql/src/test/results/clientnegative/authorization_grant_table_allpriv.q.out b/ql/src/test/results/clientnegative/authorization_grant_table_allpriv.q.out index ab4fd1c..8098d5d 100644 --- a/ql/src/test/results/clientnegative/authorization_grant_table_allpriv.q.out +++ b/ql/src/test/results/clientnegative/authorization_grant_table_allpriv.q.out @@ -21,4 +21,4 @@ PREHOOK: query: -- try grant all to user3, without having all privileges GRANT ALL ON table_priv_allf TO USER user3 PREHOOK: type: GRANT_PRIVILEGE PREHOOK: Output: default@table_priv_allf -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.table_priv_allf] for operation GRANT_PRIVILEGE : [SELECT with grant, UPDATE with grant, DELETE with grant] +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation GRANT_PRIVILEGE [[SELECT with grant, UPDATE with grant, DELETE with grant] on Object [type=TABLE_OR_VIEW, name=default.table_priv_allf]] diff --git a/ql/src/test/results/clientnegative/authorization_grant_table_fail1.q.out b/ql/src/test/results/clientnegative/authorization_grant_table_fail1.q.out index 0975a9c..cec3619 100644 --- a/ql/src/test/results/clientnegative/authorization_grant_table_fail1.q.out +++ b/ql/src/test/results/clientnegative/authorization_grant_table_fail1.q.out @@ -13,4 +13,4 @@ PREHOOK: query: -- try grant insert to user3 as user2 GRANT INSERT ON table_priv_gfail1 TO USER user3 PREHOOK: type: GRANT_PRIVILEGE PREHOOK: Output: default@table_priv_gfail1 -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.table_priv_gfail1] for operation GRANT_PRIVILEGE : [INSERT with grant] +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation GRANT_PRIVILEGE [[INSERT with grant] on Object [type=TABLE_OR_VIEW, name=default.table_priv_gfail1]] diff --git a/ql/src/test/results/clientnegative/authorization_grant_table_fail_nogrant.q.out b/ql/src/test/results/clientnegative/authorization_grant_table_fail_nogrant.q.out index 8e3d71c..67f048f 100644 --- a/ql/src/test/results/clientnegative/authorization_grant_table_fail_nogrant.q.out +++ b/ql/src/test/results/clientnegative/authorization_grant_table_fail_nogrant.q.out @@ -21,4 +21,4 @@ PREHOOK: query: -- try grant insert to user3 GRANT INSERT ON table_priv_gfail1 TO USER user3 PREHOOK: type: GRANT_PRIVILEGE PREHOOK: Output: default@table_priv_gfail1 -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.table_priv_gfail1] for operation GRANT_PRIVILEGE : [INSERT with grant] +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation GRANT_PRIVILEGE [[INSERT with grant] on Object [type=TABLE_OR_VIEW, name=default.table_priv_gfail1]] diff --git a/ql/src/test/results/clientnegative/authorization_insert_noinspriv.q.out b/ql/src/test/results/clientnegative/authorization_insert_noinspriv.q.out index 332d8a4..63ef757 100644 --- a/ql/src/test/results/clientnegative/authorization_insert_noinspriv.q.out +++ b/ql/src/test/results/clientnegative/authorization_insert_noinspriv.q.out @@ -14,4 +14,4 @@ POSTHOOK: query: create table user2tab(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@user2tab -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation QUERY : [INSERT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation QUERY [[INSERT] on Object [type=TABLE_OR_VIEW, name=default.t1, action=INSERT]] diff --git a/ql/src/test/results/clientnegative/authorization_insert_noselectpriv.q.out b/ql/src/test/results/clientnegative/authorization_insert_noselectpriv.q.out index 1423e75..c9ed754 100644 --- a/ql/src/test/results/clientnegative/authorization_insert_noselectpriv.q.out +++ b/ql/src/test/results/clientnegative/authorization_insert_noselectpriv.q.out @@ -14,4 +14,4 @@ POSTHOOK: query: create table t2(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t2 -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation QUERY : [SELECT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation QUERY [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_insertoverwrite_nodel.q.out b/ql/src/test/results/clientnegative/authorization_insertoverwrite_nodel.q.out index 458e65b..10a5df0 100644 --- a/ql/src/test/results/clientnegative/authorization_insertoverwrite_nodel.q.out +++ b/ql/src/test/results/clientnegative/authorization_insertoverwrite_nodel.q.out @@ -33,4 +33,4 @@ POSTHOOK: query: create table user1tab(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@user1tab -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation QUERY : [DELETE] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation QUERY [[DELETE] on Object [type=TABLE_OR_VIEW, name=default.t1, action=INSERT_OVERWRITE]] diff --git a/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_rename.q.out b/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_rename.q.out index 39642e3..c3bd34f 100644 --- a/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_rename.q.out +++ b/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_rename.q.out @@ -7,4 +7,4 @@ create table t1(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation ALTERTABLE_RENAME : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation ALTERTABLE_RENAME [[OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.t1], [OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_serdeprop.q.out b/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_serdeprop.q.out index 96df5a7..3b3df09 100644 --- a/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_serdeprop.q.out +++ b/ql/src/test/results/clientnegative/authorization_not_owner_alter_tab_serdeprop.q.out @@ -7,4 +7,4 @@ create table t1(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation ALTERTABLE_SERDEPROPERTIES : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation ALTERTABLE_SERDEPROPERTIES [[OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.t1], [OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_not_owner_drop_tab.q.out b/ql/src/test/results/clientnegative/authorization_not_owner_drop_tab.q.out index bf22e89..14b4521 100644 --- a/ql/src/test/results/clientnegative/authorization_not_owner_drop_tab.q.out +++ b/ql/src/test/results/clientnegative/authorization_not_owner_drop_tab.q.out @@ -7,4 +7,4 @@ create table t1(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation DROPTABLE : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation DROPTABLE [[OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_not_owner_drop_view.q.out b/ql/src/test/results/clientnegative/authorization_not_owner_drop_view.q.out index acdc0f3..73c214b 100644 --- a/ql/src/test/results/clientnegative/authorization_not_owner_drop_view.q.out +++ b/ql/src/test/results/clientnegative/authorization_not_owner_drop_view.q.out @@ -14,4 +14,4 @@ POSTHOOK: query: create view vt1 as select * from t1 POSTHOOK: type: CREATEVIEW POSTHOOK: Input: default@t1 POSTHOOK: Output: default@vt1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.vt1] for operation DROPVIEW : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation DROPVIEW [[OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.vt1], [OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.vt1]] diff --git a/ql/src/test/results/clientnegative/authorization_priv_current_role_neg.q.out b/ql/src/test/results/clientnegative/authorization_priv_current_role_neg.q.out index 16927fd..b20ebc8 100644 --- a/ql/src/test/results/clientnegative/authorization_priv_current_role_neg.q.out +++ b/ql/src/test/results/clientnegative/authorization_priv_current_role_neg.q.out @@ -76,4 +76,4 @@ PREHOOK: query: -- set role to public, should fail as role2 is not one of the cu grant all on table tpriv_current_role to user user5 PREHOOK: type: GRANT_PRIVILEGE PREHOOK: Output: default@tpriv_current_role -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.tpriv_current_role] for operation GRANT_PRIVILEGE : [SELECT with grant, INSERT with grant, UPDATE with grant, DELETE with grant] +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation GRANT_PRIVILEGE [[SELECT with grant, INSERT with grant, UPDATE with grant, DELETE with grant] on Object [type=TABLE_OR_VIEW, name=default.tpriv_current_role]] diff --git a/ql/src/test/results/clientnegative/authorization_rolehierarchy_privs.q.out b/ql/src/test/results/clientnegative/authorization_rolehierarchy_privs.q.out index 0dcb653..46e3ca7 100644 --- a/ql/src/test/results/clientnegative/authorization_rolehierarchy_privs.q.out +++ b/ql/src/test/results/clientnegative/authorization_rolehierarchy_privs.q.out @@ -206,4 +206,4 @@ role1 role2 role4 -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation QUERY : [SELECT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation QUERY [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_select.q.out b/ql/src/test/results/clientnegative/authorization_select.q.out index 7854200..c718e8c 100644 --- a/ql/src/test/results/clientnegative/authorization_select.q.out +++ b/ql/src/test/results/clientnegative/authorization_select.q.out @@ -7,4 +7,4 @@ create table t1(i int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation QUERY : [SELECT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation QUERY [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_select_view.q.out b/ql/src/test/results/clientnegative/authorization_select_view.q.out index 9f1e07e..877f77f 100644 --- a/ql/src/test/results/clientnegative/authorization_select_view.q.out +++ b/ql/src/test/results/clientnegative/authorization_select_view.q.out @@ -14,4 +14,4 @@ POSTHOOK: query: create view v1 as select * from t1 POSTHOOK: type: CREATEVIEW POSTHOOK: Input: default@t1 POSTHOOK: Output: default@v1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.v1] for operation QUERY : [SELECT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation QUERY [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.v1]] diff --git a/ql/src/test/results/clientnegative/authorization_show_parts_nosel.q.out b/ql/src/test/results/clientnegative/authorization_show_parts_nosel.q.out index 306fe2e..2f7b723 100644 --- a/ql/src/test/results/clientnegative/authorization_show_parts_nosel.q.out +++ b/ql/src/test/results/clientnegative/authorization_show_parts_nosel.q.out @@ -7,4 +7,4 @@ create table t_show_parts(i int) partitioned by (j string) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t_show_parts -FAILED: HiveAccessControlException Permission denied. Principal [name=user2, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t_show_parts] for operation SHOWPARTITIONS : [SELECT] +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation SHOWPARTITIONS [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.t_show_parts]] diff --git a/ql/src/test/results/clientnegative/authorization_truncate.q.out b/ql/src/test/results/clientnegative/authorization_truncate.q.out index 3f19aa9..a414b33 100644 --- a/ql/src/test/results/clientnegative/authorization_truncate.q.out +++ b/ql/src/test/results/clientnegative/authorization_truncate.q.out @@ -7,4 +7,4 @@ create table t1(i int, j int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 -FAILED: HiveAccessControlException Permission denied. Principal [name=user1, type=USER] does not have following privileges on Object [type=TABLE_OR_VIEW, name=default.t1] for operation TRUNCATETABLE : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation TRUNCATETABLE [[OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=default.t1]] diff --git a/ql/src/test/results/clientnegative/authorize_create_tbl.q.out b/ql/src/test/results/clientnegative/authorize_create_tbl.q.out index 64ebd8b..2322e42 100644 --- a/ql/src/test/results/clientnegative/authorize_create_tbl.q.out +++ b/ql/src/test/results/clientnegative/authorize_create_tbl.q.out @@ -6,4 +6,4 @@ PREHOOK: query: use db23221 PREHOOK: type: SWITCHDATABASE POSTHOOK: query: use db23221 POSTHOOK: type: SWITCHDATABASE -FAILED: HiveAccessControlException Permission denied. Principal [name=user44, type=USER] does not have following privileges on Object [type=DATABASE, name=db23221] for operation CREATETABLE : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user44, type=USER] does not have following privileges for operation CREATETABLE [[OBJECT OWNERSHIP] on Object [type=DATABASE, name=db23221]] diff --git a/ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out b/ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out index fcd5ce7..c7405ed 100644 --- a/ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out +++ b/ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out @@ -1,5 +1,6 @@ PREHOOK: query: create function default.badfunc as 'my.nonexistent.class' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: default.badfunc FAILED: Class my.nonexistent.class not found FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git a/ql/src/test/results/clientnegative/create_function_nonudf_class.q.out b/ql/src/test/results/clientnegative/create_function_nonudf_class.q.out index 26565be..d0dd50a 100644 --- a/ql/src/test/results/clientnegative/create_function_nonudf_class.q.out +++ b/ql/src/test/results/clientnegative/create_function_nonudf_class.q.out @@ -1,5 +1,6 @@ PREHOOK: query: create function default.badfunc as 'java.lang.String' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: default.badfunc FAILED: Class java.lang.String does not implement UDF, GenericUDF, or UDAF FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git a/ql/src/test/results/clientnegative/create_udaf_failure.q.out b/ql/src/test/results/clientnegative/create_udaf_failure.q.out index 433ec44..0c6c820 100644 --- a/ql/src/test/results/clientnegative/create_udaf_failure.q.out +++ b/ql/src/test/results/clientnegative/create_udaf_failure.q.out @@ -1,7 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_udaf AS 'org.apache.hadoop.hive.ql.udf.UDAFWrongArgLengthForTestCase' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_udaf POSTHOOK: query: CREATE TEMPORARY FUNCTION test_udaf AS 'org.apache.hadoop.hive.ql.udf.UDAFWrongArgLengthForTestCase' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_udaf FAILED: SemanticException org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: public boolean org.apache.hadoop.hive.ql.udf.UDAFWrongArgLengthForTestCase$UDAFWrongArgLengthForTestCaseEvaluator.merge() requires 0 arguments but 1 are passed in. diff --git a/ql/src/test/results/clientnegative/create_unknown_genericudf.q.out b/ql/src/test/results/clientnegative/create_unknown_genericudf.q.out index 1a2956f..7ea1bfa 100644 --- a/ql/src/test/results/clientnegative/create_unknown_genericudf.q.out +++ b/ql/src/test/results/clientnegative/create_unknown_genericudf.q.out @@ -1,5 +1,6 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION dummy_genericudf AS 'org.apache.hadoop.hive.ql.udf.generic.DummyGenericUDF' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: dummy_genericudf FAILED: Class org.apache.hadoop.hive.ql.udf.generic.DummyGenericUDF not found FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git a/ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out b/ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out index 4263be9..251b749 100644 --- a/ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out +++ b/ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out @@ -1,5 +1,6 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION dummy_function AS 'org.apache.hadoop.hive.ql.udf.DummyFunction' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: dummy_function FAILED: Class org.apache.hadoop.hive.ql.udf.DummyFunction not found FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git a/ql/src/test/results/clientnegative/drop_native_udf.q.out b/ql/src/test/results/clientnegative/drop_native_udf.q.out index 81b1793..f283163 100644 --- a/ql/src/test/results/clientnegative/drop_native_udf.q.out +++ b/ql/src/test/results/clientnegative/drop_native_udf.q.out @@ -1,4 +1,5 @@ PREHOOK: query: DROP TEMPORARY FUNCTION max PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: max FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git a/ql/src/test/results/clientnegative/temp_table_authorize_create_tbl.q.out b/ql/src/test/results/clientnegative/temp_table_authorize_create_tbl.q.out index 64ebd8b..2322e42 100644 --- a/ql/src/test/results/clientnegative/temp_table_authorize_create_tbl.q.out +++ b/ql/src/test/results/clientnegative/temp_table_authorize_create_tbl.q.out @@ -6,4 +6,4 @@ PREHOOK: query: use db23221 PREHOOK: type: SWITCHDATABASE POSTHOOK: query: use db23221 POSTHOOK: type: SWITCHDATABASE -FAILED: HiveAccessControlException Permission denied. Principal [name=user44, type=USER] does not have following privileges on Object [type=DATABASE, name=db23221] for operation CREATETABLE : [OBJECT OWNERSHIP] +FAILED: HiveAccessControlException Permission denied: Principal [name=user44, type=USER] does not have following privileges for operation CREATETABLE [[OBJECT OWNERSHIP] on Object [type=DATABASE, name=db23221]] diff --git a/ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out b/ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out index 0bf56a4..89b0dfd 100644 --- a/ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out +++ b/ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out @@ -1,5 +1,6 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION moo AS 'org.apache.hadoop.hive.ql.Driver' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: moo FAILED: Class org.apache.hadoop.hive.ql.Driver does not implement UDF, GenericUDF, or UDAF FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git a/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out b/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out index 3843428..bb8ce14 100644 --- a/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out +++ b/ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out @@ -1,5 +1,6 @@ PREHOOK: query: create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file 'nonexistent_file.txt' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: lookup nonexistent_file.txt does not exist FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask. nonexistent_file.txt does not exist diff --git a/ql/src/test/results/clientnegative/udf_test_error.q.out b/ql/src/test/results/clientnegative/udf_test_error.q.out index 3146652..7f9db2c 100644 --- a/ql/src/test/results/clientnegative/udf_test_error.q.out +++ b/ql/src/test/results/clientnegative/udf_test_error.q.out @@ -1,9 +1,11 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_error POSTHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_error PREHOOK: query: SELECT test_error(key < 125 OR key > 130) FROM src PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git a/ql/src/test/results/clientnegative/udf_test_error_reduce.q.out b/ql/src/test/results/clientnegative/udf_test_error_reduce.q.out index c83c503..7e67c93 100644 --- a/ql/src/test/results/clientnegative/udf_test_error_reduce.q.out +++ b/ql/src/test/results/clientnegative/udf_test_error_reduce.q.out @@ -1,9 +1,11 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_error POSTHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_error PREHOOK: query: SELECT test_error(key < 125 OR key > 130) FROM ( SELECT * diff --git a/ql/src/test/results/clientpositive/authorization_admin_almighty2.q.out b/ql/src/test/results/clientpositive/authorization_admin_almighty2.q.out index 1c8c3e3..4f0b5a0 100644 --- a/ql/src/test/results/clientpositive/authorization_admin_almighty2.q.out +++ b/ql/src/test/results/clientpositive/authorization_admin_almighty2.q.out @@ -30,9 +30,11 @@ POSTHOOK: type: DROPTABLE PREHOOK: query: CREATE TEMPORARY FUNCTION Pyth as 'Pyth' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: pyth POSTHOOK: query: CREATE TEMPORARY FUNCTION Pyth as 'Pyth' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: pyth PREHOOK: query: SELECT Pyth(3,4) FROM src tablesample (1 rows) PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -44,7 +46,9 @@ POSTHOOK: Input: default@src 5.0 PREHOOK: query: DROP TEMPORARY FUNCTION Pyth PREHOOK: type: DROPFUNCTION +PREHOOK: Output: Pyth PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION Pyth POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: Pyth POSTHOOK: Output: database:default diff --git a/ql/src/test/results/clientpositive/authorization_create_func1.q.out b/ql/src/test/results/clientpositive/authorization_create_func1.q.out index 45f93ba..b84c445 100644 --- a/ql/src/test/results/clientpositive/authorization_create_func1.q.out +++ b/ql/src/test/results/clientpositive/authorization_create_func1.q.out @@ -7,24 +7,32 @@ POSTHOOK: type: SHOW_ROLES PREHOOK: query: create temporary function temp_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: temp_fn POSTHOOK: query: create temporary function temp_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: temp_fn PREHOOK: query: create function perm_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: perm_fn POSTHOOK: query: create function perm_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: perm_fn PREHOOK: query: drop temporary function temp_fn PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: temp_fn POSTHOOK: query: drop temporary function temp_fn POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: temp_fn PREHOOK: query: drop function perm_fn PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: perm_fn POSTHOOK: query: drop function perm_fn POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: perm_fn diff --git a/ql/src/test/results/clientpositive/autogen_colalias.q.out b/ql/src/test/results/clientpositive/autogen_colalias.q.out index fa5a7b6..08e81dd 100644 --- a/ql/src/test/results/clientpositive/autogen_colalias.q.out +++ b/ql/src/test/results/clientpositive/autogen_colalias.q.out @@ -1,9 +1,11 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_max POSTHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_max PREHOOK: query: create table dest_grouped_old1 as select 1+1, 2+2 as zz, src.key, test_max(length(src.value)), count(src.value), sin(count(src.value)), count(sin(src.value)), unix_timestamp(), CAST(SUM(IF(value > 10, value, 1)) AS INT), if(src.key > 1, 1, 0) @@ -94,7 +96,9 @@ PREHOOK: query: -- Drop the temporary function at the end till HIVE-3160 gets fi DROP TEMPORARY FUNCTION test_max PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_max POSTHOOK: query: -- Drop the temporary function at the end till HIVE-3160 gets fixed DROP TEMPORARY FUNCTION test_max POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_max diff --git a/ql/src/test/results/clientpositive/compile_processor.q.out b/ql/src/test/results/clientpositive/compile_processor.q.out index e86e0f3..00d136e 100644 --- a/ql/src/test/results/clientpositive/compile_processor.q.out +++ b/ql/src/test/results/clientpositive/compile_processor.q.out @@ -1,9 +1,11 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION Pyth as 'Pyth' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: pyth POSTHOOK: query: CREATE TEMPORARY FUNCTION Pyth as 'Pyth' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: pyth PREHOOK: query: SELECT Pyth(3,4) FROM src tablesample (1 rows) PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -15,7 +17,9 @@ POSTHOOK: Input: default@src 5.0 PREHOOK: query: DROP TEMPORARY FUNCTION Pyth PREHOOK: type: DROPFUNCTION +PREHOOK: Output: Pyth PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION Pyth POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: Pyth POSTHOOK: Output: database:default diff --git a/ql/src/test/results/clientpositive/create_func1.q.out b/ql/src/test/results/clientpositive/create_func1.q.out index 62ca263..daa4ecc 100644 --- a/ql/src/test/results/clientpositive/create_func1.q.out +++ b/ql/src/test/results/clientpositive/create_func1.q.out @@ -16,9 +16,11 @@ POSTHOOK: type: CREATEDATABASE PREHOOK: query: create function mydb.func1 as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:mydb +PREHOOK: Output: mydb.func1 POSTHOOK: query: create function mydb.func1 as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:mydb +POSTHOOK: Output: mydb.func1 PREHOOK: query: show functions mydb.func1 PREHOOK: type: SHOWFUNCTIONS POSTHOOK: query: show functions mydb.func1 @@ -36,9 +38,11 @@ ABC PREHOOK: query: drop function mydb.func1 PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:mydb +PREHOOK: Output: mydb.func1 POSTHOOK: query: drop function mydb.func1 POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:mydb +POSTHOOK: Output: mydb.func1 PREHOOK: query: -- function should now be gone show functions mydb.func1 PREHOOK: type: SHOWFUNCTIONS @@ -49,10 +53,12 @@ PREHOOK: query: -- To test function name resolution create function mydb.qtest_get_java_boolean as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:mydb +PREHOOK: Output: mydb.qtest_get_java_boolean POSTHOOK: query: -- To test function name resolution create function mydb.qtest_get_java_boolean as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:mydb +POSTHOOK: Output: mydb.qtest_get_java_boolean PREHOOK: query: use default PREHOOK: type: SWITCHDATABASE POSTHOOK: query: use default @@ -86,9 +92,11 @@ ABC NULL ABC PREHOOK: query: drop function mydb.qtest_get_java_boolean PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:mydb +PREHOOK: Output: mydb.qtest_get_java_boolean POSTHOOK: query: drop function mydb.qtest_get_java_boolean POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:mydb +POSTHOOK: Output: mydb.qtest_get_java_boolean PREHOOK: query: drop database mydb cascade PREHOOK: type: DROPDATABASE PREHOOK: Input: database:mydb diff --git a/ql/src/test/results/clientpositive/create_genericudaf.q.out b/ql/src/test/results/clientpositive/create_genericudaf.q.out index 1641e01..7954c2b 100644 --- a/ql/src/test/results/clientpositive/create_genericudaf.q.out +++ b/ql/src/test/results/clientpositive/create_genericudaf.q.out @@ -13,9 +13,11 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_avg POSTHOOK: query: CREATE TEMPORARY FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_avg PREHOOK: query: EXPLAIN SELECT test_avg(1), @@ -94,6 +96,8 @@ POSTHOOK: Input: default@src PREHOOK: query: DROP TEMPORARY FUNCTIOn test_avg PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_avg POSTHOOK: query: DROP TEMPORARY FUNCTIOn test_avg POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_avg diff --git a/ql/src/test/results/clientpositive/create_genericudf.q.out b/ql/src/test/results/clientpositive/create_genericudf.q.out index f012951..6dd74cf 100644 --- a/ql/src/test/results/clientpositive/create_genericudf.q.out +++ b/ql/src/test/results/clientpositive/create_genericudf.q.out @@ -13,9 +13,11 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_translate POSTHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_translate PREHOOK: query: CREATE TABLE dest1(c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING, c6 STRING, c7 STRING) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default @@ -68,6 +70,8 @@ bbc bcc NULL NULL NULL bc abc PREHOOK: query: DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_translate POSTHOOK: query: DROP TEMPORARY FUNCTION test_translate POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_translate diff --git a/ql/src/test/results/clientpositive/create_udaf.q.out b/ql/src/test/results/clientpositive/create_udaf.q.out index e48c25f..9ababad 100644 --- a/ql/src/test/results/clientpositive/create_udaf.q.out +++ b/ql/src/test/results/clientpositive/create_udaf.q.out @@ -13,9 +13,11 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_max POSTHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_max PREHOOK: query: CREATE TABLE dest1(col INT) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default @@ -91,6 +93,8 @@ POSTHOOK: Input: default@src PREHOOK: query: DROP TEMPORARY FUNCTION test_max PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_max POSTHOOK: query: DROP TEMPORARY FUNCTION test_max POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_max diff --git a/ql/src/test/results/clientpositive/create_view.q.out b/ql/src/test/results/clientpositive/create_view.q.out index e193a4f..87f3cfb 100644 --- a/ql/src/test/results/clientpositive/create_view.q.out +++ b/ql/src/test/results/clientpositive/create_view.q.out @@ -694,11 +694,13 @@ CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_translate POSTHOOK: query: -- test usage of a function within a view CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_translate PREHOOK: query: CREATE VIEW view8(c) AS SELECT test_translate('abc', 'a', 'b') FROM table1 @@ -770,11 +772,13 @@ CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_max POSTHOOK: query: -- test usage of a UDAF within a view CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_max PREHOOK: query: -- disable map-side aggregation CREATE VIEW view9(m) AS SELECT test_max(length(value)) @@ -988,11 +992,13 @@ CREATE TEMPORARY FUNCTION test_explode AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDTFExplode' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_explode POSTHOOK: query: -- test usage of a UDTF within a view CREATE TEMPORARY FUNCTION test_explode AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDTFExplode' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_explode PREHOOK: query: CREATE VIEW view11 AS SELECT test_explode(array(1,2,3)) AS (boom) FROM table1 @@ -1715,18 +1721,24 @@ POSTHOOK: Output: default@view16 PREHOOK: query: DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_translate POSTHOOK: query: DROP TEMPORARY FUNCTION test_translate POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_translate PREHOOK: query: DROP TEMPORARY FUNCTION test_max PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_max POSTHOOK: query: DROP TEMPORARY FUNCTION test_max POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_max PREHOOK: query: DROP TEMPORARY FUNCTION test_explode PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_explode POSTHOOK: query: DROP TEMPORARY FUNCTION test_explode POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_explode diff --git a/ql/src/test/results/clientpositive/drop_udf.q.out b/ql/src/test/results/clientpositive/drop_udf.q.out index c60f431..33997f6 100644 --- a/ql/src/test/results/clientpositive/drop_udf.q.out +++ b/ql/src/test/results/clientpositive/drop_udf.q.out @@ -1,9 +1,11 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_translate POSTHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_translate PREHOOK: query: EXPLAIN DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION @@ -19,6 +21,8 @@ STAGE PLANS: PREHOOK: query: DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_translate POSTHOOK: query: DROP TEMPORARY FUNCTION test_translate POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_translate diff --git a/ql/src/test/results/clientpositive/ptf_register_tblfn.q.out b/ql/src/test/results/clientpositive/ptf_register_tblfn.q.out index 3b810ec..ce0154a 100644 --- a/ql/src/test/results/clientpositive/ptf_register_tblfn.q.out +++ b/ql/src/test/results/clientpositive/ptf_register_tblfn.q.out @@ -36,9 +36,11 @@ POSTHOOK: Output: default@flights_tiny PREHOOK: query: create temporary function matchpathtest as 'org.apache.hadoop.hive.ql.udf.ptf.MatchPath$MatchPathResolver' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: matchpathtest POSTHOOK: query: create temporary function matchpathtest as 'org.apache.hadoop.hive.ql.udf.ptf.MatchPath$MatchPathResolver' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: matchpathtest PREHOOK: query: -- 1. basic Matchpath test select origin_city_name, fl_num, year, month, day_of_month, sz, tpath from matchpathtest(on @@ -84,6 +86,8 @@ Chicago 897 2010 10 22 2 22 PREHOOK: query: drop temporary function matchpathtest PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: matchpathtest POSTHOOK: query: drop temporary function matchpathtest POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: matchpathtest diff --git a/ql/src/test/results/clientpositive/ptf_streaming.q.out b/ql/src/test/results/clientpositive/ptf_streaming.q.out index 04ceedf..89045ee 100644 --- a/ql/src/test/results/clientpositive/ptf_streaming.q.out +++ b/ql/src/test/results/clientpositive/ptf_streaming.q.out @@ -42,9 +42,11 @@ POSTHOOK: Output: default@part PREHOOK: query: create temporary function noopstreaming as 'org.apache.hadoop.hive.ql.udf.ptf.NoopStreaming$NoopStreamingResolver' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: noopstreaming POSTHOOK: query: create temporary function noopstreaming as 'org.apache.hadoop.hive.ql.udf.ptf.NoopStreaming$NoopStreamingResolver' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: noopstreaming PREHOOK: query: --1. test1 select p_mfgr, p_name, p_size, rank() over (partition by p_mfgr order by p_name) as r, diff --git a/ql/src/test/results/clientpositive/udaf_sum_list.q.out b/ql/src/test/results/clientpositive/udaf_sum_list.q.out index 51708b3..0971a5e 100644 --- a/ql/src/test/results/clientpositive/udaf_sum_list.q.out +++ b/ql/src/test/results/clientpositive/udaf_sum_list.q.out @@ -4,12 +4,14 @@ PREHOOK: query: -- HIVE-5279 create temporary function sum_list as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSumList' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: sum_list POSTHOOK: query: -- HIVE-5279 -- GenericUDAFSumList has Converter which does not have default constructor -- After create temporary function sum_list as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSumList' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: sum_list PREHOOK: query: select sum_list(array(key, key)) from src PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git a/ql/src/test/results/clientpositive/udf_compare_java_string.q.out b/ql/src/test/results/clientpositive/udf_compare_java_string.q.out index e522e51..5f047e2 100644 --- a/ql/src/test/results/clientpositive/udf_compare_java_string.q.out +++ b/ql/src/test/results/clientpositive/udf_compare_java_string.q.out @@ -13,9 +13,11 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_string AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaString' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_udf_get_java_string POSTHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_string AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaString' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_udf_get_java_string PREHOOK: query: select * from src where value = test_udf_get_java_string("val_66") PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git a/ql/src/test/results/clientpositive/udf_context_aware.q.out b/ql/src/test/results/clientpositive/udf_context_aware.q.out index 2e214c5..d6f4b72 100644 --- a/ql/src/test/results/clientpositive/udf_context_aware.q.out +++ b/ql/src/test/results/clientpositive/udf_context_aware.q.out @@ -1,8 +1,10 @@ PREHOOK: query: create temporary function counter as 'org.apache.hadoop.hive.ql.udf.generic.DummyContextUDF' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: counter PREHOOK: Output: database:default POSTHOOK: query: create temporary function counter as 'org.apache.hadoop.hive.ql.udf.generic.DummyContextUDF' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: counter POSTHOOK: Output: database:default PREHOOK: query: select *, counter(key) from src limit 20 PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out b/ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out index f48c8b2..69ef833 100644 --- a/ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out +++ b/ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out @@ -13,9 +13,11 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_boolean AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaBoolean' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_udf_get_java_boolean POSTHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_boolean AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaBoolean' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_udf_get_java_boolean PREHOOK: query: select 1 from src where test_udf_get_java_boolean("false") and True limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -172,6 +174,8 @@ POSTHOOK: Input: default@src PREHOOK: query: DROP TEMPORARY FUNCTION test_udf_get_java_boolean PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: test_udf_get_java_boolean POSTHOOK: query: DROP TEMPORARY FUNCTION test_udf_get_java_boolean POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: test_udf_get_java_boolean diff --git a/ql/src/test/results/clientpositive/udf_testlength.q.out b/ql/src/test/results/clientpositive/udf_testlength.q.out index 28d96fa..9936785 100644 --- a/ql/src/test/results/clientpositive/udf_testlength.q.out +++ b/ql/src/test/results/clientpositive/udf_testlength.q.out @@ -13,9 +13,11 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION testlength AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: testlength POSTHOOK: query: CREATE TEMPORARY FUNCTION testlength AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: testlength PREHOOK: query: SELECT testlength(src.value) FROM src PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -527,6 +529,8 @@ POSTHOOK: Input: default@src PREHOOK: query: DROP TEMPORARY FUNCTION testlength PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: testlength POSTHOOK: query: DROP TEMPORARY FUNCTION testlength POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: testlength diff --git a/ql/src/test/results/clientpositive/udf_testlength2.q.out b/ql/src/test/results/clientpositive/udf_testlength2.q.out index 4d2c407..ff2f7b8 100644 --- a/ql/src/test/results/clientpositive/udf_testlength2.q.out +++ b/ql/src/test/results/clientpositive/udf_testlength2.q.out @@ -13,9 +13,11 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION testlength2 AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength2' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: testlength2 POSTHOOK: query: CREATE TEMPORARY FUNCTION testlength2 AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength2' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: testlength2 PREHOOK: query: SELECT testlength2(src.value) FROM src PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -527,6 +529,8 @@ POSTHOOK: Input: default@src PREHOOK: query: DROP TEMPORARY FUNCTION testlength2 PREHOOK: type: DROPFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: testlength2 POSTHOOK: query: DROP TEMPORARY FUNCTION testlength2 POSTHOOK: type: DROPFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: testlength2 diff --git a/ql/src/test/results/clientpositive/windowing_udaf2.q.out b/ql/src/test/results/clientpositive/windowing_udaf2.q.out index 4a4b6cf..accd13b 100644 --- a/ql/src/test/results/clientpositive/windowing_udaf2.q.out +++ b/ql/src/test/results/clientpositive/windowing_udaf2.q.out @@ -2,10 +2,12 @@ PREHOOK: query: -- user-added aggregates should be usable as windowing functions create temporary function mysum as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSum' PREHOOK: type: CREATEFUNCTION PREHOOK: Output: database:default +PREHOOK: Output: mysum POSTHOOK: query: -- user-added aggregates should be usable as windowing functions create temporary function mysum as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSum' POSTHOOK: type: CREATEFUNCTION POSTHOOK: Output: database:default +POSTHOOK: Output: mysum PREHOOK: query: select sum(key) over (), mysum(key) over () from src limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src