Index: ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerProcFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerProcFactory.java (revision 1156069) +++ ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerProcFactory.java (working copy) @@ -73,6 +73,7 @@ Operator op = ctx.getOp(); String[] colAlias = toRR.reverseLookup(colref.getColumn()); + boolean isCandidate = true; if (op.getColumnExprMap() != null) { // replace the output expression with the input expression so that // parent op can understand this expression @@ -82,9 +83,13 @@ // group by ctx.setIsCandidate(colref, false); return false; + } else { + if (exp instanceof ExprNodeGenericFuncDesc) { + isCandidate = false; + } } ctx.addConvertedNode(colref, exp); - ctx.setIsCandidate(exp, true); + ctx.setIsCandidate(exp, isCandidate); ctx.addAlias(exp, colAlias[0]); } else { if (colAlias == null) { @@ -92,8 +97,8 @@ } ctx.addAlias(colref, colAlias[0]); } - ctx.setIsCandidate(colref, true); - return true; + ctx.setIsCandidate(colref, isCandidate); + return isCandidate; } } Index: ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java (revision 1156069) +++ ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java (working copy) @@ -197,8 +197,14 @@ owi.putPrunedPreds((Operator) nd, ewi); } // merge it with children predicates - mergeWithChildrenPred(op, owi, ewi, null, false); - + boolean hasUnpushedPredicates = mergeWithChildrenPred(nd, owi, ewi, null, false); + if (HiveConf.getBoolVar(owi.getParseContext().getConf(), + HiveConf.ConfVars.HIVEPPDREMOVEDUPLICATEFILTERS)) { + if (hasUnpushedPredicates) { + ExprWalkerInfo unpushedPreds = mergeChildrenPred(nd, owi, null, false); + return createFilter((Operator)nd, unpushedPreds, owi); + } + } return null; } } Index: ql/src/test/queries/clientpositive/ppd_udf_col.q =================================================================== --- ql/src/test/queries/clientpositive/ppd_udf_col.q (revision 0) +++ ql/src/test/queries/clientpositive/ppd_udf_col.q (revision 0) @@ -0,0 +1,48 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1; + +EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20; + +EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3; + +EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1; + +EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20; + +EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3; + +EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200; Index: ql/src/test/results/clientpositive/ppd_udf_col.q.out =================================================================== --- ql/src/test/results/clientpositive/ppd_udf_col.q.out (revision 0) +++ ql/src/test/results/clientpositive/ppd_udf_col.q.out (revision 0) @@ -0,0 +1,524 @@ +PREHOOK: query: EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123))) (TOK_WHERE (<= (TOK_TABLE_OR_COL randum123) 0.1)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + outputColumnNames: _col0, _col2 + Filter Operator + predicate: + expr: (_col2 <= 0.1) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + outputColumnNames: _col0, _col1 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123))) (TOK_WHERE (<= (TOK_TABLE_OR_COL randum123) 0.1)))) s)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (> (. (TOK_TABLE_OR_COL s) randum123) 0.1)) (TOK_LIMIT 20))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + s:a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + outputColumnNames: _col0, _col2 + Filter Operator + predicate: + expr: (_col2 <= 0.1) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + outputColumnNames: _col0, _col1 + Filter Operator + predicate: + expr: (_col1 > 0.1) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col1 + type: double + outputColumnNames: _col0, _col1 + Limit + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: 20 + + +PREHOOK: query: EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123) (TOK_SELEXPR (TOK_FUNCTION hex 4) h4)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123)) (TOK_SELEXPR (TOK_TABLE_OR_COL h4))) (TOK_WHERE (<= (. (TOK_TABLE_OR_COL a) h4) 3)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + expr: hex(4) + type: string + outputColumnNames: _col0, _col2, _col3 + Filter Operator + predicate: + expr: (_col3 <= 3) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123) (TOK_SELEXPR (* (TOK_TABLE_OR_COL value) 10) v10)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123)) (TOK_SELEXPR (TOK_TABLE_OR_COL v10))) (TOK_WHERE (<= (. (TOK_TABLE_OR_COL a) v10) 200)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + expr: (value * 10) + type: double + outputColumnNames: _col0, _col2, _col3 + Filter Operator + predicate: + expr: (_col3 <= 200) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + expr: _col3 + type: double + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123))) (TOK_WHERE (<= (TOK_TABLE_OR_COL randum123) 0.1)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + outputColumnNames: _col0, _col2 + Filter Operator + predicate: + expr: (_col2 <= 0.1) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + outputColumnNames: _col0, _col1 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123))) (TOK_WHERE (<= (TOK_TABLE_OR_COL randum123) 0.1)))) s)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (> (. (TOK_TABLE_OR_COL s) randum123) 0.1)) (TOK_LIMIT 20))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + s:a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + outputColumnNames: _col0, _col2 + Filter Operator + predicate: + expr: ((_col2 <= 0.1) and (_col2 > 0.1)) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + outputColumnNames: _col0, _col1 + Select Operator + expressions: + expr: _col0 + type: string + expr: _col1 + type: double + outputColumnNames: _col0, _col1 + Limit + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: 20 + + +PREHOOK: query: EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123) (TOK_SELEXPR (TOK_FUNCTION hex 4) h4)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123)) (TOK_SELEXPR (TOK_TABLE_OR_COL h4))) (TOK_WHERE (<= (. (TOK_TABLE_OR_COL a) h4) 3)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + expr: hex(4) + type: string + outputColumnNames: _col0, _col2, _col3 + Filter Operator + predicate: + expr: (_col3 <= 3) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200 +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF) (TOK_SELEXPR (TOK_FUNCTION TOK_DOUBLE (TOK_FUNCTION rand)) randum123) (TOK_SELEXPR (* (TOK_TABLE_OR_COL value) 10) v10)) (TOK_WHERE (= (TOK_TABLE_OR_COL key) 100)))) a)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL randum123)) (TOK_SELEXPR (TOK_TABLE_OR_COL v10))) (TOK_WHERE (<= (. (TOK_TABLE_OR_COL a) v10) 200)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + a:src + TableScan + alias: src + Filter Operator + predicate: + expr: (key = 100) + type: boolean + Select Operator + expressions: + expr: key + type: string + expr: rand() + type: double + expr: (value * 10) + type: double + outputColumnNames: _col0, _col2, _col3 + Filter Operator + predicate: + expr: (_col3 <= 200) + type: boolean + Select Operator + expressions: + expr: _col0 + type: string + expr: _col2 + type: double + expr: _col3 + type: double + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + +