diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 1953e81..49572dd 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -3174,6 +3174,9 @@ private Operator genScriptPlan(ASTNode trfm, QB qb, Operator input) new RowSchema(out_rwsch.getColumnInfos()), input), out_rwsch); output.setColumnExprMap(new HashMap()); // disable backtracking + Path scriptCmd = new Path(getScriptProgName(stripQuotes(trfm.getChild(execPos).getText()))); + getInputs().add(new ReadEntity(scriptCmd, FileUtils.isLocalFile(conf, scriptCmd.toUri()))); + return output; } diff --git ql/src/test/results/clientnegative/authorization_disallow_transform.q.out ql/src/test/results/clientnegative/authorization_disallow_transform.q.out index 812c1a2..fcc35bd 100644 --- ql/src/test/results/clientnegative/authorization_disallow_transform.q.out +++ ql/src/test/results/clientnegative/authorization_disallow_transform.q.out @@ -12,6 +12,7 @@ POSTHOOK: Output: database:default POSTHOOK: Output: default@t1 PREHOOK: query: SELECT TRANSFORM (*) USING 'cat' AS (key, value) FROM t1 PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@t1 #### A masked pattern was here #### FAILED: Hive Internal Error: org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException(Query with transform clause is disallowed in current configuration.) diff --git ql/src/test/results/clientpositive/ppd_transform.q.out ql/src/test/results/clientpositive/ppd_transform.q.out index 0be845f..f5312eb 100644 --- ql/src/test/results/clientpositive/ppd_transform.q.out +++ ql/src/test/results/clientpositive/ppd_transform.q.out @@ -74,6 +74,7 @@ PREHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: FROM ( @@ -84,6 +85,7 @@ POSTHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@src #### A masked pattern was here #### 0 val_0 @@ -246,6 +248,7 @@ PREHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: FROM ( @@ -256,6 +259,7 @@ POSTHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@src #### A masked pattern was here #### 0 val_0 diff --git ql/src/test/results/clientpositive/select_transform_hint.q.out ql/src/test/results/clientpositive/select_transform_hint.q.out index 1aed4bc..cae6a85 100644 --- ql/src/test/results/clientpositive/select_transform_hint.q.out +++ ql/src/test/results/clientpositive/select_transform_hint.q.out @@ -86,6 +86,7 @@ TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) FROM src a join src b on a.key = b.key PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: SELECT /*+MAPJOIN(a)*/ @@ -93,6 +94,7 @@ TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) FROM src a join src b on a.key = b.key POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@src #### A masked pattern was here #### 238 val_238 @@ -1201,6 +1203,7 @@ TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) FROM src a join src b on a.key = b.key PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: SELECT /*+STREAMTABLE(a)*/ @@ -1208,6 +1211,7 @@ TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) FROM src a join src b on a.key = b.key POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@src #### A masked pattern was here #### 0 val_0 diff --git ql/src/test/results/clientpositive/transform1.q.out ql/src/test/results/clientpositive/transform1.q.out index a0386ef..9382cf0 100644 --- ql/src/test/results/clientpositive/transform1.q.out +++ ql/src/test/results/clientpositive/transform1.q.out @@ -50,10 +50,12 @@ STAGE PLANS: PREHOOK: query: SELECT transform(*) USING 'cat' AS (col array) FROM transform1_t1 PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@transform1_t1 #### A masked pattern was here #### POSTHOOK: query: SELECT transform(*) USING 'cat' AS (col array) FROM transform1_t1 POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@transform1_t1 #### A masked pattern was here #### PREHOOK: query: create table transform1_t2(col array) @@ -119,10 +121,12 @@ STAGE PLANS: PREHOOK: query: SELECT transform('0\0021\0022') USING 'cat' AS (col array) FROM transform1_t2 PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@transform1_t2 #### A masked pattern was here #### POSTHOOK: query: SELECT transform('0\0021\0022') USING 'cat' AS (col array) FROM transform1_t2 POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@transform1_t2 #### A masked pattern was here #### [0,1,2] diff --git ql/src/test/results/clientpositive/transform_acid.q.out ql/src/test/results/clientpositive/transform_acid.q.out index 704a261..29d0638 100644 --- ql/src/test/results/clientpositive/transform_acid.q.out +++ ql/src/test/results/clientpositive/transform_acid.q.out @@ -23,9 +23,11 @@ POSTHOOK: Lineage: transform_acid.b EXPRESSION [(alltypesorc)alltypesorc.FieldSc PREHOOK: query: SELECT transform(*) USING 'transform_acid_grep.sh' AS (col string) FROM transform_acid PREHOOK: type: QUERY PREHOOK: Input: default@transform_acid +PREHOOK: Input: transform_acid_grep.sh #### A masked pattern was here #### POSTHOOK: query: SELECT transform(*) USING 'transform_acid_grep.sh' AS (col string) FROM transform_acid POSTHOOK: type: QUERY POSTHOOK: Input: default@transform_acid +POSTHOOK: Input: transform_acid_grep.sh #### A masked pattern was here #### a diff --git ql/src/test/results/clientpositive/transform_ppr1.q.out ql/src/test/results/clientpositive/transform_ppr1.q.out index 2f1fd53..df98ded 100644 --- ql/src/test/results/clientpositive/transform_ppr1.q.out +++ ql/src/test/results/clientpositive/transform_ppr1.q.out @@ -366,6 +366,7 @@ PREHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 AND tmap.ds = '2008-04-08' PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 @@ -380,6 +381,7 @@ POSTHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 AND tmap.ds = '2008-04-08' POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 diff --git ql/src/test/results/clientpositive/transform_ppr2.q.out ql/src/test/results/clientpositive/transform_ppr2.q.out index d09746e..b6a3bc2 100644 --- ql/src/test/results/clientpositive/transform_ppr2.q.out +++ ql/src/test/results/clientpositive/transform_ppr2.q.out @@ -275,6 +275,7 @@ PREHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 PREHOOK: type: QUERY +PREHOOK: Input: cat PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 @@ -288,6 +289,7 @@ POSTHOOK: query: FROM ( ) tmap SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 POSTHOOK: type: QUERY +POSTHOOK: Input: cat POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12