You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/05/27 03:35:17 UTC
svn commit: r1597694 [1/3] - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/exec/
java/org/apache/hadoop/hive/ql/optimizer/
java/org/apache/hadoop/hive/ql/optimizer/ppr/
java/org/apache/hadoop/hive/ql/parse/ java/org/apache/hadoop/hive/ql/plan/
...
Author: hashutosh
Date: Tue May 27 01:35:16 2014
New Revision: 1597694
URL: http://svn.apache.org/r1597694
Log:
HIVE-6910 : Invalid column access info for partitioned table (Navis via Ashutosh Chauhan)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/PrunedPartitionList.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java
hive/trunk/ql/src/test/queries/clientpositive/column_access_stats.q
hive/trunk/ql/src/test/results/clientpositive/column_access_stats.q.out
hive/trunk/ql/src/test/results/compiler/plan/case_sensitivity.q.xml
hive/trunk/ql/src/test/results/compiler/plan/cast1.q.xml
hive/trunk/ql/src/test/results/compiler/plan/groupby1.q.xml
hive/trunk/ql/src/test/results/compiler/plan/groupby2.q.xml
hive/trunk/ql/src/test/results/compiler/plan/groupby3.q.xml
hive/trunk/ql/src/test/results/compiler/plan/groupby4.q.xml
hive/trunk/ql/src/test/results/compiler/plan/groupby5.q.xml
hive/trunk/ql/src/test/results/compiler/plan/groupby6.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input1.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input2.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input20.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input3.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input4.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input5.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input6.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input7.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input8.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input9.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input_part1.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input_testsequencefile.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input_testxpath.q.xml
hive/trunk/ql/src/test/results/compiler/plan/input_testxpath2.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join1.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join2.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join3.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join4.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join5.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join6.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join7.q.xml
hive/trunk/ql/src/test/results/compiler/plan/join8.q.xml
hive/trunk/ql/src/test/results/compiler/plan/sample1.q.xml
hive/trunk/ql/src/test/results/compiler/plan/sample2.q.xml
hive/trunk/ql/src/test/results/compiler/plan/sample3.q.xml
hive/trunk/ql/src/test/results/compiler/plan/sample4.q.xml
hive/trunk/ql/src/test/results/compiler/plan/sample5.q.xml
hive/trunk/ql/src/test/results/compiler/plan/sample6.q.xml
hive/trunk/ql/src/test/results/compiler/plan/sample7.q.xml
hive/trunk/ql/src/test/results/compiler/plan/subq.q.xml
hive/trunk/ql/src/test/results/compiler/plan/udf1.q.xml
hive/trunk/ql/src/test/results/compiler/plan/udf4.q.xml
hive/trunk/ql/src/test/results/compiler/plan/udf6.q.xml
hive/trunk/ql/src/test/results/compiler/plan/udf_case.q.xml
hive/trunk/ql/src/test/results/compiler/plan/udf_when.q.xml
hive/trunk/ql/src/test/results/compiler/plan/union.q.xml
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java Tue May 27 01:35:16 2014
@@ -243,31 +243,28 @@ public class TableScanOperator extends O
return "TS";
}
- // This 'neededColumnIDs' field is included in this operator class instead of
- // its desc class.The reason is that 1)tableScanDesc can not be instantiated,
- // and 2) it will fail some join and union queries if this is added forcibly
- // into tableScanDesc.
- // Both neededColumnIDs and neededColumns should never be null.
- // When neededColumnIDs is an empty list,
- // it means no needed column (e.g. we do not need any column to evaluate
- // SELECT count(*) FROM t).
- List<Integer> neededColumnIDs;
- List<String> neededColumns;
-
public void setNeededColumnIDs(List<Integer> orign_columns) {
- neededColumnIDs = orign_columns;
+ conf.setNeededColumnIDs(orign_columns);
}
public List<Integer> getNeededColumnIDs() {
- return neededColumnIDs;
+ return conf.getNeededColumnIDs();
}
public void setNeededColumns(List<String> columnNames) {
- neededColumns = columnNames;
+ conf.setNeededColumns(columnNames);
}
public List<String> getNeededColumns() {
- return neededColumns;
+ return conf.getNeededColumns();
+ }
+
+ public void setReferencedColumns(List<String> referencedColumns) {
+ conf.setReferencedColumns(referencedColumns);
+ }
+
+ public List<String> getReferencedColumns() {
+ return conf.getReferencedColumns();
}
@Override
@@ -335,6 +332,7 @@ public class TableScanOperator extends O
TableScanOperator ts = (TableScanOperator) super.clone();
ts.setNeededColumnIDs(new ArrayList<Integer>(getNeededColumnIDs()));
ts.setNeededColumns(new ArrayList<String>(getNeededColumns()));
+ ts.setReferencedColumns(new ArrayList<String>(getReferencedColumns()));
return ts;
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java Tue May 27 01:35:16 2014
@@ -312,6 +312,7 @@ public final class ColumnPrunerProcFacto
cols);
List<Integer> neededColumnIds = new ArrayList<Integer>();
List<String> neededColumnNames = new ArrayList<String>();
+ List<String> referencedColumnNames = new ArrayList<String>();
RowResolver inputRR = cppCtx.getOpToParseCtxMap().get(scanOp).getRowResolver();
TableScanDesc desc = scanOp.getConf();
List<VirtualColumn> virtualCols = desc.getVirtualCols();
@@ -322,11 +323,12 @@ public final class ColumnPrunerProcFacto
cols.add(VirtualColumn.RAWDATASIZE.getName());
}
- for (int i = 0; i < cols.size(); i++) {
- String[] tabCol = inputRR.reverseLookup(cols.get(i));
- if(tabCol == null) {
+ for (String column : cols) {
+ String[] tabCol = inputRR.reverseLookup(column);
+ if (tabCol == null) {
continue;
}
+ referencedColumnNames.add(column);
ColumnInfo colInfo = inputRR.get(tabCol[0], tabCol[1]);
if (colInfo.getIsVirtualCol()) {
// part is also a virtual column, but part col should not in this
@@ -340,17 +342,18 @@ public final class ColumnPrunerProcFacto
//no need to pass virtual columns to reader.
continue;
}
- int position = inputRR.getPosition(cols.get(i));
+ int position = inputRR.getPosition(column);
if (position >= 0) {
// get the needed columns by id and name
neededColumnIds.add(position);
- neededColumnNames.add(cols.get(i));
+ neededColumnNames.add(column);
}
}
desc.setVirtualCols(newVirtualCols);
scanOp.setNeededColumnIDs(neededColumnIds);
scanOp.setNeededColumns(neededColumnNames);
+ scanOp.setReferencedColumns(referencedColumnNames);
return null;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java Tue May 27 01:35:16 2014
@@ -147,7 +147,8 @@ public class GenMRTableScan1 implements
.getConfirmedPartitionsForScan(parseInfo);
if (confirmedPartns.size() > 0) {
Table source = parseCtx.getQB().getMetaData().getTableForAlias(alias);
- PrunedPartitionList partList = new PrunedPartitionList(source, confirmedPartns, false);
+ List<String> partCols = GenMapRedUtils.getPartitionColumns(parseInfo);
+ PrunedPartitionList partList = new PrunedPartitionList(source, confirmedPartns, partCols, false);
GenMapRedUtils.setTaskPlan(currAliasId, currTopOp, currTask, false, ctx, partList);
} else { // non-partitioned table
GenMapRedUtils.setTaskPlan(currAliasId, currTopOp, currTask, false, ctx);
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java Tue May 27 01:35:16 2014
@@ -20,6 +20,7 @@ package org.apache.hadoop.hive.ql.optimi
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -927,6 +928,7 @@ public final class GenMapRedUtils {
}
tableScanOp.setNeededColumnIDs(neededColumnIds);
tableScanOp.setNeededColumns(neededColumnNames);
+ tableScanOp.setReferencedColumns(neededColumnNames);
return tableScanOp;
}
@@ -1747,6 +1749,14 @@ public final class GenMapRedUtils {
return confirmedPartns;
}
+ public static List<String> getPartitionColumns(QBParseInfo parseInfo) {
+ tableSpec tblSpec = parseInfo.getTableSpec();
+ if (tblSpec.tableHandle.isPartitioned()) {
+ return new ArrayList<String>(tblSpec.getPartSpec().keySet());
+ }
+ return Collections.emptyList();
+ }
+
public static List<Path> getInputPathsForPartialScan(QBParseInfo parseInfo, StringBuffer aggregationKey)
throws SemanticException {
List<Path> inputPaths = new ArrayList<Path>();
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java Tue May 27 01:35:16 2014
@@ -212,9 +212,9 @@ public class PartitionPruner implements
return isAnd ? children.get(0) : null;
}
}
- return (ExprNodeGenericFuncDesc)expr;
+ return expr;
} else {
- throw new IllegalStateException("Unexpected type of ExprNodeDesc: " + expr.getExprString());
+ throw new IllegalStateException("Unexpected type of ExprNodeDesc: " + expr.getExprString());
}
}
@@ -225,18 +225,23 @@ public class PartitionPruner implements
* The expression is only used to prune by partition name, so we have no business with VCs.
* @param expr original partition pruning expression.
* @param partCols list of partition columns for the table.
+ * @param referred partition columns referred by expr
* @return partition pruning expression that only contains partition columns from the list.
*/
- static private ExprNodeDesc removeNonPartCols(ExprNodeDesc expr, List<String> partCols) {
- if (expr instanceof ExprNodeColumnDesc
- && !partCols.contains(((ExprNodeColumnDesc) expr).getColumn())) {
- // Column doesn't appear to be a partition column for the table.
- return new ExprNodeConstantDesc(expr.getTypeInfo(), null);
+ static private ExprNodeDesc removeNonPartCols(ExprNodeDesc expr, List<String> partCols,
+ Set<String> referred) {
+ if (expr instanceof ExprNodeColumnDesc) {
+ String column = ((ExprNodeColumnDesc) expr).getColumn();
+ if (!partCols.contains(column)) {
+ // Column doesn't appear to be a partition column for the table.
+ return new ExprNodeConstantDesc(expr.getTypeInfo(), null);
+ }
+ referred.add(column);
}
if (expr instanceof ExprNodeGenericFuncDesc) {
List<ExprNodeDesc> children = expr.getChildren();
for (int i = 0; i < children.size(); ++i) {
- children.set(i, removeNonPartCols(children.get(i), partCols));
+ children.set(i, removeNonPartCols(children.get(i), partCols, referred));
}
}
return expr;
@@ -266,7 +271,7 @@ public class PartitionPruner implements
try {
if (!tab.isPartitioned()) {
// If the table is not partitioned, return everything.
- return new PrunedPartitionList(tab, getAllPartitions(tab), false);
+ return new PrunedPartitionList(tab, getAllPartitions(tab), null, false);
}
LOG.debug("tabname = " + tab.getTableName() + " is partitioned");
@@ -279,18 +284,19 @@ public class PartitionPruner implements
if (prunerExpr == null) {
// Non-strict mode, and there is no predicates at all - get everything.
- return new PrunedPartitionList(tab, getAllPartitions(tab), false);
+ return new PrunedPartitionList(tab, getAllPartitions(tab), null, false);
}
+ Set<String> referred = new LinkedHashSet<String>();
// Replace virtual columns with nulls. See javadoc for details.
- prunerExpr = removeNonPartCols(prunerExpr, extractPartColNames(tab));
+ prunerExpr = removeNonPartCols(prunerExpr, extractPartColNames(tab), referred);
// Remove all parts that are not partition columns. See javadoc for details.
ExprNodeGenericFuncDesc compactExpr = (ExprNodeGenericFuncDesc)compactExpr(prunerExpr.clone());
String oldFilter = prunerExpr.getExprString();
if (compactExpr == null) {
// Non-strict mode, and all the predicates are on non-partition columns - get everything.
LOG.debug("Filter " + oldFilter + " was null after compacting");
- return new PrunedPartitionList(tab, getAllPartitions(tab), true);
+ return new PrunedPartitionList(tab, getAllPartitions(tab), null, true);
}
LOG.debug("Filter w/ compacting: " + compactExpr.getExprString()
@@ -326,6 +332,7 @@ public class PartitionPruner implements
// metastore and so some partitions may have no data based on other filters.
boolean isPruningByExactFilter = oldFilter.equals(compactExpr.getExprString());
return new PrunedPartitionList(tab, new LinkedHashSet<Partition>(partitions),
+ new ArrayList<String>(referred),
hasUnknownPartitions || !isPruningByExactFilter);
} catch (HiveException e) {
throw e;
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java Tue May 27 01:35:16 2014
@@ -22,8 +22,8 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.metadata.Table;
public class ColumnAccessAnalyzer {
@@ -44,9 +44,23 @@ public class ColumnAccessAnalyzer {
for (TableScanOperator op : topOps.keySet()) {
Table table = topOps.get(op);
String tableName = table.getCompleteName();
- List<FieldSchema> tableCols = table.getCols();
- for (int i : op.getNeededColumnIDs()) {
- columnAccessInfo.add(tableName, tableCols.get(i).getName());
+ List<String> referenced = op.getReferencedColumns();
+ for (String column : referenced) {
+ columnAccessInfo.add(tableName, column);
+ }
+ if (table.isPartitioned()) {
+ PrunedPartitionList parts;
+ try {
+ parts = pGraphContext.getPrunedPartitions(table.getTableName(), op);
+ } catch (HiveException e) {
+ LOG.error(org.apache.hadoop.util.StringUtils.stringifyException(e));
+ throw new SemanticException(e.getMessage(), e);
+ }
+ if (parts.getReferredPartCols() != null) {
+ for (String partKey : parts.getReferredPartCols()) {
+ columnAccessInfo.add(tableName, partKey);
+ }
+ }
}
}
return columnAccessInfo;
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java Tue May 27 01:35:16 2014
@@ -28,7 +28,6 @@ import org.apache.commons.logging.LogFac
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.DriverContext;
-import org.apache.hadoop.hive.ql.ErrorMsg;
import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.exec.Task;
import org.apache.hadoop.hive.ql.exec.TaskFactory;
@@ -40,12 +39,6 @@ import org.apache.hadoop.hive.ql.lib.Nod
import org.apache.hadoop.hive.ql.metadata.Partition;
import org.apache.hadoop.hive.ql.metadata.Table;
import org.apache.hadoop.hive.ql.optimizer.GenMapRedUtils;
-import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.tableSpec;
-import org.apache.hadoop.hive.ql.parse.GenTezWork;
-import org.apache.hadoop.hive.ql.parse.ParseContext;
-import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
-import org.apache.hadoop.hive.ql.parse.QBParseInfo;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.plan.MapWork;
import org.apache.hadoop.hive.ql.plan.StatsNoJobWork;
import org.apache.hadoop.hive.ql.plan.TezWork;
@@ -150,7 +143,8 @@ public class ProcessAnalyzeTable impleme
PrunedPartitionList partitions = null;
if (confirmedPartns.size() > 0) {
Table source = queryBlock.getMetaData().getTableForAlias(alias);
- partitions = new PrunedPartitionList(source, confirmedPartns, false);
+ List<String> partCols = GenMapRedUtils.getPartitionColumns(parseInfo);
+ partitions = new PrunedPartitionList(source, confirmedPartns, partCols, false);
}
MapWork w = utils.createMapWork(context, tableScan, tezWork, partitions);
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/PrunedPartitionList.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/PrunedPartitionList.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/PrunedPartitionList.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/PrunedPartitionList.java Tue May 27 01:35:16 2014
@@ -36,11 +36,16 @@ public class PrunedPartitionList {
/** Partitions that either satisfy the partition criteria, or may satisfy it. */
private Set<Partition> partitions;
+ /** partition columns referred by pruner expr */
+ private List<String> referred;
+
/** Whether there are partitions in the list that may or may not satisfy the criteria. */
private boolean hasUnknowns;
- public PrunedPartitionList(Table source, Set<Partition> partitions, boolean hasUnknowns) {
+ public PrunedPartitionList(Table source, Set<Partition> partitions, List<String> referred,
+ boolean hasUnknowns) {
this.source = source;
+ this.referred = referred;
this.partitions = partitions;
this.hasUnknowns = hasUnknowns;
}
@@ -70,4 +75,8 @@ public class PrunedPartitionList {
public boolean hasUnknownPartitions() {
return hasUnknowns;
}
+
+ public List<String> getReferredPartCols() {
+ return referred;
+ }
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java Tue May 27 01:35:16 2014
@@ -531,7 +531,7 @@ public class QBParseInfo {
}
/**
- * This method is used only for the anlayze command to get the partition specs
+ * This method is used only for the analyze command to get the partition specs
*/
public tableSpec getTableSpec() {
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java Tue May 27 01:35:16 2014
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.apache.hadoop.hive.ql.exec.PTFUtils;
import org.apache.hadoop.hive.ql.metadata.VirtualColumn;
/**
@@ -34,6 +35,10 @@ import org.apache.hadoop.hive.ql.metadat
public class TableScanDesc extends AbstractOperatorDesc {
private static final long serialVersionUID = 1L;
+ static {
+ PTFUtils.makeTransient(TableScanDesc.class, "filterObject", "referencedColumns");
+ }
+
private String alias;
private List<VirtualColumn> virtualCols;
@@ -64,6 +69,16 @@ public class TableScanDesc extends Abstr
private ExprNodeGenericFuncDesc filterExpr;
private transient Serializable filterObject;
+ // Both neededColumnIDs and neededColumns should never be null.
+ // When neededColumnIDs is an empty list,
+ // it means no needed column (e.g. we do not need any column to evaluate
+ // SELECT count(*) FROM t).
+ private List<Integer> neededColumnIDs;
+ private List<String> neededColumns;
+
+ // all column names referenced including virtual columns. used in ColumnAccessAnalyzer
+ private transient List<String> referencedColumns;
+
public static final String FILTER_EXPR_CONF_STR =
"hive.io.filter.expr.serialized";
@@ -125,6 +140,30 @@ public class TableScanDesc extends Abstr
this.filterObject = filterObject;
}
+ public void setNeededColumnIDs(List<Integer> neededColumnIDs) {
+ this.neededColumnIDs = neededColumnIDs;
+ }
+
+ public List<Integer> getNeededColumnIDs() {
+ return neededColumnIDs;
+ }
+
+ public void setNeededColumns(List<String> neededColumns) {
+ this.neededColumns = neededColumns;
+ }
+
+ public List<String> getNeededColumns() {
+ return neededColumns;
+ }
+
+ public void setReferencedColumns(List<String> referencedColumns) {
+ this.referencedColumns = referencedColumns;
+ }
+
+ public List<String> getReferencedColumns() {
+ return referencedColumns;
+ }
+
public void setAlias(String alias) {
this.alias = alias;
}
Modified: hive/trunk/ql/src/test/queries/clientpositive/column_access_stats.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/column_access_stats.q?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/column_access_stats.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/column_access_stats.q Tue May 27 01:35:16 2014
@@ -160,3 +160,8 @@ FROM
JOIN T3
ON T3.key = T4.key
ORDER BY T3.key, T4.key;
+
+-- for partitioned table
+SELECT * FROM srcpart TABLESAMPLE (10 ROWS);
+SELECT key,ds FROM srcpart TABLESAMPLE (10 ROWS) WHERE hr='11';
+SELECT value FROM srcpart TABLESAMPLE (10 ROWS) WHERE ds='2008-04-08';
Modified: hive/trunk/ql/src/test/results/clientpositive/column_access_stats.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/column_access_stats.q.out?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/column_access_stats.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/column_access_stats.q.out Tue May 27 01:35:16 2014
@@ -58,21 +58,21 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@t4
#### A masked pattern was here ####
Table:default@t4
-Columns:key,val
+Columns:key,p,val
PREHOOK: query: SELECT val FROM T4 where p=1
PREHOOK: type: QUERY
PREHOOK: Input: default@t4
#### A masked pattern was here ####
Table:default@t4
-Columns:val
+Columns:p,val
PREHOOK: query: SELECT p, val FROM T4 where p=1
PREHOOK: type: QUERY
PREHOOK: Input: default@t4
#### A masked pattern was here ####
Table:default@t4
-Columns:val
+Columns:p,val
PREHOOK: query: -- More complicated select queries
EXPLAIN SELECT key FROM (SELECT key, val FROM T1) subq1 ORDER BY key
@@ -950,3 +950,63 @@ Columns:key,val
7 7 17.0
8 8 46.0
8 8 46.0
+PREHOOK: query: -- for partitioned table
+SELECT * FROM srcpart TABLESAMPLE (10 ROWS)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+Table:default@srcpart
+Columns:ds,hr,key,value
+
+238 val_238 2008-04-08 11
+86 val_86 2008-04-08 11
+311 val_311 2008-04-08 11
+27 val_27 2008-04-08 11
+165 val_165 2008-04-08 11
+409 val_409 2008-04-08 11
+255 val_255 2008-04-08 11
+278 val_278 2008-04-08 11
+98 val_98 2008-04-08 11
+484 val_484 2008-04-08 11
+PREHOOK: query: SELECT key,ds FROM srcpart TABLESAMPLE (10 ROWS) WHERE hr='11'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+#### A masked pattern was here ####
+Table:default@srcpart
+Columns:ds,hr,key
+
+238 2008-04-08
+86 2008-04-08
+311 2008-04-08
+27 2008-04-08
+165 2008-04-08
+409 2008-04-08
+255 2008-04-08
+278 2008-04-08
+98 2008-04-08
+484 2008-04-08
+PREHOOK: query: SELECT value FROM srcpart TABLESAMPLE (10 ROWS) WHERE ds='2008-04-08'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+#### A masked pattern was here ####
+Table:default@srcpart
+Columns:ds,value
+
+val_238
+val_86
+val_311
+val_27
+val_165
+val_409
+val_255
+val_278
+val_98
+val_484
Modified: hive/trunk/ql/src/test/results/compiler/plan/case_sensitivity.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/case_sensitivity.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/case_sensitivity.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/case_sensitivity.q.xml Tue May 27 01:35:16 2014
@@ -219,31 +219,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
</void>
- <void method="add">
- <string>value</string>
+ <void property="neededColumns">
+ <object id="ArrayList1" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_5</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList1"/>
+ </void>
<void property="schema">
<object idref="RowSchema0"/>
</void>
@@ -1052,22 +1056,35 @@
<void property="alias">
<string>src_thrift</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>2</int>
+ </void>
+ <void method="add">
+ <int>4</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>lint</string>
+ </void>
+ <void method="add">
+ <string>lintstring</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>2</int>
- </void>
- <void method="add">
- <int>4</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>lint</string>
@@ -1077,9 +1094,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/cast1.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/cast1.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/cast1.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/cast1.q.xml Tue May 27 01:35:16 2014
@@ -930,28 +930,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/groupby1.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/groupby1.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/groupby1.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/groupby1.q.xml Tue May 27 01:35:16 2014
@@ -863,22 +863,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -888,9 +901,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/groupby2.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/groupby2.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/groupby2.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/groupby2.q.xml Tue May 27 01:35:16 2014
@@ -954,22 +954,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -979,9 +992,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/groupby3.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/groupby3.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/groupby3.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/groupby3.q.xml Tue May 27 01:35:16 2014
@@ -1168,28 +1168,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>value</string>
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/groupby4.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/groupby4.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/groupby4.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/groupby4.q.xml Tue May 27 01:35:16 2014
@@ -602,28 +602,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/groupby5.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/groupby5.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/groupby5.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/groupby5.q.xml Tue May 27 01:35:16 2014
@@ -715,22 +715,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -740,9 +753,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/groupby6.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/groupby6.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/groupby6.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/groupby6.q.xml Tue May 27 01:35:16 2014
@@ -602,28 +602,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>value</string>
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/input1.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/input1.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/input1.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/input1.q.xml Tue May 27 01:35:16 2014
@@ -219,31 +219,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
- </void>
- <void method="add">
- <string>value</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object id="ArrayList1" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_5</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList1"/>
+ </void>
<void property="schema">
<object idref="RowSchema0"/>
</void>
@@ -989,22 +993,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -1014,9 +1031,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/input2.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/input2.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/input2.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/input2.q.xml Tue May 27 01:35:16 2014
@@ -219,31 +219,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
</void>
- <void method="add">
- <string>value</string>
+ <void property="neededColumns">
+ <object id="ArrayList1" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_10</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList1"/>
+ </void>
<void property="schema">
<object idref="RowSchema0"/>
</void>
@@ -560,7 +564,7 @@
<string>Stage-15</string>
</void>
<void property="listTasks">
- <object id="ArrayList1" class="java.util.ArrayList">
+ <object id="ArrayList2" class="java.util.ArrayList">
<void method="add">
<object id="MoveTask3" class="org.apache.hadoop.hive.ql.exec.MoveTask">
<void property="childTasks">
@@ -764,31 +768,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
</void>
- <void method="add">
- <string>value</string>
+ <void property="neededColumns">
+ <object id="ArrayList3" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_12</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList3"/>
+ </void>
<void property="schema">
<object idref="RowSchema1"/>
</void>
@@ -1020,7 +1028,7 @@
<object idref="ListBucketingCtx1"/>
</void>
<void property="listTasks">
- <object idref="ArrayList1"/>
+ <object idref="ArrayList2"/>
</void>
</object>
</void>
@@ -1046,7 +1054,7 @@
<string>Stage-21</string>
</void>
<void property="listTasks">
- <object id="ArrayList2" class="java.util.ArrayList">
+ <object id="ArrayList4" class="java.util.ArrayList">
<void method="add">
<object id="MoveTask6" class="org.apache.hadoop.hive.ql.exec.MoveTask">
<void property="childTasks">
@@ -1258,31 +1266,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
</void>
- <void method="add">
- <string>value</string>
+ <void property="neededColumns">
+ <object id="ArrayList5" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_14</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList5"/>
+ </void>
<void property="schema">
<object idref="RowSchema2"/>
</void>
@@ -1527,7 +1539,7 @@
<object idref="ListBucketingCtx2"/>
</void>
<void property="listTasks">
- <object idref="ArrayList2"/>
+ <object idref="ArrayList4"/>
</void>
</object>
</void>
@@ -2496,22 +2508,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -2521,9 +2546,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/input20.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/input20.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/input20.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/input20.q.xml Tue May 27 01:35:16 2014
@@ -693,28 +693,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/input3.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/input3.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/input3.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/input3.q.xml Tue May 27 01:35:16 2014
@@ -219,31 +219,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
</void>
- <void method="add">
- <string>value</string>
+ <void property="neededColumns">
+ <object id="ArrayList1" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_13</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList1"/>
+ </void>
<void property="schema">
<object idref="RowSchema0"/>
</void>
@@ -560,7 +564,7 @@
<string>Stage-16</string>
</void>
<void property="listTasks">
- <object id="ArrayList1" class="java.util.ArrayList">
+ <object id="ArrayList2" class="java.util.ArrayList">
<void method="add">
<object id="MoveTask3" class="org.apache.hadoop.hive.ql.exec.MoveTask">
<void property="childTasks">
@@ -764,31 +768,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
</void>
- <void method="add">
- <string>value</string>
+ <void property="neededColumns">
+ <object id="ArrayList3" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_15</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList3"/>
+ </void>
<void property="schema">
<object idref="RowSchema1"/>
</void>
@@ -1079,7 +1087,7 @@
<object idref="ListBucketingCtx1"/>
</void>
<void property="listTasks">
- <object idref="ArrayList1"/>
+ <object idref="ArrayList2"/>
</void>
</object>
</void>
@@ -1105,7 +1113,7 @@
<string>Stage-22</string>
</void>
<void property="listTasks">
- <object id="ArrayList2" class="java.util.ArrayList">
+ <object id="ArrayList4" class="java.util.ArrayList">
<void method="add">
<object id="MoveTask6" class="org.apache.hadoop.hive.ql.exec.MoveTask">
<void property="childTasks">
@@ -1317,31 +1325,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
</void>
- <void method="add">
- <string>value</string>
+ <void property="neededColumns">
+ <object id="ArrayList5" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_17</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList5"/>
+ </void>
<void property="schema">
<object idref="RowSchema2"/>
</void>
@@ -1649,7 +1661,7 @@
<object idref="ListBucketingCtx2"/>
</void>
<void property="listTasks">
- <object idref="ArrayList2"/>
+ <object idref="ArrayList4"/>
</void>
</object>
</void>
@@ -1675,7 +1687,7 @@
<string>Stage-27</string>
</void>
<void property="listTasks">
- <object id="ArrayList3" class="java.util.ArrayList">
+ <object id="ArrayList6" class="java.util.ArrayList">
<void method="add">
<object id="MoveTask9" class="org.apache.hadoop.hive.ql.exec.MoveTask">
<void property="childTasks">
@@ -1796,25 +1808,29 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ </object>
</void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>_col0</string>
+ <void property="neededColumns">
+ <object id="ArrayList7" class="java.util.ArrayList">
+ <void method="add">
+ <string>_col0</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_19</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList7"/>
+ </void>
<void property="schema">
<object idref="RowSchema3"/>
</void>
@@ -1992,7 +2008,7 @@
#### A masked pattern was here ####
</void>
<void property="listTasks">
- <object idref="ArrayList3"/>
+ <object idref="ArrayList6"/>
</void>
</object>
</void>
@@ -3203,22 +3219,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -3228,9 +3257,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/input4.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/input4.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/input4.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/input4.q.xml Tue May 27 01:35:16 2014
@@ -833,22 +833,35 @@
<void property="alias">
<string>src</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -858,9 +871,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/input5.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/input5.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/input5.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/input5.q.xml Tue May 27 01:35:16 2014
@@ -820,22 +820,35 @@
<void property="alias">
<string>src_thrift</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>2</int>
+ </void>
+ <void method="add">
+ <int>4</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>lint</string>
+ </void>
+ <void method="add">
+ <string>lintstring</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>2</int>
- </void>
- <void method="add">
- <int>4</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>lint</string>
@@ -845,9 +858,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">
Modified: hive/trunk/ql/src/test/results/compiler/plan/input6.q.xml
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/plan/input6.q.xml?rev=1597694&r1=1597693&r2=1597694&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/plan/input6.q.xml (original)
+++ hive/trunk/ql/src/test/results/compiler/plan/input6.q.xml Tue May 27 01:35:16 2014
@@ -219,31 +219,35 @@
</void>
</void>
<void property="conf">
- <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc"/>
- </void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
- </void>
- <void property="neededColumns">
- <object class="java.util.ArrayList">
- <void method="add">
- <string>key</string>
- </void>
- <void method="add">
- <string>value</string>
+ <object class="org.apache.hadoop.hive.ql.plan.TableScanDesc">
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object id="ArrayList1" class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
</void>
</object>
</void>
<void property="operatorId">
<string>TS_5</string>
</void>
+ <void property="referencedColumns">
+ <object idref="ArrayList1"/>
+ </void>
<void property="schema">
<object idref="RowSchema0"/>
</void>
@@ -975,22 +979,35 @@
<void property="alias">
<string>src1</string>
</void>
+ <void property="neededColumnIDs">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <int>0</int>
+ </void>
+ <void method="add">
+ <int>1</int>
+ </void>
+ </object>
+ </void>
+ <void property="neededColumns">
+ <object class="java.util.ArrayList">
+ <void method="add">
+ <string>key</string>
+ </void>
+ <void method="add">
+ <string>value</string>
+ </void>
+ </object>
+ </void>
<void property="virtualCols">
<object class="java.util.ArrayList"/>
</void>
</object>
</void>
- <void property="neededColumnIDs">
- <object class="java.util.ArrayList">
- <void method="add">
- <int>0</int>
- </void>
- <void method="add">
- <int>1</int>
- </void>
- </object>
+ <void property="operatorId">
+ <string>TS_0</string>
</void>
- <void property="neededColumns">
+ <void property="referencedColumns">
<object class="java.util.ArrayList">
<void method="add">
<string>key</string>
@@ -1000,9 +1017,6 @@
</void>
</object>
</void>
- <void property="operatorId">
- <string>TS_0</string>
- </void>
<void property="schema">
<object class="org.apache.hadoop.hive.ql.exec.RowSchema">
<void property="signature">