You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2017/02/02 02:03:00 UTC
[01/50] [abbrv] hive git commit: HIVE-15550 : fix arglist logging in
schematool (Anishek Agarwal via Thejas Nair)
Repository: hive
Updated Branches:
refs/heads/hive-14535 d00196c19 -> 748c1bd2f
HIVE-15550 : fix arglist logging in schematool (Anishek Agarwal via Thejas Nair)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/16ed90ae
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/16ed90ae
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/16ed90ae
Branch: refs/heads/hive-14535
Commit: 16ed90aefd0157af750af0ddbf7741ab715b1034
Parents: 1deb1d8
Author: Anishek Agarwal <an...@gmail.com>
Authored: Thu Jan 26 21:57:41 2017 -0800
Committer: Thejas M Nair <th...@hortonworks.com>
Committed: Thu Jan 26 21:57:41 2017 -0800
----------------------------------------------------------------------
beeline/pom.xml | 12 ++-
.../org/apache/hive/beeline/HiveSchemaTool.java | 80 +++++++++++---------
2 files changed, 56 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/16ed90ae/beeline/pom.xml
----------------------------------------------------------------------
diff --git a/beeline/pom.xml b/beeline/pom.xml
index 5503add..58ca92e 100644
--- a/beeline/pom.xml
+++ b/beeline/pom.xml
@@ -29,6 +29,7 @@
<properties>
<hive.path.to.root>..</hive.path.to.root>
+ <powermock.version>1.6.6</powermock.version>
</properties>
<dependencies>
@@ -119,8 +120,15 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-junit4</artifactId>
+ <version>${powermock.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-api-mockito</artifactId>
+ <version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/hive/blob/16ed90ae/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java
index a981bce..ea58776 100644
--- a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java
+++ b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java
@@ -815,38 +815,10 @@ public class HiveSchemaTool {
// Generate the beeline args per hive conf and execute the given script
public void runBeeLine(String sqlScriptFile) throws IOException {
- List<String> argList = new ArrayList<String>();
- argList.add("-u");
- argList.add(HiveSchemaHelper.getValidConfVar(
- ConfVars.METASTORECONNECTURLKEY, hiveConf));
- argList.add("-d");
- argList.add(HiveSchemaHelper.getValidConfVar(
- ConfVars.METASTORE_CONNECTION_DRIVER, hiveConf));
- argList.add("-n");
- argList.add(userName);
- argList.add("-p");
- argList.add(passWord);
- argList.add("-f");
- argList.add(sqlScriptFile);
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("Going to invoke file that contains:");
- BufferedReader reader = new BufferedReader(new FileReader(sqlScriptFile));
- try {
- String line;
- while ((line = reader.readLine()) != null) {
- LOG.debug("script: " + line);
- }
- } finally {
- if (reader != null) {
- reader.close();
- }
- }
- }
+ CommandBuilder builder = new CommandBuilder(hiveConf, userName, passWord, sqlScriptFile);
// run the script using Beeline
- BeeLine beeLine = new BeeLine();
- try {
+ try (BeeLine beeLine = new BeeLine()) {
if (!verbose) {
beeLine.setOutputStream(new PrintStream(new NullOutputStream()));
beeLine.getOpts().setSilent(true);
@@ -856,13 +828,53 @@ public class HiveSchemaTool {
// We can be pretty sure that an entire line can be processed as a single command since
// we always add a line separator at the end while calling dbCommandParser.buildCommand.
beeLine.getOpts().setEntireLineAsCommand(true);
- LOG.debug("Going to run command <" + StringUtils.join(argList, " ") + ">");
- int status = beeLine.begin(argList.toArray(new String[0]), null);
+ LOG.debug("Going to run command <" + builder.buildToLog() + ">");
+ int status = beeLine.begin(builder.buildToRun(), null);
if (status != 0) {
throw new IOException("Schema script failed, errorcode " + status);
}
- } finally {
- beeLine.close();
+ }
+ }
+
+ static class CommandBuilder {
+ private final HiveConf hiveConf;
+ private final String userName;
+ private final String password;
+ private final String sqlScriptFile;
+
+ CommandBuilder(HiveConf hiveConf, String userName, String password, String sqlScriptFile) {
+ this.hiveConf = hiveConf;
+ this.userName = userName;
+ this.password = password;
+ this.sqlScriptFile = sqlScriptFile;
+ }
+
+ String[] buildToRun() throws IOException {
+ return argsWith(password);
+ }
+
+ String buildToLog() throws IOException {
+ logScript();
+ return StringUtils.join(argsWith(BeeLine.PASSWD_MASK), " ");
+ }
+
+ private String[] argsWith(String password) throws IOException {
+ return new String[] { "-u",
+ HiveSchemaHelper.getValidConfVar(ConfVars.METASTORECONNECTURLKEY, hiveConf), "-d",
+ HiveSchemaHelper.getValidConfVar(ConfVars.METASTORE_CONNECTION_DRIVER, hiveConf), "-n",
+ userName, "-p", password, "-f", sqlScriptFile };
+ }
+
+ private void logScript() throws IOException {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Going to invoke file that contains:");
+ try (BufferedReader reader = new BufferedReader(new FileReader(sqlScriptFile))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ LOG.debug("script: " + line);
+ }
+ }
+ }
}
}
[23/50] [abbrv] hive git commit: HIVE-15753 : subquery failing with
org.apache.hadoop.hive.ql.parse.SemanticException (Vineet Garg via Ashutosh
Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
HIVE-15753 : subquery failing with org.apache.hadoop.hive.ql.parse.SemanticException (Vineet Garg via Ashutosh Chauhan)
Signed-off-by: Ashutosh Chauhan <ha...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/6c54551e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/6c54551e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/6c54551e
Branch: refs/heads/hive-14535
Commit: 6c54551ef6f5f5f55b9f7279537ef9ee4b9420a0
Parents: cf392f1
Author: Vineet Garg <vg...@hortonworks.com>
Authored: Tue Jan 31 16:51:59 2017 -0800
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Tue Jan 31 16:54:02 2017 -0800
----------------------------------------------------------------------
.../calcite/rules/HiveRelDecorrelator.java | 3 +-
.../hive/ql/parse/TypeCheckProcFactory.java | 10 +-
.../queries/clientnegative/subquery_in_on.q | 3 +
.../queries/clientpositive/subquery_notexists.q | 8 +-
.../clientnegative/subquery_in_groupby.q.out | 2 +-
.../results/clientnegative/subquery_in_on.q.out | 1 +
.../clientnegative/subquery_in_select.q.out | 2 +-
.../results/clientpositive/perf/query14.q.out | 8 +-
.../clientpositive/subquery_notexists.q.out | 928 +++++++++++++++++++
9 files changed, 953 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java
index 5ab36db..9c26801 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java
@@ -70,6 +70,7 @@ import org.apache.calcite.sql.SqlOperator;
import org.apache.calcite.sql.fun.SqlCountAggFunction;
import org.apache.calcite.sql.fun.SqlSingleValueAggFunction;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.sql.validate.SqlValidatorUtil;
import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.util.Bug;
import org.apache.calcite.util.Holder;
@@ -907,7 +908,7 @@ public class HiveRelDecorrelator implements ReflectiveVisitor {
newPos++;
}
- RelNode newProject = HiveProject.create(frame.r, Pair.left(projects), Pair.right(projects));
+ RelNode newProject = HiveProject.create(frame.r, Pair.left(projects), SqlValidatorUtil.uniquify(Pair.right(projects)));
return register(rel, newProject, mapOldToNewOutputPos,
mapCorVarToOutputPos);
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
index 4aff56b..f979c14 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
@@ -54,6 +54,7 @@ import org.apache.hadoop.hive.ql.lib.Rule;
import org.apache.hadoop.hive.ql.lib.RuleRegExp;
import org.apache.hadoop.hive.ql.lib.ExpressionWalker;
import org.apache.hadoop.hive.ql.optimizer.ConstantPropagateProcFactory;
+import org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException;
import org.apache.hadoop.hive.ql.optimizer.calcite.translator.TypeConverter;
import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeColumnListDesc;
@@ -1400,8 +1401,9 @@ public class TypeCheckProcFactory {
ASTNode sqNode = (ASTNode) expr.getParent().getChild(1);
if (!ctx.getallowSubQueryExpr())
- throw new SemanticException(SemanticAnalyzer.generateErrorMessage(sqNode,
- ErrorMsg.UNSUPPORTED_SUBQUERY_EXPRESSION.getMsg()));
+ throw new CalciteSubquerySemanticException(SemanticAnalyzer.generateErrorMessage(sqNode,
+ ErrorMsg.UNSUPPORTED_SUBQUERY_EXPRESSION.getMsg("Currently SubQuery expressions are only allowed as " +
+ "Where and Having Clause predicates")));
ExprNodeDesc desc = TypeCheckProcFactory.processGByExpr(nd, procCtx);
if (desc != null) {
@@ -1427,7 +1429,7 @@ public class TypeCheckProcFactory {
Map<ASTNode, RelNode> subqueryToRelNode = ctx.getSubqueryToRelNode();
if(subqueryToRelNode == null) {
- throw new SemanticException(ErrorMsg.UNSUPPORTED_SUBQUERY_EXPRESSION.getMsg(
+ throw new CalciteSubquerySemanticException(ErrorMsg.UNSUPPORTED_SUBQUERY_EXPRESSION.getMsg(
" Currently SubQuery expressions are only allowed as " +
"Where and Having Clause predicates"));
}
@@ -1449,7 +1451,7 @@ public class TypeCheckProcFactory {
else if(isScalar){
// only single subquery expr is supported
if(subqueryRel.getRowType().getFieldCount() != 1) {
- throw new SemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg(
+ throw new CalciteSubquerySemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg(
"More than one column expression in subquery"));
}
// figure out subquery expression column's type
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/test/queries/clientnegative/subquery_in_on.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/subquery_in_on.q b/ql/src/test/queries/clientnegative/subquery_in_on.q
new file mode 100644
index 0000000..5f44f72
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/subquery_in_on.q
@@ -0,0 +1,3 @@
+-- subquery in ON clause
+explain SELECT p1.p_name FROM part p1 LEFT JOIN (select p_type as p_col from part ) p2
+ ON (select pp1.p_type as p_col from part pp1 where pp1.p_partkey = p2.p_col);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/test/queries/clientpositive/subquery_notexists.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/subquery_notexists.q b/ql/src/test/queries/clientpositive/subquery_notexists.q
index dc48c3e..4103603 100644
--- a/ql/src/test/queries/clientpositive/subquery_notexists.q
+++ b/ql/src/test/queries/clientpositive/subquery_notexists.q
@@ -58,4 +58,10 @@ where not exists
from src a
where b.value <> a.value and a.key > b.key and a.value > 'val_2'
)
-;
\ No newline at end of file
+;
+
+-- bug in decorrelation where HiveProject gets multiple column with same name
+explain SELECT p1.p_name FROM part p1 LEFT JOIN (select p_type as p_col from part ) p2 WHERE NOT EXISTS
+ (select pp1.p_type as p_col from part pp1 where pp1.p_partkey = p2.p_col);
+SELECT p1.p_name FROM part p1 LEFT JOIN (select p_type as p_col from part ) p2 WHERE NOT EXISTS
+ (select pp1.p_type as p_col from part pp1 where pp1.p_partkey = p2.p_col);
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/test/results/clientnegative/subquery_in_groupby.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/subquery_in_groupby.q.out b/ql/src/test/results/clientnegative/subquery_in_groupby.q.out
index a546d49..5c69690 100644
--- a/ql/src/test/results/clientnegative/subquery_in_groupby.q.out
+++ b/ql/src/test/results/clientnegative/subquery_in_groupby.q.out
@@ -1 +1 @@
-FAILED: SemanticException [Error 10249]: Unsupported SubQuery Expression Currently SubQuery expressions are only allowed as Where and Having Clause predicates
+FAILED: SemanticException org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException: Unsupported SubQuery Expression Currently SubQuery expressions are only allowed as Where and Having Clause predicates
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/test/results/clientnegative/subquery_in_on.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/subquery_in_on.q.out b/ql/src/test/results/clientnegative/subquery_in_on.q.out
new file mode 100644
index 0000000..551f0ec
--- /dev/null
+++ b/ql/src/test/results/clientnegative/subquery_in_on.q.out
@@ -0,0 +1 @@
+FAILED: SemanticException org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException: 2:77 Unsupported SubQuery Expression Currently SubQuery expressions are only allowed as Where and Having Clause predicates. Error encountered near token 'p2'
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/test/results/clientnegative/subquery_in_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/subquery_in_select.q.out b/ql/src/test/results/clientnegative/subquery_in_select.q.out
index a546d49..5c69690 100644
--- a/ql/src/test/results/clientnegative/subquery_in_select.q.out
+++ b/ql/src/test/results/clientnegative/subquery_in_select.q.out
@@ -1 +1 @@
-FAILED: SemanticException [Error 10249]: Unsupported SubQuery Expression Currently SubQuery expressions are only allowed as Where and Having Clause predicates
+FAILED: SemanticException org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException: Unsupported SubQuery Expression Currently SubQuery expressions are only allowed as Where and Having Clause predicates
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/test/results/clientpositive/perf/query14.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query14.q.out b/ql/src/test/results/clientpositive/perf/query14.q.out
index 171a22a..3016ad4 100644
--- a/ql/src/test/results/clientpositive/perf/query14.q.out
+++ b/ql/src/test/results/clientpositive/perf/query14.q.out
@@ -1,9 +1,9 @@
-Warning: Shuffle Join MERGEJOIN[916][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 114' is a cross product
-Warning: Shuffle Join MERGEJOIN[917][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 115' is a cross product
-Warning: Shuffle Join MERGEJOIN[914][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 61' is a cross product
-Warning: Shuffle Join MERGEJOIN[915][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 62' is a cross product
Warning: Shuffle Join MERGEJOIN[912][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 5' is a cross product
Warning: Shuffle Join MERGEJOIN[913][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 6' is a cross product
+Warning: Shuffle Join MERGEJOIN[914][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 61' is a cross product
+Warning: Shuffle Join MERGEJOIN[915][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 62' is a cross product
+Warning: Shuffle Join MERGEJOIN[916][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 114' is a cross product
+Warning: Shuffle Join MERGEJOIN[917][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 115' is a cross product
PREHOOK: query: explain
with cross_items as
(select i_item_sk ss_item_sk
http://git-wip-us.apache.org/repos/asf/hive/blob/6c54551e/ql/src/test/results/clientpositive/subquery_notexists.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/subquery_notexists.q.out b/ql/src/test/results/clientpositive/subquery_notexists.q.out
index b8df48b..b916d2f 100644
--- a/ql/src/test/results/clientpositive/subquery_notexists.q.out
+++ b/ql/src/test/results/clientpositive/subquery_notexists.q.out
@@ -866,3 +866,931 @@ POSTHOOK: Input: default@src
#### A masked pattern was here ####
98 val_98
98 val_98
+Warning: Shuffle Join JOIN[28][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-1:MAPRED' is a cross product
+Warning: Shuffle Join JOIN[12][tables = [$hdt$_3, $hdt$_4]] in Stage 'Stage-6:MAPRED' is a cross product
+PREHOOK: query: explain SELECT p1.p_name FROM part p1 LEFT JOIN (select p_type as p_col from part ) p2 WHERE NOT EXISTS
+ (select pp1.p_type as p_col from part pp1 where pp1.p_partkey = p2.p_col)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain SELECT p1.p_name FROM part p1 LEFT JOIN (select p_type as p_col from part ) p2 WHERE NOT EXISTS
+ (select pp1.p_type as p_col from part pp1 where pp1.p_partkey = p2.p_col)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-2 depends on stages: Stage-1, Stage-5
+ Stage-6 is a root stage
+ Stage-7 depends on stages: Stage-6
+ Stage-4 depends on stages: Stage-7
+ Stage-5 depends on stages: Stage-4
+ Stage-0 depends on stages: Stage-2
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ alias: p1
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: p_name (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string)
+ TableScan
+ alias: part
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: p_type (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string)
+ Reduce Operator Tree:
+ Join Operator
+ condition map:
+ Left Outer Join0 to 1
+ keys:
+ 0
+ 1
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 676 Data size: 164320 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+ Stage: Stage-2
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 676 Data size: 164320 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string)
+ TableScan
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 185 Data size: 23367 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
+ Reduce Operator Tree:
+ Join Operator
+ condition map:
+ Left Outer Join0 to 1
+ keys:
+ 0 _col1 (type: string)
+ 1 _col0 (type: string)
+ outputColumnNames: _col0, _col3
+ Statistics: Num rows: 743 Data size: 180752 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: _col3 is null (type: boolean)
+ Statistics: Num rows: 371 Data size: 90254 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 371 Data size: 90254 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 371 Data size: 90254 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-6
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ alias: p1
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ Statistics: Num rows: 26 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 26 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE
+ TableScan
+ alias: part
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: p_type (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string)
+ Reduce Operator Tree:
+ Join Operator
+ condition map:
+ Left Outer Join0 to 1
+ keys:
+ 0
+ 1
+ outputColumnNames: _col1
+ Statistics: Num rows: 676 Data size: 85202 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ keys: _col1 (type: string)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 676 Data size: 85202 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+ Stage: Stage-7
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 676 Data size: 85202 Basic stats: COMPLETE Column stats: NONE
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 338 Data size: 42601 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+ Stage: Stage-4
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ alias: pp1
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: p_partkey (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: UDFToDouble(_col0) (type: double)
+ sort order: +
+ Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ TableScan
+ Reduce Output Operator
+ key expressions: UDFToDouble(_col0) (type: double)
+ sort order: +
+ Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+ Statistics: Num rows: 338 Data size: 42601 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string)
+ Reduce Operator Tree:
+ Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 UDFToDouble(_col0) (type: double)
+ 1 UDFToDouble(_col0) (type: double)
+ outputColumnNames: _col1
+ Statistics: Num rows: 371 Data size: 46861 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ keys: _col1 (type: string)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 371 Data size: 46861 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+ Stage: Stage-5
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 371 Data size: 46861 Basic stats: COMPLETE Column stats: NONE
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 185 Data size: 23367 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 185 Data size: 23367 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+Warning: Shuffle Join JOIN[28][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-1:MAPRED' is a cross product
+Warning: Shuffle Join JOIN[12][tables = [$hdt$_3, $hdt$_4]] in Stage 'Stage-6:MAPRED' is a cross product
+PREHOOK: query: SELECT p1.p_name FROM part p1 LEFT JOIN (select p_type as p_col from part ) p2 WHERE NOT EXISTS
+ (select pp1.p_type as p_col from part pp1 where pp1.p_partkey = p2.p_col)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT p1.p_name FROM part p1 LEFT JOIN (select p_type as p_col from part ) p2 WHERE NOT EXISTS
+ (select pp1.p_type as p_col from part pp1 where pp1.p_partkey = p2.p_col)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part
+#### A masked pattern was here ####
+almond antique metallic orange dim
+almond aquamarine midnight light salmon
+almond antique olive coral navajo
+almond antique blue firebrick mint
+almond antique chartreuse lavender yellow
+almond aquamarine sandy cyan gainsboro
+almond azure aquamarine papaya violet
+almond antique forest lavender goldenrod
+almond aquamarine floral ivory bisque
+almond aquamarine pink moccasin thistle
+almond aquamarine dodger light gainsboro
+almond antique salmon chartreuse burlywood
+almond antique violet turquoise frosted
+almond antique burnished rose metallic
+almond aquamarine yellow dodger mint
+almond antique violet chocolate turquoise
+almond antique sky peru orange
+almond aquamarine rose maroon antique
+almond antique burnished rose metallic
+almond antique chartreuse khaki white
+almond antique violet mint lemon
+almond azure blanched chiffon midnight
+almond antique gainsboro frosted violet
+almond antique misty red olive
+almond aquamarine burnished black steel
+almond antique medium spring khaki
+almond antique salmon chartreuse burlywood
+almond antique blue firebrick mint
+almond aquamarine pink moccasin thistle
+almond aquamarine floral ivory bisque
+almond antique gainsboro frosted violet
+almond aquamarine yellow dodger mint
+almond aquamarine dodger light gainsboro
+almond aquamarine burnished black steel
+almond azure blanched chiffon midnight
+almond antique violet turquoise frosted
+almond antique sky peru orange
+almond antique burnished rose metallic
+almond antique violet chocolate turquoise
+almond antique medium spring khaki
+almond antique chartreuse khaki white
+almond antique burnished rose metallic
+almond aquamarine rose maroon antique
+almond aquamarine midnight light salmon
+almond antique chartreuse lavender yellow
+almond antique olive coral navajo
+almond antique misty red olive
+almond aquamarine sandy cyan gainsboro
+almond antique violet mint lemon
+almond azure aquamarine papaya violet
+almond antique forest lavender goldenrod
+almond antique metallic orange dim
+almond antique salmon chartreuse burlywood
+almond antique blue firebrick mint
+almond antique violet chocolate turquoise
+almond antique burnished rose metallic
+almond antique forest lavender goldenrod
+almond aquamarine midnight light salmon
+almond antique misty red olive
+almond antique gainsboro frosted violet
+almond antique olive coral navajo
+almond antique metallic orange dim
+almond antique chartreuse khaki white
+almond aquamarine yellow dodger mint
+almond antique burnished rose metallic
+almond aquamarine rose maroon antique
+almond aquamarine dodger light gainsboro
+almond antique chartreuse lavender yellow
+almond aquamarine pink moccasin thistle
+almond aquamarine burnished black steel
+almond azure aquamarine papaya violet
+almond antique violet mint lemon
+almond azure blanched chiffon midnight
+almond antique violet turquoise frosted
+almond antique sky peru orange
+almond antique medium spring khaki
+almond aquamarine floral ivory bisque
+almond aquamarine sandy cyan gainsboro
+almond antique violet mint lemon
+almond antique chartreuse lavender yellow
+almond aquamarine burnished black steel
+almond antique blue firebrick mint
+almond antique violet chocolate turquoise
+almond antique burnished rose metallic
+almond aquamarine rose maroon antique
+almond aquamarine yellow dodger mint
+almond aquamarine sandy cyan gainsboro
+almond aquamarine floral ivory bisque
+almond azure aquamarine papaya violet
+almond antique metallic orange dim
+almond antique sky peru orange
+almond antique burnished rose metallic
+almond antique misty red olive
+almond antique olive coral navajo
+almond aquamarine dodger light gainsboro
+almond aquamarine midnight light salmon
+almond aquamarine pink moccasin thistle
+almond antique violet turquoise frosted
+almond antique forest lavender goldenrod
+almond antique chartreuse khaki white
+almond antique medium spring khaki
+almond antique gainsboro frosted violet
+almond azure blanched chiffon midnight
+almond antique salmon chartreuse burlywood
+almond azure aquamarine papaya violet
+almond antique salmon chartreuse burlywood
+almond aquamarine rose maroon antique
+almond antique forest lavender goldenrod
+almond antique metallic orange dim
+almond antique blue firebrick mint
+almond aquamarine pink moccasin thistle
+almond aquamarine yellow dodger mint
+almond aquamarine dodger light gainsboro
+almond antique violet turquoise frosted
+almond antique sky peru orange
+almond antique violet chocolate turquoise
+almond antique chartreuse khaki white
+almond antique burnished rose metallic
+almond antique gainsboro frosted violet
+almond antique burnished rose metallic
+almond antique violet mint lemon
+almond aquamarine burnished black steel
+almond antique medium spring khaki
+almond antique misty red olive
+almond aquamarine midnight light salmon
+almond aquamarine sandy cyan gainsboro
+almond antique olive coral navajo
+almond antique chartreuse lavender yellow
+almond azure blanched chiffon midnight
+almond aquamarine floral ivory bisque
+almond azure blanched chiffon midnight
+almond antique blue firebrick mint
+almond antique chartreuse lavender yellow
+almond azure aquamarine papaya violet
+almond antique chartreuse khaki white
+almond aquamarine midnight light salmon
+almond antique sky peru orange
+almond antique misty red olive
+almond aquamarine yellow dodger mint
+almond antique violet mint lemon
+almond aquamarine pink moccasin thistle
+almond aquamarine sandy cyan gainsboro
+almond antique burnished rose metallic
+almond antique salmon chartreuse burlywood
+almond antique forest lavender goldenrod
+almond antique metallic orange dim
+almond antique violet turquoise frosted
+almond antique violet chocolate turquoise
+almond aquamarine dodger light gainsboro
+almond antique gainsboro frosted violet
+almond antique burnished rose metallic
+almond aquamarine rose maroon antique
+almond antique olive coral navajo
+almond antique medium spring khaki
+almond aquamarine burnished black steel
+almond aquamarine floral ivory bisque
+almond antique metallic orange dim
+almond antique violet chocolate turquoise
+almond antique burnished rose metallic
+almond aquamarine dodger light gainsboro
+almond antique forest lavender goldenrod
+almond antique burnished rose metallic
+almond aquamarine yellow dodger mint
+almond antique misty red olive
+almond antique chartreuse khaki white
+almond antique chartreuse lavender yellow
+almond antique medium spring khaki
+almond azure aquamarine papaya violet
+almond aquamarine sandy cyan gainsboro
+almond aquamarine floral ivory bisque
+almond antique salmon chartreuse burlywood
+almond aquamarine rose maroon antique
+almond antique olive coral navajo
+almond azure blanched chiffon midnight
+almond aquamarine burnished black steel
+almond aquamarine midnight light salmon
+almond antique sky peru orange
+almond antique violet mint lemon
+almond aquamarine pink moccasin thistle
+almond antique violet turquoise frosted
+almond antique gainsboro frosted violet
+almond antique blue firebrick mint
+almond aquamarine midnight light salmon
+almond azure blanched chiffon midnight
+almond antique chartreuse lavender yellow
+almond antique gainsboro frosted violet
+almond aquamarine burnished black steel
+almond antique medium spring khaki
+almond antique blue firebrick mint
+almond antique olive coral navajo
+almond aquamarine dodger light gainsboro
+almond antique violet chocolate turquoise
+almond aquamarine rose maroon antique
+almond antique violet turquoise frosted
+almond antique forest lavender goldenrod
+almond aquamarine floral ivory bisque
+almond aquamarine pink moccasin thistle
+almond antique burnished rose metallic
+almond azure aquamarine papaya violet
+almond aquamarine sandy cyan gainsboro
+almond antique salmon chartreuse burlywood
+almond antique violet mint lemon
+almond aquamarine yellow dodger mint
+almond antique metallic orange dim
+almond antique sky peru orange
+almond antique misty red olive
+almond antique burnished rose metallic
+almond antique chartreuse khaki white
+almond antique sky peru orange
+almond aquamarine floral ivory bisque
+almond azure aquamarine papaya violet
+almond antique olive coral navajo
+almond azure blanched chiffon midnight
+almond aquamarine sandy cyan gainsboro
+almond antique chartreuse lavender yellow
+almond aquamarine burnished black steel
+almond antique medium spring khaki
+almond aquamarine midnight light salmon
+almond antique misty red olive
+almond antique violet chocolate turquoise
+almond antique chartreuse khaki white
+almond antique violet mint lemon
+almond antique burnished rose metallic
+almond antique burnished rose metallic
+almond aquamarine yellow dodger mint
+almond aquamarine pink moccasin thistle
+almond antique violet turquoise frosted
+almond aquamarine dodger light gainsboro
+almond antique forest lavender goldenrod
+almond antique blue firebrick mint
+almond antique gainsboro frosted violet
+almond antique metallic orange dim
+almond antique salmon chartreuse burlywood
+almond aquamarine rose maroon antique
+almond antique chartreuse khaki white
+almond aquamarine pink moccasin thistle
+almond aquamarine floral ivory bisque
+almond antique sky peru orange
+almond aquamarine yellow dodger mint
+almond antique violet mint lemon
+almond antique metallic orange dim
+almond antique burnished rose metallic
+almond antique chartreuse lavender yellow
+almond aquamarine burnished black steel
+almond antique salmon chartreuse burlywood
+almond antique misty red olive
+almond antique violet turquoise frosted
+almond antique blue firebrick mint
+almond antique medium spring khaki
+almond aquamarine rose maroon antique
+almond azure blanched chiffon midnight
+almond antique gainsboro frosted violet
+almond aquamarine sandy cyan gainsboro
+almond antique violet chocolate turquoise
+almond aquamarine midnight light salmon
+almond antique olive coral navajo
+almond antique forest lavender goldenrod
+almond azure aquamarine papaya violet
+almond antique burnished rose metallic
+almond aquamarine dodger light gainsboro
+almond antique salmon chartreuse burlywood
+almond antique salmon chartreuse burlywood
+almond antique chartreuse lavender yellow
+almond aquamarine sandy cyan gainsboro
+almond antique metallic orange dim
+almond antique chartreuse khaki white
+almond antique violet mint lemon
+almond antique gainsboro frosted violet
+almond antique sky peru orange
+almond antique olive coral navajo
+almond antique chartreuse khaki white
+almond antique burnished rose metallic
+almond aquamarine rose maroon antique
+almond antique violet mint lemon
+almond azure blanched chiffon midnight
+almond antique sky peru orange
+almond antique gainsboro frosted violet
+almond antique burnished rose metallic
+almond aquamarine floral ivory bisque
+almond azure blanched chiffon midnight
+almond aquamarine yellow dodger mint
+almond aquamarine rose maroon antique
+almond antique violet turquoise frosted
+almond antique burnished rose metallic
+almond aquamarine yellow dodger mint
+almond aquamarine dodger light gainsboro
+almond aquamarine pink moccasin thistle
+almond antique olive coral navajo
+almond antique violet turquoise frosted
+almond antique blue firebrick mint
+almond aquamarine dodger light gainsboro
+almond azure aquamarine papaya violet
+almond aquamarine pink moccasin thistle
+almond antique forest lavender goldenrod
+almond antique burnished rose metallic
+almond aquamarine floral ivory bisque
+almond antique forest lavender goldenrod
+almond antique blue firebrick mint
+almond antique metallic orange dim
+almond antique violet chocolate turquoise
+almond antique chartreuse lavender yellow
+almond antique violet chocolate turquoise
+almond aquamarine midnight light salmon
+almond aquamarine burnished black steel
+almond antique medium spring khaki
+almond azure aquamarine papaya violet
+almond aquamarine midnight light salmon
+almond antique misty red olive
+almond aquamarine burnished black steel
+almond antique medium spring khaki
+almond aquamarine sandy cyan gainsboro
+almond antique misty red olive
+almond antique metallic orange dim
+almond aquamarine dodger light gainsboro
+almond antique burnished rose metallic
+almond antique misty red olive
+almond antique chartreuse lavender yellow
+almond azure aquamarine papaya violet
+almond antique salmon chartreuse burlywood
+almond antique olive coral navajo
+almond aquamarine burnished black steel
+almond antique sky peru orange
+almond aquamarine pink moccasin thistle
+almond antique gainsboro frosted violet
+almond antique violet chocolate turquoise
+almond antique violet turquoise frosted
+almond antique violet mint lemon
+almond aquamarine midnight light salmon
+almond azure blanched chiffon midnight
+almond aquamarine rose maroon antique
+almond aquamarine floral ivory bisque
+almond aquamarine sandy cyan gainsboro
+almond antique medium spring khaki
+almond antique chartreuse khaki white
+almond aquamarine yellow dodger mint
+almond antique forest lavender goldenrod
+almond antique burnished rose metallic
+almond antique blue firebrick mint
+almond aquamarine dodger light gainsboro
+almond antique metallic orange dim
+almond aquamarine midnight light salmon
+almond aquamarine burnished black steel
+almond antique violet turquoise frosted
+almond antique violet chocolate turquoise
+almond antique burnished rose metallic
+almond antique forest lavender goldenrod
+almond aquamarine rose maroon antique
+almond antique chartreuse khaki white
+almond antique sky peru orange
+almond azure blanched chiffon midnight
+almond antique olive coral navajo
+almond antique misty red olive
+almond aquamarine sandy cyan gainsboro
+almond antique salmon chartreuse burlywood
+almond aquamarine floral ivory bisque
+almond antique blue firebrick mint
+almond antique burnished rose metallic
+almond azure aquamarine papaya violet
+almond aquamarine yellow dodger mint
+almond antique violet mint lemon
+almond antique medium spring khaki
+almond antique chartreuse lavender yellow
+almond aquamarine pink moccasin thistle
+almond antique gainsboro frosted violet
+almond aquamarine dodger light gainsboro
+almond azure blanched chiffon midnight
+almond azure blanched chiffon midnight
+almond aquamarine burnished black steel
+almond aquamarine burnished black steel
+almond antique violet chocolate turquoise
+almond antique salmon chartreuse burlywood
+almond antique salmon chartreuse burlywood
+almond antique blue firebrick mint
+almond aquamarine floral ivory bisque
+almond antique gainsboro frosted violet
+almond aquamarine floral ivory bisque
+almond antique gainsboro frosted violet
+almond antique violet turquoise frosted
+almond antique violet turquoise frosted
+almond antique blue firebrick mint
+almond antique forest lavender goldenrod
+almond antique forest lavender goldenrod
+almond antique burnished rose metallic
+almond antique olive coral navajo
+almond antique burnished rose metallic
+almond antique olive coral navajo
+almond aquamarine rose maroon antique
+almond aquamarine yellow dodger mint
+almond antique violet chocolate turquoise
+almond aquamarine pink moccasin thistle
+almond aquamarine yellow dodger mint
+almond antique violet mint lemon
+almond antique violet mint lemon
+almond aquamarine pink moccasin thistle
+almond aquamarine rose maroon antique
+almond antique misty red olive
+almond antique misty red olive
+almond antique chartreuse khaki white
+almond antique chartreuse khaki white
+almond antique metallic orange dim
+almond antique burnished rose metallic
+almond antique chartreuse lavender yellow
+almond antique chartreuse lavender yellow
+almond aquamarine midnight light salmon
+almond aquamarine midnight light salmon
+almond antique sky peru orange
+almond antique sky peru orange
+almond antique medium spring khaki
+almond antique medium spring khaki
+almond antique burnished rose metallic
+almond antique metallic orange dim
+almond azure aquamarine papaya violet
+almond azure aquamarine papaya violet
+almond aquamarine dodger light gainsboro
+almond aquamarine sandy cyan gainsboro
+almond aquamarine sandy cyan gainsboro
+almond antique chartreuse lavender yellow
+almond aquamarine burnished black steel
+almond antique gainsboro frosted violet
+almond aquamarine sandy cyan gainsboro
+almond antique burnished rose metallic
+almond antique chartreuse khaki white
+almond antique violet turquoise frosted
+almond antique olive coral navajo
+almond aquamarine floral ivory bisque
+almond antique salmon chartreuse burlywood
+almond aquamarine yellow dodger mint
+almond aquamarine pink moccasin thistle
+almond antique sky peru orange
+almond antique burnished rose metallic
+almond antique metallic orange dim
+almond antique violet chocolate turquoise
+almond aquamarine dodger light gainsboro
+almond antique violet mint lemon
+almond azure aquamarine papaya violet
+almond aquamarine midnight light salmon
+almond antique misty red olive
+almond antique medium spring khaki
+almond antique blue firebrick mint
+almond aquamarine rose maroon antique
+almond antique forest lavender goldenrod
+almond azure blanched chiffon midnight
+almond antique sky peru orange
+almond antique metallic orange dim
+almond aquamarine rose maroon antique
+almond antique blue firebrick mint
+almond antique forest lavender goldenrod
+almond aquamarine dodger light gainsboro
+almond aquamarine pink moccasin thistle
+almond aquamarine yellow dodger mint
+almond antique violet turquoise frosted
+almond antique burnished rose metallic
+almond antique chartreuse khaki white
+almond antique misty red olive
+almond antique violet mint lemon
+almond antique medium spring khaki
+almond antique chartreuse lavender yellow
+almond aquamarine burnished black steel
+almond aquamarine midnight light salmon
+almond aquamarine sandy cyan gainsboro
+almond antique violet chocolate turquoise
+almond antique burnished rose metallic
+almond azure aquamarine papaya violet
+almond aquamarine floral ivory bisque
+almond azure blanched chiffon midnight
+almond antique olive coral navajo
+almond antique gainsboro frosted violet
+almond antique salmon chartreuse burlywood
+almond antique gainsboro frosted violet
+almond antique blue firebrick mint
+almond aquamarine pink moccasin thistle
+almond antique violet turquoise frosted
+almond antique sky peru orange
+almond antique violet mint lemon
+almond aquamarine burnished black steel
+almond aquamarine midnight light salmon
+almond antique olive coral navajo
+almond azure blanched chiffon midnight
+almond antique salmon chartreuse burlywood
+almond aquamarine rose maroon antique
+almond azure aquamarine papaya violet
+almond aquamarine floral ivory bisque
+almond antique chartreuse lavender yellow
+almond aquamarine sandy cyan gainsboro
+almond antique misty red olive
+almond antique medium spring khaki
+almond antique burnished rose metallic
+almond antique chartreuse khaki white
+almond aquamarine dodger light gainsboro
+almond aquamarine yellow dodger mint
+almond antique burnished rose metallic
+almond antique forest lavender goldenrod
+almond antique metallic orange dim
+almond antique violet chocolate turquoise
+almond antique burnished rose metallic
+almond azure blanched chiffon midnight
+almond antique olive coral navajo
+almond aquamarine floral ivory bisque
+almond azure aquamarine papaya violet
+almond aquamarine midnight light salmon
+almond aquamarine sandy cyan gainsboro
+almond antique chartreuse lavender yellow
+almond aquamarine burnished black steel
+almond antique gainsboro frosted violet
+almond antique medium spring khaki
+almond antique misty red olive
+almond antique violet mint lemon
+almond antique sky peru orange
+almond antique chartreuse khaki white
+almond antique violet chocolate turquoise
+almond antique burnished rose metallic
+almond antique violet turquoise frosted
+almond aquamarine yellow dodger mint
+almond aquamarine pink moccasin thistle
+almond aquamarine dodger light gainsboro
+almond antique forest lavender goldenrod
+almond antique blue firebrick mint
+almond antique metallic orange dim
+almond antique salmon chartreuse burlywood
+almond aquamarine rose maroon antique
+almond antique burnished rose metallic
+almond aquamarine midnight light salmon
+almond antique sky peru orange
+almond antique salmon chartreuse burlywood
+almond antique burnished rose metallic
+almond aquamarine yellow dodger mint
+almond antique metallic orange dim
+almond antique chartreuse lavender yellow
+almond antique violet turquoise frosted
+almond aquamarine sandy cyan gainsboro
+almond antique medium spring khaki
+almond antique violet chocolate turquoise
+almond antique olive coral navajo
+almond aquamarine rose maroon antique
+almond aquamarine burnished black steel
+almond antique misty red olive
+almond aquamarine pink moccasin thistle
+almond aquamarine floral ivory bisque
+almond antique gainsboro frosted violet
+almond antique forest lavender goldenrod
+almond aquamarine dodger light gainsboro
+almond azure aquamarine papaya violet
+almond azure blanched chiffon midnight
+almond antique violet mint lemon
+almond antique blue firebrick mint
+almond antique chartreuse khaki white
+almond azure blanched chiffon midnight
+almond antique metallic orange dim
+almond aquamarine pink moccasin thistle
+almond aquamarine yellow dodger mint
+almond aquamarine rose maroon antique
+almond antique burnished rose metallic
+almond antique burnished rose metallic
+almond antique salmon chartreuse burlywood
+almond aquamarine floral ivory bisque
+almond aquamarine burnished black steel
+almond antique medium spring khaki
+almond antique chartreuse lavender yellow
+almond aquamarine midnight light salmon
+almond antique gainsboro frosted violet
+almond aquamarine sandy cyan gainsboro
+almond azure aquamarine papaya violet
+almond aquamarine dodger light gainsboro
+almond antique violet turquoise frosted
+almond antique forest lavender goldenrod
+almond antique chartreuse khaki white
+almond antique misty red olive
+almond antique olive coral navajo
+almond antique violet mint lemon
+almond antique blue firebrick mint
+almond antique violet chocolate turquoise
+almond antique sky peru orange
+almond aquamarine sandy cyan gainsboro
+almond aquamarine floral ivory bisque
+almond antique chartreuse lavender yellow
+almond antique metallic orange dim
+almond aquamarine dodger light gainsboro
+almond antique burnished rose metallic
+almond aquamarine pink moccasin thistle
+almond aquamarine rose maroon antique
+almond azure aquamarine papaya violet
+almond antique chartreuse khaki white
+almond aquamarine yellow dodger mint
+almond antique olive coral navajo
+almond antique violet chocolate turquoise
+almond antique salmon chartreuse burlywood
+almond antique blue firebrick mint
+almond antique forest lavender goldenrod
+almond antique sky peru orange
+almond aquamarine burnished black steel
+almond antique burnished rose metallic
+almond azure blanched chiffon midnight
+almond antique medium spring khaki
+almond antique misty red olive
+almond antique violet turquoise frosted
+almond antique gainsboro frosted violet
+almond aquamarine midnight light salmon
+almond antique violet mint lemon
+almond antique burnished rose metallic
+almond aquamarine midnight light salmon
+almond antique chartreuse lavender yellow
+almond aquamarine sandy cyan gainsboro
+almond aquamarine burnished black steel
+almond antique violet mint lemon
+almond antique misty red olive
+almond antique medium spring khaki
+almond antique salmon chartreuse burlywood
+almond antique sky peru orange
+almond antique burnished rose metallic
+almond antique chartreuse khaki white
+almond antique violet turquoise frosted
+almond aquamarine yellow dodger mint
+almond aquamarine dodger light gainsboro
+almond antique violet chocolate turquoise
+almond aquamarine pink moccasin thistle
+almond antique blue firebrick mint
+almond aquamarine rose maroon antique
+almond antique forest lavender goldenrod
+almond azure aquamarine papaya violet
+almond antique gainsboro frosted violet
+almond antique metallic orange dim
+almond azure blanched chiffon midnight
+almond aquamarine floral ivory bisque
+almond antique olive coral navajo
+almond aquamarine rose maroon antique
+almond antique olive coral navajo
+almond antique violet chocolate turquoise
+almond antique chartreuse khaki white
+almond antique violet mint lemon
+almond aquamarine midnight light salmon
+almond azure blanched chiffon midnight
+almond antique blue firebrick mint
+almond antique burnished rose metallic
+almond aquamarine dodger light gainsboro
+almond antique misty red olive
+almond aquamarine floral ivory bisque
+almond antique metallic orange dim
+almond aquamarine yellow dodger mint
+almond antique medium spring khaki
+almond antique chartreuse lavender yellow
+almond aquamarine pink moccasin thistle
+almond aquamarine sandy cyan gainsboro
+almond antique salmon chartreuse burlywood
+almond antique violet turquoise frosted
+almond antique burnished rose metallic
+almond antique forest lavender goldenrod
+almond antique gainsboro frosted violet
+almond aquamarine burnished black steel
+almond azure aquamarine papaya violet
+almond antique sky peru orange
+almond aquamarine floral ivory bisque
+almond antique chartreuse khaki white
+almond antique misty red olive
+almond aquamarine burnished black steel
+almond antique sky peru orange
+almond aquamarine dodger light gainsboro
+almond antique violet mint lemon
+almond antique medium spring khaki
+almond antique forest lavender goldenrod
+almond antique metallic orange dim
+almond antique burnished rose metallic
+almond antique gainsboro frosted violet
+almond azure aquamarine papaya violet
+almond antique blue firebrick mint
+almond antique chartreuse lavender yellow
+almond antique olive coral navajo
+almond antique violet chocolate turquoise
+almond azure blanched chiffon midnight
+almond aquamarine midnight light salmon
+almond antique violet turquoise frosted
+almond aquamarine yellow dodger mint
+almond aquamarine pink moccasin thistle
+almond antique burnished rose metallic
+almond aquamarine rose maroon antique
+almond aquamarine sandy cyan gainsboro
+almond antique salmon chartreuse burlywood
[40/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
index 5107a89,24d1681..a777475
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
@@@ -93,8 -96,8 +96,9 @@@ import org.apache.hadoop.hive.ql.plan.F
import org.apache.hadoop.hive.ql.plan.FileMergeDesc;
import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
import org.apache.hadoop.hive.ql.plan.FilterDesc.SampleDesc;
+import org.apache.hadoop.hive.ql.plan.DependencyCollectionWork;
import org.apache.hadoop.hive.ql.plan.LoadFileDesc;
+ import org.apache.hadoop.hive.ql.plan.LoadTableDesc;
import org.apache.hadoop.hive.ql.plan.MapWork;
import org.apache.hadoop.hive.ql.plan.MapredLocalWork;
import org.apache.hadoop.hive.ql.plan.MapredWork;
@@@ -1358,45 -1350,38 +1362,41 @@@ public final class GenMapRedUtils
cplan.setInputformat("org.apache.hadoop.hive.ql.io.CombineHiveInputFormat");
// NOTE: we should gather stats in MR1 rather than MR2 at merge job since we don't
// know if merge MR2 will be triggered at execution time
- Task<MoveWork> mvTask = GenMapRedUtils.findMoveTask(mvTasks, fsOutput);
+ MoveWork dummyMv = null;
+ if (srcMmWriteId == null) {
+ // Only create the movework for non-MM table. No action needed for a MM table.
+ Utilities.LOG14535.info("creating dummy movetask for merge (with lfd)");
+ dummyMv = new MoveWork(null, null, null,
+ new LoadFileDesc(inputDirName, finalName, true, null, null), false);
+ } else {
+ // TODO# create the noop MoveWork to avoid q file changes for now. else should be removed.
+ dummyMv = new MoveWork(null, null, null,
+ new LoadFileDesc(inputDirName, finalName, true, null, null), false);
+ dummyMv.setNoop(true);
+ }
- ConditionalTask cndTsk = GenMapRedUtils.createCondTask(conf, currTask, dummyMv, work,
- fsInputDesc.getMergeInputDirName().toString());
-
- // keep the dynamic partition context in conditional task resolver context
- ConditionalResolverMergeFilesCtx mrCtx =
- (ConditionalResolverMergeFilesCtx) cndTsk.getResolverCtx();
- mrCtx.setDPCtx(fsInputDesc.getDynPartCtx());
- mrCtx.setLbCtx(fsInputDesc.getLbCtx());
-
- //
- // 3. add the moveTask as the children of the conditional task
- //
+ // Use the original fsOp path here in case of MM - while the new FSOP merges files inside the
+ // MM directory, the original MoveTask still commits based on the parent. Note that this path
+ // can only be triggered for a merge that's part of insert for now; MM tables do not support
+ // concatenate. Keeping the old logic for non-MM tables with temp directories and stuff.
+ // TODO# is this correct?
+ Path fsopPath = srcMmWriteId != null ? fsInputDesc.getFinalDirName() : finalName;
+ Utilities.LOG14535.info("Looking for MoveTask to make it dependant on the conditional tasks");
++
+ Task<MoveWork> mvTask = GenMapRedUtils.findMoveTaskForFsopOutput(
+ mvTasks, fsopPath, fsInputDesc.isMmTable());
++ // TODO# questionable master merge here
+ ConditionalTask cndTsk = GenMapRedUtils.createCondTask(conf, currTask, dummyMv, work,
- fsInputDesc.getFinalDirName(), finalName, mvTask, dependencyTask);
++ fsInputDesc.getMergeInputDirName(), finalName, mvTask, dependencyTask);
+
+ // keep the dynamic partition context in conditional task resolver context
+ ConditionalResolverMergeFilesCtx mrCtx =
+ (ConditionalResolverMergeFilesCtx) cndTsk.getResolverCtx();
+ mrCtx.setDPCtx(fsInputDesc.getDynPartCtx());
+ mrCtx.setLbCtx(fsInputDesc.getLbCtx());
- }
-
- /**
- * Make the move task in the GenMRProcContext following the FileSinkOperator a dependent of all
- * possible subtrees branching from the ConditionalTask.
- *
- * @param newOutput
- * @param cndTsk
- * @param mvTasks
- * @param hconf
- * @param dependencyTask
- */
- public static void linkMoveTask(FileSinkOperator newOutput,
- ConditionalTask cndTsk, List<Task<MoveWork>> mvTasks, HiveConf hconf,
- DependencyCollectionTask dependencyTask) {
-
- Task<MoveWork> mvTask = GenMapRedUtils.findMoveTask(mvTasks, newOutput);
-- for (Task<? extends Serializable> tsk : cndTsk.getListTasks()) {
- linkMoveTask(mvTask, tsk, conf, dependencyTask);
- linkMoveTask(mvTask, tsk, hconf, dependencyTask);
-- }
}
++
/**
* Follows the task tree down from task and makes all leaves parents of mvTask
*
@@@ -1644,15 -1706,29 +1725,33 @@@
* MoveWork for the move task
* @param mergeWork
* MapredWork for the merge task.
- * @param inputPath
+ * @param condInputPath
* the input directory of the merge/move task
+ * @param condOutputPath
+ * the output directory of the merge/move task
+ * @param moveTaskToLink
+ * a MoveTask that may be linked to the conditional sub-tasks
+ * @param dependencyTask
+ * a dependency task that may be linked to the conditional sub-tasks
* @return The conditional task
*/
+ @SuppressWarnings("unchecked")
- public static ConditionalTask createCondTask(HiveConf conf,
- Task<? extends Serializable> currTask, MoveWork mvWork,
- Serializable mergeWork, String inputPath) {
- Utilities.LOG14535.info("Creating conditional merge task for " + inputPath);
+ private static ConditionalTask createCondTask(HiveConf conf,
- Task<? extends Serializable> currTask, MoveWork dummyMoveWork, Serializable mergeWork,
- Path condInputPath, Path condOutputPath, Task<MoveWork> moveTaskToLink, DependencyCollectionTask dependencyTask) {
++ Task<? extends Serializable> currTask, MoveWork mvWork, Serializable mergeWork,
++ Path condInputPath, Path condOutputPath, Task<MoveWork> moveTaskToLink,
++ DependencyCollectionTask dependencyTask) {
++ Utilities.LOG14535.info("Creating conditional merge task for " + condInputPath);
++ // Create a dummy task if no move is needed.
++ Serializable moveWork = mvWork != null ? mvWork : new DependencyCollectionWork();
+
++ // TODO: this should never happen for mm tables.
+ boolean shouldMergeMovePaths = (moveTaskToLink != null && dependencyTask == null
+ && shouldMergeMovePaths(conf, condInputPath, condOutputPath, moveTaskToLink.getWork()));
+
- MoveWork workForMoveOnlyTask;
++ Serializable workForMoveOnlyTask = moveWork;
+ if (shouldMergeMovePaths) {
+ workForMoveOnlyTask = mergeMovePaths(condInputPath, moveTaskToLink.getWork());
- } else {
- workForMoveOnlyTask = dummyMoveWork;
+ }
// There are 3 options for this ConditionalTask:
// 1) Merge the partitions
@@@ -1660,14 -1736,10 +1759,12 @@@
// 3) Merge some partitions and move other partitions (i.e. merge some partitions and don't
// merge others) in this case the merge is done first followed by the move to prevent
// conflicts.
+ // TODO: if we are not dealing with concatenate DDL, we should not create a merge+move path
+ // because it should be impossible to get incompatible outputs.
- // Create a dummy task if no move is needed.
- Serializable moveWork = mvWork != null ? mvWork : new DependencyCollectionWork();
Task<? extends Serializable> mergeOnlyMergeTask = TaskFactory.get(mergeWork, conf);
- Task<? extends Serializable> moveOnlyMoveTask = TaskFactory.get(moveWork, conf);
+ Task<? extends Serializable> moveOnlyMoveTask = TaskFactory.get(workForMoveOnlyTask, conf);
Task<? extends Serializable> mergeAndMoveMergeTask = TaskFactory.get(mergeWork, conf);
- Task<? extends Serializable> mergeAndMoveMoveTask = TaskFactory.get(dummyMoveWork, conf);
+ Task<? extends Serializable> mergeAndMoveMoveTask = TaskFactory.get(moveWork, conf);
// NOTE! It is necessary merge task is the parent of the move task, and not
// the other way around, for the proper execution of the execute method of
@@@ -1697,6 -1769,20 +1794,21 @@@
// make the conditional task as the child of the current leaf task
currTask.addDependentTask(cndTsk);
+ if (shouldMergeMovePaths) {
+ // If a new MoveWork was created, then we should link all dependent tasks from the MoveWork to link.
+ if (moveTaskToLink.getDependentTasks() != null) {
+ for (Task dependentTask : moveTaskToLink.getDependentTasks()) {
+ moveOnlyMoveTask.addDependentTask(dependentTask);
+ }
+ }
+ } else {
+ addDependentMoveTasks(moveTaskToLink, conf, moveOnlyMoveTask, dependencyTask);
+ }
+
++
+ addDependentMoveTasks(moveTaskToLink, conf, mergeOnlyMergeTask, dependencyTask);
+ addDependentMoveTasks(moveTaskToLink, conf, mergeAndMoveMoveTask, dependencyTask);
+
return cndTsk;
}
@@@ -1820,30 -1906,26 +1932,29 @@@
Path dest = null;
+ FileSinkDesc fileSinkDesc = fsOp.getConf();
+ boolean isMmTable = fileSinkDesc.isMmTable();
if (chDir) {
- FileSinkDesc fileSinkDesc = fsOp.getConf();
- dest = fileSinkDesc.getFinalDirName();
-
- // generate the temporary file
- // it must be on the same file system as the current destination
- Context baseCtx = parseCtx.getContext();
-
- // Create the required temporary file in the HDFS location if the destination
- // path of the FileSinkOperator table is a blobstore path.
- Path tmpDir = baseCtx.getTempDirForPath(fileSinkDesc.getDestPath(), true);
--
- // Change all the linked file sink descriptors
- if (fileSinkDesc.isLinkedFileSink()) {
- for (FileSinkDesc fsConf:fileSinkDesc.getLinkedFileSinkDesc()) {
- fsConf.setParentDir(tmpDir);
- fsConf.setDirName(new Path(tmpDir, fsConf.getDirName().getName()));
+ dest = fileSinkDesc.getMergeInputDirName();
+ if (!isMmTable) {
+ // generate the temporary file
+ // it must be on the same file system as the current destination
+ Context baseCtx = parseCtx.getContext();
+
+ // Create the required temporary file in the HDFS location if the destination
+ // path of the FileSinkOperator table is a blobstore path.
- Path tmpDir = baseCtx.getTempDirForPath(fileSinkDesc.getDestPath());
++ Path tmpDir = baseCtx.getTempDirForPath(fileSinkDesc.getDestPath(), true);
+
+ // Change all the linked file sink descriptors
+ if (fileSinkDesc.isLinkedFileSink()) {
+ for (FileSinkDesc fsConf : fileSinkDesc.getLinkedFileSinkDesc()) {
+ fsConf.setDirName(new Path(tmpDir, fsConf.getDirName().getName()));
+ Utilities.LOG14535.info("createMoveTask setting tmpDir for LinkedFileSink chDir " + fsConf.getDirName() + "; dest was " + fileSinkDesc.getDestPath());
+ }
+ } else {
+ fileSinkDesc.setDirName(tmpDir);
+ Utilities.LOG14535.info("createMoveTask setting tmpDir chDir " + tmpDir + "; dest was " + fileSinkDesc.getDestPath());
}
- } else {
- fileSinkDesc.setDirName(tmpDir);
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java
index 5a9c72f,32d1de1..b58db88
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java
@@@ -318,11 -342,6 +342,12 @@@ public class StatsOptimizer extends Tra
return null; // todo we can collapse this part of tree into single TS
}
++ /* TODO# seems to be removed in master?
+ Table tbl = tsOp.getConf().getTableMetadata();
+ if (AcidUtils.isFullAcidTable(tbl)) {
+ Logger.info("Table " + tbl.getTableName() + " is ACID table. Skip StatsOptimizer.");
+ return null;
- }
++ }*/
List<Object> oneRow = new ArrayList<Object>();
Hive hive = Hive.get(pctx.getConf());
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/EximUtil.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/parse/EximUtil.java
index 28c8eea,796ccc8..103f822
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/EximUtil.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/EximUtil.java
@@@ -211,30 -209,31 +210,35 @@@ public class EximUtil
}
}
- public static String relativeToAbsolutePath(HiveConf conf, String location) throws SemanticException {
- boolean testMode = conf.getBoolVar(HiveConf.ConfVars.HIVETESTMODE)
- || conf.getBoolVar(HiveConf.ConfVars.HIVEEXIMTESTMODE);
- if (testMode) {
- URI uri = new Path(location).toUri();
- String scheme = uri.getScheme();
- String authority = uri.getAuthority();
- String path = uri.getPath();
- if (!path.startsWith("/")) {
- path = (new Path(System.getProperty("test.tmp.dir"),
- path)).toUri().getPath();
- }
- if (StringUtils.isEmpty(scheme)) {
+ public static String relativeToAbsolutePath(HiveConf conf, String location)
+ throws SemanticException {
+ try {
- boolean testMode = conf.getBoolVar(HiveConf.ConfVars.HIVETESTMODE);
++ boolean testMode = conf.getBoolVar(HiveConf.ConfVars.HIVETESTMODE)
++ || conf.getBoolVar(HiveConf.ConfVars.HIVEEXIMTESTMODE);;
+ if (testMode) {
+ URI uri = new Path(location).toUri();
+ FileSystem fs = FileSystem.get(uri, conf);
+ String scheme = fs.getScheme();
+ String authority = uri.getAuthority();
+ String path = uri.getPath();
+ if (!path.startsWith("/")) {
+ path = (new Path(System.getProperty("test.tmp.dir"), path)).toUri().getPath();
+ }
++ if (StringUtils.isEmpty(scheme)) {
+ scheme = "pfile";
++ }
+ try {
+ uri = new URI(scheme, authority, path, null, null);
+ } catch (URISyntaxException e) {
+ throw new SemanticException(ErrorMsg.INVALID_PATH.getMsg(), e);
+ }
+ return uri.toString();
+ } else {
+ // no-op for non-test mode for now
+ return location;
}
- try {
- uri = new URI(scheme, authority, path, null, null);
- } catch (URISyntaxException e) {
- throw new SemanticException(ErrorMsg.INVALID_PATH.getMsg(), e);
- }
- return uri.toString();
- } else {
- //no-op for non-test mode for now
- return location;
+ } catch (IOException e) {
+ throw new SemanticException(ErrorMsg.IO_ERROR.getMsg() + ": " + e.getMessage(), e);
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/ExportSemanticAnalyzer.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/parse/ExportSemanticAnalyzer.java
index b46f615,08bad63..b5820d6
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ExportSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ExportSemanticAnalyzer.java
@@@ -235,25 -202,13 +235,26 @@@ public class ExportSemanticAnalyzer ext
}
} else {
Path fromPath = ts.tableHandle.getDataLocation();
- Path toDataPath = new Path(parentPath, "data");
+ Path toDataPath = new Path(parentPath, EximUtil.DATA_PATH_NAME);
- Task<? extends Serializable> rTask =
- ReplCopyTask.getDumpCopyTask(replicationSpec, fromPath, toDataPath, conf);
- rootTasks.add(rTask);
+ Task<?> copyTask = null;
+ if (replicationSpec.isInReplicationScope()) {
+ if (isMmTable) {
+ // TODO: ReplCopyTask is completely screwed. Need to support when it's not as screwed.
+ throw new SemanticException(
+ "Not supported right now because Replication is completely screwed");
+ }
+ copyTask = ReplCopyTask.getDumpCopyTask(replicationSpec, fromPath, toDataPath, conf);
+ } else {
++ // TODO# master merge - did master remove this path or did it never exit? we need it for MM
+ CopyWork cw = createCopyWork(isMmTable, lbLevels, ids, fromPath, toDataPath, conf);
+ copyTask = TaskFactory.get(cw, conf);
+ }
+ rootTasks.add(copyTask);
inputs.add(new ReadEntity(ts.tableHandle));
}
- outputs.add(toWriteEntity(parentPath,conf));
+ outputs.add(toWriteEntity(parentPath, conf));
+ } catch (HiveException | IOException ex) {
+ throw new SemanticException(ex);
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java
index bceef45,7bb48a9..6df9ad5
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java
@@@ -207,12 -213,12 +218,16 @@@ public class ImportSemanticAnalyzer ext
// Create table associated with the import
// Executed if relevant, and used to contain all the other details about the table if not.
CreateTableDesc tblDesc = getBaseCreateTableDescFromTable(dbname,rv.getTable());
+ boolean isSourceMm = MetaStoreUtils.isInsertOnlyTable(tblDesc.getTblProps());
+ if ((replicationSpec!= null) && replicationSpec.isInReplicationScope()){
+ tblDesc.setReplicationSpec(replicationSpec);
+ }
+
if (isExternalSet){
+ if (isSourceMm) {
+ throw new SemanticException("Cannot import an MM table as external");
+ }
tblDesc.setExternal(isExternalSet);
// This condition-check could have been avoided, but to honour the old
// default of not calling if it wasn't set, we retain that behaviour.
@@@ -296,8 -296,8 +316,8 @@@
} else {
createReplImportTasks(
tblDesc, partitionDescs,
- isPartSpecSet, replicationSpec, waitOnCreateDb, table,
+ isPartSpecSet, replicationSpec, waitOnPrecursor, table,
- fromURI, fs, wh, x);
+ fromURI, fs, wh, x, mmWriteId, isSourceMm);
}
return tableExists;
}
@@@ -355,35 -355,16 +375,35 @@@
return tblDesc;
}
+
private static Task<?> loadTable(URI fromURI, Table table, boolean replace, Path tgtPath,
- ReplicationSpec replicationSpec, EximUtil.SemanticAnalyzerWrapperContext x) {
+ ReplicationSpec replicationSpec, EximUtil.SemanticAnalyzerWrapperContext x,
+ Long mmWriteId, boolean isSourceMm) {
- Path dataPath = new Path(fromURI.toString(), "data");
+ Path dataPath = new Path(fromURI.toString(), EximUtil.DATA_PATH_NAME);
- Path tmpPath = x.getCtx().getExternalTmpPath(tgtPath);
- Task<?> copyTask = ReplCopyTask.getLoadCopyTask(replicationSpec, dataPath, tmpPath, x.getConf());
- LoadTableDesc loadTableWork = new LoadTableDesc(tmpPath,
- Utilities.getTableDesc(table), new TreeMap<String, String>(),
- replace);
- Task<?> loadTableTask = TaskFactory.get(new MoveWork(x.getInputs(),
- x.getOutputs(), loadTableWork, null, false), x.getConf());
+ Path destPath = mmWriteId == null ? x.getCtx().getExternalTmpPath(tgtPath)
+ : new Path(tgtPath, ValidWriteIds.getMmFilePrefix(mmWriteId));
+ Utilities.LOG14535.info("adding import work for table with source location: "
+ + dataPath + "; table: " + tgtPath + "; copy destination " + destPath + "; mm "
+ + mmWriteId + " (src " + isSourceMm + ") for " + (table == null ? "a new table" : table.getTableName()));
+
+ Task<?> copyTask = null;
+ if (replicationSpec.isInReplicationScope()) {
+ if (isSourceMm || mmWriteId != null) {
+ // TODO: ReplCopyTask is completely screwed. Need to support when it's not as screwed.
+ throw new RuntimeException(
+ "Not supported right now because Replication is completely screwed");
+ }
- ReplCopyTask.getLoadCopyTask(replicationSpec, dataPath, destPath, x.getConf());
++ copyTask = ReplCopyTask.getLoadCopyTask(replicationSpec, dataPath, destPath, x.getConf());
+ } else {
+ CopyWork cw = new CopyWork(dataPath, destPath, false);
+ cw.setSkipSourceMmDirs(isSourceMm);
+ copyTask = TaskFactory.get(cw, x.getConf());
+ }
+
+ LoadTableDesc loadTableWork = new LoadTableDesc(destPath,
+ Utilities.getTableDesc(table), new TreeMap<String, String>(), replace, mmWriteId);
+ MoveWork mv = new MoveWork(x.getInputs(), x.getOutputs(), loadTableWork, null, false);
+ Task<?> loadTableTask = TaskFactory.get(mv, x.getConf());
copyTask.addDependentTask(loadTableTask);
x.getTasks().add(copyTask);
return loadTableTask;
@@@ -861,12 -814,12 +887,12 @@@
private static void createReplImportTasks(
CreateTableDesc tblDesc,
List<AddPartitionDesc> partitionDescs,
- boolean isPartSpecSet, ReplicationSpec replicationSpec, boolean waitOnCreateDb,
+ boolean isPartSpecSet, ReplicationSpec replicationSpec, boolean waitOnPrecursor,
Table table, URI fromURI, FileSystem fs, Warehouse wh,
- EximUtil.SemanticAnalyzerWrapperContext x)
+ EximUtil.SemanticAnalyzerWrapperContext x, Long mmWriteId, boolean isSourceMm)
throws HiveException, URISyntaxException, IOException, MetaException {
- Task dr = null;
+ Task<?> dr = null;
WriteEntity.WriteType lockType = WriteEntity.WriteType.DDL_NO_LOCK;
if ((table != null) && (isPartitioned(tblDesc) != table.isPartitioned())){
@@@ -931,11 -884,10 +957,12 @@@
if (!replicationSpec.isMetadataOnly()) {
if (isPartitioned(tblDesc)) {
+ Task<?> ict = createImportCommitTask(
+ tblDesc.getDatabaseName(), tblDesc.getTableName(), mmWriteId, x.getConf());
for (AddPartitionDesc addPartitionDesc : partitionDescs) {
+ addPartitionDesc.setReplicationSpec(replicationSpec);
t.addDependentTask(
- addSinglePartition(fromURI, fs, tblDesc, table, wh, addPartitionDesc, replicationSpec, x));
+ addSinglePartition(fromURI, fs, tblDesc, table, wh, addPartitionDesc, replicationSpec, x, mmWriteId, isSourceMm, ict));
}
} else {
x.getLOG().debug("adding dependent CopyWork/MoveWork for table");
@@@ -955,10 -907,10 +982,11 @@@
if (table.isPartitioned()) {
x.getLOG().debug("table partitioned");
for (AddPartitionDesc addPartitionDesc : partitionDescs) {
+ addPartitionDesc.setReplicationSpec(replicationSpec);
Map<String, String> partSpec = addPartitionDesc.getPartition(0).getPartSpec();
org.apache.hadoop.hive.ql.metadata.Partition ptn = null;
-
+ Task<?> ict = replicationSpec.isMetadataOnly() ? null : createImportCommitTask(
+ tblDesc.getDatabaseName(), tblDesc.getTableName(), mmWriteId, x.getConf());
if ((ptn = x.getHive().getPartition(table, partSpec, false)) == null) {
if (!replicationSpec.isMetadataOnly()){
x.getTasks().add(addSinglePartition(
@@@ -997,10 -949,9 +1025,10 @@@
return; // silently return, table is newer than our replacement.
}
if (!replicationSpec.isMetadataOnly()) {
- loadTable(fromURI, table, true, new Path(fromURI), replicationSpec, x); // repl-imports are replace-into
+ // repl-imports are replace-into
+ loadTable(fromURI, table, true, new Path(fromURI), replicationSpec, x, mmWriteId, isSourceMm);
} else {
- x.getTasks().add(alterTableTask(tblDesc, x));
+ x.getTasks().add(alterTableTask(tblDesc, x, replicationSpec));
}
if (lockType == WriteEntity.WriteType.DDL_NO_LOCK){
lockType = WriteEntity.WriteType.DDL_SHARED;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 31bee14,248dd63..f5b1c23
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@@ -6585,13 -6735,11 +6693,13 @@@ public class SemanticAnalyzer extends B
}
boolean isNonNativeTable = dest_tab.isNonNative();
- if (isNonNativeTable) {
+ isMmTable = MetaStoreUtils.isInsertOnlyTable(dest_tab.getParameters());
+ if (isNonNativeTable || isMmTable) {
queryTmpdir = dest_path;
} else {
- queryTmpdir = ctx.getTempDirForPath(dest_path);
+ queryTmpdir = ctx.getTempDirForPath(dest_path, true);
}
+ Utilities.LOG14535.info("create filesink w/DEST_TABLE specifying " + queryTmpdir + " from " + dest_path);
if (dpCtx != null) {
// set the root of the temporary path where dynamic partition columns will populate
dpCtx.setRootPath(queryTmpdir);
@@@ -6632,10 -6775,48 +6740,11 @@@
// This is a non-native table.
// We need to set stats as inaccurate.
setStatsForNonNativeTable(dest_tab);
+ createInsertDesc(dest_tab, !qb.getParseInfo().isInsertIntoTable(dest_tab.getTableName()));
}
- WriteEntity output = null;
-
- // Here only register the whole table for post-exec hook if no DP present
- // in the case of DP, we will register WriteEntity in MoveTask when the
- // list of dynamically created partitions are known.
- if ((dpCtx == null || dpCtx.getNumDPCols() == 0)) {
- output = new WriteEntity(dest_tab, determineWriteType(ltd, isNonNativeTable, dest));
- if (!outputs.add(output)) {
- throw new SemanticException(ErrorMsg.OUTPUT_SPECIFIED_MULTIPLE_TIMES
- .getMsg(dest_tab.getTableName()));
- }
- }
- if ((dpCtx != null) && (dpCtx.getNumDPCols() >= 0)) {
- // No static partition specified
- if (dpCtx.getNumSPCols() == 0) {
- output = new WriteEntity(dest_tab, determineWriteType(ltd, isNonNativeTable, dest), false);
- outputs.add(output);
- output.setDynamicPartitionWrite(true);
- }
- // part of the partition specified
- // Create a DummyPartition in this case. Since, the metastore does not store partial
- // partitions currently, we need to store dummy partitions
- else {
- try {
- String ppath = dpCtx.getSPPath();
- ppath = ppath.substring(0, ppath.length() - 1);
- DummyPartition p =
- new DummyPartition(dest_tab, dest_tab.getDbName()
- + "@" + dest_tab.getTableName() + "@" + ppath,
- partSpec);
- output = new WriteEntity(p, getWriteType(dest), false);
- output.setDynamicPartitionWrite(true);
- outputs.add(output);
- } catch (HiveException e) {
- throw new SemanticException(e.getMessage(), e);
- }
- }
- }
-
+ WriteEntity output = generateTableWriteEntity(
+ dest, dest_tab, partSpec, ltd, dpCtx, isNonNativeTable);
ctx.getLoadTableOutputMap().put(ltd, output);
break;
}
@@@ -6657,9 -6858,7 +6766,9 @@@
dest_path = new Path(tabPath.toUri().getScheme(), tabPath.toUri()
.getAuthority(), partPath.toUri().getPath());
- queryTmpdir = ctx.getTempDirForPath(dest_path, true);
+ isMmTable = MetaStoreUtils.isInsertOnlyTable(dest_tab.getParameters());
- queryTmpdir = isMmTable ? dest_path : ctx.getTempDirForPath(dest_path);
++ queryTmpdir = isMmTable ? dest_path : ctx.getTempDirForPath(dest_path, true);
+ Utilities.LOG14535.info("create filesink w/DEST_PARTITION specifying " + queryTmpdir + " from " + dest_path);
table_desc = Utilities.getTableDesc(dest_tab);
// Add sorting/bucketing if needed
@@@ -6703,6 -6896,26 +6812,8 @@@
case QBMetaData.DEST_DFS_FILE: {
dest_path = new Path(qbm.getDestFileForAlias(dest));
- if (isLocal) {
- // for local directory - we always write to map-red intermediate
- // store and then copy to local fs
- queryTmpdir = ctx.getMRTmpPath();
- } else {
- // otherwise write to the file system implied by the directory
- // no copy is required. we may want to revisit this policy in future
-
- try {
- Path qPath = FileUtils.makeQualified(dest_path, conf);
- queryTmpdir = ctx.getTempDirForPath(qPath, true);
- } catch (Exception e) {
- throw new SemanticException("Error creating temporary folder on: "
- + dest_path, e);
- }
- }
- String cols = "";
- String colTypes = "";
+ ArrayList<ColumnInfo> colInfos = inputRR.getColumnInfos();
+
// CTAS case: the file output format and serde are defined by the create
// table command rather than taking the default value
List<FieldSchema> field_schemas = null;
@@@ -6725,21 -6930,56 +6836,21 @@@
destTableIsTemporary = false;
}
- boolean first = true;
- for (ColumnInfo colInfo : colInfos) {
- String[] nm = inputRR.reverseLookup(colInfo.getInternalName());
-
- if (nm[1] != null) { // non-null column alias
- colInfo.setAlias(nm[1]);
- }
-
- String colName = colInfo.getInternalName(); //default column name
- if (field_schemas != null) {
- FieldSchema col = new FieldSchema();
- if (!("".equals(nm[0])) && nm[1] != null) {
- colName = unescapeIdentifier(colInfo.getAlias()).toLowerCase(); // remove ``
- }
- colName = fixCtasColumnName(colName);
- col.setName(colName);
- String typeName = colInfo.getType().getTypeName();
- // CTAS should NOT create a VOID type
- if (typeName.equals(serdeConstants.VOID_TYPE_NAME)) {
- throw new SemanticException(ErrorMsg.CTAS_CREATES_VOID_TYPE
- .getMsg(colName));
- }
- col.setType(typeName);
- field_schemas.add(col);
- }
-
- if (!first) {
- cols = cols.concat(",");
- colTypes = colTypes.concat(":");
- }
-
- first = false;
- cols = cols.concat(colName);
-
- // Replace VOID type with string when the output is a temp table or
- // local files.
- // A VOID type can be generated under the query:
- //
- // select NULL from tt;
- // or
- // insert overwrite local directory "abc" select NULL from tt;
- //
- // where there is no column type to which the NULL value should be
- // converted.
- //
- String tName = colInfo.getType().getTypeName();
- if (tName.equals(serdeConstants.VOID_TYPE_NAME)) {
- colTypes = colTypes.concat(serdeConstants.STRING_TYPE_NAME);
- } else {
- colTypes = colTypes.concat(tName);
+ if (isLocal) {
+ assert !isMmTable;
+ // for local directory - we always write to map-red intermediate
+ // store and then copy to local fs
+ queryTmpdir = ctx.getMRTmpPath();
+ } else {
+ // otherwise write to the file system implied by the directory
+ // no copy is required. we may want to revisit this policy in future
+ try {
+ Path qPath = FileUtils.makeQualified(dest_path, conf);
- queryTmpdir = isMmTable ? qPath : ctx.getTempDirForPath(qPath);
++ queryTmpdir = isMmTable ? qPath : ctx.getTempDirForPath(qPath, true);
+ Utilities.LOG14535.info("Setting query directory " + queryTmpdir + " from " + dest_path + " (" + isMmTable + ")");
+ } catch (Exception e) {
+ throw new SemanticException("Error creating temporary folder on: "
+ + dest_path, e);
}
}
@@@ -7016,14 -7137,22 +7127,14 @@@
} else if (dpCtx != null) {
fileSinkDesc.setStaticSpec(dpCtx.getSPPath());
}
+ return fileSinkDesc;
+ }
- if (isHiveServerQuery &&
- null != table_desc &&
- table_desc.getSerdeClassName().equalsIgnoreCase(ThriftJDBCBinarySerDe.class.getName()) &&
- HiveConf.getBoolVar(conf,HiveConf.ConfVars.HIVE_SERVER2_THRIFT_RESULTSET_SERIALIZE_IN_TASKS)) {
- fileSinkDesc.setIsUsingThriftJDBCBinarySerDe(true);
- } else {
- fileSinkDesc.setIsUsingThriftJDBCBinarySerDe(false);
- }
-
- Operator output = putOpInsertMap(OperatorFactory.getAndMakeChild(
- fileSinkDesc, fsRS, input), inputRR);
-
+ private void handleLineage(LoadTableDesc ltd, Operator output)
+ throws SemanticException {
if (ltd != null && SessionState.get() != null) {
SessionState.get().getLineageState()
- .mapDirToFop(ltd.getSourcePath(), (FileSinkOperator) output);
+ .mapDirToOp(ltd.getSourcePath(), (FileSinkOperator) output);
} else if ( queryState.getCommandType().equals(HiveOperation.CREATETABLE_AS_SELECT.getOperationName())) {
Path tlocation = null;
@@@ -7036,116 -7165,43 +7147,124 @@@
}
SessionState.get().getLineageState()
- .mapDirToFop(tlocation, (FileSinkOperator) output);
+ .mapDirToOp(tlocation, (FileSinkOperator) output);
}
+ }
- if (LOG.isDebugEnabled()) {
- LOG.debug("Created FileSink Plan for clause: " + dest + "dest_path: "
- + dest_path + " row schema: " + inputRR.toString());
+ private WriteEntity generateTableWriteEntity(String dest, Table dest_tab,
+ Map<String, String> partSpec, LoadTableDesc ltd,
+ DynamicPartitionCtx dpCtx, boolean isNonNativeTable)
+ throws SemanticException {
+ WriteEntity output = null;
+
+ // Here only register the whole table for post-exec hook if no DP present
+ // in the case of DP, we will register WriteEntity in MoveTask when the
+ // list of dynamically created partitions are known.
+ if ((dpCtx == null || dpCtx.getNumDPCols() == 0)) {
+ output = new WriteEntity(dest_tab, determineWriteType(ltd, isNonNativeTable, dest));
+ if (!outputs.add(output)) {
+ throw new SemanticException(ErrorMsg.OUTPUT_SPECIFIED_MULTIPLE_TIMES
+ .getMsg(dest_tab.getTableName()));
+ }
}
- FileSinkOperator fso = (FileSinkOperator) output;
- fso.getConf().setTable(dest_tab);
- fsopToTable.put(fso, dest_tab);
- // the following code is used to collect column stats when
- // hive.stats.autogather=true
- // and it is an insert overwrite or insert into table
- if (dest_tab != null && conf.getBoolVar(ConfVars.HIVESTATSAUTOGATHER)
- && conf.getBoolVar(ConfVars.HIVESTATSCOLAUTOGATHER)
- && ColumnStatsAutoGatherContext.canRunAutogatherStats(fso)) {
- if (dest_type.intValue() == QBMetaData.DEST_TABLE) {
- genAutoColumnStatsGatheringPipeline(qb, table_desc, partSpec, input, qb.getParseInfo()
- .isInsertIntoTable(dest_tab.getDbName(), dest_tab.getTableName()));
- } else if (dest_type.intValue() == QBMetaData.DEST_PARTITION) {
- genAutoColumnStatsGatheringPipeline(qb, table_desc, dest_part.getSpec(), input, qb
- .getParseInfo().isInsertIntoTable(dest_tab.getDbName(), dest_tab.getTableName()));
-
+ if ((dpCtx != null) && (dpCtx.getNumDPCols() >= 0)) {
+ // No static partition specified
+ if (dpCtx.getNumSPCols() == 0) {
+ output = new WriteEntity(dest_tab, determineWriteType(ltd, isNonNativeTable, dest), false);
+ outputs.add(output);
+ output.setDynamicPartitionWrite(true);
+ }
+ // part of the partition specified
+ // Create a DummyPartition in this case. Since, the metastore does not store partial
+ // partitions currently, we need to store dummy partitions
+ else {
+ try {
+ String ppath = dpCtx.getSPPath();
+ ppath = ppath.substring(0, ppath.length() - 1);
+ DummyPartition p =
+ new DummyPartition(dest_tab, dest_tab.getDbName()
+ + "@" + dest_tab.getTableName() + "@" + ppath,
+ partSpec);
+ output = new WriteEntity(p, getWriteType(dest), false);
+ output.setDynamicPartitionWrite(true);
+ outputs.add(output);
+ } catch (HiveException e) {
+ throw new SemanticException(e.getMessage(), e);
+ }
}
}
return output;
}
+ private void checkExternalTable(Table dest_tab) throws SemanticException {
+ if ((!conf.getBoolVar(HiveConf.ConfVars.HIVE_INSERT_INTO_EXTERNAL_TABLES)) &&
+ (dest_tab.getTableType().equals(TableType.EXTERNAL_TABLE))) {
+ throw new SemanticException(
+ ErrorMsg.INSERT_EXTERNAL_TABLE.getMsg(dest_tab.getTableName()));
+ }
+ }
+
+ private void checkImmutableTable(QB qb, Table dest_tab, Path dest_path, boolean isPart)
+ throws SemanticException {
+ // If the query here is an INSERT_INTO and the target is an immutable table,
+ // verify that our destination is empty before proceeding
+ if (!dest_tab.isImmutable() || !qb.getParseInfo().isInsertIntoTable(
+ dest_tab.getDbName(), dest_tab.getTableName())) {
+ return;
+ }
+ try {
+ FileSystem fs = dest_path.getFileSystem(conf);
+ if (! MetaStoreUtils.isDirEmpty(fs,dest_path)){
+ LOG.warn("Attempted write into an immutable table : "
+ + dest_tab.getTableName() + " : " + dest_path);
+ throw new SemanticException(
+ ErrorMsg.INSERT_INTO_IMMUTABLE_TABLE.getMsg(dest_tab.getTableName()));
+ }
+ } catch (IOException ioe) {
+ LOG.warn("Error while trying to determine if immutable table "
+ + (isPart ? "partition " : "") + "has any data : " + dest_tab.getTableName()
+ + " : " + dest_path);
+ throw new SemanticException(ErrorMsg.INSERT_INTO_IMMUTABLE_TABLE.getMsg(ioe.getMessage()));
+ }
+ }
+
+ private DynamicPartitionCtx checkDynPart(QB qb, QBMetaData qbm, Table dest_tab,
+ Map<String, String> partSpec, String dest) throws SemanticException {
+ List<FieldSchema> parts = dest_tab.getPartitionKeys();
+ if (parts == null || parts.isEmpty()) return null; // table is not partitioned
+ if (partSpec == null || partSpec.size() == 0) { // user did NOT specify partition
+ throw new SemanticException(generateErrorMessage(qb.getParseInfo().getDestForClause(dest),
+ ErrorMsg.NEED_PARTITION_ERROR.getMsg()));
+ }
+ DynamicPartitionCtx dpCtx = qbm.getDPCtx(dest);
+ if (dpCtx == null) {
+ dest_tab.validatePartColumnNames(partSpec, false);
+ dpCtx = new DynamicPartitionCtx(dest_tab, partSpec,
+ conf.getVar(HiveConf.ConfVars.DEFAULTPARTITIONNAME),
+ conf.getIntVar(HiveConf.ConfVars.DYNAMICPARTITIONMAXPARTSPERNODE));
+ qbm.setDPCtx(dest, dpCtx);
+ }
+
+ if (!HiveConf.getBoolVar(conf, HiveConf.ConfVars.DYNAMICPARTITIONING)) { // allow DP
+ throw new SemanticException(generateErrorMessage(qb.getParseInfo().getDestForClause(dest),
+ ErrorMsg.DYNAMIC_PARTITION_DISABLED.getMsg()));
+ }
+ if ((dest_tab.getNumBuckets() > 0)) {
+ dpCtx.setNumBuckets(dest_tab.getNumBuckets());
+ }
+ return dpCtx;
+ }
+
+
+ private void createInsertDesc(Table table, boolean overwrite) {
+ Task<? extends Serializable>[] tasks = new Task[this.rootTasks.size()];
+ tasks = this.rootTasks.toArray(tasks);
+ InsertTableDesc insertTableDesc = new InsertTableDesc(table.getTTable(), overwrite);
+ TaskFactory
+ .getAndMakeChild(new DDLWork(getInputs(), getOutputs(), insertTableDesc), conf, tasks);
+ }
+
private void genAutoColumnStatsGatheringPipeline(QB qb, TableDesc table_desc,
Map<String, String> partSpec, Operator curr, boolean isInsertInto) throws SemanticException {
String tableName = table_desc.getTableName();
@@@ -11892,10 -11972,15 +12034,15 @@@
if(curFs != null) {
locStats = curFs.getFileStatus(locPath);
}
- if(locStats != null && locStats.isDir()) {
+ if (locStats != null && locStats.isDir()) {
FileStatus[] lStats = curFs.listStatus(locPath);
if(lStats != null && lStats.length != 0) {
- throw new SemanticException(ErrorMsg.CTAS_LOCATION_NONEMPTY.getMsg(location));
+ // Don't throw an exception if the target location only contains the staging-dirs
+ for (FileStatus lStat : lStats) {
+ if (!lStat.getPath().getName().startsWith(HiveConf.getVar(conf, HiveConf.ConfVars.STAGINGDIR))) {
+ throw new SemanticException(ErrorMsg.CTAS_LOCATION_NONEMPTY.getMsg(location));
+ }
+ }
}
}
} catch (FileNotFoundException nfe) {
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckCtx.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableDesc.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadFileDesc.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
index 7039f1f,aa77850..684f1c1
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
@@@ -47,9 -45,20 +47,21 @@@ public class LoadTableDesc extends org.
// TODO: the below seems like they should just be combined into partitionDesc
private org.apache.hadoop.hive.ql.plan.TableDesc table;
private Map<String, String> partitionSpec; // NOTE: this partitionSpec has to be ordered map
+ private boolean commitMmWriteId = true;
- private LoadTableDesc(final Path sourcePath,
+ public LoadTableDesc(final LoadTableDesc o) {
+ super(o.getSourcePath());
+
+ this.replace = o.replace;
+ this.dpCtx = o.dpCtx;
+ this.lbCtx = o.lbCtx;
+ this.inheritTableSpecs = o.inheritTableSpecs;
+ this.writeType = o.writeType;
+ this.table = o.table;
+ this.partitionSpec = o.partitionSpec;
+ }
+
+ public LoadTableDesc(final Path sourcePath,
final org.apache.hadoop.hive.ql.plan.TableDesc table,
final Map<String, String> partitionSpec,
final boolean replace,
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/MoveWork.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/plan/MoveWork.java
index ff450db,8ce211f..50adc42
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/MoveWork.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/MoveWork.java
@@@ -81,9 -77,22 +81,19 @@@ public class MoveWork implements Serial
public MoveWork(HashSet<ReadEntity> inputs, HashSet<WriteEntity> outputs,
final LoadTableDesc loadTableWork, final LoadFileDesc loadFileWork,
boolean checkFileFormat) {
- this(inputs, outputs);
- this.loadTableWork = loadTableWork;
- this.loadFileWork = loadFileWork;
- this.checkFileFormat = checkFileFormat;
+ this(inputs, outputs, loadTableWork, loadFileWork, checkFileFormat, false);
}
+ public MoveWork(final MoveWork o) {
+ loadTableWork = o.getLoadTableWork();
+ loadFileWork = o.getLoadFileWork();
+ loadMultiFilesWork = o.getLoadMultiFilesWork();
+ checkFileFormat = o.getCheckFileFormat();
+ srcLocal = o.isSrcLocal();
+ inputs = o.getInputs();
+ outputs = o.getOutputs();
+ }
+
@Explain(displayName = "tables", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
public LoadTableDesc getLoadTableWork() {
return loadTableWork;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/PartitionDesc.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/TableDesc.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
----------------------------------------------------------------------
diff --cc ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
index 5fafa57,a90dd35..a40b085
--- a/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
@@@ -555,9 -564,7 +564,8 @@@ public class TestTxnCommands
return sb.toString();
}
- private static final Logger LOG = LoggerFactory.getLogger(TestTxnCommands.class);
private List<String> runStatementOnDriver(String stmt) throws Exception {
+ LOG.info("Running " + stmt);
CommandProcessorResponse cpr = d.run(stmt);
if(cpr.getResponseCode() != 0) {
throw new RuntimeException(stmt + " failed: " + cpr);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
----------------------------------------------------------------------
diff --cc ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
index cf2ab66,aa23df8..3482dba
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
@@@ -21,7 -21,12 +21,11 @@@ import static org.junit.Assert.*
import java.io.DataInput;
import java.io.DataOutput;
-import java.io.FileNotFoundException;
import java.io.IOException;
+ import java.net.URI;
+ import java.net.URISyntaxException;
+ import java.nio.ByteBuffer;
+ import java.nio.charset.StandardCharsets;
import java.security.PrivilegedExceptionAction;
import java.sql.Date;
import java.sql.Timestamp;
@@@ -29,17 -34,29 +33,18 @@@ import java.text.SimpleDateFormat
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
-import java.util.Set;
import java.util.TimeZone;
-import java.util.TreeSet;
import org.apache.commons.codec.binary.Base64;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.BlockLocation;
-import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.FSInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.fs.permission.FsPermission;
+ import org.apache.hadoop.hive.common.ValidTxnList;
import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
@@@ -99,12 -120,9 +108,14 @@@ import org.apache.hadoop.mapred.OutputF
import org.apache.hadoop.mapred.RecordWriter;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hive.common.util.MockFileSystem;
+import org.apache.hive.common.util.MockFileSystem.MockBlock;
+import org.apache.hive.common.util.MockFileSystem.MockFile;
+import org.apache.hive.common.util.MockFileSystem.MockOutputStream;
+import org.apache.hive.common.util.MockFileSystem.MockPath;
- import org.apache.orc.OrcProto;
+ import org.apache.hadoop.util.Progressable;
+ import org.apache.orc.*;
+ import org.apache.orc.impl.PhysicalFsWriter;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/test/org/apache/hadoop/hive/ql/optimizer/TestGenMapRedUtilsCreateConditionalTask.java
----------------------------------------------------------------------
diff --cc ql/src/test/org/apache/hadoop/hive/ql/optimizer/TestGenMapRedUtilsCreateConditionalTask.java
index 0000000,68ccda9..7bc9073
mode 000000,100644..100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/optimizer/TestGenMapRedUtilsCreateConditionalTask.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/optimizer/TestGenMapRedUtilsCreateConditionalTask.java
@@@ -1,0 -1,289 +1,290 @@@
+ /**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ package org.apache.hadoop.hive.ql.optimizer;
+
+ import org.apache.hadoop.fs.Path;
+ import org.apache.hadoop.hive.conf.HiveConf;
+ import org.apache.hadoop.hive.ql.CompilationOpContext;
+ import org.apache.hadoop.hive.ql.exec.*;
+ import org.apache.hadoop.hive.ql.exec.mr.MapRedTask;
+ import org.apache.hadoop.hive.ql.io.HiveInputFormat;
+ import org.apache.hadoop.hive.ql.io.HiveOutputFormat;
+ import org.apache.hadoop.hive.ql.parse.SemanticException;
+ import org.apache.hadoop.hive.ql.plan.*;
+ import org.junit.Before;
+ import org.junit.BeforeClass;
+ import org.junit.Test;
+
+ import java.io.Serializable;
+ import java.util.Arrays;
+ import java.util.List;
+ import java.util.Properties;
+
+ import static org.junit.Assert.*;
+ import static org.mockito.Mockito.mock;
+ import static org.mockito.Mockito.reset;
+ import static org.mockito.Mockito.when;
+
+ public class TestGenMapRedUtilsCreateConditionalTask {
+ private static HiveConf hiveConf;
+
+ private Task dummyMRTask;
+
+ @BeforeClass
+ public static void initializeSessionState() {
+ hiveConf = new HiveConf();
+ }
+
+ @Before
+ public void setUp() {
+ dummyMRTask = new MapRedTask();
+ }
+
+ @Test
+ public void testMovePathsThatCannotBeMerged() {
+ final Path condInputPath = new Path("s3a://bucket/scratch/-ext-10000");
+ final Path condOutputPath = new Path("s3a://bucket/scratch/-ext-10002");
+ final MoveWork mockWork = mock(MoveWork.class);
+
+ assertFalse("A MoveWork null object cannot be merged.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, condInputPath, condOutputPath, null));
+
+ hiveConf.set(HiveConf.ConfVars.HIVE_BLOBSTORE_OPTIMIZATIONS_ENABLED.varname, "false");
+ assertFalse("Merging paths is not allowed when BlobStorage optimizations are disabled.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, condInputPath, condOutputPath, mockWork));
+
+ // Enable BlobStore optimizations for the rest of tests
+ hiveConf.set(HiveConf.ConfVars.HIVE_BLOBSTORE_OPTIMIZATIONS_ENABLED.varname, "true");
+
+ reset(mockWork);
+ when(mockWork.getLoadMultiFilesWork()).thenReturn(new LoadMultiFilesDesc());
+ assertFalse("Merging paths is not allowed when MultiFileWork is found in the MoveWork object.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, condInputPath, condOutputPath, mockWork));
+
+ reset(mockWork);
+ when(mockWork.getLoadFileWork()).thenReturn(mock(LoadFileDesc.class));
+ when(mockWork.getLoadTableWork()).thenReturn(mock(LoadTableDesc.class));
+ assertFalse("Merging paths is not allowed when both LoadFileWork & LoadTableWork are found in the MoveWork object.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, condInputPath, condOutputPath, mockWork));
+
+ reset(mockWork);
+ when(mockWork.getLoadFileWork()).thenReturn(new LoadFileDesc(condInputPath, condOutputPath, false, "", ""));
+ assertFalse("Merging paths is not allowed when both conditional output path is not equals to MoveWork input path.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, condInputPath, condOutputPath, mockWork));
+
+ reset(mockWork);
+ when(mockWork.getLoadFileWork()).thenReturn(new LoadFileDesc(condOutputPath, new Path("unused"), false, "", ""));
+ assertFalse("Merging paths is not allowed when conditional input path is not a BlobStore path.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, new Path("hdfs://hdfs-path"), condOutputPath, mockWork));
+
+ reset(mockWork);
+ when(mockWork.getLoadFileWork()).thenReturn(new LoadFileDesc(condOutputPath, new Path("hdfs://hdfs-path"), false, "", ""));
+ assertFalse("Merging paths is not allowed when MoveWork output path is not a BlobStore path.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, condInputPath, condOutputPath, mockWork));
+ }
+
+ @Test
+ public void testMovePathsThatCanBeMerged() {
+ final Path condInputPath = new Path("s3a://bucket/scratch/-ext-10000");
+ final Path condOutputPath = new Path("s3a://bucket/scratch/-ext-10002");
+ final Path targetMoveWorkPath = new Path("s3a://bucket/scratch/-ext-10003");
+ final MoveWork mockWork = mock(MoveWork.class);
+
+ when(mockWork.getLoadFileWork()).thenReturn(new LoadFileDesc(condOutputPath, targetMoveWorkPath, false, "", ""));
+
+ assertTrue("Merging BlobStore paths should be allowed.",
+ GenMapRedUtils.shouldMergeMovePaths(hiveConf, condInputPath, condOutputPath, mockWork));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testMergePathWithInvalidMoveWorkThrowsException() {
+ final Path condInputPath = new Path("s3a://bucket/scratch/-ext-10000");
+ final MoveWork mockWork = mock(MoveWork.class);
+
+ when(mockWork.getLoadMultiFilesWork()).thenReturn(new LoadMultiFilesDesc());
+ GenMapRedUtils.mergeMovePaths(condInputPath, mockWork);
+ }
+
+ @Test
+ public void testMergePathValidMoveWorkReturnsNewMoveWork() {
+ final Path condInputPath = new Path("s3a://bucket/scratch/-ext-10000");
+ final Path condOutputPath = new Path("s3a://bucket/scratch/-ext-10002");
+ final Path targetMoveWorkPath = new Path("s3a://bucket/scratch/-ext-10003");
+ final MoveWork mockWork = mock(MoveWork.class);
+ MoveWork newWork;
+
+ // test using loadFileWork
+ when(mockWork.getLoadFileWork()).thenReturn(new LoadFileDesc(condOutputPath, targetMoveWorkPath, false, "", ""));
+ newWork = GenMapRedUtils.mergeMovePaths(condInputPath, mockWork);
+ assertNotNull(newWork);
+ assertNotEquals(newWork, mockWork);
+ assertEquals(condInputPath, newWork.getLoadFileWork().getSourcePath());
+ assertEquals(targetMoveWorkPath, newWork.getLoadFileWork().getTargetDir());
+
+ // test using loadTableWork
+ TableDesc tableDesc = new TableDesc();
+ reset(mockWork);
- when(mockWork.getLoadTableWork()).thenReturn(new LoadTableDesc(condOutputPath, tableDesc, null));
++ when(mockWork.getLoadTableWork()).thenReturn(new LoadTableDesc(
++ condOutputPath, tableDesc, null, null));
+ newWork = GenMapRedUtils.mergeMovePaths(condInputPath, mockWork);
+ assertNotNull(newWork);
+ assertNotEquals(newWork, mockWork);
+ assertEquals(condInputPath, newWork.getLoadTableWork().getSourcePath());
+ assertTrue(newWork.getLoadTableWork().getTable().equals(tableDesc));
+ }
+
+ @Test
+ public void testConditionalMoveTaskIsOptimized() throws SemanticException {
+ hiveConf.set(HiveConf.ConfVars.HIVE_BLOBSTORE_OPTIMIZATIONS_ENABLED.varname, "true");
+
+ Path sinkDirName = new Path("s3a://bucket/scratch/-ext-10002");
+ FileSinkOperator fileSinkOperator = createFileSinkOperator(sinkDirName);
+
+ Path finalDirName = new Path("s3a://bucket/scratch/-ext-10000");
+ Path tableLocation = new Path("s3a://bucket/warehouse/table");
+ Task<MoveWork> moveTask = createMoveTask(finalDirName, tableLocation);
+ List<Task<MoveWork>> moveTaskList = Arrays.asList(moveTask);
+
+ GenMapRedUtils.createMRWorkForMergingFiles(fileSinkOperator, finalDirName, null, moveTaskList, hiveConf, dummyMRTask);
+ ConditionalTask conditionalTask = (ConditionalTask)dummyMRTask.getChildTasks().get(0);
+ Task<? extends Serializable> moveOnlyTask = conditionalTask.getListTasks().get(0);
+ Task<? extends Serializable> mergeOnlyTask = conditionalTask.getListTasks().get(1);
+ Task<? extends Serializable> mergeAndMoveTask = conditionalTask.getListTasks().get(2);
+
+ /*
+ * OPTIMIZATION
+ * The ConditionalTask avoids linking 2 MoveTask that are expensive on blobstorage systems. Instead of
+ * linking, it creates one MoveTask where the source is the first MoveTask source, and target is the
+ * second MoveTask target.
+ */
+
+ // Verify moveOnlyTask is optimized
+ assertNull(moveOnlyTask.getChildTasks());
+ verifyMoveTask(moveOnlyTask, sinkDirName, tableLocation);
+
+ // Verify mergeOnlyTask is NOT optimized (a merge task writes directly to finalDirName, then a MoveTask is executed)
+ assertEquals(1, mergeOnlyTask.getChildTasks().size());
+ verifyMoveTask(mergeOnlyTask.getChildTasks().get(0), finalDirName, tableLocation);
+
+ // Verify mergeAndMoveTask is NOT optimized
+ assertEquals(1, mergeAndMoveTask.getChildTasks().size());
+ assertEquals(1, mergeAndMoveTask.getChildTasks().get(0).getChildTasks().size());
+ verifyMoveTask(mergeAndMoveTask.getChildTasks().get(0), sinkDirName, finalDirName);
+ verifyMoveTask(mergeAndMoveTask.getChildTasks().get(0).getChildTasks().get(0), finalDirName, tableLocation);
+ }
+
+ @Test
+ public void testConditionalMoveTaskIsNotOptimized() throws SemanticException {
+ hiveConf.set(HiveConf.ConfVars.HIVE_BLOBSTORE_OPTIMIZATIONS_ENABLED.varname, "false");
+
+ Path sinkDirName = new Path("s3a://bucket/scratch/-ext-10002");
+ FileSinkOperator fileSinkOperator = createFileSinkOperator(sinkDirName);
+
+ Path finalDirName = new Path("s3a://bucket/scratch/-ext-10000");
+ Path tableLocation = new Path("s3a://bucket/warehouse/table");
+ Task<MoveWork> moveTask = createMoveTask(finalDirName, tableLocation);
+ List<Task<MoveWork>> moveTaskList = Arrays.asList(moveTask);
+
+ GenMapRedUtils.createMRWorkForMergingFiles(fileSinkOperator, finalDirName, null, moveTaskList, hiveConf, dummyMRTask);
+ ConditionalTask conditionalTask = (ConditionalTask)dummyMRTask.getChildTasks().get(0);
+ Task<? extends Serializable> moveOnlyTask = conditionalTask.getListTasks().get(0);
+ Task<? extends Serializable> mergeOnlyTask = conditionalTask.getListTasks().get(1);
+ Task<? extends Serializable> mergeAndMoveTask = conditionalTask.getListTasks().get(2);
+
+ // Verify moveOnlyTask is NOT optimized
+ assertEquals(1, moveOnlyTask.getChildTasks().size());
+ verifyMoveTask(moveOnlyTask, sinkDirName, finalDirName);
+ verifyMoveTask(moveOnlyTask.getChildTasks().get(0), finalDirName, tableLocation);
+
+ // Verify mergeOnlyTask is NOT optimized
+ assertEquals(1, mergeOnlyTask.getChildTasks().size());
+ verifyMoveTask(mergeOnlyTask.getChildTasks().get(0), finalDirName, tableLocation);
+
+ // Verify mergeAndMoveTask is NOT optimized
+ assertEquals(1, mergeAndMoveTask.getChildTasks().size());
+ assertEquals(1, mergeAndMoveTask.getChildTasks().get(0).getChildTasks().size());
+ verifyMoveTask(mergeAndMoveTask.getChildTasks().get(0), sinkDirName, finalDirName);
+ verifyMoveTask(mergeAndMoveTask.getChildTasks().get(0).getChildTasks().get(0), finalDirName, tableLocation);
+ }
+
+ @Test
+ public void testConditionalMoveOnHdfsIsNotOptimized() throws SemanticException {
+ hiveConf.set(HiveConf.ConfVars.HIVE_BLOBSTORE_OPTIMIZATIONS_ENABLED.varname, "true");
+
+ Path sinkDirName = new Path("hdfs://bucket/scratch/-ext-10002");
+ FileSinkOperator fileSinkOperator = createFileSinkOperator(sinkDirName);
+
+ Path finalDirName = new Path("hdfs://bucket/scratch/-ext-10000");
+ Path tableLocation = new Path("hdfs://bucket/warehouse/table");
+ Task<MoveWork> moveTask = createMoveTask(finalDirName, tableLocation);
+ List<Task<MoveWork>> moveTaskList = Arrays.asList(moveTask);
+
+ GenMapRedUtils.createMRWorkForMergingFiles(fileSinkOperator, finalDirName, null, moveTaskList, hiveConf, dummyMRTask);
+ ConditionalTask conditionalTask = (ConditionalTask)dummyMRTask.getChildTasks().get(0);
+ Task<? extends Serializable> moveOnlyTask = conditionalTask.getListTasks().get(0);
+ Task<? extends Serializable> mergeOnlyTask = conditionalTask.getListTasks().get(1);
+ Task<? extends Serializable> mergeAndMoveTask = conditionalTask.getListTasks().get(2);
+
+ // Verify moveOnlyTask is NOT optimized
+ assertEquals(1, moveOnlyTask.getChildTasks().size());
+ verifyMoveTask(moveOnlyTask, sinkDirName, finalDirName);
+ verifyMoveTask(moveOnlyTask.getChildTasks().get(0), finalDirName, tableLocation);
+
+ // Verify mergeOnlyTask is NOT optimized
+ assertEquals(1, mergeOnlyTask.getChildTasks().size());
+ verifyMoveTask(mergeOnlyTask.getChildTasks().get(0), finalDirName, tableLocation);
+
+ // Verify mergeAndMoveTask is NOT optimized
+ assertEquals(1, mergeAndMoveTask.getChildTasks().size());
+ assertEquals(1, mergeAndMoveTask.getChildTasks().get(0).getChildTasks().size());
+ verifyMoveTask(mergeAndMoveTask.getChildTasks().get(0), sinkDirName, finalDirName);
+ verifyMoveTask(mergeAndMoveTask.getChildTasks().get(0).getChildTasks().get(0), finalDirName, tableLocation);
+ }
+
+ private FileSinkOperator createFileSinkOperator(Path finalDirName) {
+ FileSinkOperator fileSinkOperator = mock(FileSinkOperator.class);
+
+ TableDesc tableDesc = new TableDesc(HiveInputFormat.class, HiveOutputFormat.class, new Properties());
+ FileSinkDesc fileSinkDesc = new FileSinkDesc(finalDirName, tableDesc, false);
+ fileSinkDesc.setDirName(finalDirName);
+
+ when(fileSinkOperator.getConf()).thenReturn(fileSinkDesc);
+ when(fileSinkOperator.getSchema()).thenReturn(mock(RowSchema.class));
+ fileSinkDesc.setTableInfo(tableDesc);
+
+ when(fileSinkOperator.getCompilationOpContext()).thenReturn(mock(CompilationOpContext.class));
+
+ return fileSinkOperator;
+ }
+
+ private Task<MoveWork> createMoveTask(Path source, Path destination) {
+ Task<MoveWork> moveTask = mock(MoveTask.class);
+ MoveWork moveWork = new MoveWork();
+ moveWork.setLoadFileWork(new LoadFileDesc(source, destination, true, null, null));
+
+ when(moveTask.getWork()).thenReturn(moveWork);
+
+ return moveTask;
+ }
+
+ private void verifyMoveTask(Task<? extends Serializable> task, Path source, Path target) {
+ MoveTask moveTask = (MoveTask)task;
+ assertEquals(source, moveTask.getWork().getLoadFileWork().getSourcePath());
+ assertEquals(target, moveTask.getWork().getLoadFileWork().getTargetDir());
+ }
+ }
[21/50] [abbrv] hive git commit: HIVE-15717 : JDBC: Implement
rowDeleted,
rowInserted and rowUpdated to return false (Tao Li via Thejas Nair)
Posted by se...@apache.org.
HIVE-15717 : JDBC: Implement rowDeleted, rowInserted and rowUpdated to return false (Tao Li via Thejas Nair)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f8e241b3
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f8e241b3
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f8e241b3
Branch: refs/heads/hive-14535
Commit: f8e241b3136cc237638561b90eeaded42be57462
Parents: bb33ffa
Author: Tao Li <tl...@hortonworks.com>
Authored: Tue Jan 31 13:18:10 2017 -0800
Committer: Thejas M Nair <th...@hortonworks.com>
Committed: Tue Jan 31 13:18:10 2017 -0800
----------------------------------------------------------------------
.../test/java/org/apache/hive/jdbc/TestJdbcDriver2.java | 11 +++++++++++
.../src/java/org/apache/hive/jdbc/HiveBaseResultSet.java | 6 +++---
2 files changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/f8e241b3/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
index 5fac14f..4a82aa5 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
@@ -1808,6 +1808,17 @@ public class TestJdbcDriver2 {
stmt.close();
}
+ @Test
+ public void testResultSetRowProperties() throws SQLException {
+ Statement stmt = con.createStatement();
+ ResultSet res =
+ stmt.executeQuery("select * from "
+ + dataTypeTableName + " limit 1");
+ assertFalse(res.rowDeleted());
+ assertFalse(res.rowInserted());
+ assertFalse(res.rowUpdated());
+ }
+
// [url] [host] [port] [db]
private static final String[][] URL_PROPERTIES = new String[][] {
// binary mode
http://git-wip-us.apache.org/repos/asf/hive/blob/f8e241b3/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java
----------------------------------------------------------------------
diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java
index 93f093f..6d4b2b1 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java
@@ -658,15 +658,15 @@ public abstract class HiveBaseResultSet implements ResultSet {
}
public boolean rowDeleted() throws SQLException {
- throw new SQLException("Method not supported");
+ return false;
}
public boolean rowInserted() throws SQLException {
- throw new SQLException("Method not supported");
+ return false;
}
public boolean rowUpdated() throws SQLException {
- throw new SQLException("Method not supported");
+ return false;
}
public void setFetchDirection(int direction) throws SQLException {
[33/50] [abbrv] hive git commit: HIVE-15781: Druid CTAS should
support DECIMAL type (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Posted by se...@apache.org.
HIVE-15781: Druid CTAS should support DECIMAL type (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/06b2b0e9
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/06b2b0e9
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/06b2b0e9
Branch: refs/heads/hive-14535
Commit: 06b2b0e998183be6ed102ca57de1e00d39db3e95
Parents: 89664c0
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Wed Feb 1 15:47:20 2017 +0000
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Wed Feb 1 18:49:47 2017 +0000
----------------------------------------------------------------------
.../hadoop/hive/druid/io/DruidOutputFormat.java | 1 +
.../hadoop/hive/druid/serde/DruidSerDe.java | 5 ++++
.../hadoop/hive/druid/TestDruidSerDe.java | 24 ++++++++++++--------
3 files changed, 20 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/06b2b0e9/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
index 86ddca8..12bbd73 100644
--- a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
+++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java
@@ -140,6 +140,7 @@ public class DruidOutputFormat<K, V> implements HiveOutputFormat<K, DruidWritabl
break;
case serdeConstants.FLOAT_TYPE_NAME:
case serdeConstants.DOUBLE_TYPE_NAME:
+ case serdeConstants.DECIMAL_TYPE_NAME:
af = new DoubleSumAggregatorFactory(columnNames.get(i), columnNames.get(i));
break;
default:
http://git-wip-us.apache.org/repos/asf/hive/blob/06b2b0e9/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
index 9548d96..ea84326 100644
--- a/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
+++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java
@@ -46,6 +46,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.FloatObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.HiveDecimalObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
@@ -418,6 +419,10 @@ public class DruidSerDe extends AbstractSerDe {
res = ((DoubleObjectInspector) fields.get(i).getFieldObjectInspector())
.get(values.get(i));
break;
+ case DECIMAL:
+ res = ((HiveDecimalObjectInspector) fields.get(i).getFieldObjectInspector())
+ .getPrimitiveJavaObject(values.get(i)).doubleValue();
+ break;
case STRING:
res = ((StringObjectInspector) fields.get(i).getFieldObjectInspector())
.getPrimitiveJavaObject(
http://git-wip-us.apache.org/repos/asf/hive/blob/06b2b0e9/druid-handler/src/test/org/apache/hadoop/hive/druid/TestDruidSerDe.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/test/org/apache/hadoop/hive/druid/TestDruidSerDe.java b/druid-handler/src/test/org/apache/hadoop/hive/druid/TestDruidSerDe.java
index e6e3707..8dfa4d7 100644
--- a/druid-handler/src/test/org/apache/hadoop/hive/druid/TestDruidSerDe.java
+++ b/druid-handler/src/test/org/apache/hadoop/hive/druid/TestDruidSerDe.java
@@ -31,6 +31,7 @@ import java.util.Map.Entry;
import java.util.Properties;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.conf.Constants;
import org.apache.hadoop.hive.druid.serde.DruidGroupByQueryRecordReader;
import org.apache.hadoop.hive.druid.serde.DruidQueryRecordReader;
@@ -45,6 +46,7 @@ import org.apache.hadoop.hive.serde2.SerDeException;
import org.apache.hadoop.hive.serde2.SerDeUtils;
import org.apache.hadoop.hive.serde2.io.ByteWritable;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.hadoop.hive.serde2.io.ShortWritable;
import org.apache.hadoop.hive.serde2.io.TimestampWritable;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
@@ -639,13 +641,14 @@ public class TestDruidSerDe {
}
- private static final String COLUMN_NAMES = "__time,c0,c1,c2,c3,c4,c5,c6";
- private static final String COLUMN_TYPES = "timestamp,string,double,float,bigint,int,smallint,tinyint";
+ private static final String COLUMN_NAMES = "__time,c0,c1,c2,c3,c4,c5,c6,c7";
+ private static final String COLUMN_TYPES = "timestamp,string,double,float,decimal(38,18),bigint,int,smallint,tinyint";
private static final Object[] ROW_OBJECT = new Object[] {
new TimestampWritable(new Timestamp(1377907200000L)),
new Text("dim1_val"),
- new DoubleWritable(10669D),
- new FloatWritable(10669F),
+ new DoubleWritable(10669.3D),
+ new FloatWritable(10669.45F),
+ new HiveDecimalWritable(HiveDecimal.create(1064.34D)),
new LongWritable(1113939),
new IntWritable(1112123),
new ShortWritable((short) 12),
@@ -656,12 +659,13 @@ public class TestDruidSerDe {
ImmutableMap.<String, Object>builder()
.put("__time", 1377907200000L)
.put("c0", "dim1_val")
- .put("c1", 10669D)
- .put("c2", 10669F)
- .put("c3", 1113939L)
- .put("c4", 1112123)
- .put("c5", (short) 12)
- .put("c6", (byte) 0)
+ .put("c1", 10669.3D)
+ .put("c2", 10669.45F)
+ .put("c3", 1064.34D)
+ .put("c4", 1113939L)
+ .put("c5", 1112123)
+ .put("c6", (short) 12)
+ .put("c7", (byte) 0)
.put("__time_granularity", 1377907200000L)
.build());
[14/50] [abbrv] hive git commit: HIVE-14936: Flaky test:
TestMiniLlapCliDriver.testCliDriver[orc_ppd_schema_evol_3a,
orc_ppd_basic] (Prasanth Jayachandran reviewed by Siddharth Seth)
Posted by se...@apache.org.
HIVE-14936: Flaky test: TestMiniLlapCliDriver.testCliDriver[orc_ppd_schema_evol_3a, orc_ppd_basic] (Prasanth Jayachandran reviewed by Siddharth Seth)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/eb29bd12
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/eb29bd12
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/eb29bd12
Branch: refs/heads/hive-14535
Commit: eb29bd120d5e4c0c05513ecf40002f6b4ce0ffc5
Parents: f9d5107
Author: Prasanth Jayachandran <pr...@apache.org>
Authored: Tue Jan 31 01:20:57 2017 -0800
Committer: Prasanth Jayachandran <pr...@apache.org>
Committed: Tue Jan 31 01:20:57 2017 -0800
----------------------------------------------------------------------
.../test/resources/testconfiguration.properties | 2 -
.../hooks/PostExecOrcRowGroupCountPrinter.java | 75 +++++++
.../test/queries/clientpositive/orc_ppd_basic.q | 21 +-
.../clientpositive/orc_ppd_schema_evol_1a.q | 4 +-
.../clientpositive/orc_ppd_schema_evol_1b.q | 2 +
.../clientpositive/orc_ppd_schema_evol_2a.q | 4 +-
.../clientpositive/orc_ppd_schema_evol_2b.q | 2 +
.../clientpositive/orc_ppd_schema_evol_3a.q | 12 +-
.../clientpositive/llap/orc_ppd_basic.q.out | 225 ++++++-------------
.../llap/orc_ppd_schema_evol_3a.q.out | 194 ++++++++--------
10 files changed, 262 insertions(+), 279 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index 8b3f589..15e0db4 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -72,8 +72,6 @@ minillap.shared.query.files=insert_into1.q,\
orc_merge_diff_fs.q,\
unionDistinct_1.q,\
union_type_chk.q,\
- orc_ppd_basic.q,\
- orc_ppd_schema_evol_3a.q,\
cte_2.q,\
cte_4.q,\
llap_nullscan.q,\
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcRowGroupCountPrinter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcRowGroupCountPrinter.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcRowGroupCountPrinter.java
new file mode 100644
index 0000000..18ef325
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcRowGroupCountPrinter.java
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.hooks;
+
+import java.util.List;
+
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.llap.counters.LlapIOCounters;
+import org.apache.hadoop.hive.ql.QueryPlan;
+import org.apache.hadoop.hive.ql.exec.Utilities;
+import org.apache.hadoop.hive.ql.exec.tez.TezTask;
+import org.apache.hadoop.hive.ql.session.SessionState;
+import org.apache.tez.common.counters.CounterGroup;
+import org.apache.tez.common.counters.TezCounter;
+import org.apache.tez.common.counters.TezCounters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Post execution hook to print number of ORC row groups read from the counter. Used for Predicate Pushdown testing.
+ */
+public class PostExecOrcRowGroupCountPrinter implements ExecuteWithHookContext {
+ private static final Logger LOG = LoggerFactory.getLogger(PostExecOrcRowGroupCountPrinter.class.getName());
+
+ @Override
+ public void run(HookContext hookContext) throws Exception {
+ assert (hookContext.getHookType() == HookContext.HookType.POST_EXEC_HOOK);
+ HiveConf conf = hookContext.getConf();
+ if (!"tez".equals(HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_EXECUTION_ENGINE))) {
+ return;
+ }
+
+ LOG.info("Executing post execution hook to print ORC row groups read counter..");
+ SessionState ss = SessionState.get();
+ SessionState.LogHelper console = ss.getConsole();
+ QueryPlan plan = hookContext.getQueryPlan();
+ if (plan == null) {
+ return;
+ }
+
+ List<TezTask> rootTasks = Utilities.getTezTasks(plan.getRootTasks());
+ for (TezTask tezTask : rootTasks) {
+ LOG.info("Printing ORC row group counter for tez task: " + tezTask.getName());
+ TezCounters counters = tezTask.getTezCounters();
+ if (counters != null) {
+ for (CounterGroup group : counters) {
+ if (group.getName().equals(LlapIOCounters.class.getName())) {
+ console.printError(tezTask.getId() + " LLAP IO COUNTERS:");
+ for (TezCounter counter : group) {
+ if (counter.getDisplayName().equals(LlapIOCounters.SELECTED_ROWGROUPS.name())) {
+ console.printError(" " + counter.getDisplayName() + ": " + counter.getValue());
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/queries/clientpositive/orc_ppd_basic.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/orc_ppd_basic.q b/ql/src/test/queries/clientpositive/orc_ppd_basic.q
index 41134a0..cf5870e 100644
--- a/ql/src/test/queries/clientpositive/orc_ppd_basic.q
+++ b/ql/src/test/queries/clientpositive/orc_ppd_basic.q
@@ -3,6 +3,8 @@ set hive.mapred.mode=nonstrict;
SET hive.fetch.task.conversion=none;
SET hive.optimize.index.filter=true;
SET hive.cbo.enable=false;
+SET hive.map.aggr=false;
+-- disabling map side aggregation as that can lead to different intermediate record counts
CREATE TABLE staging(t tinyint,
si smallint,
@@ -32,17 +34,16 @@ CREATE TABLE orc_ppd_staging(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*");
-insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from staging order by t, s;
+insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), dec, bin from staging order by t, s;
-- just to introduce a gap in min/max range for bloom filters. The dataset has contiguous values
-- which makes it hard to test bloom filters
-insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11","1990-03-11 10:11:58.703308",-71.54,"aaa" from staging limit 1;
-insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11","2023-03-11 10:11:58.703308",71.54,"zzz" from staging limit 1;
+insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11",-71.54,"aaa" from staging limit 1;
+insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11",71.54,"zzz" from staging limit 1;
CREATE TABLE orc_ppd(t tinyint,
si smallint,
@@ -55,12 +56,11 @@ CREATE TABLE orc_ppd(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*");
-insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from orc_ppd_staging order by t, s;
+insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), da, dec, bin from orc_ppd_staging order by t, s;
SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.PostExecTezSummaryPrinter;
@@ -197,6 +197,9 @@ set hive.mapred.mode=nonstrict;
SET hive.fetch.task.conversion=none;
SET hive.optimize.index.filter=true;
SET hive.cbo.enable=false;
+SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.PostExecOrcRowGroupCountPrinter;
+-- these tests include timestamp column that will impact the file size when tests run across
+-- different timezones. So we print only the selected row group count instead of entire tez exeuction summary.
create temporary table tmp_orcppd
stored as orc
as select ctinyint, csmallint, cint , cbigint, cfloat, cdouble,
@@ -233,13 +236,13 @@ set hive.optimize.index.filter=true;
drop table if exists tmp_orcppd;
create temporary table tmp_orcppd
stored as orc
- as select ts, da
- from orc_ppd_staging ;
+ as select ts, cast(ts as date)
+ from staging ;
insert into table tmp_orcppd
values(null, null);
drop table if exists tbl_orcppd_3_1;
create table tbl_orcppd_3_1 as
select count(*) from tmp_orcppd
- group by ts, da
+ group by ts, cast(ts as date)
having ts in (select ctimestamp1 from alltypesorc limit 10);
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1a.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1a.q b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1a.q
index f52c2ac..60408db 100644
--- a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1a.q
+++ b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1a.q
@@ -3,6 +3,8 @@ set hive.metastore.disallow.incompatible.col.type.changes=true;
set hive.optimize.ppd=false;
set hive.optimize.index.filter=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
+SET hive.map.aggr=false;
+-- disabling map side aggregation as that can lead to different intermediate record counts
create table unique_1(
@@ -39,4 +41,4 @@ select s from test1 where i = '-1591211872';
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
-select s from test1 where i = -1591211872;
\ No newline at end of file
+select s from test1 where i = -1591211872;
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1b.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1b.q b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1b.q
index e669f06..c1be125 100644
--- a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1b.q
+++ b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_1b.q
@@ -3,6 +3,8 @@ set hive.metastore.disallow.incompatible.col.type.changes=true;
set hive.optimize.ppd=false;
set hive.optimize.index.filter=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
+SET hive.map.aggr=false;
+-- disabling map side aggregation as that can lead to different intermediate record counts
create table unique_1(
i int,
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2a.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2a.q b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2a.q
index 609924d..8951496 100644
--- a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2a.q
+++ b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2a.q
@@ -3,6 +3,8 @@ set hive.metastore.disallow.incompatible.col.type.changes=false;
set hive.optimize.ppd=false;
set hive.optimize.index.filter=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
+SET hive.map.aggr=false;
+-- disabling map side aggregation as that can lead to different intermediate record counts
@@ -40,4 +42,4 @@ select s from test1 where d = -4996703.42;
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
-select s from test1 where d = -4996703.42;
\ No newline at end of file
+select s from test1 where d = -4996703.42;
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2b.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2b.q b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2b.q
index edebeef..f6e3133 100644
--- a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2b.q
+++ b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_2b.q
@@ -3,6 +3,8 @@ set hive.metastore.disallow.incompatible.col.type.changes=false;
set hive.optimize.ppd=false;
set hive.optimize.index.filter=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
+SET hive.map.aggr=false;
+-- disabling map side aggregation as that can lead to different intermediate record counts
create table unique_1(
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_3a.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_3a.q b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_3a.q
index 88a94eb..5b6731d 100644
--- a/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_3a.q
+++ b/ql/src/test/queries/clientpositive/orc_ppd_schema_evol_3a.q
@@ -1,6 +1,8 @@
set hive.mapred.mode=nonstrict;
SET hive.fetch.task.conversion=none;
SET hive.cbo.enable=false;
+SET hive.map.aggr=false;
+-- disabling map side aggregation as that can lead to different intermediate record counts
CREATE TABLE staging(t tinyint,
si smallint,
@@ -30,17 +32,16 @@ CREATE TABLE orc_ppd_staging(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*");
-insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from staging order by t, s;
+insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), dec, bin from staging order by t, s;
-- just to introduce a gap in min/max range for bloom filters. The dataset has contiguous values
-- which makes it hard to test bloom filters
-insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11","1990-03-11 10:11:58.703308",-71.54,"aaa" from staging limit 1;
-insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11","2023-03-11 10:11:58.703308",71.54,"zzz" from staging limit 1;
+insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11",-71.54,"aaa" from staging limit 1;
+insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11",71.54,"zzz" from staging limit 1;
CREATE TABLE orc_ppd(t tinyint,
si smallint,
@@ -53,12 +54,11 @@ CREATE TABLE orc_ppd(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*");
-insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from orc_ppd_staging order by t, s;
+insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), da, dec, bin from orc_ppd_staging order by t, s;
SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.PostExecTezSummaryPrinter;
SET hive.optimize.index.filter=false;
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out b/ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out
index b186b01..e28ed5d 100644
--- a/ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out
+++ b/ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out
@@ -57,7 +57,6 @@ PREHOOK: query: CREATE TABLE orc_ppd_staging(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
@@ -75,18 +74,17 @@ POSTHOOK: query: CREATE TABLE orc_ppd_staging(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@orc_ppd_staging
-PREHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from staging order by t, s
+PREHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), dec, bin from staging order by t, s
PREHOOK: type: QUERY
PREHOOK: Input: default@staging
PREHOOK: Output: default@orc_ppd_staging
-POSTHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from staging order by t, s
+POSTHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), dec, bin from staging order by t, s
POSTHOOK: type: QUERY
POSTHOOK: Input: default@staging
POSTHOOK: Output: default@orc_ppd_staging
@@ -102,13 +100,12 @@ POSTHOOK: Lineage: orc_ppd_staging.i SIMPLE [(staging)staging.FieldSchema(name:i
POSTHOOK: Lineage: orc_ppd_staging.s SIMPLE [(staging)staging.FieldSchema(name:s, type:string, comment:null), ]
POSTHOOK: Lineage: orc_ppd_staging.si SIMPLE [(staging)staging.FieldSchema(name:si, type:smallint, comment:null), ]
POSTHOOK: Lineage: orc_ppd_staging.t SIMPLE [(staging)staging.FieldSchema(name:t, type:tinyint, comment:null), ]
-POSTHOOK: Lineage: orc_ppd_staging.ts SIMPLE [(staging)staging.FieldSchema(name:ts, type:timestamp, comment:null), ]
POSTHOOK: Lineage: orc_ppd_staging.v EXPRESSION [(staging)staging.FieldSchema(name:s, type:string, comment:null), ]
-PREHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11","1990-03-11 10:11:58.703308",-71.54,"aaa" from staging limit 1
+PREHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11",-71.54,"aaa" from staging limit 1
PREHOOK: type: QUERY
PREHOOK: Input: default@staging
PREHOOK: Output: default@orc_ppd_staging
-POSTHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11","1990-03-11 10:11:58.703308",-71.54,"aaa" from staging limit 1
+POSTHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11",-71.54,"aaa" from staging limit 1
POSTHOOK: type: QUERY
POSTHOOK: Input: default@staging
POSTHOOK: Output: default@orc_ppd_staging
@@ -124,13 +121,12 @@ POSTHOOK: Lineage: orc_ppd_staging.i EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.s SIMPLE []
POSTHOOK: Lineage: orc_ppd_staging.si EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.t EXPRESSION []
-POSTHOOK: Lineage: orc_ppd_staging.ts EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.v EXPRESSION []
-PREHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11","2023-03-11 10:11:58.703308",71.54,"zzz" from staging limit 1
+PREHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11",71.54,"zzz" from staging limit 1
PREHOOK: type: QUERY
PREHOOK: Input: default@staging
PREHOOK: Output: default@orc_ppd_staging
-POSTHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11","2023-03-11 10:11:58.703308",71.54,"zzz" from staging limit 1
+POSTHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11",71.54,"zzz" from staging limit 1
POSTHOOK: type: QUERY
POSTHOOK: Input: default@staging
POSTHOOK: Output: default@orc_ppd_staging
@@ -146,7 +142,6 @@ POSTHOOK: Lineage: orc_ppd_staging.i SIMPLE []
POSTHOOK: Lineage: orc_ppd_staging.s SIMPLE []
POSTHOOK: Lineage: orc_ppd_staging.si EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.t EXPRESSION []
-POSTHOOK: Lineage: orc_ppd_staging.ts EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.v EXPRESSION []
PREHOOK: query: CREATE TABLE orc_ppd(t tinyint,
si smallint,
@@ -159,7 +154,6 @@ PREHOOK: query: CREATE TABLE orc_ppd(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
@@ -177,18 +171,17 @@ POSTHOOK: query: CREATE TABLE orc_ppd(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@orc_ppd
-PREHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from orc_ppd_staging order by t, s
+PREHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), da, dec, bin from orc_ppd_staging order by t, s
PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd_staging
PREHOOK: Output: default@orc_ppd
-POSTHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from orc_ppd_staging order by t, s
+POSTHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), da, dec, bin from orc_ppd_staging order by t, s
POSTHOOK: type: QUERY
POSTHOOK: Input: default@orc_ppd_staging
POSTHOOK: Output: default@orc_ppd
@@ -197,21 +190,20 @@ POSTHOOK: Lineage: orc_ppd.bin SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSch
POSTHOOK: Lineage: orc_ppd.bo SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:bo, type:boolean, comment:null), ]
POSTHOOK: Lineage: orc_ppd.c EXPRESSION [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:s, type:string, comment:null), ]
POSTHOOK: Lineage: orc_ppd.d SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:d, type:double, comment:null), ]
-POSTHOOK: Lineage: orc_ppd.da EXPRESSION [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:ts, type:timestamp, comment:null), ]
+POSTHOOK: Lineage: orc_ppd.da SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:da, type:date, comment:null), ]
POSTHOOK: Lineage: orc_ppd.dec SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:dec, type:decimal(4,2), comment:null), ]
POSTHOOK: Lineage: orc_ppd.f SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:f, type:float, comment:null), ]
POSTHOOK: Lineage: orc_ppd.i SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:i, type:int, comment:null), ]
POSTHOOK: Lineage: orc_ppd.s SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:s, type:string, comment:null), ]
POSTHOOK: Lineage: orc_ppd.si SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:si, type:smallint, comment:null), ]
POSTHOOK: Lineage: orc_ppd.t SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:t, type:tinyint, comment:null), ]
-POSTHOOK: Lineage: orc_ppd.ts SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:ts, type:timestamp, comment:null), ]
POSTHOOK: Lineage: orc_ppd.v EXPRESSION [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:s, type:string, comment:null), ]
PREHOOK: query: select count(*) from orc_ppd
PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16711
+ HDFS_BYTES_READ: 16677
HDFS_BYTES_WRITTEN: 104
HDFS_READ_OPS: 5
HDFS_LARGE_READ_OPS: 0
@@ -221,7 +213,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2100
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_MISS: 2
NUM_DECODED_BATCHES: 1
@@ -248,7 +240,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 1501
+ HDFS_BYTES_READ: 1467
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -258,7 +250,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
ALLOCATED_BYTES: 524288
ALLOCATED_USED_BYTES: 269
@@ -285,7 +277,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 22
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -310,7 +302,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 16
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -335,7 +327,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -385,7 +377,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 32
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -410,7 +402,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 32
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -435,7 +427,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 1697
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -460,7 +452,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 12
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -485,7 +477,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 1713
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -510,7 +502,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -535,7 +527,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 50
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -560,7 +552,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 318
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -613,7 +605,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 0
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 2
SELECTED_ROWGROUPS: 0
@@ -633,7 +625,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 0
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 2
SELECTED_ROWGROUPS: 0
@@ -657,7 +649,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 6166
+ HDFS_BYTES_READ: 6132
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -667,7 +659,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
ALLOCATED_BYTES: 786432
ALLOCATED_USED_BYTES: 11299
@@ -695,7 +687,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -720,7 +712,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -759,7 +751,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2100
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -784,7 +776,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 0
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 2
SELECTED_ROWGROUPS: 0
@@ -804,7 +796,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -829,7 +821,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -854,7 +846,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -879,7 +871,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 81
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -904,7 +896,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 74
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -929,7 +921,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 12
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -954,7 +946,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 13
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -1004,7 +996,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 7
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -1029,7 +1021,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 0
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 2
SELECTED_ROWGROUPS: 0
@@ -1049,7 +1041,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 0
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 2
SELECTED_ROWGROUPS: 0
@@ -1069,7 +1061,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 0
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 2
SELECTED_ROWGROUPS: 0
@@ -1089,7 +1081,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -1114,7 +1106,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -1139,7 +1131,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 4229
CACHE_MISS_BYTES: 0
@@ -1164,7 +1156,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 4229
CACHE_MISS_BYTES: 0
@@ -1179,7 +1171,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 5215
+ HDFS_BYTES_READ: 5181
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1189,7 +1181,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
ALLOCATED_BYTES: 262144
ALLOCATED_USED_BYTES: 8400
@@ -1217,7 +1209,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 4809
CACHE_MISS_BYTES: 0
@@ -1242,7 +1234,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 4809
CACHE_MISS_BYTES: 0
@@ -1267,7 +1259,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 4809
CACHE_MISS_BYTES: 0
@@ -1286,39 +1278,16 @@ PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@alltypesorc
PREHOOK: Output: database:default
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: create temporary table tmp_orcppd
- stored as orc
- as select ctinyint, csmallint, cint , cbigint, cfloat, cdouble,
- cstring1, cstring2, ctimestamp1, ctimestamp2
- from alltypesorc limit 20
-POSTHOOK: type: CREATETABLE_AS_SELECT
-POSTHOOK: Input: default@alltypesorc
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@tmp_orcppd
+Stage-1 LLAP IO COUNTERS:
+ SELECTED_ROWGROUPS: 3
PREHOOK: query: insert into table tmp_orcppd
values(null, null, null, null, null,
null, null, null, null, null)
PREHOOK: type: QUERY
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: insert into table tmp_orcppd
- values(null, null, null, null, null,
- null, null, null, null, null)
-POSTHOOK: type: QUERY
-POSTHOOK: Output: default@tmp_orcppd
-POSTHOOK: Lineage: tmp_orcppd.cbigint EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.cdouble EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.cfloat EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.cint EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.csmallint EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.cstring1 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.cstring2 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.ctimestamp1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.ctimestamp2 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.ctinyint EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+Stage-1 LLAP IO COUNTERS:
PREHOOK: query: drop table if exists tbl_orcppd_1_1
PREHOOK: type: DROPTABLE
-POSTHOOK: query: drop table if exists tbl_orcppd_1_1
-POSTHOOK: type: DROPTABLE
PREHOOK: query: create table tbl_orcppd_1_1 as
select count(*) from tmp_orcppd
where ctimestamp1> current_timestamp() and
@@ -1329,25 +1298,10 @@ PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@tmp_orcppd
PREHOOK: Output: database:default
PREHOOK: Output: default@tbl_orcppd_1_1
-POSTHOOK: query: create table tbl_orcppd_1_1 as
- select count(*) from tmp_orcppd
- where ctimestamp1> current_timestamp() and
- ctimestamp2 > current_timestamp() and
- cstring1 like 'a*' and
- cstring2 like 'a*'
-POSTHOOK: type: CREATETABLE_AS_SELECT
-POSTHOOK: Input: default@tmp_orcppd
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@tbl_orcppd_1_1
-POSTHOOK: Lineage: tbl_orcppd_1_1._c0 EXPRESSION [(tmp_orcppd)tmp_orcppd.null, ]
PREHOOK: query: drop table if exists tmp_orcppd
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@tmp_orcppd
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: drop table if exists tmp_orcppd
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@tmp_orcppd
-POSTHOOK: Output: default@tmp_orcppd
PREHOOK: query: create temporary table tmp_orcppd
stored as orc
as select ctimestamp1, ctimestamp2
@@ -1356,28 +1310,15 @@ PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@alltypesorc
PREHOOK: Output: database:default
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: create temporary table tmp_orcppd
- stored as orc
- as select ctimestamp1, ctimestamp2
- from alltypesorc limit 10
-POSTHOOK: type: CREATETABLE_AS_SELECT
-POSTHOOK: Input: default@alltypesorc
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@tmp_orcppd
+Stage-1 LLAP IO COUNTERS:
+ SELECTED_ROWGROUPS: 3
PREHOOK: query: insert into table tmp_orcppd
values(null, null)
PREHOOK: type: QUERY
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: insert into table tmp_orcppd
- values(null, null)
-POSTHOOK: type: QUERY
-POSTHOOK: Output: default@tmp_orcppd
-POSTHOOK: Lineage: tmp_orcppd.ctimestamp1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.ctimestamp2 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+Stage-1 LLAP IO COUNTERS:
PREHOOK: query: drop table if exists tbl_orcppd_2_1
PREHOOK: type: DROPTABLE
-POSTHOOK: query: drop table if exists tbl_orcppd_2_1
-POSTHOOK: type: DROPTABLE
PREHOOK: query: create table tbl_orcppd_2_1 as
select count(*) from tmp_orcppd
where ctimestamp1 in (cast('2065-08-13 19:03:52' as timestamp), cast('2071-01-16 20:21:17' as timestamp), current_timestamp())
@@ -1385,68 +1326,34 @@ PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@tmp_orcppd
PREHOOK: Output: database:default
PREHOOK: Output: default@tbl_orcppd_2_1
-POSTHOOK: query: create table tbl_orcppd_2_1 as
- select count(*) from tmp_orcppd
- where ctimestamp1 in (cast('2065-08-13 19:03:52' as timestamp), cast('2071-01-16 20:21:17' as timestamp), current_timestamp())
-POSTHOOK: type: CREATETABLE_AS_SELECT
-POSTHOOK: Input: default@tmp_orcppd
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@tbl_orcppd_2_1
-POSTHOOK: Lineage: tbl_orcppd_2_1._c0 EXPRESSION [(tmp_orcppd)tmp_orcppd.null, ]
PREHOOK: query: drop table if exists tmp_orcppd
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@tmp_orcppd
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: drop table if exists tmp_orcppd
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@tmp_orcppd
-POSTHOOK: Output: default@tmp_orcppd
PREHOOK: query: create temporary table tmp_orcppd
stored as orc
- as select ts, da
- from orc_ppd_staging
+ as select ts, cast(ts as date)
+ from staging
PREHOOK: type: CREATETABLE_AS_SELECT
-PREHOOK: Input: default@orc_ppd_staging
+PREHOOK: Input: default@staging
PREHOOK: Output: database:default
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: create temporary table tmp_orcppd
- stored as orc
- as select ts, da
- from orc_ppd_staging
-POSTHOOK: type: CREATETABLE_AS_SELECT
-POSTHOOK: Input: default@orc_ppd_staging
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@tmp_orcppd
+Stage-1 LLAP IO COUNTERS:
PREHOOK: query: insert into table tmp_orcppd
values(null, null)
PREHOOK: type: QUERY
PREHOOK: Output: default@tmp_orcppd
-POSTHOOK: query: insert into table tmp_orcppd
- values(null, null)
-POSTHOOK: type: QUERY
-POSTHOOK: Output: default@tmp_orcppd
-POSTHOOK: Lineage: tmp_orcppd.da EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: tmp_orcppd.ts EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+Stage-1 LLAP IO COUNTERS:
PREHOOK: query: drop table if exists tbl_orcppd_3_1
PREHOOK: type: DROPTABLE
-POSTHOOK: query: drop table if exists tbl_orcppd_3_1
-POSTHOOK: type: DROPTABLE
PREHOOK: query: create table tbl_orcppd_3_1 as
select count(*) from tmp_orcppd
- group by ts, da
+ group by ts, cast(ts as date)
having ts in (select ctimestamp1 from alltypesorc limit 10)
PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@alltypesorc
PREHOOK: Input: default@tmp_orcppd
PREHOOK: Output: database:default
PREHOOK: Output: default@tbl_orcppd_3_1
-POSTHOOK: query: create table tbl_orcppd_3_1 as
- select count(*) from tmp_orcppd
- group by ts, da
- having ts in (select ctimestamp1 from alltypesorc limit 10)
-POSTHOOK: type: CREATETABLE_AS_SELECT
-POSTHOOK: Input: default@alltypesorc
-POSTHOOK: Input: default@tmp_orcppd
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@tbl_orcppd_3_1
-POSTHOOK: Lineage: tbl_orcppd_3_1._c0 EXPRESSION [(tmp_orcppd)tmp_orcppd.null, ]
+Stage-1 LLAP IO COUNTERS:
+ SELECTED_ROWGROUPS: 4
http://git-wip-us.apache.org/repos/asf/hive/blob/eb29bd12/ql/src/test/results/clientpositive/llap/orc_ppd_schema_evol_3a.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/orc_ppd_schema_evol_3a.q.out b/ql/src/test/results/clientpositive/llap/orc_ppd_schema_evol_3a.q.out
index d73b583..4cc8984 100644
--- a/ql/src/test/results/clientpositive/llap/orc_ppd_schema_evol_3a.q.out
+++ b/ql/src/test/results/clientpositive/llap/orc_ppd_schema_evol_3a.q.out
@@ -57,7 +57,6 @@ PREHOOK: query: CREATE TABLE orc_ppd_staging(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
@@ -75,18 +74,17 @@ POSTHOOK: query: CREATE TABLE orc_ppd_staging(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@orc_ppd_staging
-PREHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from staging order by t, s
+PREHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), dec, bin from staging order by t, s
PREHOOK: type: QUERY
PREHOOK: Input: default@staging
PREHOOK: Output: default@orc_ppd_staging
-POSTHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from staging order by t, s
+POSTHOOK: query: insert overwrite table orc_ppd_staging select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), dec, bin from staging order by t, s
POSTHOOK: type: QUERY
POSTHOOK: Input: default@staging
POSTHOOK: Output: default@orc_ppd_staging
@@ -102,13 +100,12 @@ POSTHOOK: Lineage: orc_ppd_staging.i SIMPLE [(staging)staging.FieldSchema(name:i
POSTHOOK: Lineage: orc_ppd_staging.s SIMPLE [(staging)staging.FieldSchema(name:s, type:string, comment:null), ]
POSTHOOK: Lineage: orc_ppd_staging.si SIMPLE [(staging)staging.FieldSchema(name:si, type:smallint, comment:null), ]
POSTHOOK: Lineage: orc_ppd_staging.t SIMPLE [(staging)staging.FieldSchema(name:t, type:tinyint, comment:null), ]
-POSTHOOK: Lineage: orc_ppd_staging.ts SIMPLE [(staging)staging.FieldSchema(name:ts, type:timestamp, comment:null), ]
POSTHOOK: Lineage: orc_ppd_staging.v EXPRESSION [(staging)staging.FieldSchema(name:s, type:string, comment:null), ]
-PREHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11","1990-03-11 10:11:58.703308",-71.54,"aaa" from staging limit 1
+PREHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11",-71.54,"aaa" from staging limit 1
PREHOOK: type: QUERY
PREHOOK: Input: default@staging
PREHOOK: Output: default@orc_ppd_staging
-POSTHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11","1990-03-11 10:11:58.703308",-71.54,"aaa" from staging limit 1
+POSTHOOK: query: insert into orc_ppd_staging select -10,-321,-65680,-4294967430,-97.94,-13.07,true,"aaa","aaa","aaa","1990-03-11",-71.54,"aaa" from staging limit 1
POSTHOOK: type: QUERY
POSTHOOK: Input: default@staging
POSTHOOK: Output: default@orc_ppd_staging
@@ -124,13 +121,12 @@ POSTHOOK: Lineage: orc_ppd_staging.i EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.s SIMPLE []
POSTHOOK: Lineage: orc_ppd_staging.si EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.t EXPRESSION []
-POSTHOOK: Lineage: orc_ppd_staging.ts EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.v EXPRESSION []
-PREHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11","2023-03-11 10:11:58.703308",71.54,"zzz" from staging limit 1
+PREHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11",71.54,"zzz" from staging limit 1
PREHOOK: type: QUERY
PREHOOK: Input: default@staging
PREHOOK: Output: default@orc_ppd_staging
-POSTHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11","2023-03-11 10:11:58.703308",71.54,"zzz" from staging limit 1
+POSTHOOK: query: insert into orc_ppd_staging select 127,331,65690,4294967440,107.94,23.07,true,"zzz","zzz","zzz","2023-03-11",71.54,"zzz" from staging limit 1
POSTHOOK: type: QUERY
POSTHOOK: Input: default@staging
POSTHOOK: Output: default@orc_ppd_staging
@@ -146,7 +142,6 @@ POSTHOOK: Lineage: orc_ppd_staging.i SIMPLE []
POSTHOOK: Lineage: orc_ppd_staging.s SIMPLE []
POSTHOOK: Lineage: orc_ppd_staging.si EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.t EXPRESSION []
-POSTHOOK: Lineage: orc_ppd_staging.ts EXPRESSION []
POSTHOOK: Lineage: orc_ppd_staging.v EXPRESSION []
PREHOOK: query: CREATE TABLE orc_ppd(t tinyint,
si smallint,
@@ -159,7 +154,6 @@ PREHOOK: query: CREATE TABLE orc_ppd(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
@@ -177,18 +171,17 @@ POSTHOOK: query: CREATE TABLE orc_ppd(t tinyint,
c char(50),
v varchar(50),
da date,
- ts timestamp,
dec decimal(4,2),
bin binary)
STORED AS ORC tblproperties("orc.row.index.stride" = "1000", "orc.bloom.filter.columns"="*")
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@orc_ppd
-PREHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from orc_ppd_staging order by t, s
+PREHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), da, dec, bin from orc_ppd_staging order by t, s
PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd_staging
PREHOOK: Output: default@orc_ppd
-POSTHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), cast(ts as date), ts, dec, bin from orc_ppd_staging order by t, s
+POSTHOOK: query: insert overwrite table orc_ppd select t, si, i, b, f, d, bo, s, cast(s as char(50)), cast(s as varchar(50)), da, dec, bin from orc_ppd_staging order by t, s
POSTHOOK: type: QUERY
POSTHOOK: Input: default@orc_ppd_staging
POSTHOOK: Output: default@orc_ppd
@@ -197,21 +190,20 @@ POSTHOOK: Lineage: orc_ppd.bin SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSch
POSTHOOK: Lineage: orc_ppd.bo SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:bo, type:boolean, comment:null), ]
POSTHOOK: Lineage: orc_ppd.c EXPRESSION [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:s, type:string, comment:null), ]
POSTHOOK: Lineage: orc_ppd.d SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:d, type:double, comment:null), ]
-POSTHOOK: Lineage: orc_ppd.da EXPRESSION [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:ts, type:timestamp, comment:null), ]
+POSTHOOK: Lineage: orc_ppd.da SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:da, type:date, comment:null), ]
POSTHOOK: Lineage: orc_ppd.dec SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:dec, type:decimal(4,2), comment:null), ]
POSTHOOK: Lineage: orc_ppd.f SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:f, type:float, comment:null), ]
POSTHOOK: Lineage: orc_ppd.i SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:i, type:int, comment:null), ]
POSTHOOK: Lineage: orc_ppd.s SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:s, type:string, comment:null), ]
POSTHOOK: Lineage: orc_ppd.si SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:si, type:smallint, comment:null), ]
POSTHOOK: Lineage: orc_ppd.t SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:t, type:tinyint, comment:null), ]
-POSTHOOK: Lineage: orc_ppd.ts SIMPLE [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:ts, type:timestamp, comment:null), ]
POSTHOOK: Lineage: orc_ppd.v EXPRESSION [(orc_ppd_staging)orc_ppd_staging.FieldSchema(name:s, type:string, comment:null), ]
PREHOOK: query: select count(*) from orc_ppd where t > 127
PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17046
+ HDFS_BYTES_READ: 17012
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 6
HDFS_LARGE_READ_OPS: 0
@@ -221,7 +213,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
ALLOCATED_BYTES: 524288
ALLOCATED_USED_BYTES: 269
@@ -261,7 +253,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -286,7 +278,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -311,7 +303,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -336,7 +328,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 249
CACHE_MISS_BYTES: 0
@@ -355,7 +347,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -365,7 +357,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
0
@@ -388,7 +380,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -398,7 +390,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -407,7 +399,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -417,7 +409,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -426,7 +418,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -436,7 +428,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -445,7 +437,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -455,7 +447,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -468,7 +460,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -478,7 +470,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
0
@@ -501,7 +493,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -511,7 +503,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -520,7 +512,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -530,7 +522,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -539,7 +531,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -549,7 +541,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -558,7 +550,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -568,7 +560,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -581,7 +573,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -591,7 +583,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 0
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
0
@@ -614,7 +606,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -624,7 +616,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -633,7 +625,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -643,7 +635,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -652,7 +644,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -662,7 +654,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -671,7 +663,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -681,7 +673,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -694,7 +686,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 104
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -704,7 +696,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 1566
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
1566
@@ -713,7 +705,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 104
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -723,7 +715,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 1566
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
1566
@@ -732,7 +724,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -742,7 +734,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -751,7 +743,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -761,7 +753,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 8
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
8
@@ -770,7 +762,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 16936
+ HDFS_BYTES_READ: 16902
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -780,7 +772,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -789,7 +781,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 17909
+ HDFS_BYTES_READ: 17875
HDFS_BYTES_WRITTEN: 102
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -799,7 +791,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 18
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
18
@@ -808,7 +800,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 5215
+ HDFS_BYTES_READ: 5181
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -818,7 +810,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
ALLOCATED_BYTES: 262144
ALLOCATED_USED_BYTES: 8400
@@ -846,7 +838,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 4809
CACHE_MISS_BYTES: 0
@@ -865,7 +857,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 21496
+ HDFS_BYTES_READ: 21462
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -875,7 +867,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
2
@@ -884,7 +876,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 23556
+ HDFS_BYTES_READ: 23522
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -894,7 +886,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
2
@@ -907,7 +899,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 21496
+ HDFS_BYTES_READ: 21462
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -917,7 +909,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
2
@@ -926,7 +918,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 23556
+ HDFS_BYTES_READ: 23522
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -936,7 +928,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 2
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
2
@@ -945,7 +937,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 4402
+ HDFS_BYTES_READ: 4368
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -955,7 +947,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
ALLOCATED_BYTES: 786432
ALLOCATED_USED_BYTES: 11299
@@ -983,7 +975,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -1002,7 +994,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 20667
+ HDFS_BYTES_READ: 20633
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1012,7 +1004,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
6
@@ -1021,7 +1013,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 22574
+ HDFS_BYTES_READ: 22540
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1031,7 +1023,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
6
@@ -1044,7 +1036,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 20667
+ HDFS_BYTES_READ: 20633
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1054,7 +1046,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
6
@@ -1063,7 +1055,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 22574
+ HDFS_BYTES_READ: 22540
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1073,7 +1065,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
6
@@ -1086,7 +1078,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 20667
+ HDFS_BYTES_READ: 20633
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1096,7 +1088,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
6
@@ -1105,7 +1097,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 22574
+ HDFS_BYTES_READ: 22540
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1115,7 +1107,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
6
@@ -1138,7 +1130,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -1163,7 +1155,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 6
Stage-1 LLAP IO COUNTERS:
CACHE_HIT_BYTES: 3980
CACHE_MISS_BYTES: 0
@@ -1182,7 +1174,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 18785
+ HDFS_BYTES_READ: 18751
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1192,7 +1184,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 4
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
4
@@ -1201,7 +1193,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 18785
+ HDFS_BYTES_READ: 18751
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1211,7 +1203,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 4
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
4
@@ -1220,7 +1212,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 20256
+ HDFS_BYTES_READ: 20222
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1230,7 +1222,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 1000
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 4
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
4
@@ -1239,7 +1231,7 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@orc_ppd
#### A masked pattern was here ####
Stage-1 FILE SYSTEM COUNTERS:
- HDFS_BYTES_READ: 20256
+ HDFS_BYTES_READ: 20222
HDFS_BYTES_WRITTEN: 101
HDFS_READ_OPS: 4
HDFS_LARGE_READ_OPS: 0
@@ -1249,7 +1241,7 @@ Stage-1 HIVE COUNTERS:
DESERIALIZE_ERRORS: 0
RECORDS_IN_Map_1: 2100
RECORDS_OUT_0: 1
- RECORDS_OUT_INTERMEDIATE_Map_1: 1
+ RECORDS_OUT_INTERMEDIATE_Map_1: 4
Stage-1 LLAP IO COUNTERS:
METADATA_CACHE_HIT: 1
4
[47/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
index 7f0ca4e,d605049..a5fa776
--- a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
+++ b/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
@@@ -4481,16 -4479,11 +4481,21 @@@ void Table::__set_temporary(const bool
__isset.temporary = true;
}
+ void Table::__set_rewriteEnabled(const bool val) {
+ this->rewriteEnabled = val;
+ __isset.rewriteEnabled = true;
+ }
+
+void Table::__set_mmNextWriteId(const int64_t val) {
+ this->mmNextWriteId = val;
+__isset.mmNextWriteId = true;
+}
+
+void Table::__set_mmWatermarkWriteId(const int64_t val) {
+ this->mmWatermarkWriteId = val;
+__isset.mmWatermarkWriteId = true;
+}
+
uint32_t Table::read(::apache::thrift::protocol::TProtocol* iprot) {
apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@@ -4652,21 -4645,13 +4657,29 @@@
}
break;
case 15:
+ if (ftype == ::apache::thrift::protocol::T_BOOL) {
+ xfer += iprot->readBool(this->rewriteEnabled);
+ this->__isset.rewriteEnabled = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
++ case 16:
+ if (ftype == ::apache::thrift::protocol::T_I64) {
+ xfer += iprot->readI64(this->mmNextWriteId);
+ this->__isset.mmNextWriteId = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
- case 16:
++ case 17:
+ if (ftype == ::apache::thrift::protocol::T_I64) {
+ xfer += iprot->readI64(this->mmWatermarkWriteId);
+ this->__isset.mmWatermarkWriteId = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
default:
xfer += iprot->skip(ftype);
break;
@@@ -4759,16 -4744,11 +4772,21 @@@ uint32_t Table::write(::apache::thrift:
xfer += oprot->writeBool(this->temporary);
xfer += oprot->writeFieldEnd();
}
+ if (this->__isset.rewriteEnabled) {
+ xfer += oprot->writeFieldBegin("rewriteEnabled", ::apache::thrift::protocol::T_BOOL, 15);
+ xfer += oprot->writeBool(this->rewriteEnabled);
+ xfer += oprot->writeFieldEnd();
+ }
+ if (this->__isset.mmNextWriteId) {
- xfer += oprot->writeFieldBegin("mmNextWriteId", ::apache::thrift::protocol::T_I64, 15);
++ xfer += oprot->writeFieldBegin("mmNextWriteId", ::apache::thrift::protocol::T_I64, 16);
+ xfer += oprot->writeI64(this->mmNextWriteId);
+ xfer += oprot->writeFieldEnd();
+ }
+ if (this->__isset.mmWatermarkWriteId) {
- xfer += oprot->writeFieldBegin("mmWatermarkWriteId", ::apache::thrift::protocol::T_I64, 16);
++ xfer += oprot->writeFieldBegin("mmWatermarkWriteId", ::apache::thrift::protocol::T_I64, 17);
+ xfer += oprot->writeI64(this->mmWatermarkWriteId);
+ xfer += oprot->writeFieldEnd();
+ }
xfer += oprot->writeFieldStop();
xfer += oprot->writeStructEnd();
return xfer;
@@@ -4790,8 -4770,7 +4808,9 @@@ void swap(Table &a, Table &b)
swap(a.tableType, b.tableType);
swap(a.privileges, b.privileges);
swap(a.temporary, b.temporary);
+ swap(a.rewriteEnabled, b.rewriteEnabled);
+ swap(a.mmNextWriteId, b.mmNextWriteId);
+ swap(a.mmWatermarkWriteId, b.mmWatermarkWriteId);
swap(a.__isset, b.__isset);
}
@@@ -4810,8 -4789,7 +4829,9 @@@ Table::Table(const Table& other221)
tableType = other221.tableType;
privileges = other221.privileges;
temporary = other221.temporary;
+ rewriteEnabled = other221.rewriteEnabled;
+ mmNextWriteId = other221.mmNextWriteId;
+ mmWatermarkWriteId = other221.mmWatermarkWriteId;
__isset = other221.__isset;
}
Table& Table::operator=(const Table& other222) {
@@@ -4829,8 -4807,7 +4849,9 @@@
tableType = other222.tableType;
privileges = other222.privileges;
temporary = other222.temporary;
+ rewriteEnabled = other222.rewriteEnabled;
+ mmNextWriteId = other222.mmNextWriteId;
+ mmWatermarkWriteId = other222.mmWatermarkWriteId;
__isset = other222.__isset;
return *this;
}
@@@ -4851,8 -4828,7 +4872,9 @@@ void Table::printTo(std::ostream& out)
out << ", " << "tableType=" << to_string(tableType);
out << ", " << "privileges="; (__isset.privileges ? (out << to_string(privileges)) : (out << "<null>"));
out << ", " << "temporary="; (__isset.temporary ? (out << to_string(temporary)) : (out << "<null>"));
+ out << ", " << "rewriteEnabled="; (__isset.rewriteEnabled ? (out << to_string(rewriteEnabled)) : (out << "<null>"));
+ out << ", " << "mmNextWriteId="; (__isset.mmNextWriteId ? (out << to_string(mmNextWriteId)) : (out << "<null>"));
+ out << ", " << "mmWatermarkWriteId="; (__isset.mmWatermarkWriteId ? (out << to_string(mmWatermarkWriteId)) : (out << "<null>"));
out << ")";
}
@@@ -17815,26 -17990,25 +18036,26 @@@ uint32_t GetNextWriteIdRequest::write(:
return xfer;
}
-void swap(GetAllFunctionsResponse &a, GetAllFunctionsResponse &b) {
+void swap(GetNextWriteIdRequest &a, GetNextWriteIdRequest &b) {
using ::std::swap;
- swap(a.functions, b.functions);
- swap(a.__isset, b.__isset);
+ swap(a.dbName, b.dbName);
+ swap(a.tblName, b.tblName);
}
- GetNextWriteIdRequest::GetNextWriteIdRequest(const GetNextWriteIdRequest& other739) {
- dbName = other739.dbName;
- tblName = other739.tblName;
-GetAllFunctionsResponse::GetAllFunctionsResponse(const GetAllFunctionsResponse& other753) {
- functions = other753.functions;
- __isset = other753.__isset;
++GetNextWriteIdRequest::GetNextWriteIdRequest(const GetNextWriteIdRequest& other747) {
++ dbName = other747.dbName;
++ tblName = other747.tblName;
}
- GetNextWriteIdRequest& GetNextWriteIdRequest::operator=(const GetNextWriteIdRequest& other740) {
- dbName = other740.dbName;
- tblName = other740.tblName;
-GetAllFunctionsResponse& GetAllFunctionsResponse::operator=(const GetAllFunctionsResponse& other754) {
- functions = other754.functions;
- __isset = other754.__isset;
++GetNextWriteIdRequest& GetNextWriteIdRequest::operator=(const GetNextWriteIdRequest& other748) {
++ dbName = other748.dbName;
++ tblName = other748.tblName;
return *this;
}
-void GetAllFunctionsResponse::printTo(std::ostream& out) const {
+void GetNextWriteIdRequest::printTo(std::ostream& out) const {
using ::apache::thrift::to_string;
- out << "GetAllFunctionsResponse(";
- out << "functions="; (__isset.functions ? (out << to_string(functions)) : (out << "<null>"));
+ out << "GetNextWriteIdRequest(";
+ out << "dbName=" << to_string(dbName);
+ out << ", " << "tblName=" << to_string(tblName);
out << ")";
}
@@@ -17905,22 -18101,22 +18126,22 @@@ uint32_t GetNextWriteIdResult::write(::
return xfer;
}
-void swap(ClientCapabilities &a, ClientCapabilities &b) {
+void swap(GetNextWriteIdResult &a, GetNextWriteIdResult &b) {
using ::std::swap;
- swap(a.values, b.values);
+ swap(a.writeId, b.writeId);
}
- GetNextWriteIdResult::GetNextWriteIdResult(const GetNextWriteIdResult& other741) {
- writeId = other741.writeId;
-ClientCapabilities::ClientCapabilities(const ClientCapabilities& other762) {
- values = other762.values;
++GetNextWriteIdResult::GetNextWriteIdResult(const GetNextWriteIdResult& other749) {
++ writeId = other749.writeId;
}
- GetNextWriteIdResult& GetNextWriteIdResult::operator=(const GetNextWriteIdResult& other742) {
- writeId = other742.writeId;
-ClientCapabilities& ClientCapabilities::operator=(const ClientCapabilities& other763) {
- values = other763.values;
++GetNextWriteIdResult& GetNextWriteIdResult::operator=(const GetNextWriteIdResult& other750) {
++ writeId = other750.writeId;
return *this;
}
-void ClientCapabilities::printTo(std::ostream& out) const {
+void GetNextWriteIdResult::printTo(std::ostream& out) const {
using ::apache::thrift::to_string;
- out << "ClientCapabilities(";
- out << "values=" << to_string(values);
+ out << "GetNextWriteIdResult(";
+ out << "writeId=" << to_string(writeId);
out << ")";
}
@@@ -18052,30 -18228,29 +18273,30 @@@ void swap(FinalizeWriteIdRequest &a, Fi
using ::std::swap;
swap(a.dbName, b.dbName);
swap(a.tblName, b.tblName);
- swap(a.capabilities, b.capabilities);
- swap(a.__isset, b.__isset);
+ swap(a.writeId, b.writeId);
+ swap(a.commit, b.commit);
}
- FinalizeWriteIdRequest::FinalizeWriteIdRequest(const FinalizeWriteIdRequest& other743) {
- dbName = other743.dbName;
- tblName = other743.tblName;
- writeId = other743.writeId;
- commit = other743.commit;
-GetTableRequest::GetTableRequest(const GetTableRequest& other764) {
- dbName = other764.dbName;
- tblName = other764.tblName;
- capabilities = other764.capabilities;
- __isset = other764.__isset;
++FinalizeWriteIdRequest::FinalizeWriteIdRequest(const FinalizeWriteIdRequest& other751) {
++ dbName = other751.dbName;
++ tblName = other751.tblName;
++ writeId = other751.writeId;
++ commit = other751.commit;
}
- FinalizeWriteIdRequest& FinalizeWriteIdRequest::operator=(const FinalizeWriteIdRequest& other744) {
- dbName = other744.dbName;
- tblName = other744.tblName;
- writeId = other744.writeId;
- commit = other744.commit;
-GetTableRequest& GetTableRequest::operator=(const GetTableRequest& other765) {
- dbName = other765.dbName;
- tblName = other765.tblName;
- capabilities = other765.capabilities;
- __isset = other765.__isset;
++FinalizeWriteIdRequest& FinalizeWriteIdRequest::operator=(const FinalizeWriteIdRequest& other752) {
++ dbName = other752.dbName;
++ tblName = other752.tblName;
++ writeId = other752.writeId;
++ commit = other752.commit;
return *this;
}
-void GetTableRequest::printTo(std::ostream& out) const {
+void FinalizeWriteIdRequest::printTo(std::ostream& out) const {
using ::apache::thrift::to_string;
- out << "GetTableRequest(";
+ out << "FinalizeWriteIdRequest(";
out << "dbName=" << to_string(dbName);
out << ", " << "tblName=" << to_string(tblName);
- out << ", " << "capabilities="; (__isset.capabilities ? (out << to_string(capabilities)) : (out << "<null>"));
+ out << ", " << "writeId=" << to_string(writeId);
+ out << ", " << "commit=" << to_string(commit);
out << ")";
}
@@@ -18122,22 -18321,22 +18343,22 @@@ uint32_t FinalizeWriteIdResult::write(:
return xfer;
}
-void swap(GetTableResult &a, GetTableResult &b) {
+void swap(FinalizeWriteIdResult &a, FinalizeWriteIdResult &b) {
using ::std::swap;
- swap(a.table, b.table);
+ (void) a;
+ (void) b;
}
- FinalizeWriteIdResult::FinalizeWriteIdResult(const FinalizeWriteIdResult& other745) {
- (void) other745;
-GetTableResult::GetTableResult(const GetTableResult& other766) {
- table = other766.table;
++FinalizeWriteIdResult::FinalizeWriteIdResult(const FinalizeWriteIdResult& other753) {
++ (void) other753;
}
- FinalizeWriteIdResult& FinalizeWriteIdResult::operator=(const FinalizeWriteIdResult& other746) {
- (void) other746;
-GetTableResult& GetTableResult::operator=(const GetTableResult& other767) {
- table = other767.table;
++FinalizeWriteIdResult& FinalizeWriteIdResult::operator=(const FinalizeWriteIdResult& other754) {
++ (void) other754;
return *this;
}
-void GetTableResult::printTo(std::ostream& out) const {
+void FinalizeWriteIdResult::printTo(std::ostream& out) const {
using ::apache::thrift::to_string;
- out << "GetTableResult(";
- out << "table=" << to_string(table);
+ out << "FinalizeWriteIdResult(";
out << ")";
}
@@@ -18246,30 -18463,33 +18467,30 @@@ uint32_t HeartbeatWriteIdRequest::write
return xfer;
}
-void swap(GetTablesRequest &a, GetTablesRequest &b) {
+void swap(HeartbeatWriteIdRequest &a, HeartbeatWriteIdRequest &b) {
using ::std::swap;
swap(a.dbName, b.dbName);
- swap(a.tblNames, b.tblNames);
- swap(a.capabilities, b.capabilities);
- swap(a.__isset, b.__isset);
+ swap(a.tblName, b.tblName);
+ swap(a.writeId, b.writeId);
}
- HeartbeatWriteIdRequest::HeartbeatWriteIdRequest(const HeartbeatWriteIdRequest& other747) {
- dbName = other747.dbName;
- tblName = other747.tblName;
- writeId = other747.writeId;
-GetTablesRequest::GetTablesRequest(const GetTablesRequest& other774) {
- dbName = other774.dbName;
- tblNames = other774.tblNames;
- capabilities = other774.capabilities;
- __isset = other774.__isset;
++HeartbeatWriteIdRequest::HeartbeatWriteIdRequest(const HeartbeatWriteIdRequest& other755) {
++ dbName = other755.dbName;
++ tblName = other755.tblName;
++ writeId = other755.writeId;
}
- HeartbeatWriteIdRequest& HeartbeatWriteIdRequest::operator=(const HeartbeatWriteIdRequest& other748) {
- dbName = other748.dbName;
- tblName = other748.tblName;
- writeId = other748.writeId;
-GetTablesRequest& GetTablesRequest::operator=(const GetTablesRequest& other775) {
- dbName = other775.dbName;
- tblNames = other775.tblNames;
- capabilities = other775.capabilities;
- __isset = other775.__isset;
++HeartbeatWriteIdRequest& HeartbeatWriteIdRequest::operator=(const HeartbeatWriteIdRequest& other756) {
++ dbName = other756.dbName;
++ tblName = other756.tblName;
++ writeId = other756.writeId;
return *this;
}
-void GetTablesRequest::printTo(std::ostream& out) const {
+void HeartbeatWriteIdRequest::printTo(std::ostream& out) const {
using ::apache::thrift::to_string;
- out << "GetTablesRequest(";
+ out << "HeartbeatWriteIdRequest(";
out << "dbName=" << to_string(dbName);
- out << ", " << "tblNames="; (__isset.tblNames ? (out << to_string(tblNames)) : (out << "<null>"));
- out << ", " << "capabilities="; (__isset.capabilities ? (out << to_string(capabilities)) : (out << "<null>"));
+ out << ", " << "tblName=" << to_string(tblName);
+ out << ", " << "writeId=" << to_string(writeId);
out << ")";
}
@@@ -18278,947 -18498,11 +18499,947 @@@ HeartbeatWriteIdResult::~HeartbeatWrite
}
-void GetTablesResult::__set_tables(const std::vector<Table> & val) {
- this->tables = val;
-}
-
-uint32_t GetTablesResult::read(::apache::thrift::protocol::TProtocol* iprot) {
+uint32_t HeartbeatWriteIdResult::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ xfer += iprot->skip(ftype);
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ return xfer;
+}
+
+uint32_t HeartbeatWriteIdResult::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("HeartbeatWriteIdResult");
+
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(HeartbeatWriteIdResult &a, HeartbeatWriteIdResult &b) {
+ using ::std::swap;
+ (void) a;
+ (void) b;
+}
+
- HeartbeatWriteIdResult::HeartbeatWriteIdResult(const HeartbeatWriteIdResult& other749) {
- (void) other749;
++HeartbeatWriteIdResult::HeartbeatWriteIdResult(const HeartbeatWriteIdResult& other757) {
++ (void) other757;
+}
- HeartbeatWriteIdResult& HeartbeatWriteIdResult::operator=(const HeartbeatWriteIdResult& other750) {
- (void) other750;
++HeartbeatWriteIdResult& HeartbeatWriteIdResult::operator=(const HeartbeatWriteIdResult& other758) {
++ (void) other758;
+ return *this;
+}
+void HeartbeatWriteIdResult::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "HeartbeatWriteIdResult(";
+ out << ")";
+}
+
+
+GetValidWriteIdsRequest::~GetValidWriteIdsRequest() throw() {
+}
+
+
+void GetValidWriteIdsRequest::__set_dbName(const std::string& val) {
+ this->dbName = val;
+}
+
+void GetValidWriteIdsRequest::__set_tblName(const std::string& val) {
+ this->tblName = val;
+}
+
+uint32_t GetValidWriteIdsRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+ bool isset_dbName = false;
+ bool isset_tblName = false;
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ switch (fid)
+ {
+ case 1:
+ if (ftype == ::apache::thrift::protocol::T_STRING) {
+ xfer += iprot->readString(this->dbName);
+ isset_dbName = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 2:
+ if (ftype == ::apache::thrift::protocol::T_STRING) {
+ xfer += iprot->readString(this->tblName);
+ isset_tblName = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ default:
+ xfer += iprot->skip(ftype);
+ break;
+ }
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ if (!isset_dbName)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ if (!isset_tblName)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ return xfer;
+}
+
+uint32_t GetValidWriteIdsRequest::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("GetValidWriteIdsRequest");
+
+ xfer += oprot->writeFieldBegin("dbName", ::apache::thrift::protocol::T_STRING, 1);
+ xfer += oprot->writeString(this->dbName);
+ xfer += oprot->writeFieldEnd();
+
+ xfer += oprot->writeFieldBegin("tblName", ::apache::thrift::protocol::T_STRING, 2);
+ xfer += oprot->writeString(this->tblName);
+ xfer += oprot->writeFieldEnd();
+
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(GetValidWriteIdsRequest &a, GetValidWriteIdsRequest &b) {
+ using ::std::swap;
+ swap(a.dbName, b.dbName);
+ swap(a.tblName, b.tblName);
+}
+
- GetValidWriteIdsRequest::GetValidWriteIdsRequest(const GetValidWriteIdsRequest& other751) {
- dbName = other751.dbName;
- tblName = other751.tblName;
++GetValidWriteIdsRequest::GetValidWriteIdsRequest(const GetValidWriteIdsRequest& other759) {
++ dbName = other759.dbName;
++ tblName = other759.tblName;
+}
- GetValidWriteIdsRequest& GetValidWriteIdsRequest::operator=(const GetValidWriteIdsRequest& other752) {
- dbName = other752.dbName;
- tblName = other752.tblName;
++GetValidWriteIdsRequest& GetValidWriteIdsRequest::operator=(const GetValidWriteIdsRequest& other760) {
++ dbName = other760.dbName;
++ tblName = other760.tblName;
+ return *this;
+}
+void GetValidWriteIdsRequest::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "GetValidWriteIdsRequest(";
+ out << "dbName=" << to_string(dbName);
+ out << ", " << "tblName=" << to_string(tblName);
+ out << ")";
+}
+
+
+GetValidWriteIdsResult::~GetValidWriteIdsResult() throw() {
+}
+
+
+void GetValidWriteIdsResult::__set_lowWatermarkId(const int64_t val) {
+ this->lowWatermarkId = val;
+}
+
+void GetValidWriteIdsResult::__set_highWatermarkId(const int64_t val) {
+ this->highWatermarkId = val;
+}
+
+void GetValidWriteIdsResult::__set_areIdsValid(const bool val) {
+ this->areIdsValid = val;
+__isset.areIdsValid = true;
+}
+
+void GetValidWriteIdsResult::__set_ids(const std::vector<int64_t> & val) {
+ this->ids = val;
+__isset.ids = true;
+}
+
+uint32_t GetValidWriteIdsResult::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+ bool isset_lowWatermarkId = false;
+ bool isset_highWatermarkId = false;
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ switch (fid)
+ {
+ case 1:
+ if (ftype == ::apache::thrift::protocol::T_I64) {
+ xfer += iprot->readI64(this->lowWatermarkId);
+ isset_lowWatermarkId = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 2:
+ if (ftype == ::apache::thrift::protocol::T_I64) {
+ xfer += iprot->readI64(this->highWatermarkId);
+ isset_highWatermarkId = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 3:
+ if (ftype == ::apache::thrift::protocol::T_BOOL) {
+ xfer += iprot->readBool(this->areIdsValid);
+ this->__isset.areIdsValid = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 4:
+ if (ftype == ::apache::thrift::protocol::T_LIST) {
+ {
+ this->ids.clear();
- uint32_t _size753;
- ::apache::thrift::protocol::TType _etype756;
- xfer += iprot->readListBegin(_etype756, _size753);
- this->ids.resize(_size753);
- uint32_t _i757;
- for (_i757 = 0; _i757 < _size753; ++_i757)
++ uint32_t _size761;
++ ::apache::thrift::protocol::TType _etype764;
++ xfer += iprot->readListBegin(_etype764, _size761);
++ this->ids.resize(_size761);
++ uint32_t _i765;
++ for (_i765 = 0; _i765 < _size761; ++_i765)
+ {
- xfer += iprot->readI64(this->ids[_i757]);
++ xfer += iprot->readI64(this->ids[_i765]);
+ }
+ xfer += iprot->readListEnd();
+ }
+ this->__isset.ids = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ default:
+ xfer += iprot->skip(ftype);
+ break;
+ }
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ if (!isset_lowWatermarkId)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ if (!isset_highWatermarkId)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ return xfer;
+}
+
+uint32_t GetValidWriteIdsResult::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("GetValidWriteIdsResult");
+
+ xfer += oprot->writeFieldBegin("lowWatermarkId", ::apache::thrift::protocol::T_I64, 1);
+ xfer += oprot->writeI64(this->lowWatermarkId);
+ xfer += oprot->writeFieldEnd();
+
+ xfer += oprot->writeFieldBegin("highWatermarkId", ::apache::thrift::protocol::T_I64, 2);
+ xfer += oprot->writeI64(this->highWatermarkId);
+ xfer += oprot->writeFieldEnd();
+
+ if (this->__isset.areIdsValid) {
+ xfer += oprot->writeFieldBegin("areIdsValid", ::apache::thrift::protocol::T_BOOL, 3);
+ xfer += oprot->writeBool(this->areIdsValid);
+ xfer += oprot->writeFieldEnd();
+ }
+ if (this->__isset.ids) {
+ xfer += oprot->writeFieldBegin("ids", ::apache::thrift::protocol::T_LIST, 4);
+ {
+ xfer += oprot->writeListBegin(::apache::thrift::protocol::T_I64, static_cast<uint32_t>(this->ids.size()));
- std::vector<int64_t> ::const_iterator _iter758;
- for (_iter758 = this->ids.begin(); _iter758 != this->ids.end(); ++_iter758)
++ std::vector<int64_t> ::const_iterator _iter766;
++ for (_iter766 = this->ids.begin(); _iter766 != this->ids.end(); ++_iter766)
+ {
- xfer += oprot->writeI64((*_iter758));
++ xfer += oprot->writeI64((*_iter766));
+ }
+ xfer += oprot->writeListEnd();
+ }
+ xfer += oprot->writeFieldEnd();
+ }
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(GetValidWriteIdsResult &a, GetValidWriteIdsResult &b) {
+ using ::std::swap;
+ swap(a.lowWatermarkId, b.lowWatermarkId);
+ swap(a.highWatermarkId, b.highWatermarkId);
+ swap(a.areIdsValid, b.areIdsValid);
+ swap(a.ids, b.ids);
+ swap(a.__isset, b.__isset);
+}
+
- GetValidWriteIdsResult::GetValidWriteIdsResult(const GetValidWriteIdsResult& other759) {
- lowWatermarkId = other759.lowWatermarkId;
- highWatermarkId = other759.highWatermarkId;
- areIdsValid = other759.areIdsValid;
- ids = other759.ids;
- __isset = other759.__isset;
++GetValidWriteIdsResult::GetValidWriteIdsResult(const GetValidWriteIdsResult& other767) {
++ lowWatermarkId = other767.lowWatermarkId;
++ highWatermarkId = other767.highWatermarkId;
++ areIdsValid = other767.areIdsValid;
++ ids = other767.ids;
++ __isset = other767.__isset;
+}
- GetValidWriteIdsResult& GetValidWriteIdsResult::operator=(const GetValidWriteIdsResult& other760) {
- lowWatermarkId = other760.lowWatermarkId;
- highWatermarkId = other760.highWatermarkId;
- areIdsValid = other760.areIdsValid;
- ids = other760.ids;
- __isset = other760.__isset;
++GetValidWriteIdsResult& GetValidWriteIdsResult::operator=(const GetValidWriteIdsResult& other768) {
++ lowWatermarkId = other768.lowWatermarkId;
++ highWatermarkId = other768.highWatermarkId;
++ areIdsValid = other768.areIdsValid;
++ ids = other768.ids;
++ __isset = other768.__isset;
+ return *this;
+}
+void GetValidWriteIdsResult::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "GetValidWriteIdsResult(";
+ out << "lowWatermarkId=" << to_string(lowWatermarkId);
+ out << ", " << "highWatermarkId=" << to_string(highWatermarkId);
+ out << ", " << "areIdsValid="; (__isset.areIdsValid ? (out << to_string(areIdsValid)) : (out << "<null>"));
+ out << ", " << "ids="; (__isset.ids ? (out << to_string(ids)) : (out << "<null>"));
+ out << ")";
+}
+
+
+GetAllFunctionsResponse::~GetAllFunctionsResponse() throw() {
+}
+
+
+void GetAllFunctionsResponse::__set_functions(const std::vector<Function> & val) {
+ this->functions = val;
+__isset.functions = true;
+}
+
+uint32_t GetAllFunctionsResponse::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ switch (fid)
+ {
+ case 1:
+ if (ftype == ::apache::thrift::protocol::T_LIST) {
+ {
+ this->functions.clear();
- uint32_t _size761;
- ::apache::thrift::protocol::TType _etype764;
- xfer += iprot->readListBegin(_etype764, _size761);
- this->functions.resize(_size761);
- uint32_t _i765;
- for (_i765 = 0; _i765 < _size761; ++_i765)
++ uint32_t _size769;
++ ::apache::thrift::protocol::TType _etype772;
++ xfer += iprot->readListBegin(_etype772, _size769);
++ this->functions.resize(_size769);
++ uint32_t _i773;
++ for (_i773 = 0; _i773 < _size769; ++_i773)
+ {
- xfer += this->functions[_i765].read(iprot);
++ xfer += this->functions[_i773].read(iprot);
+ }
+ xfer += iprot->readListEnd();
+ }
+ this->__isset.functions = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ default:
+ xfer += iprot->skip(ftype);
+ break;
+ }
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ return xfer;
+}
+
+uint32_t GetAllFunctionsResponse::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("GetAllFunctionsResponse");
+
+ if (this->__isset.functions) {
+ xfer += oprot->writeFieldBegin("functions", ::apache::thrift::protocol::T_LIST, 1);
+ {
+ xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->functions.size()));
- std::vector<Function> ::const_iterator _iter766;
- for (_iter766 = this->functions.begin(); _iter766 != this->functions.end(); ++_iter766)
++ std::vector<Function> ::const_iterator _iter774;
++ for (_iter774 = this->functions.begin(); _iter774 != this->functions.end(); ++_iter774)
+ {
- xfer += (*_iter766).write(oprot);
++ xfer += (*_iter774).write(oprot);
+ }
+ xfer += oprot->writeListEnd();
+ }
+ xfer += oprot->writeFieldEnd();
+ }
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(GetAllFunctionsResponse &a, GetAllFunctionsResponse &b) {
+ using ::std::swap;
+ swap(a.functions, b.functions);
+ swap(a.__isset, b.__isset);
+}
+
- GetAllFunctionsResponse::GetAllFunctionsResponse(const GetAllFunctionsResponse& other767) {
- functions = other767.functions;
- __isset = other767.__isset;
++GetAllFunctionsResponse::GetAllFunctionsResponse(const GetAllFunctionsResponse& other775) {
++ functions = other775.functions;
++ __isset = other775.__isset;
+}
- GetAllFunctionsResponse& GetAllFunctionsResponse::operator=(const GetAllFunctionsResponse& other768) {
- functions = other768.functions;
- __isset = other768.__isset;
++GetAllFunctionsResponse& GetAllFunctionsResponse::operator=(const GetAllFunctionsResponse& other776) {
++ functions = other776.functions;
++ __isset = other776.__isset;
+ return *this;
+}
+void GetAllFunctionsResponse::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "GetAllFunctionsResponse(";
+ out << "functions="; (__isset.functions ? (out << to_string(functions)) : (out << "<null>"));
+ out << ")";
+}
+
+
+ClientCapabilities::~ClientCapabilities() throw() {
+}
+
+
+void ClientCapabilities::__set_values(const std::vector<ClientCapability::type> & val) {
+ this->values = val;
+}
+
+uint32_t ClientCapabilities::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+ bool isset_values = false;
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ switch (fid)
+ {
+ case 1:
+ if (ftype == ::apache::thrift::protocol::T_LIST) {
+ {
+ this->values.clear();
- uint32_t _size769;
- ::apache::thrift::protocol::TType _etype772;
- xfer += iprot->readListBegin(_etype772, _size769);
- this->values.resize(_size769);
- uint32_t _i773;
- for (_i773 = 0; _i773 < _size769; ++_i773)
++ uint32_t _size777;
++ ::apache::thrift::protocol::TType _etype780;
++ xfer += iprot->readListBegin(_etype780, _size777);
++ this->values.resize(_size777);
++ uint32_t _i781;
++ for (_i781 = 0; _i781 < _size777; ++_i781)
+ {
- int32_t ecast774;
- xfer += iprot->readI32(ecast774);
- this->values[_i773] = (ClientCapability::type)ecast774;
++ int32_t ecast782;
++ xfer += iprot->readI32(ecast782);
++ this->values[_i781] = (ClientCapability::type)ecast782;
+ }
+ xfer += iprot->readListEnd();
+ }
+ isset_values = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ default:
+ xfer += iprot->skip(ftype);
+ break;
+ }
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ if (!isset_values)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ return xfer;
+}
+
+uint32_t ClientCapabilities::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("ClientCapabilities");
+
+ xfer += oprot->writeFieldBegin("values", ::apache::thrift::protocol::T_LIST, 1);
+ {
+ xfer += oprot->writeListBegin(::apache::thrift::protocol::T_I32, static_cast<uint32_t>(this->values.size()));
- std::vector<ClientCapability::type> ::const_iterator _iter775;
- for (_iter775 = this->values.begin(); _iter775 != this->values.end(); ++_iter775)
++ std::vector<ClientCapability::type> ::const_iterator _iter783;
++ for (_iter783 = this->values.begin(); _iter783 != this->values.end(); ++_iter783)
+ {
- xfer += oprot->writeI32((int32_t)(*_iter775));
++ xfer += oprot->writeI32((int32_t)(*_iter783));
+ }
+ xfer += oprot->writeListEnd();
+ }
+ xfer += oprot->writeFieldEnd();
+
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(ClientCapabilities &a, ClientCapabilities &b) {
+ using ::std::swap;
+ swap(a.values, b.values);
+}
+
- ClientCapabilities::ClientCapabilities(const ClientCapabilities& other776) {
- values = other776.values;
++ClientCapabilities::ClientCapabilities(const ClientCapabilities& other784) {
++ values = other784.values;
+}
- ClientCapabilities& ClientCapabilities::operator=(const ClientCapabilities& other777) {
- values = other777.values;
++ClientCapabilities& ClientCapabilities::operator=(const ClientCapabilities& other785) {
++ values = other785.values;
+ return *this;
+}
+void ClientCapabilities::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "ClientCapabilities(";
+ out << "values=" << to_string(values);
+ out << ")";
+}
+
+
+GetTableRequest::~GetTableRequest() throw() {
+}
+
+
+void GetTableRequest::__set_dbName(const std::string& val) {
+ this->dbName = val;
+}
+
+void GetTableRequest::__set_tblName(const std::string& val) {
+ this->tblName = val;
+}
+
+void GetTableRequest::__set_capabilities(const ClientCapabilities& val) {
+ this->capabilities = val;
+__isset.capabilities = true;
+}
+
+uint32_t GetTableRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+ bool isset_dbName = false;
+ bool isset_tblName = false;
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ switch (fid)
+ {
+ case 1:
+ if (ftype == ::apache::thrift::protocol::T_STRING) {
+ xfer += iprot->readString(this->dbName);
+ isset_dbName = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 2:
+ if (ftype == ::apache::thrift::protocol::T_STRING) {
+ xfer += iprot->readString(this->tblName);
+ isset_tblName = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 3:
+ if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+ xfer += this->capabilities.read(iprot);
+ this->__isset.capabilities = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ default:
+ xfer += iprot->skip(ftype);
+ break;
+ }
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ if (!isset_dbName)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ if (!isset_tblName)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ return xfer;
+}
+
+uint32_t GetTableRequest::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("GetTableRequest");
+
+ xfer += oprot->writeFieldBegin("dbName", ::apache::thrift::protocol::T_STRING, 1);
+ xfer += oprot->writeString(this->dbName);
+ xfer += oprot->writeFieldEnd();
+
+ xfer += oprot->writeFieldBegin("tblName", ::apache::thrift::protocol::T_STRING, 2);
+ xfer += oprot->writeString(this->tblName);
+ xfer += oprot->writeFieldEnd();
+
+ if (this->__isset.capabilities) {
+ xfer += oprot->writeFieldBegin("capabilities", ::apache::thrift::protocol::T_STRUCT, 3);
+ xfer += this->capabilities.write(oprot);
+ xfer += oprot->writeFieldEnd();
+ }
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(GetTableRequest &a, GetTableRequest &b) {
+ using ::std::swap;
+ swap(a.dbName, b.dbName);
+ swap(a.tblName, b.tblName);
+ swap(a.capabilities, b.capabilities);
+ swap(a.__isset, b.__isset);
+}
+
- GetTableRequest::GetTableRequest(const GetTableRequest& other778) {
- dbName = other778.dbName;
- tblName = other778.tblName;
- capabilities = other778.capabilities;
- __isset = other778.__isset;
++GetTableRequest::GetTableRequest(const GetTableRequest& other786) {
++ dbName = other786.dbName;
++ tblName = other786.tblName;
++ capabilities = other786.capabilities;
++ __isset = other786.__isset;
+}
- GetTableRequest& GetTableRequest::operator=(const GetTableRequest& other779) {
- dbName = other779.dbName;
- tblName = other779.tblName;
- capabilities = other779.capabilities;
- __isset = other779.__isset;
++GetTableRequest& GetTableRequest::operator=(const GetTableRequest& other787) {
++ dbName = other787.dbName;
++ tblName = other787.tblName;
++ capabilities = other787.capabilities;
++ __isset = other787.__isset;
+ return *this;
+}
+void GetTableRequest::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "GetTableRequest(";
+ out << "dbName=" << to_string(dbName);
+ out << ", " << "tblName=" << to_string(tblName);
+ out << ", " << "capabilities="; (__isset.capabilities ? (out << to_string(capabilities)) : (out << "<null>"));
+ out << ")";
+}
+
+
+GetTableResult::~GetTableResult() throw() {
+}
+
+
+void GetTableResult::__set_table(const Table& val) {
+ this->table = val;
+}
+
+uint32_t GetTableResult::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+ bool isset_table = false;
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ switch (fid)
+ {
+ case 1:
+ if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+ xfer += this->table.read(iprot);
+ isset_table = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ default:
+ xfer += iprot->skip(ftype);
+ break;
+ }
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ if (!isset_table)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ return xfer;
+}
+
+uint32_t GetTableResult::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("GetTableResult");
+
+ xfer += oprot->writeFieldBegin("table", ::apache::thrift::protocol::T_STRUCT, 1);
+ xfer += this->table.write(oprot);
+ xfer += oprot->writeFieldEnd();
+
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(GetTableResult &a, GetTableResult &b) {
+ using ::std::swap;
+ swap(a.table, b.table);
+}
+
- GetTableResult::GetTableResult(const GetTableResult& other780) {
- table = other780.table;
++GetTableResult::GetTableResult(const GetTableResult& other788) {
++ table = other788.table;
+}
- GetTableResult& GetTableResult::operator=(const GetTableResult& other781) {
- table = other781.table;
++GetTableResult& GetTableResult::operator=(const GetTableResult& other789) {
++ table = other789.table;
+ return *this;
+}
+void GetTableResult::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "GetTableResult(";
+ out << "table=" << to_string(table);
+ out << ")";
+}
+
+
+GetTablesRequest::~GetTablesRequest() throw() {
+}
+
+
+void GetTablesRequest::__set_dbName(const std::string& val) {
+ this->dbName = val;
+}
+
+void GetTablesRequest::__set_tblNames(const std::vector<std::string> & val) {
+ this->tblNames = val;
+__isset.tblNames = true;
+}
+
+void GetTablesRequest::__set_capabilities(const ClientCapabilities& val) {
+ this->capabilities = val;
+__isset.capabilities = true;
+}
+
+uint32_t GetTablesRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+ apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+ uint32_t xfer = 0;
+ std::string fname;
+ ::apache::thrift::protocol::TType ftype;
+ int16_t fid;
+
+ xfer += iprot->readStructBegin(fname);
+
+ using ::apache::thrift::protocol::TProtocolException;
+
+ bool isset_dbName = false;
+
+ while (true)
+ {
+ xfer += iprot->readFieldBegin(fname, ftype, fid);
+ if (ftype == ::apache::thrift::protocol::T_STOP) {
+ break;
+ }
+ switch (fid)
+ {
+ case 1:
+ if (ftype == ::apache::thrift::protocol::T_STRING) {
+ xfer += iprot->readString(this->dbName);
+ isset_dbName = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 2:
+ if (ftype == ::apache::thrift::protocol::T_LIST) {
+ {
+ this->tblNames.clear();
- uint32_t _size782;
- ::apache::thrift::protocol::TType _etype785;
- xfer += iprot->readListBegin(_etype785, _size782);
- this->tblNames.resize(_size782);
- uint32_t _i786;
- for (_i786 = 0; _i786 < _size782; ++_i786)
++ uint32_t _size790;
++ ::apache::thrift::protocol::TType _etype793;
++ xfer += iprot->readListBegin(_etype793, _size790);
++ this->tblNames.resize(_size790);
++ uint32_t _i794;
++ for (_i794 = 0; _i794 < _size790; ++_i794)
+ {
- xfer += iprot->readString(this->tblNames[_i786]);
++ xfer += iprot->readString(this->tblNames[_i794]);
+ }
+ xfer += iprot->readListEnd();
+ }
+ this->__isset.tblNames = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ case 3:
+ if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+ xfer += this->capabilities.read(iprot);
+ this->__isset.capabilities = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
+ default:
+ xfer += iprot->skip(ftype);
+ break;
+ }
+ xfer += iprot->readFieldEnd();
+ }
+
+ xfer += iprot->readStructEnd();
+
+ if (!isset_dbName)
+ throw TProtocolException(TProtocolException::INVALID_DATA);
+ return xfer;
+}
+
+uint32_t GetTablesRequest::write(::apache::thrift::protocol::TProtocol* oprot) const {
+ uint32_t xfer = 0;
+ apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+ xfer += oprot->writeStructBegin("GetTablesRequest");
+
+ xfer += oprot->writeFieldBegin("dbName", ::apache::thrift::protocol::T_STRING, 1);
+ xfer += oprot->writeString(this->dbName);
+ xfer += oprot->writeFieldEnd();
+
+ if (this->__isset.tblNames) {
+ xfer += oprot->writeFieldBegin("tblNames", ::apache::thrift::protocol::T_LIST, 2);
+ {
+ xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->tblNames.size()));
- std::vector<std::string> ::const_iterator _iter787;
- for (_iter787 = this->tblNames.begin(); _iter787 != this->tblNames.end(); ++_iter787)
++ std::vector<std::string> ::const_iterator _iter795;
++ for (_iter795 = this->tblNames.begin(); _iter795 != this->tblNames.end(); ++_iter795)
+ {
- xfer += oprot->writeString((*_iter787));
++ xfer += oprot->writeString((*_iter795));
+ }
+ xfer += oprot->writeListEnd();
+ }
+ xfer += oprot->writeFieldEnd();
+ }
+ if (this->__isset.capabilities) {
+ xfer += oprot->writeFieldBegin("capabilities", ::apache::thrift::protocol::T_STRUCT, 3);
+ xfer += this->capabilities.write(oprot);
+ xfer += oprot->writeFieldEnd();
+ }
+ xfer += oprot->writeFieldStop();
+ xfer += oprot->writeStructEnd();
+ return xfer;
+}
+
+void swap(GetTablesRequest &a, GetTablesRequest &b) {
+ using ::std::swap;
+ swap(a.dbName, b.dbName);
+ swap(a.tblNames, b.tblNames);
+ swap(a.capabilities, b.capabilities);
+ swap(a.__isset, b.__isset);
+}
+
- GetTablesRequest::GetTablesRequest(const GetTablesRequest& other788) {
- dbName = other788.dbName;
- tblNames = other788.tblNames;
- capabilities = other788.capabilities;
- __isset = other788.__isset;
++GetTablesRequest::GetTablesRequest(const GetTablesRequest& other796) {
++ dbName = other796.dbName;
++ tblNames = other796.tblNames;
++ capabilities = other796.capabilities;
++ __isset = other796.__isset;
+}
- GetTablesRequest& GetTablesRequest::operator=(const GetTablesRequest& other789) {
- dbName = other789.dbName;
- tblNames = other789.tblNames;
- capabilities = other789.capabilities;
- __isset = other789.__isset;
++GetTablesRequest& GetTablesRequest::operator=(const GetTablesRequest& other797) {
++ dbName = other797.dbName;
++ tblNames = other797.tblNames;
++ capabilities = other797.capabilities;
++ __isset = other797.__isset;
+ return *this;
+}
+void GetTablesRequest::printTo(std::ostream& out) const {
+ using ::apache::thrift::to_string;
+ out << "GetTablesRequest(";
+ out << "dbName=" << to_string(dbName);
+ out << ", " << "tblNames="; (__isset.tblNames ? (out << to_string(tblNames)) : (out << "<null>"));
+ out << ", " << "capabilities="; (__isset.capabilities ? (out << to_string(capabilities)) : (out << "<null>"));
+ out << ")";
+}
+
+
+GetTablesResult::~GetTablesResult() throw() {
+}
+
+
+void GetTablesResult::__set_tables(const std::vector<Table> & val) {
+ this->tables = val;
+}
+
+uint32_t GetTablesResult::read(::apache::thrift::protocol::TProtocol* iprot) {
apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
uint32_t xfer = 0;
@@@ -19244,14 -18528,14 +19465,14 @@@
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->tables.clear();
- uint32_t _size790;
- ::apache::thrift::protocol::TType _etype793;
- xfer += iprot->readListBegin(_etype793, _size790);
- this->tables.resize(_size790);
- uint32_t _i794;
- for (_i794 = 0; _i794 < _size790; ++_i794)
- uint32_t _size776;
- ::apache::thrift::protocol::TType _etype779;
- xfer += iprot->readListBegin(_etype779, _size776);
- this->tables.resize(_size776);
- uint32_t _i780;
- for (_i780 = 0; _i780 < _size776; ++_i780)
++ uint32_t _size798;
++ ::apache::thrift::protocol::TType _etype801;
++ xfer += iprot->readListBegin(_etype801, _size798);
++ this->tables.resize(_size798);
++ uint32_t _i802;
++ for (_i802 = 0; _i802 < _size798; ++_i802)
{
- xfer += this->tables[_i794].read(iprot);
- xfer += this->tables[_i780].read(iprot);
++ xfer += this->tables[_i802].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -19282,10 -18566,10 +19503,10 @@@ uint32_t GetTablesResult::write(::apach
xfer += oprot->writeFieldBegin("tables", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->tables.size()));
- std::vector<Table> ::const_iterator _iter795;
- for (_iter795 = this->tables.begin(); _iter795 != this->tables.end(); ++_iter795)
- std::vector<Table> ::const_iterator _iter781;
- for (_iter781 = this->tables.begin(); _iter781 != this->tables.end(); ++_iter781)
++ std::vector<Table> ::const_iterator _iter803;
++ for (_iter803 = this->tables.begin(); _iter803 != this->tables.end(); ++_iter803)
{
- xfer += (*_iter795).write(oprot);
- xfer += (*_iter781).write(oprot);
++ xfer += (*_iter803).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -19301,11 -18585,11 +19522,11 @@@ void swap(GetTablesResult &a, GetTables
swap(a.tables, b.tables);
}
- GetTablesResult::GetTablesResult(const GetTablesResult& other796) {
- tables = other796.tables;
-GetTablesResult::GetTablesResult(const GetTablesResult& other782) {
- tables = other782.tables;
++GetTablesResult::GetTablesResult(const GetTablesResult& other804) {
++ tables = other804.tables;
}
- GetTablesResult& GetTablesResult::operator=(const GetTablesResult& other797) {
- tables = other797.tables;
-GetTablesResult& GetTablesResult::operator=(const GetTablesResult& other783) {
- tables = other783.tables;
++GetTablesResult& GetTablesResult::operator=(const GetTablesResult& other805) {
++ tables = other805.tables;
return *this;
}
void GetTablesResult::printTo(std::ostream& out) const {
@@@ -19447,19 -18731,19 +19668,19 @@@ void swap(TableMeta &a, TableMeta &b)
swap(a.__isset, b.__isset);
}
- TableMeta::TableMeta(const TableMeta& other798) {
- dbName = other798.dbName;
- tableName = other798.tableName;
- tableType = other798.tableType;
- comments = other798.comments;
- __isset = other798.__isset;
-TableMeta::TableMeta(const TableMeta& other784) {
- dbName = other784.dbName;
- tableName = other784.tableName;
- tableType = other784.tableType;
- comments = other784.comments;
- __isset = other784.__isset;
++TableMeta::TableMeta(const TableMeta& other806) {
++ dbName = other806.dbName;
++ tableName = other806.tableName;
++ tableType = other806.tableType;
++ comments = other806.comments;
++ __isset = other806.__isset;
}
- TableMeta& TableMeta::operator=(const TableMeta& other799) {
- dbName = other799.dbName;
- tableName = other799.tableName;
- tableType = other799.tableType;
- comments = other799.comments;
- __isset = other799.__isset;
-TableMeta& TableMeta::operator=(const TableMeta& other785) {
- dbName = other785.dbName;
- tableName = other785.tableName;
- tableType = other785.tableType;
- comments = other785.comments;
- __isset = other785.__isset;
++TableMeta& TableMeta::operator=(const TableMeta& other807) {
++ dbName = other807.dbName;
++ tableName = other807.tableName;
++ tableType = other807.tableType;
++ comments = other807.comments;
++ __isset = other807.__isset;
return *this;
}
void TableMeta::printTo(std::ostream& out) const {
@@@ -19542,13 -18826,13 +19763,13 @@@ void swap(MetaException &a, MetaExcepti
swap(a.__isset, b.__isset);
}
- MetaException::MetaException(const MetaException& other800) : TException() {
- message = other800.message;
- __isset = other800.__isset;
-MetaException::MetaException(const MetaException& other786) : TException() {
- message = other786.message;
- __isset = other786.__isset;
++MetaException::MetaException(const MetaException& other808) : TException() {
++ message = other808.message;
++ __isset = other808.__isset;
}
- MetaException& MetaException::operator=(const MetaException& other801) {
- message = other801.message;
- __isset = other801.__isset;
-MetaException& MetaException::operator=(const MetaException& other787) {
- message = other787.message;
- __isset = other787.__isset;
++MetaException& MetaException::operator=(const MetaException& other809) {
++ message = other809.message;
++ __isset = other809.__isset;
return *this;
}
void MetaException::printTo(std::ostream& out) const {
@@@ -19639,13 -18923,13 +19860,13 @@@ void swap(UnknownTableException &a, Unk
swap(a.__isset, b.__isset);
}
- UnknownTableException::UnknownTableException(const UnknownTableException& other802) : TException() {
- message = other802.message;
- __isset = other802.__isset;
-UnknownTableException::UnknownTableException(const UnknownTableException& other788) : TException() {
- message = other788.message;
- __isset = other788.__isset;
++UnknownTableException::UnknownTableException(const UnknownTableException& other810) : TException() {
++ message = other810.message;
++ __isset = other810.__isset;
}
- UnknownTableException& UnknownTableException::operator=(const UnknownTableException& other803) {
- message = other803.message;
- __isset = other803.__isset;
-UnknownTableException& UnknownTableException::operator=(const UnknownTableException& other789) {
- message = other789.message;
- __isset = other789.__isset;
++UnknownTableException& UnknownTableException::operator=(const UnknownTableException& other811) {
++ message = other811.message;
++ __isset = other811.__isset;
return *this;
}
void UnknownTableException::printTo(std::ostream& out) const {
@@@ -19736,13 -19020,13 +19957,13 @@@ void swap(UnknownDBException &a, Unknow
swap(a.__isset, b.__isset);
}
- UnknownDBException::UnknownDBException(const UnknownDBException& other804) : TException() {
- message = other804.message;
- __isset = other804.__isset;
-UnknownDBException::UnknownDBException(const UnknownDBException& other790) : TException() {
- message = other790.message;
- __isset = other790.__isset;
++UnknownDBException::UnknownDBException(const UnknownDBException& other812) : TException() {
++ message = other812.message;
++ __isset = other812.__isset;
}
- UnknownDBException& UnknownDBException::operator=(const UnknownDBException& other805) {
- message = other805.message;
- __isset = other805.__isset;
-UnknownDBException& UnknownDBException::operator=(const UnknownDBException& other791) {
- message = other791.message;
- __isset = other791.__isset;
++UnknownDBException& UnknownDBException::operator=(const UnknownDBException& other813) {
++ message = other813.message;
++ __isset = other813.__isset;
return *this;
}
void UnknownDBException::printTo(std::ostream& out) const {
@@@ -19833,13 -19117,13 +20054,13 @@@ void swap(AlreadyExistsException &a, Al
swap(a.__isset, b.__isset);
}
- AlreadyExistsException::AlreadyExistsException(const AlreadyExistsException& other806) : TException() {
- message = other806.message;
- __isset = other806.__isset;
-AlreadyExistsException::AlreadyExistsException(const AlreadyExistsException& other792) : TException() {
- message = other792.message;
- __isset = other792.__isset;
++AlreadyExistsException::AlreadyExistsException(const AlreadyExistsException& other814) : TException() {
++ message = other814.message;
++ __isset = other814.__isset;
}
- AlreadyExistsException& AlreadyExistsException::operator=(const AlreadyExistsException& other807) {
- message = other807.message;
- __isset = other807.__isset;
-AlreadyExistsException& AlreadyExistsException::operator=(const AlreadyExistsException& other793) {
- message = other793.message;
- __isset = other793.__isset;
++AlreadyExistsException& AlreadyExistsException::operator=(const AlreadyExistsException& other815) {
++ message = other815.message;
++ __isset = other815.__isset;
return *this;
}
void AlreadyExistsException::printTo(std::ostream& out) const {
@@@ -19930,13 -19214,13 +20151,13 @@@ void swap(InvalidPartitionException &a
swap(a.__isset, b.__isset);
}
- InvalidPartitionException::InvalidPartitionException(const InvalidPartitionException& other808) : TException() {
- message = other808.message;
- __isset = other808.__isset;
-InvalidPartitionException::InvalidPartitionException(const InvalidPartitionException& other794) : TException() {
- message = other794.message;
- __isset = other794.__isset;
++InvalidPartitionException::InvalidPartitionException(const InvalidPartitionException& other816) : TException() {
++ message = other816.message;
++ __isset = other816.__isset;
}
- InvalidPartitionException& InvalidPartitionException::operator=(const InvalidPartitionException& other809) {
- message = other809.message;
- __isset = other809.__isset;
-InvalidPartitionException& InvalidPartitionException::operator=(const InvalidPartitionException& other795) {
- message = other795.message;
- __isset = other795.__isset;
++InvalidPartitionException& InvalidPartitionException::operator=(const InvalidPartitionException& other817) {
++ message = other817.message;
++ __isset = other817.__isset;
return *this;
}
void InvalidPartitionException::printTo(std::ostream& out) const {
@@@ -20027,13 -19311,13 +20248,13 @@@ void swap(UnknownPartitionException &a
swap(a.__isset, b.__isset);
}
- UnknownPartitionException::UnknownPartitionException(const UnknownPartitionException& other810) : TException() {
- message = other810.message;
- __isset = other810.__isset;
-UnknownPartitionException::UnknownPartitionException(const UnknownPartitionException& other796) : TException() {
- message = other796.message;
- __isset = other796.__isset;
++UnknownPartitionException::UnknownPartitionException(const UnknownPartitionException& other818) : TException() {
++ message = other818.message;
++ __isset = other818.__isset;
}
- UnknownPartitionException& UnknownPartitionException::operator=(const UnknownPartitionException& other811) {
- message = other811.message;
- __isset = other811.__isset;
-UnknownPartitionException& UnknownPartitionException::operator=(const UnknownPartitionException& other797) {
- message = other797.message;
- __isset = other797.__isset;
++UnknownPartitionException& UnknownPartitionException::operator=(const UnknownPartitionException& other819) {
++ message = other819.message;
++ __isset = other819.__isset;
return *this;
}
void UnknownPartitionException::printTo(std::ostream& out) const {
@@@ -20124,13 -19408,13 +20345,13 @@@ void swap(InvalidObjectException &a, In
swap(a.__isset, b.__isset);
}
- InvalidObjectException::InvalidObjectException(const InvalidObjectException& other812) : TException() {
- message = other812.message;
- __isset = other812.__isset;
-InvalidObjectException::InvalidObjectException(const InvalidObjectException& other798) : TException() {
- message = other798.message;
- __isset = other798.__isset;
++InvalidObjectException::InvalidObjectException(const InvalidObjectException& other820) : TException() {
++ message = other820.message;
++ __isset = other820.__isset;
}
- InvalidObjectException& InvalidObjectException::operator=(const InvalidObjectException& other813) {
- message = other813.message;
- __isset = other813.__isset;
-InvalidObjectException& InvalidObjectException::operator=(const InvalidObjectException& other799) {
- message = other799.message;
- __isset = other799.__isset;
++InvalidObjectException& InvalidObjectException::operator=(const InvalidObjectException& other821) {
++ message = other821.message;
++ __isset = other821.__isset;
return *this;
}
void InvalidObjectException::printTo(std::ostream& out) const {
@@@ -20221,13 -19505,13 +20442,13 @@@ void swap(NoSuchObjectException &a, NoS
swap(a.__isset, b.__isset);
}
- NoSuchObjectException::NoSuchObjectException(const NoSuchObjectException& other814) : TException() {
- message = other814.message;
- __isset = other814.__isset;
-NoSuchObjectException::NoSuchObjectException(const NoSuchObjectException& other800) : TException() {
- message = other800.message;
- __isset = other800.__isset;
++NoSuchObjectException::NoSuchObjectException(const NoSuchObjectException& other822) : TException() {
++ message = other822.message;
++ __isset = other822.__isset;
}
- NoSuchObjectException& NoSuchObjectException::operator=(const NoSuchObjectException& other815) {
- message = other815.message;
- __isset = other815.__isset;
-NoSuchObjectException& NoSuchObjectException::operator=(const NoSuchObjectException& other801) {
- message = other801.message;
- __isset = other801.__isset;
++NoSuchObjectException& NoSuchObjectException::operator=(const NoSuchObjectException& other823) {
++ message = other823.message;
++ __isset = other823.__isset;
return *this;
}
void NoSuchObjectException::printTo(std::ostream& out) const {
@@@ -20318,13 -19602,13 +20539,13 @@@ void swap(IndexAlreadyExistsException &
swap(a.__isset, b.__isset);
}
- IndexAlreadyExistsException::IndexAlreadyExistsException(const IndexAlreadyExistsException& other816) : TException() {
- message = other816.message;
- __isset = other816.__isset;
-IndexAlreadyExistsException::IndexAlreadyExistsException(const IndexAlreadyExistsException& other802) : TException() {
- message = other802.message;
- __isset = other802.__isset;
++IndexAlreadyExistsException::IndexAlreadyExistsException(const IndexAlreadyExistsException& other824) : TException() {
++ message = other824.message;
++ __isset = other824.__isset;
}
- IndexAlreadyExistsException& IndexAlreadyExistsException::operator=(const IndexAlreadyExistsException& other817) {
- message = other817.message;
- __isset = other817.__isset;
-IndexAlreadyExistsException& IndexAlreadyExistsException::operator=(const IndexAlreadyExistsException& other803) {
- message = other803.message;
- __isset = other803.__isset;
++IndexAlreadyExistsException& IndexAlreadyExistsException::operator=(const IndexAlreadyExistsException& other825) {
++ message = other825.message;
++ __isset = other825.__isset;
return *this;
}
void IndexAlreadyExistsException::printTo(std::ostream& out) const {
@@@ -20415,13 -19699,13 +20636,13 @@@ void swap(InvalidOperationException &a
swap(a.__isset, b.__isset);
}
- InvalidOperationException::InvalidOperationException(const InvalidOperationException& other818) : TException() {
- message = other818.message;
- __isset = other818.__isset;
-InvalidOperationException::InvalidOperationException(const InvalidOperationException& other804) : TException() {
- message = other804.message;
- __isset = other804.__isset;
++InvalidOperationException::InvalidOperationException(const InvalidOperationException& other826) : TException() {
++ message = other826.message;
++ __isset = other826.__isset;
}
- InvalidOperationException& InvalidOperationException::operator=(const InvalidOperationException& other819) {
- message = other819.message;
- __isset = other819.__isset;
-InvalidOperationException& InvalidOperationException::operator=(const InvalidOperationException& other805) {
- message = other805.message;
- __isset = other805.__isset;
++InvalidOperationException& InvalidOperationException::operator=(const InvalidOperationException& other827) {
++ message = other827.message;
++ __isset = other827.__isset;
return *this;
}
void InvalidOperationException::printTo(std::ostream& out) const {
@@@ -20512,13 -19796,13 +20733,13 @@@ void swap(ConfigValSecurityException &a
swap(a.__isset, b.__isset);
}
- ConfigValSecurityException::ConfigValSecurityException(const ConfigValSecurityException& other820) : TException() {
- message = other820.message;
- __isset = other820.__isset;
-ConfigValSecurityException::ConfigValSecurityException(const ConfigValSecurityException& other806) : TException() {
- message = other806.message;
- __isset = other806.__isset;
++ConfigValSecurityException::ConfigValSecurityException(const ConfigValSecurityException& other828) : TException() {
++ message = other828.message;
++ __isset = other828.__isset;
}
- ConfigValSecurityException& ConfigValSecurityException::operator=(const ConfigValSecurityException& other821) {
- message = other821.message;
- __isset = other821.__isset;
-ConfigValSecurityException& ConfigValSecurityException::operator=(const ConfigValSecurityException& other807) {
- message = other807.message;
- __isset = other807.__isset;
++ConfigValSecurityException& ConfigValSecurityException::operator=(const ConfigValSecurityException& other829) {
++ message = other829.message;
++ __isset = other829.__isset;
return *this;
}
void ConfigValSecurityException::printTo(std::ostream& out) const {
@@@ -20609,13 -19893,13 +20830,13 @@@ void swap(InvalidInputException &a, Inv
swap(a.__isset, b.__isset);
}
- InvalidInputException::InvalidInputException(const InvalidInputException& other822) : TException() {
- message = other822.message;
- __isset = other822.__isset;
-InvalidInputException::InvalidInputException(const InvalidInputException& other808) : TException() {
- message = other808.message;
- __isset = other808.__isset;
++InvalidInputException::InvalidInputException(const InvalidInputException& other830) : TException() {
++ message = other830.message;
++ __isset = other830.__isset;
}
- InvalidInputException& InvalidInputException::operator=(const InvalidInputException& other823) {
- message = other823.message;
- __isset = other823.__isset;
-InvalidInputException& InvalidInputException::operator=(const InvalidInputException& other809) {
- message = other809.message;
- __isset = other809.__isset;
++InvalidInputException& InvalidInputException::operator=(const InvalidInputException& other831) {
++ message = other831.message;
++ __isset = other831.__isset;
return *this;
}
void InvalidInputException::printTo(std::ostream& out) const {
@@@ -20706,13 -19990,13 +20927,13 @@@ void swap(NoSuchTxnException &a, NoSuch
swap(a.__isset, b.__isset);
}
- NoSuchTxnException::NoSuchTxnException(const NoSuchTxnException& other824) : TException() {
- message = other824.message;
- __isset = other824.__isset;
-NoSuchTxnException::NoSuchTxnException(const NoSuchTxnException& other810) : TException() {
- message = other810.message;
- __isset = other810.__isset;
++NoSuchTxnException::NoSuchTxnException(const NoSuchTxnException& other832) : TException() {
++ message = other832.message;
++ __isset = other832.__isset;
}
- NoSuchTxnException& NoSuchTxnException::operator=(const NoSuchTxnException& other825) {
- message = other825.message;
- __isset = other825.__isset;
-NoSuchTxnException& NoSuchTxnException::operator=(const NoSuchTxnException& other811) {
- message = other811.message;
- __isset = other811.__isset;
++NoSuchTxnException& NoSuchTxnException::operator=(const NoSuchTxnException& other833) {
++ message = other833.message;
++ __isset = other833.__isset;
return *this;
}
void NoSuchTxnException::printTo(std::ostream& out) const {
@@@ -20803,13 -20087,13 +21024,13 @@@ void swap(TxnAbortedException &a, TxnAb
swap(a.__isset, b.__isset);
}
- TxnAbortedException::TxnAbortedException(const TxnAbortedException& other826) : TException() {
- message = other826.message;
- __isset = other826.__isset;
-TxnAbortedException::TxnAbortedException(const TxnAbortedException& other812) : TException() {
- message = other812.message;
- __isset = other812.__isset;
++TxnAbortedException::TxnAbortedException(const TxnAbortedException& other834) : TException() {
++ message = other834.message;
++ __isset = other834.__isset;
}
- TxnAbortedException& TxnAbortedException::operator=(const TxnAbortedException& other827) {
- message = other827.message;
- __isset = other827.__isset;
-TxnAbortedException& TxnAbortedException::operator=(const TxnAbortedException& other813) {
- message = other813.message;
- __isset = other813.__isset;
++TxnAbortedException& TxnAbortedException::operator=(const TxnAbortedException& other835) {
++ message = other835.message;
++ __isset = other835.__isset;
return *this;
}
void TxnAbortedException::printTo(std::ostream& out) const {
@@@ -20900,13 -20184,13 +21121,13 @@@ void swap(TxnOpenException &a, TxnOpenE
swap(a.__isset, b.__isset);
}
- TxnOpenException::TxnOpenException(const TxnOpenException& other828) : TException() {
- message = other828.message;
- __isset = other828.__isset;
-TxnOpenException::TxnOpenException(const TxnOpenException& other814) : TException() {
- message = other814.message;
- __isset = other814.__isset;
++TxnOpenException::TxnOpenException(const TxnOpenException& other836) : TException() {
++ message = other836.message;
++ __isset = other836.__isset;
}
- TxnOpenException& TxnOpenException::operator=(const TxnOpenException& other829) {
- message = other829.message;
- __isset = other829.__isset;
-TxnOpenException& TxnOpenException::operator=(const TxnOpenException& other815) {
- message = other815.message;
- __isset = other815.__isset;
++TxnOpenException& TxnOpenException::operator=(const TxnOpenException& other837) {
++ message = other837.message;
++ __isset = other837.__isset;
return *this;
}
void TxnOpenException::printTo(std::ostream& out) const {
@@@ -20997,13 -20281,13 +21218,13 @@@ void swap(NoSuchLockException &a, NoSuc
swap(a.__isset, b.__isset);
}
- NoSuchLockException::NoSuchLockException(const NoSuchLockException& other830) : TException() {
- message = other830.message;
- __isset = other830.__isset;
-NoSuchLockException::NoSuchLockException(const NoSuchLockException& other816) : TException() {
- message = other816.message;
- __isset = other816.__isset;
++NoSuchLockException::NoSuchLockException(const NoSuchLockException& other838) : TException() {
++ message = other838.message;
++ __isset = other838.__isset;
}
- NoSuchLockException& NoSuchLockException::operator=(const NoSuchLockException& other831) {
- message = other831.message;
- __isset = other831.__isset;
-NoSuchLockException& NoSuchLockException::operator=(const NoSuchLockException& other817) {
- message = other817.message;
- __isset = other817.__isset;
++NoSuchLockException& NoSuchLockException::operator=(const NoSuchLockException& other839) {
++ message = other839.message;
++ __isset = other839.__isset;
return *this;
}
void NoSuchLockException::printTo(std::ostream& out) const {
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
index ee08c76,4d5da71..b954a12
--- a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
+++ b/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
@@@ -2077,7 -2062,7 +2079,7 @@@ inline std::ostream& operator<<(std::os
}
typedef struct _Table__isset {
- _Table__isset() : tableName(false), dbName(false), owner(false), createTime(false), lastAccessTime(false), retention(false), sd(false), partitionKeys(false), parameters(false), viewOriginalText(false), viewExpandedText(false), tableType(false), privileges(false), temporary(true), mmNextWriteId(false), mmWatermarkWriteId(false) {}
- _Table__isset() : tableName(false), dbName(false), owner(false), createTime(false), lastAccessTime(false), retention(false), sd(false), partitionKeys(false), parameters(false), viewOriginalText(false), viewExpandedText(false), tableType(false), privileges(false), temporary(true), rewriteEnabled(false) {}
++ _Table__isset() : tableName(false), dbName(false), owner(false), createTime(false), lastAccessTime(false), retention(false), sd(false), partitionKeys(false), parameters(false), viewOriginalText(false), viewExpandedText(false), tableType(false), privileges(false), temporary(true), rewriteEnabled(false), mmNextWriteId(false), mmWatermarkWriteId(false) {}
bool tableName :1;
bool dbName :1;
bool owner :1;
@@@ -2092,8 -2077,7 +2094,9 @@@
bool tableType :1;
bool privileges :1;
bool temporary :1;
+ bool rewriteEnabled :1;
+ bool mmNextWriteId :1;
+ bool mmWatermarkWriteId :1;
} _Table__isset;
class Table {
@@@ -2101,7 -2085,7 +2104,7 @@@
Table(const Table&);
Table& operator=(const Table&);
- Table() : tableName(), dbName(), owner(), createTime(0), lastAccessTime(0), retention(0), viewOriginalText(), viewExpandedText(), tableType(), temporary(false), mmNextWriteId(0), mmWatermarkWriteId(0) {
- Table() : tableName(), dbName(), owner(), createTime(0), lastAccessTime(0), retention(0), viewOriginalText(), viewExpandedText(), tableType(), temporary(false), rewriteEnabled(0) {
++ Table() : tableName(), dbName(), owner(), createTime(0), lastAccessTime(0), retention(0), viewOriginalText(), viewExpandedText(), tableType(), temporary(false), rewriteEnabled(0), mmNextWriteId(0), mmWatermarkWriteId(0) {
}
virtual ~Table() throw();
@@@ -2119,8 -2103,7 +2122,9 @@@
std::string tableType;
PrincipalPrivilegeSet privileges;
bool temporary;
+ bool rewriteEnabled;
+ int64_t mmNextWriteId;
+ int64_t mmWatermarkWriteId;
_Table__isset __isset;
@@@ -2152,10 -2135,8 +2156,12 @@@
void __set_temporary(const bool val);
+ void __set_rewriteEnabled(const bool val);
+
+ void __set_mmNextWriteId(const int64_t val);
+
+ void __set_mmWatermarkWriteId(const int64_t val);
+
bool operator == (const Table & rhs) const
{
if (!(tableName == rhs.tableName))
@@@ -2190,14 -2171,10 +2196,18 @@@
return false;
else if (__isset.temporary && !(temporary == rhs.temporary))
return false;
+ if (__isset.rewriteEnabled != rhs.__isset.rewriteEnabled)
+ return false;
+ else if (__isset.rewriteEnabled && !(rewriteEnabled == rhs.rewriteEnabled))
+ return false;
+ if (__isset.mmNextWriteId != rhs.__isset.mmNextWriteId)
+ return false;
+ else if (__isset.mmNextWriteId && !(mmNextWriteId == rhs.mmNextWriteId))
+ return false;
+ if (__isset.mmWatermarkWriteId != rhs.__isset.mmWatermarkWriteId)
+ return false;
+ else if (__isset.mmWatermarkWriteId && !(mmWatermarkWriteId == rhs.mmWatermarkWriteId))
+ return false;
return true;
}
bool operator != (const Table &rhs) const {
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ClientCapabilities.java
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ClientCapabilities.java
index 81534fe,81534fe..d7ab0cf
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ClientCapabilities.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ClientCapabilities.java
@@@ -354,13 -354,13 +354,13 @@@ public class ClientCapabilities impleme
case 1: // VALUES
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list650 = iprot.readListBegin();
-- struct.values = new ArrayList<ClientCapability>(_list650.size);
-- ClientCapability _elem651;
-- for (int _i652 = 0; _i652 < _list650.size; ++_i652)
++ org.apache.thrift.protocol.TList _list658 = iprot.readListBegin();
++ struct.values = new ArrayList<ClientCapability>(_list658.size);
++ ClientCapability _elem659;
++ for (int _i660 = 0; _i660 < _list658.size; ++_i660)
{
-- _elem651 = org.apache.hadoop.hive.metastore.api.ClientCapability.findByValue(iprot.readI32());
-- struct.values.add(_elem651);
++ _elem659 = org.apache.hadoop.hive.metastore.api.ClientCapability.findByValue(iprot.readI32());
++ struct.values.add(_elem659);
}
iprot.readListEnd();
}
@@@ -386,9 -386,9 +386,9 @@@
oprot.writeFieldBegin(VALUES_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.values.size()));
-- for (ClientCapability _iter653 : struct.values)
++ for (ClientCapability _iter661 : struct.values)
{
-- oprot.writeI32(_iter653.getValue());
++ oprot.writeI32(_iter661.getValue());
}
oprot.writeListEnd();
}
@@@ -413,9 -413,9 +413,9 @@@
TTupleProtocol oprot = (TTupleProtocol) prot;
{
oprot.writeI32(struct.values.size());
-- for (ClientCapability _iter654 : struct.values)
++ for (ClientCapability _iter662 : struct.values)
{
-- oprot.writeI32(_iter654.getValue());
++ oprot.writeI32(_iter662.getValue());
}
}
}
@@@ -424,13 -424,13 +424,13 @@@
public void read(org.apache.thrift.protocol.TProtocol prot, ClientCapabilities struct) throws org.apache.thrift.TException {
TTupleProtocol iprot = (TTupleProtocol) prot;
{
-- org.apache.thrift.protocol.TList _list655 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, iprot.readI32());
-- struct.values = new ArrayList<ClientCapability>(_list655.size);
-- ClientCapability _elem656;
-- for (int _i657 = 0; _i657 < _list655.size; ++_i657)
++ org.apache.thrift.protocol.TList _list663 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, iprot.readI32());
++ struct.values = new ArrayList<ClientCapability>(_list663.size);
++ ClientCapability _elem664;
++ for (int _i665 = 0; _i665 < _list663.size; ++_i665)
{
-- _elem656 = org.apache.hadoop.hive.metastore.api.ClientCapability.findByValue(iprot.readI32());
-- struct.values.add(_elem656);
++ _elem664 = org.apache.hadoop.hive.metastore.api.ClientCapability.findByValue(iprot.readI32());
++ struct.values.add(_elem664);
}
}
struct.setValuesIsSet(true);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetAllFunctionsResponse.java
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetAllFunctionsResponse.java
index 49a1be2,49a1be2..2551870
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetAllFunctionsResponse.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetAllFunctionsResponse.java
@@@ -346,14 -346,14 +346,14 @@@ public class GetAllFunctionsResponse im
case 1: // FUNCTIONS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list642 = iprot.readListBegin();
-- struct.functions = new ArrayList<Function>(_list642.size);
-- Function _elem643;
-- for (int _i644 = 0; _i644 < _list642.size; ++_i644)
++ org.apache.thrift.protocol.TList _list650 = iprot.readListBegin();
++ struct.functions = new ArrayList<Function>(_list650.size);
++ Function _elem651;
++ for (int _i652 = 0; _i652 < _list650.size; ++_i652)
{
-- _elem643 = new Function();
-- _elem643.read(iprot);
-- struct.functions.add(_elem643);
++ _elem651 = new Function();
++ _elem651.read(iprot);
++ struct.functions.add(_elem651);
}
iprot.readListEnd();
}
@@@ -380,9 -380,9 +380,9 @@@
oprot.writeFieldBegin(FUNCTIONS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.functions.size()));
-- for (Function _iter645 : struct.functions)
++ for (Function _iter653 : struct.functions)
{
-- _iter645.write(oprot);
++ _iter653.write(oprot);
}
oprot.writeListEnd();
}
@@@ -414,9 -414,9 +414,9 @@@
if (struct.isSetFunctions()) {
{
oprot.writeI32(struct.functions.size());
-- for (Function _iter646 : struct.functions)
++ for (Function _iter654 : struct.functions)
{
-- _iter646.write(oprot);
++ _iter654.write(oprot);
}
}
}
@@@ -428,14 -428,14 +428,14 @@@
BitSet incoming = iprot.readBitSet(1);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list647 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.functions = new ArrayList<Function>(_list647.size);
-- Function _elem648;
-- for (int _i649 = 0; _i649 < _list647.size; ++_i649)
++ org.apache.thrift.protocol.TList _list655 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.functions = new ArrayList<Function>(_list655.size);
++ Function _elem656;
++ for (int _i657 = 0; _i657 < _list655.size; ++_i657)
{
-- _elem648 = new Function();
-- _elem648.read(iprot);
-- struct.functions.add(_elem648);
++ _elem656 = new Function();
++ _elem656.read(iprot);
++ struct.functions.add(_elem656);
}
}
struct.setFunctionsIsSet(true);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesRequest.java
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesRequest.java
index 225fda9,225fda9..00ee22b
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesRequest.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesRequest.java
@@@ -525,13 -525,13 +525,13 @@@ public class GetTablesRequest implement
case 2: // TBL_NAMES
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list658 = iprot.readListBegin();
-- struct.tblNames = new ArrayList<String>(_list658.size);
-- String _elem659;
-- for (int _i660 = 0; _i660 < _list658.size; ++_i660)
++ org.apache.thrift.protocol.TList _list666 = iprot.readListBegin();
++ struct.tblNames = new ArrayList<String>(_list666.size);
++ String _elem667;
++ for (int _i668 = 0; _i668 < _list666.size; ++_i668)
{
-- _elem659 = iprot.readString();
-- struct.tblNames.add(_elem659);
++ _elem667 = iprot.readString();
++ struct.tblNames.add(_elem667);
}
iprot.readListEnd();
}
@@@ -572,9 -572,9 +572,9 @@@
oprot.writeFieldBegin(TBL_NAMES_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.tblNames.size()));
-- for (String _iter661 : struct.tblNames)
++ for (String _iter669 : struct.tblNames)
{
-- oprot.writeString(_iter661);
++ oprot.writeString(_iter669);
}
oprot.writeListEnd();
}
@@@ -617,9 -617,9 +617,9 @@@
if (struct.isSetTblNames()) {
{
oprot.writeI32(struct.tblNames.size());
-- for (String _iter662 : struct.tblNames)
++ for (String _iter670 : struct.tblNames)
{
-- oprot.writeString(_iter662);
++ oprot.writeString(_iter670);
}
}
}
@@@ -636,13 -636,13 +636,13 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list663 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.tblNames = new ArrayList<String>(_list663.size);
-- String _elem664;
-- for (int _i665 = 0; _i665 < _list663.size; ++_i665)
++ org.apache.thrift.protocol.TList _list671 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.tblNames = new ArrayList<String>(_list671.size);
++ String _elem672;
++ for (int _i673 = 0; _i673 < _list671.size; ++_i673)
{
-- _elem664 = iprot.readString();
-- struct.tblNames.add(_elem664);
++ _elem672 = iprot.readString();
++ struct.tblNames.add(_elem672);
}
}
struct.setTblNamesIsSet(true);
[38/50] [abbrv] hive git commit: HIVE-15760: TezCompiler throws
ConcurrentModificationException during cycle detection (Deepak Jaiswal via
Jason Dere)
Posted by se...@apache.org.
HIVE-15760: TezCompiler throws ConcurrentModificationException during cycle detection (Deepak Jaiswal via Jason Dere)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/d178b195
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/d178b195
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/d178b195
Branch: refs/heads/hive-14535
Commit: d178b195e7c9707b16c345cafe43c3ffc433e983
Parents: d9cb93a
Author: Jason Dere <jd...@hortonworks.com>
Authored: Wed Feb 1 14:14:08 2017 -0800
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Wed Feb 1 14:14:08 2017 -0800
----------------------------------------------------------------------
.../hadoop/hive/ql/parse/TezCompiler.java | 146 +++++++++----------
1 file changed, 67 insertions(+), 79 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/d178b195/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java
index cf8e843..47b229f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java
@@ -571,53 +571,52 @@ public class TezCompiler extends TaskCompiler {
return;
}
- private static class SemijoinRemovalContext implements NodeProcessorCtx {
- List<Operator<?>> parents = new ArrayList<Operator<?>>();
+ private static class SMBJoinOpProcContext implements NodeProcessorCtx {
+ HashMap<CommonMergeJoinOperator, TableScanOperator> JoinOpToTsOpMap = new HashMap<CommonMergeJoinOperator, TableScanOperator>();
}
- private static class SemijoinRemovalProc implements NodeProcessor {
+ private static class SMBJoinOpProc implements NodeProcessor {
@Override
public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
Object... nodeOutputs) throws SemanticException {
- SemijoinRemovalContext ctx = (SemijoinRemovalContext) procCtx;
- Operator<?> parent = (Operator<?>) stack.get(stack.size() - 2);
- ctx.parents.add(parent);
+ SMBJoinOpProcContext ctx = (SMBJoinOpProcContext) procCtx;
+ ctx.JoinOpToTsOpMap.put((CommonMergeJoinOperator) nd,
+ (TableScanOperator) stack.get(0));
return null;
}
}
- private static void collectSemijoinOps(Operator<?> ts, NodeProcessorCtx ctx) throws SemanticException {
- // create a walker which walks the tree in a DFS manner while maintaining
- // the operator stack. The dispatcher
- // generates the plan from the operator tree
+ private static void removeSemijoinOptimizationFromSMBJoins(
+ OptimizeTezProcContext procCtx) throws SemanticException {
+ if (!procCtx.conf.getBoolVar(ConfVars.TEZ_DYNAMIC_SEMIJOIN_REDUCTION) ||
+ procCtx.parseContext.getRsOpToTsOpMap().size() == 0) {
+ return;
+ }
+
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", SelectOperator.getOperatorName() + "%" +
- TezDummyStoreOperator.getOperatorName() + "%"),
- new SemijoinRemovalProc());
- opRules.put(new RuleRegExp("R2", SelectOperator.getOperatorName() + "%" +
+ opRules.put(
+ new RuleRegExp("R1", TableScanOperator.getOperatorName() + "%" +
+ ".*" + TezDummyStoreOperator.getOperatorName() + "%" +
CommonMergeJoinOperator.getOperatorName() + "%"),
- new SemijoinRemovalProc());
+ new SMBJoinOpProc());
+
+ SMBJoinOpProcContext ctx = new SMBJoinOpProcContext();
+ // The dispatcher finds SMB and if there is semijoin optimization before it, removes it.
Dispatcher disp = new DefaultRuleDispatcher(null, opRules, ctx);
+ List<Node> topNodes = new ArrayList<Node>();
+ topNodes.addAll(procCtx.parseContext.getTopOps().values());
GraphWalker ogw = new PreOrderOnceWalker(disp);
- List<Node> startNodes = new ArrayList<Node>();
- startNodes.add(ts);
-
- HashMap<Node, Object> outputMap = new HashMap<Node, Object>();
- ogw.startWalking(startNodes, null);
- }
-
- private static class SMBJoinOpProc implements NodeProcessor {
+ ogw.startWalking(topNodes, null);
- @Override
- public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
- Object... nodeOutputs) throws SemanticException {
+ // Iterate over the map and remove semijoin optimizations if needed.
+ for (CommonMergeJoinOperator joinOp : ctx.JoinOpToTsOpMap.keySet()) {
List<TableScanOperator> tsOps = new ArrayList<TableScanOperator>();
// Get one top level TS Op directly from the stack
- tsOps.add((TableScanOperator)stack.get(0));
+ tsOps.add(ctx.JoinOpToTsOpMap.get(joinOp));
// Get the other one by examining Join Op
- List<Operator<?>> parents = ((CommonMergeJoinOperator) nd).getParentOperators();
+ List<Operator<?>> parents = joinOp.getParentOperators();
for (Operator<?> parent : parents) {
if (parent instanceof TezDummyStoreOperator) {
// already accounted for
@@ -636,7 +635,7 @@ public class TezCompiler extends TaskCompiler {
// Now the relevant TableScanOperators are known, find if there exists
// a semijoin filter on any of them, if so, remove it.
- ParseContext pctx = ((OptimizeTezProcContext) procCtx).parseContext;
+ ParseContext pctx = procCtx.parseContext;
for (TableScanOperator ts : tsOps) {
for (ReduceSinkOperator rs : pctx.getRsOpToTsOpMap().keySet()) {
if (ts == pctx.getRsOpToTsOpMap().get(rs)) {
@@ -646,11 +645,27 @@ public class TezCompiler extends TaskCompiler {
}
}
}
+ }
+ }
+
+ private static class SemiJoinCycleRemovalDueTOMapsideJoinContext implements NodeProcessorCtx {
+ HashMap<Operator<?>,Operator<?>> childParentMap = new HashMap<Operator<?>,Operator<?>>();
+ }
+
+ private static class SemiJoinCycleRemovalDueToMapsideJoins implements NodeProcessor {
+
+ @Override
+ public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
+ Object... nodeOutputs) throws SemanticException {
+
+ SemiJoinCycleRemovalDueTOMapsideJoinContext ctx =
+ (SemiJoinCycleRemovalDueTOMapsideJoinContext) procCtx;
+ ctx.childParentMap.put((Operator<?>)stack.get(stack.size() - 2), (Operator<?>) nd);
return null;
}
}
- private static void removeSemijoinOptimizationFromSMBJoins(
+ private static void removeSemiJoinCyclesDueToMapsideJoins(
OptimizeTezProcContext procCtx) throws SemanticException {
if (!procCtx.conf.getBoolVar(ConfVars.TEZ_DYNAMIC_SEMIJOIN_REDUCTION) ||
procCtx.parseContext.getRsOpToTsOpMap().size() == 0) {
@@ -659,31 +674,37 @@ public class TezCompiler extends TaskCompiler {
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
opRules.put(
- new RuleRegExp("R1", TableScanOperator.getOperatorName() + "%" +
- ".*" + TezDummyStoreOperator.getOperatorName() + "%" +
+ new RuleRegExp("R1", MapJoinOperator.getOperatorName() + "%" +
+ MapJoinOperator.getOperatorName() + "%"),
+ new SemiJoinCycleRemovalDueToMapsideJoins());
+ opRules.put(
+ new RuleRegExp("R2", MapJoinOperator.getOperatorName() + "%" +
CommonMergeJoinOperator.getOperatorName() + "%"),
- new SMBJoinOpProc());
+ new SemiJoinCycleRemovalDueToMapsideJoins());
+ opRules.put(
+ new RuleRegExp("R3", CommonMergeJoinOperator.getOperatorName() + "%" +
+ MapJoinOperator.getOperatorName() + "%"),
+ new SemiJoinCycleRemovalDueToMapsideJoins());
+ opRules.put(
+ new RuleRegExp("R4", CommonMergeJoinOperator.getOperatorName() + "%" +
+ CommonMergeJoinOperator.getOperatorName() + "%"),
+ new SemiJoinCycleRemovalDueToMapsideJoins());
- // The dispatcher finds SMB and if there is semijoin optimization before it, removes it.
- Dispatcher disp = new DefaultRuleDispatcher(null, opRules, procCtx);
+ SemiJoinCycleRemovalDueTOMapsideJoinContext ctx =
+ new SemiJoinCycleRemovalDueTOMapsideJoinContext();
+ Dispatcher disp = new DefaultRuleDispatcher(null, opRules, ctx);
List<Node> topNodes = new ArrayList<Node>();
topNodes.addAll(procCtx.parseContext.getTopOps().values());
GraphWalker ogw = new PreOrderOnceWalker(disp);
ogw.startWalking(topNodes, null);
- }
- private static class SemiJoinCycleRemovalDueToMapsideJoins implements NodeProcessor {
-
- @Override
- public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
- Object... nodeOutputs) throws SemanticException {
- ParseContext pCtx = ((OptimizeTezProcContext) procCtx).parseContext;
- Operator<?> childJoin = ((Operator<?>) nd);
- Operator<?> parentJoin = ((Operator<?>) stack.get(stack.size() - 2));
+ // process the list
+ ParseContext pCtx = procCtx.parseContext;
+ for (Operator<?> parentJoin : ctx.childParentMap.keySet()) {
+ Operator<?> childJoin = ctx.childParentMap.get(parentJoin);
if (parentJoin.getChildOperators().size() == 1) {
- // Nothing to do here
- return null;
+ continue;
}
for (Operator<?> child : parentJoin.getChildOperators()) {
@@ -723,40 +744,7 @@ public class TezCompiler extends TaskCompiler {
}
}
}
- return null;
- }
- }
-
- private static void removeSemiJoinCyclesDueToMapsideJoins(
- OptimizeTezProcContext procCtx) throws SemanticException {
- if (!procCtx.conf.getBoolVar(ConfVars.TEZ_DYNAMIC_SEMIJOIN_REDUCTION) ||
- procCtx.parseContext.getRsOpToTsOpMap().size() == 0) {
- return;
}
-
- Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(
- new RuleRegExp("R1", MapJoinOperator.getOperatorName() + "%" +
- MapJoinOperator.getOperatorName() + "%"),
- new SemiJoinCycleRemovalDueToMapsideJoins());
- opRules.put(
- new RuleRegExp("R2", MapJoinOperator.getOperatorName() + "%" +
- CommonMergeJoinOperator.getOperatorName() + "%"),
- new SemiJoinCycleRemovalDueToMapsideJoins());
- opRules.put(
- new RuleRegExp("R3", CommonMergeJoinOperator.getOperatorName() + "%" +
- MapJoinOperator.getOperatorName() + "%"),
- new SemiJoinCycleRemovalDueToMapsideJoins());
- opRules.put(
- new RuleRegExp("R4", CommonMergeJoinOperator.getOperatorName() + "%" +
- CommonMergeJoinOperator.getOperatorName() + "%"),
- new SemiJoinCycleRemovalDueToMapsideJoins());
-
- Dispatcher disp = new DefaultRuleDispatcher(null, opRules, procCtx);
- List<Node> topNodes = new ArrayList<Node>();
- topNodes.addAll(procCtx.parseContext.getTopOps().values());
- GraphWalker ogw = new PreOrderOnceWalker(disp);
- ogw.startWalking(topNodes, null);
}
private static class SemiJoinRemovalIfNoStatsProc implements NodeProcessor {
[22/50] [abbrv] hive git commit: HIVE-15752 : MSCK should add output
WriteEntity for table in semantic analysis (Thejas Nair,
reviewed by Sushanth Sowmyan)
Posted by se...@apache.org.
HIVE-15752 : MSCK should add output WriteEntity for table in semantic analysis (Thejas Nair, reviewed by Sushanth Sowmyan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/cf392f12
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/cf392f12
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/cf392f12
Branch: refs/heads/hive-14535
Commit: cf392f120cc9522ca6693c88cc83f388de181d72
Parents: f8e241b
Author: Thejas M Nair <th...@hortonworks.com>
Authored: Tue Jan 31 16:46:54 2017 -0800
Committer: Thejas M Nair <th...@hortonworks.com>
Committed: Tue Jan 31 16:47:14 2017 -0800
----------------------------------------------------------------------
.../hive/ql/parse/DDLSemanticAnalyzer.java | 4 ++-
.../plugin/sqlstd/Operation2Privilege.java | 7 +++--
.../queries/clientnegative/authorization_msck.q | 20 +++++++++++++++
.../clientnegative/authorization_msck.q.out | 27 ++++++++++++++++++++
.../results/clientnegative/msck_repair_1.q.out | 3 +++
.../results/clientnegative/msck_repair_2.q.out | 3 +++
.../results/clientnegative/msck_repair_3.q.out | 3 +++
.../table_nonprintable_negative.q.out | 1 +
.../llap/table_nonprintable.q.out | 2 ++
.../results/clientpositive/msck_repair_0.q.out | 8 ++++++
.../results/clientpositive/msck_repair_1.q.out | 8 ++++++
.../results/clientpositive/msck_repair_2.q.out | 8 ++++++
.../results/clientpositive/msck_repair_3.q.out | 8 ++++++
.../clientpositive/msck_repair_batchsize.q.out | 8 ++++++
ql/src/test/results/clientpositive/repair.q.out | 8 ++++++
15 files changed, 115 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
index ba54d4e..ce435f9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
@@ -3028,7 +3028,9 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
tableName = getUnescapedName((ASTNode) ast.getChild(1));
}
}
- List<Map<String, String>> specs = getPartitionSpecs(getTable(tableName), ast);
+ Table tab = getTable(tableName);
+ List<Map<String, String>> specs = getPartitionSpecs(tab, ast);
+ outputs.add(new WriteEntity(tab, WriteEntity.WriteType.DDL_SHARED));
MsckDesc checkDesc = new MsckDesc(tableName, specs, ctx.getResFile(),
repair);
rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
index e7bbd54..18b0e1c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java
@@ -161,9 +161,12 @@ public class Operation2Privilege {
op2Priv.put(HiveOperationType.DESCFUNCTION, PrivRequirement.newIOPrivRequirement
(null, null));
- // meta store check command - require admin priv
+ // meta store check command - equivalent to add partition command
+ // no input objects are passed to it currently, but keeping admin priv
+ // requirement on inputs just in case some input object like file
+ // uri is added later
op2Priv.put(HiveOperationType.MSCK, PrivRequirement.newIOPrivRequirement
-(ADMIN_PRIV_AR, null));
+(ADMIN_PRIV_AR, INS_NOGRANT_AR));
//alter table commands require table ownership
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/queries/clientnegative/authorization_msck.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/authorization_msck.q b/ql/src/test/queries/clientnegative/authorization_msck.q
new file mode 100644
index 0000000..8c7edce
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/authorization_msck.q
@@ -0,0 +1,20 @@
+set hive.test.authz.sstd.hs2.mode=true;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator;
+set hive.security.authorization.enabled=true;
+set user.name=user1;
+
+-- check if alter table fails as different user
+create table t1(i int);
+msck repair table t1;
+
+
+set user.name=user1;
+GRANT INSERT ON t1 TO USER user2;
+
+set user.name=user2;
+msck repair table t1;
+
+set user.name=user3;
+msck repair table t1;
+
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientnegative/authorization_msck.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/authorization_msck.q.out b/ql/src/test/results/clientnegative/authorization_msck.q.out
new file mode 100644
index 0000000..7e36488
--- /dev/null
+++ b/ql/src/test/results/clientnegative/authorization_msck.q.out
@@ -0,0 +1,27 @@
+PREHOOK: query: create table t1(i int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t1
+POSTHOOK: query: create table t1(i int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t1
+PREHOOK: query: msck repair table t1
+PREHOOK: type: MSCK
+PREHOOK: Output: default@t1
+POSTHOOK: query: msck repair table t1
+POSTHOOK: type: MSCK
+POSTHOOK: Output: default@t1
+PREHOOK: query: GRANT INSERT ON t1 TO USER user2
+PREHOOK: type: GRANT_PRIVILEGE
+PREHOOK: Output: default@t1
+POSTHOOK: query: GRANT INSERT ON t1 TO USER user2
+POSTHOOK: type: GRANT_PRIVILEGE
+POSTHOOK: Output: default@t1
+PREHOOK: query: msck repair table t1
+PREHOOK: type: MSCK
+PREHOOK: Output: default@t1
+POSTHOOK: query: msck repair table t1
+POSTHOOK: type: MSCK
+POSTHOOK: Output: default@t1
+FAILED: HiveAccessControlException Permission denied: Principal [name=user3, type=USER] does not have following privileges for operation MSCK [[INSERT] on Object [type=TABLE_OR_VIEW, name=default.t1]]
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientnegative/msck_repair_1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/msck_repair_1.q.out b/ql/src/test/results/clientnegative/msck_repair_1.q.out
index c5f644d..174419f 100644
--- a/ql/src/test/results/clientnegative/msck_repair_1.q.out
+++ b/ql/src/test/results/clientnegative/msck_repair_1.q.out
@@ -12,8 +12,11 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientnegative/msck_repair_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/msck_repair_2.q.out b/ql/src/test/results/clientnegative/msck_repair_2.q.out
index c5f644d..174419f 100644
--- a/ql/src/test/results/clientnegative/msck_repair_2.q.out
+++ b/ql/src/test/results/clientnegative/msck_repair_2.q.out
@@ -12,8 +12,11 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientnegative/msck_repair_3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/msck_repair_3.q.out b/ql/src/test/results/clientnegative/msck_repair_3.q.out
index c5f644d..174419f 100644
--- a/ql/src/test/results/clientnegative/msck_repair_3.q.out
+++ b/ql/src/test/results/clientnegative/msck_repair_3.q.out
@@ -12,8 +12,11 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientnegative/table_nonprintable_negative.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/table_nonprintable_negative.q.out b/ql/src/test/results/clientnegative/table_nonprintable_negative.q.out
index 15af756..8b22480 100644
--- a/ql/src/test/results/clientnegative/table_nonprintable_negative.q.out
+++ b/ql/src/test/results/clientnegative/table_nonprintable_negative.q.out
@@ -16,4 +16,5 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@table_external
PREHOOK: query: msck repair table table_external
PREHOOK: type: MSCK
+PREHOOK: Output: default@table_external
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientpositive/llap/table_nonprintable.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/table_nonprintable.q.out b/ql/src/test/results/clientpositive/llap/table_nonprintable.q.out
index d7c93f2..c9b962e 100644
--- a/ql/src/test/results/clientpositive/llap/table_nonprintable.q.out
+++ b/ql/src/test/results/clientpositive/llap/table_nonprintable.q.out
@@ -20,8 +20,10 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@table_external
PREHOOK: query: msck repair table table_external
PREHOOK: type: MSCK
+PREHOOK: Output: default@table_external
POSTHOOK: query: msck repair table table_external
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@table_external
Partitions not in metastore: table_external:day=�Bar
Repair: Cannot add partition table_external:day=Foo due to invalid characters in the name
Repair: Added partition to metastore table_external:day=�Bar
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientpositive/msck_repair_0.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/msck_repair_0.q.out b/ql/src/test/results/clientpositive/msck_repair_0.q.out
index c394f9b..3f2fe75 100644
--- a/ql/src/test/results/clientpositive/msck_repair_0.q.out
+++ b/ql/src/test/results/clientpositive/msck_repair_0.q.out
@@ -12,23 +12,31 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
PREHOOK: query: MSCK REPAIR TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK REPAIR TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
Repair: Added partition to metastore default.repairtable:p1=c/p2=a
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: DROP TABLE default.repairtable
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@repairtable
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientpositive/msck_repair_1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/msck_repair_1.q.out b/ql/src/test/results/clientpositive/msck_repair_1.q.out
index c394f9b..3f2fe75 100644
--- a/ql/src/test/results/clientpositive/msck_repair_1.q.out
+++ b/ql/src/test/results/clientpositive/msck_repair_1.q.out
@@ -12,23 +12,31 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
PREHOOK: query: MSCK REPAIR TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK REPAIR TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
Repair: Added partition to metastore default.repairtable:p1=c/p2=a
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: DROP TABLE default.repairtable
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@repairtable
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientpositive/msck_repair_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/msck_repair_2.q.out b/ql/src/test/results/clientpositive/msck_repair_2.q.out
index c394f9b..3f2fe75 100644
--- a/ql/src/test/results/clientpositive/msck_repair_2.q.out
+++ b/ql/src/test/results/clientpositive/msck_repair_2.q.out
@@ -12,23 +12,31 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
PREHOOK: query: MSCK REPAIR TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK REPAIR TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
Repair: Added partition to metastore default.repairtable:p1=c/p2=a
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: DROP TABLE default.repairtable
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@repairtable
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientpositive/msck_repair_3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/msck_repair_3.q.out b/ql/src/test/results/clientpositive/msck_repair_3.q.out
index c394f9b..3f2fe75 100644
--- a/ql/src/test/results/clientpositive/msck_repair_3.q.out
+++ b/ql/src/test/results/clientpositive/msck_repair_3.q.out
@@ -12,23 +12,31 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
PREHOOK: query: MSCK REPAIR TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK REPAIR TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=c/p2=a
Repair: Added partition to metastore default.repairtable:p1=c/p2=a
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: DROP TABLE default.repairtable
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@repairtable
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientpositive/msck_repair_batchsize.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/msck_repair_batchsize.q.out b/ql/src/test/results/clientpositive/msck_repair_batchsize.q.out
index 0300f20..a0180b7 100644
--- a/ql/src/test/results/clientpositive/msck_repair_batchsize.q.out
+++ b/ql/src/test/results/clientpositive/msck_repair_batchsize.q.out
@@ -12,25 +12,33 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=a/p2=a repairtable:p1=b/p2=a repairtable:p1=c/p2=a
PREHOOK: query: MSCK REPAIR TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK REPAIR TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=a/p2=a repairtable:p1=b/p2=a repairtable:p1=c/p2=a
Repair: Added partition to metastore default.repairtable:p1=a/p2=a
Repair: Added partition to metastore default.repairtable:p1=b/p2=a
Repair: Added partition to metastore default.repairtable:p1=c/p2=a
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: DROP TABLE default.repairtable
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@repairtable
http://git-wip-us.apache.org/repos/asf/hive/blob/cf392f12/ql/src/test/results/clientpositive/repair.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/repair.q.out b/ql/src/test/results/clientpositive/repair.q.out
index 86ac031..c183464 100644
--- a/ql/src/test/results/clientpositive/repair.q.out
+++ b/ql/src/test/results/clientpositive/repair.q.out
@@ -12,24 +12,32 @@ POSTHOOK: Output: database:default
POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: MSCK TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=a/p2=a repairtable:p1=b/p2=a
PREHOOK: query: MSCK REPAIR TABLE default.repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK REPAIR TABLE default.repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
Partitions not in metastore: repairtable:p1=a/p2=a repairtable:p1=b/p2=a
Repair: Added partition to metastore default.repairtable:p1=a/p2=a
Repair: Added partition to metastore default.repairtable:p1=b/p2=a
PREHOOK: query: MSCK TABLE repairtable
PREHOOK: type: MSCK
+PREHOOK: Output: default@repairtable
POSTHOOK: query: MSCK TABLE repairtable
POSTHOOK: type: MSCK
+POSTHOOK: Output: default@repairtable
PREHOOK: query: DROP TABLE default.repairtable
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@repairtable
[37/50] [abbrv] hive git commit: HIVE-15748: Remove cycles created
due to semi join branch and map join Op on same operator pipeline (Deepak
Jaiswal via Jason Dere)
Posted by se...@apache.org.
HIVE-15748: Remove cycles created due to semi join branch and map join Op on same operator pipeline (Deepak Jaiswal via Jason Dere)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/d9cb93aa
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/d9cb93aa
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/d9cb93aa
Branch: refs/heads/hive-14535
Commit: d9cb93aaa0bcb344b5c07623b96ac8888b87a995
Parents: 5c403e9
Author: Jason Dere <jd...@hortonworks.com>
Authored: Wed Feb 1 14:06:40 2017 -0800
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Wed Feb 1 14:06:40 2017 -0800
----------------------------------------------------------------------
.../hive/ql/optimizer/ConvertJoinMapJoin.java | 59 ++++
.../hadoop/hive/ql/parse/GenTezUtils.java | 3 +-
.../clientpositive/dynamic_semijoin_reduction.q | 12 +
.../llap/dynamic_semijoin_reduction.q.out | 274 +++++++++++++++++++
4 files changed, 347 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/d9cb93aa/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
index beed6b8..0f9e86b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
@@ -43,11 +43,15 @@ import org.apache.hadoop.hive.ql.exec.Operator;
import org.apache.hadoop.hive.ql.exec.OperatorFactory;
import org.apache.hadoop.hive.ql.exec.OperatorUtils;
import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
+import org.apache.hadoop.hive.ql.exec.SelectOperator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.exec.TezDummyStoreOperator;
import org.apache.hadoop.hive.ql.lib.Node;
import org.apache.hadoop.hive.ql.lib.NodeProcessor;
import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx;
+import org.apache.hadoop.hive.ql.parse.GenTezUtils;
import org.apache.hadoop.hive.ql.parse.OptimizeTezProcContext;
+import org.apache.hadoop.hive.ql.parse.ParseContext;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.plan.CommonMergeJoinDesc;
import org.apache.hadoop.hive.ql.plan.DynamicPruningEventDesc;
@@ -717,6 +721,7 @@ public class ConvertJoinMapJoin implements NodeProcessor {
Operator<? extends OperatorDesc> parentBigTableOp =
mapJoinOp.getParentOperators().get(bigTablePosition);
if (parentBigTableOp instanceof ReduceSinkOperator) {
+ Operator<?> parentSelectOpOfBigTableOp = parentBigTableOp.getParentOperators().get(0);
if (removeReduceSink) {
for (Operator<?> p : parentBigTableOp.getParentOperators()) {
// we might have generated a dynamic partition operator chain. Since
@@ -759,11 +764,65 @@ public class ConvertJoinMapJoin implements NodeProcessor {
}
op.getChildOperators().remove(joinOp);
}
+
+ // Remove semijoin Op if there is any.
+ if (context.parseContext.getRsOpToTsOpMap().size() > 0) {
+ removeCycleCreatingSemiJoinOps(mapJoinOp, parentSelectOpOfBigTableOp,
+ context.parseContext);
+ }
}
return mapJoinOp;
}
+ // Remove any semijoin branch associated with mapjoin's parent's operator
+ // pipeline which can cause a cycle after mapjoin optimization.
+ private void removeCycleCreatingSemiJoinOps(MapJoinOperator mapjoinOp,
+ Operator<?> parentSelectOpOfBigTable,
+ ParseContext parseContext) throws SemanticException {
+ boolean semiJoinCycle = false;
+ ReduceSinkOperator rs = null;
+ TableScanOperator ts = null;
+ for (Operator<?> op : parentSelectOpOfBigTable.getChildOperators()) {
+ if (!(op instanceof SelectOperator)) {
+ continue;
+ }
+
+ while (op.getChildOperators().size() > 0 ) {
+ op = op.getChildOperators().get(0);
+ if (!(op instanceof ReduceSinkOperator)) {
+ continue;
+ }
+ rs = (ReduceSinkOperator) op;
+ ts = parseContext.getRsOpToTsOpMap().get(rs);
+ if (ts == null) {
+ continue;
+ }
+ for (Operator<?> parent : mapjoinOp.getParentOperators()) {
+ if (!(parent instanceof ReduceSinkOperator)) {
+ continue;
+ }
+
+ Set<TableScanOperator> tsOps = OperatorUtils.findOperatorsUpstream(parent,
+ TableScanOperator.class);
+ for (TableScanOperator parentTS : tsOps) {
+ // If the parent is same as the ts, then we have a cycle.
+ if (ts == parentTS) {
+ semiJoinCycle = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // By design there can be atmost 1 such cycle.
+ if (semiJoinCycle) {
+ GenTezUtils.removeBranch(rs);
+ GenTezUtils.removeSemiJoinOperator(parseContext, rs, ts);
+ }
+ }
+
private AppMasterEventOperator findDynamicPartitionBroadcast(Operator<?> parent) {
for (Operator<?> op : parent.getChildOperators()) {
http://git-wip-us.apache.org/repos/asf/hive/blob/d9cb93aa/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java
index 6141391..aee74ad 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.exec.AppMasterEventOperator;
import org.apache.hadoop.hive.ql.exec.FetchTask;
import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
+import org.apache.hadoop.hive.ql.exec.FilterOperator;
import org.apache.hadoop.hive.ql.exec.HashTableDummyOperator;
import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
import org.apache.hadoop.hive.ql.exec.Operator;
@@ -568,7 +569,7 @@ public class GenTezUtils {
TypeInfoFactory.booleanTypeInfo, Boolean.TRUE);
DynamicValuePredicateContext filterDynamicValuePredicatesCollection =
new DynamicValuePredicateContext();
- collectDynamicValuePredicates(ts.getConf().getFilterExpr(),
+ collectDynamicValuePredicates(((FilterOperator)(ts.getChildOperators().get(0))).getConf().getPredicate(),
filterDynamicValuePredicatesCollection);
for (ExprNodeDesc nodeToRemove : filterDynamicValuePredicatesCollection
.childParentMapping.keySet()) {
http://git-wip-us.apache.org/repos/asf/hive/blob/d9cb93aa/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction.q b/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction.q
index 13797c0..e686af6 100644
--- a/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction.q
+++ b/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction.q
@@ -62,6 +62,18 @@ select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcp
set hive.tez.dynamic.semijoin.reduction=true;
EXPLAIN select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1) join alltypesorc_int on (srcpart_date.value = alltypesorc_int.cstring);
select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1) join alltypesorc_int on (srcpart_date.value = alltypesorc_int.cstring);
+--set hive.tez.dynamic.semijoin.reduction=false;
+
+-- With Mapjoins.
+set hive.auto.convert.join=true;
+set hive.auto.convert.join.noconditionaltask=true;
+set hive.auto.convert.join.noconditionaltask.size=100000000000;
+
+EXPLAIN select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1);
+select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1);
+set hive.tez.dynamic.semijoin.reduction=true;
+EXPLAIN select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1);
+select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1);
drop table srcpart_date;
drop table srcpart_small;
http://git-wip-us.apache.org/repos/asf/hive/blob/d9cb93aa/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
index e89526e..cacde93 100644
--- a/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
+++ b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
@@ -1509,6 +1509,280 @@ POSTHOOK: Input: default@srcpart_small@ds=2008-04-08
POSTHOOK: Input: default@srcpart_small@ds=2008-04-09
#### A masked pattern was here ####
0
+PREHOOK: query: EXPLAIN select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Map 3 (BROADCAST_EDGE), Reducer 4 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE)
+ Reducer 4 <- Map 3 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: srcpart_date
+ filterExpr: (key is not null and key BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key is not null and key BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: NONE
+ Map Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: string)
+ 1 _col0 (type: string)
+ input vertices:
+ 1 Map 3
+ Statistics: Num rows: 2200 Data size: 404800 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Execution mode: llap
+ LLAP IO: all inputs
+ Map 3
+ Map Operator Tree:
+ TableScan
+ alias: srcpart_small
+ filterExpr: key1 is not null (type: boolean)
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: key1 is not null (type: boolean)
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key1 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=1000)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+ Execution mode: llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 4
+ Execution mode: llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=1000)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart_date
+PREHOOK: Input: default@srcpart_date@ds=2008-04-08
+PREHOOK: Input: default@srcpart_date@ds=2008-04-09
+PREHOOK: Input: default@srcpart_small
+PREHOOK: Input: default@srcpart_small@ds=2008-04-08
+PREHOOK: Input: default@srcpart_small@ds=2008-04-09
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcpart_date
+POSTHOOK: Input: default@srcpart_date@ds=2008-04-08
+POSTHOOK: Input: default@srcpart_date@ds=2008-04-09
+POSTHOOK: Input: default@srcpart_small
+POSTHOOK: Input: default@srcpart_small@ds=2008-04-08
+POSTHOOK: Input: default@srcpart_small@ds=2008-04-09
+#### A masked pattern was here ####
+8224
+PREHOOK: query: EXPLAIN select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Map 3 (BROADCAST_EDGE), Reducer 4 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE)
+ Reducer 4 <- Map 3 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: srcpart_date
+ filterExpr: (key is not null and key BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key is not null and key BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: NONE
+ Map Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: string)
+ 1 _col0 (type: string)
+ input vertices:
+ 1 Map 3
+ Statistics: Num rows: 2200 Data size: 404800 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Execution mode: llap
+ LLAP IO: all inputs
+ Map 3
+ Map Operator Tree:
+ TableScan
+ alias: srcpart_small
+ filterExpr: key1 is not null (type: boolean)
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: key1 is not null (type: boolean)
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key1 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=1000)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+ Execution mode: llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 4
+ Execution mode: llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=1000)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart_date
+PREHOOK: Input: default@srcpart_date@ds=2008-04-08
+PREHOOK: Input: default@srcpart_date@ds=2008-04-09
+PREHOOK: Input: default@srcpart_small
+PREHOOK: Input: default@srcpart_small@ds=2008-04-08
+PREHOOK: Input: default@srcpart_small@ds=2008-04-09
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from srcpart_date join srcpart_small on (srcpart_date.key = srcpart_small.key1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcpart_date
+POSTHOOK: Input: default@srcpart_date@ds=2008-04-08
+POSTHOOK: Input: default@srcpart_date@ds=2008-04-09
+POSTHOOK: Input: default@srcpart_small
+POSTHOOK: Input: default@srcpart_small@ds=2008-04-08
+POSTHOOK: Input: default@srcpart_small@ds=2008-04-09
+#### A masked pattern was here ####
+8224
PREHOOK: query: drop table srcpart_date
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@srcpart_date
[19/50] [abbrv] hive git commit: HIVE-15653: Some ALTER TABLE
commands drop table stats (Chaoyu Tang, reviewed by PengCheng Xiong)
Posted by se...@apache.org.
HIVE-15653: Some ALTER TABLE commands drop table stats (Chaoyu Tang, reviewed by PengCheng Xiong)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/5468207e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/5468207e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/5468207e
Branch: refs/heads/hive-14535
Commit: 5468207e430b8b3fad6d65f2fcd80d1042cf8327
Parents: 77dfbe0
Author: Chaoyu Tang <ct...@cloudera.com>
Authored: Tue Jan 31 09:46:13 2017 -0500
Committer: Chaoyu Tang <ct...@cloudera.com>
Committed: Tue Jan 31 09:46:13 2017 -0500
----------------------------------------------------------------------
.../hadoop/hive/common/StatsSetupConst.java | 24 +
.../hadoop/hive/metastore/HiveAlterHandler.java | 7 +
.../hadoop/hive/metastore/MetaStoreUtils.java | 13 +-
.../org/apache/hadoop/hive/ql/exec/DDLTask.java | 29 +-
.../hive/ql/parse/DDLSemanticAnalyzer.java | 44 +-
.../clientpositive/alter_table_stats_status.q | 48 ++
.../clientnegative/unset_table_property.q.out | 1 +
.../clientpositive/alter_file_format.q.out | 6 +
.../clientpositive/alter_skewed_table.q.out | 3 +
.../clientpositive/alter_table_not_sorted.q.out | 1 +
.../alter_table_stats_status.q.out | 572 +++++++++++++++++++
.../columnStatsUpdateForStatsOptimizer_2.q.out | 37 +-
.../create_alter_list_bucketing_table1.q.out | 5 +
.../results/clientpositive/create_like.q.out | 1 +
.../describe_comment_nonascii.q.out | 1 +
.../llap/orc_predicate_pushdown.q.out | 112 ++--
.../llap/schema_evol_orc_nonvec_table.q.out | 20 +-
.../llap/schema_evol_orc_vec_table.q.out | 20 +-
.../llap/schema_evol_text_nonvec_table.q.out | 20 +-
.../llap/schema_evol_text_vec_table.q.out | 20 +-
.../llap/schema_evol_text_vecrow_table.q.out | 20 +-
.../partition_coltype_literals.q.out | 4 +-
.../clientpositive/show_tblproperties.q.out | 5 +
.../clientpositive/stats_invalidation.q.out | 1 +
.../unset_table_view_property.q.out | 8 +
25 files changed, 853 insertions(+), 169 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/common/src/java/org/apache/hadoop/hive/common/StatsSetupConst.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/common/StatsSetupConst.java b/common/src/java/org/apache/hadoop/hive/common/StatsSetupConst.java
index 25c7508..c78f005 100644
--- a/common/src/java/org/apache/hadoop/hive/common/StatsSetupConst.java
+++ b/common/src/java/org/apache/hadoop/hive/common/StatsSetupConst.java
@@ -232,6 +232,30 @@ public class StatsSetupConst {
}
}
+ public static void removeColumnStatsState(Map<String, String> params, List<String> colNames) {
+ String statsAcc;
+ if (params != null && (statsAcc = params.get(COLUMN_STATS_ACCURATE)) != null) {
+ // statsAcc may not be jason format, which will throw exception
+ JSONObject stats = parseStatsAcc(statsAcc);
+ try {
+ JSONObject colStats = stats.getJSONObject(COLUMN_STATS);
+ for (String colName : colNames) {
+ if (colStats.has(colName)) {
+ colStats.remove(colName);
+ }
+ }
+ if (colStats.length() != 0) {
+ stats.put(COLUMN_STATS, colStats);
+ } else {
+ stats.remove(COLUMN_STATS);
+ }
+ params.put(COLUMN_STATS_ACCURATE, stats.toString());
+ } catch (JSONException e) {
+ LOG.debug(e.getMessage());
+ }
+ }
+ }
+
public static void setBasicStatsStateForCreateTable(Map<String, String> params, String setting) {
if (TRUE.equals(setting)) {
for (String stat : StatsSetupConst.supportedStats) {
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
index 64d9fc1..bae39ac 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
@@ -729,6 +729,7 @@ public class HiveAlterHandler implements AlterHandler {
assert (partsColStats.size() <= 1);
for (ColumnStatistics partColStats : partsColStats) { //actually only at most one loop
List<ColumnStatisticsObj> statsObjs = partColStats.getStatsObj();
+ List<String> deletedCols = new ArrayList<String>();
for (ColumnStatisticsObj statsObj : statsObjs) {
boolean found =false;
for (FieldSchema newCol : newCols) {
@@ -741,8 +742,10 @@ public class HiveAlterHandler implements AlterHandler {
if (!found) {
msdb.deletePartitionColumnStatistics(dbName, tableName, oldPartName, partVals,
statsObj.getColName());
+ deletedCols.add(statsObj.getColName());
}
}
+ StatsSetupConst.removeColumnStatsState(newPart.getParameters(), deletedCols);
}
} catch (NoSuchObjectException nsoe) {
LOG.debug("Could not find db entry." + nsoe);
@@ -827,6 +830,7 @@ public class HiveAlterHandler implements AlterHandler {
} else {
List<ColumnStatisticsObj> statsObjs = colStats.getStatsObj();
if (statsObjs != null) {
+ List<String> deletedCols = new ArrayList<String>();
for (ColumnStatisticsObj statsObj : statsObjs) {
boolean found = false;
for (FieldSchema newCol : newCols) {
@@ -841,11 +845,14 @@ public class HiveAlterHandler implements AlterHandler {
if (!newDbName.equals(dbName) || !newTableName.equals(tableName)) {
msdb.deleteTableColumnStatistics(dbName, tableName, statsObj.getColName());
newStatsObjs.add(statsObj);
+ deletedCols.add(statsObj.getColName());
}
} else {
msdb.deleteTableColumnStatistics(dbName, tableName, statsObj.getColName());
+ deletedCols.add(statsObj.getColName());
}
}
+ StatsSetupConst.removeColumnStatsState(newTable.getParameters(), deletedCols);
}
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
index b21b9ed..9754466 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
@@ -292,11 +292,14 @@ public class MetaStoreUtils {
return true;
}
- if (environmentContext != null
- && environmentContext.isSetProperties()
- && StatsSetupConst.TASK.equals(environmentContext.getProperties().get(
- StatsSetupConst.STATS_GENERATED))) {
- return true;
+ if (environmentContext != null && environmentContext.isSetProperties()) {
+ String statsType = environmentContext.getProperties().get(StatsSetupConst.STATS_GENERATED);
+ // no matter STATS_GENERATED is USER or TASK, all need to re-calculate the stats:
+ // USER: alter table .. update statistics
+ // TASK: from some sql operation which could collect and compute stats
+ if (StatsSetupConst.TASK.equals(statsType) || StatsSetupConst.USER.equals(statsType)) {
+ return true;
+ }
}
// requires to calculate stats if new and old have different fast stats
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
index 9511b46..ad701f6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
@@ -1188,10 +1188,12 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
throws HiveException {
Table tbl = db.getTable(touchDesc.getTableName());
+ EnvironmentContext environmentContext = new EnvironmentContext();
+ environmentContext.putToProperties(StatsSetupConst.DO_NOT_UPDATE_STATS, StatsSetupConst.TRUE);
if (touchDesc.getPartSpec() == null) {
try {
- db.alterTable(touchDesc.getTableName(), tbl, null);
+ db.alterTable(touchDesc.getTableName(), tbl, environmentContext);
} catch (InvalidOperationException e) {
throw new HiveException("Uable to update table");
}
@@ -1203,7 +1205,7 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
throw new HiveException("Specified partition does not exist");
}
try {
- db.alterPartition(touchDesc.getTableName(), part, null);
+ db.alterPartition(touchDesc.getTableName(), part, environmentContext);
} catch (InvalidOperationException e) {
throw new HiveException(e);
}
@@ -3510,6 +3512,16 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
private int alterTableOrSinglePartition(AlterTableDesc alterTbl, Table tbl, Partition part)
throws HiveException {
+ EnvironmentContext environmentContext = alterTbl.getEnvironmentContext();
+ if (environmentContext == null) {
+ environmentContext = new EnvironmentContext();
+ alterTbl.setEnvironmentContext(environmentContext);
+ }
+ // do not need update stats in alter table/partition operations
+ if (environmentContext.getProperties() == null ||
+ environmentContext.getProperties().get(StatsSetupConst.DO_NOT_UPDATE_STATS) == null) {
+ environmentContext.putToProperties(StatsSetupConst.DO_NOT_UPDATE_STATS, StatsSetupConst.TRUE);
+ }
if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.RENAME) {
tbl.setDbName(Utilities.getDatabaseName(alterTbl.getNewName()));
@@ -3647,6 +3659,10 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
}
sd.setCols(alterTbl.getNewCols());
} else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDPROPS) {
+ if (StatsSetupConst.USER.equals(environmentContext.getProperties()
+ .get(StatsSetupConst.STATS_GENERATED))) {
+ environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
+ }
if (part != null) {
part.getTPartition().getParameters().putAll(alterTbl.getProps());
} else {
@@ -3654,6 +3670,11 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
}
} else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.DROPPROPS) {
Iterator<String> keyItr = alterTbl.getProps().keySet().iterator();
+ if (StatsSetupConst.USER.equals(environmentContext.getProperties()
+ .get(StatsSetupConst.STATS_GENERATED))) {
+ // drop a stats parameter, which triggers recompute stats update automatically
+ environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
+ }
while (keyItr.hasNext()) {
if (part != null) {
part.getTPartition().getParameters().remove(keyItr.next());
@@ -3747,6 +3768,8 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
} catch (URISyntaxException e) {
throw new HiveException(e);
}
+ environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
+
} else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDSKEWEDBY) {
// Validation's been done at compile time. no validation is needed here.
List<String> skewedColNames = null;
@@ -3792,6 +3815,8 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
throw new HiveException(e);
}
}
+
+ environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
} else if (alterTbl.getOp() == AlterTableTypes.ALTERBUCKETNUM) {
if (part != null) {
if (part.getBucketCount() == alterTbl.getNumberBuckets()) {
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
index 0f472e7..ba54d4e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
@@ -1361,30 +1361,34 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
HashMap<String, String> mapProp = getProps((ASTNode) (ast.getChild(0))
.getChild(0));
EnvironmentContext environmentContext = null;
- if (queryState.getCommandType()
- .equals(HiveOperation.ALTERTABLE_UPDATETABLESTATS.getOperationName())
- || queryState.getCommandType()
- .equals(HiveOperation.ALTERTABLE_UPDATEPARTSTATS.getOperationName())) {
- // we need to check if the properties are valid, especially for stats.
- boolean changeStatsSucceeded = false;
- for (Entry<String, String> entry : mapProp.entrySet()) {
- // we make sure that we do not change anything if there is anything
- // wrong.
- if (entry.getKey().equals(StatsSetupConst.ROW_COUNT)
- || entry.getKey().equals(StatsSetupConst.RAW_DATA_SIZE)) {
- try {
- Long.parseLong(entry.getValue());
- changeStatsSucceeded = true;
- } catch (Exception e) {
- throw new SemanticException("AlterTable " + entry.getKey() + " failed with value "
- + entry.getValue());
- }
- } else {
+ // we need to check if the properties are valid, especially for stats.
+ // they might be changed via alter table .. update statistics or
+ // alter table .. set tblproperties. If the property is not row_count
+ // or raw_data_size, it could not be changed through update statistics
+ boolean changeStatsSucceeded = false;
+ for (Entry<String, String> entry : mapProp.entrySet()) {
+ // we make sure that we do not change anything if there is anything
+ // wrong.
+ if (entry.getKey().equals(StatsSetupConst.ROW_COUNT)
+ || entry.getKey().equals(StatsSetupConst.RAW_DATA_SIZE)) {
+ try {
+ Long.parseLong(entry.getValue());
+ changeStatsSucceeded = true;
+ } catch (Exception e) {
+ throw new SemanticException("AlterTable " + entry.getKey() + " failed with value "
+ + entry.getValue());
+ }
+ } else {
+ if (queryState.getCommandType()
+ .equals(HiveOperation.ALTERTABLE_UPDATETABLESTATS.getOperationName())
+ || queryState.getCommandType()
+ .equals(HiveOperation.ALTERTABLE_UPDATEPARTSTATS.getOperationName())) {
throw new SemanticException("AlterTable UpdateStats " + entry.getKey()
- + " failed because the only valid keys are" + StatsSetupConst.ROW_COUNT + " and "
+ + " failed because the only valid keys are " + StatsSetupConst.ROW_COUNT + " and "
+ StatsSetupConst.RAW_DATA_SIZE);
}
}
+
if (changeStatsSucceeded) {
environmentContext = new EnvironmentContext();
environmentContext.putToProperties(StatsSetupConst.STATS_GENERATED, StatsSetupConst.USER);
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/queries/clientpositive/alter_table_stats_status.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/alter_table_stats_status.q b/ql/src/test/queries/clientpositive/alter_table_stats_status.q
new file mode 100644
index 0000000..8e07b81
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/alter_table_stats_status.q
@@ -0,0 +1,48 @@
+create database statsdb;
+use statsdb;
+create table srctable like default.src;
+load data local inpath '../../data/files/kv1.txt' overwrite into table srctable;
+
+analyze table srctable compute statistics;
+describe formatted srctable;
+
+alter table srctable touch;
+alter table srctable rename to statstable;
+
+alter table statstable add columns (newcol string);
+alter table statstable change key key string;
+alter table statstable set tblproperties('testtblstats'='unchange');
+describe formatted statstable;
+
+alter table statstable update statistics set ('numRows' = '1000');
+describe formatted statstable;
+
+analyze table statstable compute statistics;
+describe formatted statstable;
+alter table statstable set location '${system:test.tmp.dir}/newdir';
+describe formatted statstable;
+
+drop table statstable;
+
+create table srcpart like default.srcpart;
+load data local inpath '../../data/files/kv1.txt' overwrite into table srcpart partition (ds='2008-04-08', hr='11');
+load data local inpath '../../data/files/kv1.txt' overwrite into table srcpart partition (ds='2008-04-08', hr='12');
+
+analyze table srcpart partition (ds='2008-04-08', hr='11') compute statistics;
+describe formatted srcpart partition (ds='2008-04-08', hr='11');
+
+alter table srcpart touch;
+alter table srcpart partition (ds='2008-04-08', hr='11') rename to partition (ds='2017-01-19', hr='11');
+alter table srcpart partition (ds='2017-01-19', hr='11') add columns (newcol string);
+alter table srcpart partition (ds='2017-01-19', hr='11') change key key string;
+alter table srcpart set tblproperties('testpartstats'='unchange');
+describe formatted srcpart partition (ds='2017-01-19', hr='11');
+
+alter table srcpart partition (ds='2017-01-19', hr='11') update statistics set ('numRows' = '1000');
+describe formatted srcpart partition (ds='2017-01-19', hr='11');
+
+analyze table srcpart partition (ds='2017-01-19', hr='11') compute statistics;
+describe formatted srcpart partition (ds='2017-01-19', hr='11');
+
+drop table srcpart;
+
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientnegative/unset_table_property.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/unset_table_property.q.out b/ql/src/test/results/clientnegative/unset_table_property.q.out
index 0705b92..4aedfc5 100644
--- a/ql/src/test/results/clientnegative/unset_table_property.q.out
+++ b/ql/src/test/results/clientnegative/unset_table_property.q.out
@@ -18,6 +18,7 @@ PREHOOK: query: SHOW TBLPROPERTIES testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
a 1
c 3
#### A masked pattern was here ####
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/alter_file_format.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/alter_file_format.q.out b/ql/src/test/results/clientpositive/alter_file_format.q.out
index a69b423..ca569be 100644
--- a/ql/src/test/results/clientpositive/alter_file_format.q.out
+++ b/ql/src/test/results/clientpositive/alter_file_format.q.out
@@ -67,6 +67,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -110,6 +111,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -153,6 +155,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -196,6 +199,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -239,6 +243,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -282,6 +287,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/alter_skewed_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/alter_skewed_table.q.out b/ql/src/test/results/clientpositive/alter_skewed_table.q.out
index 0f60ba3..fefef4c 100644
--- a/ql/src/test/results/clientpositive/alter_skewed_table.q.out
+++ b/ql/src/test/results/clientpositive/alter_skewed_table.q.out
@@ -67,6 +67,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -169,6 +170,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -267,6 +269,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/alter_table_not_sorted.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/alter_table_not_sorted.q.out b/ql/src/test/results/clientpositive/alter_table_not_sorted.q.out
index 566b804..5afb7fa 100644
--- a/ql/src/test/results/clientpositive/alter_table_not_sorted.q.out
+++ b/ql/src/test/results/clientpositive/alter_table_not_sorted.q.out
@@ -68,6 +68,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
SORTBUCKETCOLSPREFIX TRUE
#### A masked pattern was here ####
numFiles 0
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/alter_table_stats_status.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/alter_table_stats_status.q.out b/ql/src/test/results/clientpositive/alter_table_stats_status.q.out
new file mode 100644
index 0000000..3404f88
--- /dev/null
+++ b/ql/src/test/results/clientpositive/alter_table_stats_status.q.out
@@ -0,0 +1,572 @@
+PREHOOK: query: create database statsdb
+PREHOOK: type: CREATEDATABASE
+PREHOOK: Output: database:statsdb
+POSTHOOK: query: create database statsdb
+POSTHOOK: type: CREATEDATABASE
+POSTHOOK: Output: database:statsdb
+PREHOOK: query: use statsdb
+PREHOOK: type: SWITCHDATABASE
+PREHOOK: Input: database:statsdb
+POSTHOOK: query: use statsdb
+POSTHOOK: type: SWITCHDATABASE
+POSTHOOK: Input: database:statsdb
+PREHOOK: query: create table srctable like default.src
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:statsdb
+PREHOOK: Output: statsdb@srctable
+POSTHOOK: query: create table srctable like default.src
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:statsdb
+POSTHOOK: Output: statsdb@srctable
+PREHOOK: query: load data local inpath '../../data/files/kv1.txt' overwrite into table srctable
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: statsdb@srctable
+POSTHOOK: query: load data local inpath '../../data/files/kv1.txt' overwrite into table srctable
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: statsdb@srctable
+PREHOOK: query: analyze table srctable compute statistics
+PREHOOK: type: QUERY
+PREHOOK: Input: statsdb@srctable
+PREHOOK: Output: statsdb@srctable
+POSTHOOK: query: analyze table srctable compute statistics
+POSTHOOK: type: QUERY
+POSTHOOK: Input: statsdb@srctable
+POSTHOOK: Output: statsdb@srctable
+PREHOOK: query: describe formatted srctable
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@srctable
+POSTHOOK: query: describe formatted srctable
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@srctable
+# col_name data_type comment
+
+key string default
+value string default
+
+# Detailed Table Information
+Database: statsdb
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+ numFiles 1
+ numRows 500
+ rawDataSize 5312
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: alter table srctable touch
+PREHOOK: type: ALTERTABLE_TOUCH
+PREHOOK: Input: statsdb@srctable
+PREHOOK: Output: statsdb@srctable
+POSTHOOK: query: alter table srctable touch
+POSTHOOK: type: ALTERTABLE_TOUCH
+POSTHOOK: Input: statsdb@srctable
+POSTHOOK: Output: statsdb@srctable
+PREHOOK: query: alter table srctable rename to statstable
+PREHOOK: type: ALTERTABLE_RENAME
+PREHOOK: Input: statsdb@srctable
+PREHOOK: Output: statsdb@srctable
+POSTHOOK: query: alter table srctable rename to statstable
+POSTHOOK: type: ALTERTABLE_RENAME
+POSTHOOK: Input: statsdb@srctable
+POSTHOOK: Output: statsdb@srctable
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: alter table statstable add columns (newcol string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: statsdb@statstable
+PREHOOK: Output: statsdb@statstable
+POSTHOOK: query: alter table statstable add columns (newcol string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: statsdb@statstable
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: alter table statstable change key key string
+PREHOOK: type: ALTERTABLE_RENAMECOL
+PREHOOK: Input: statsdb@statstable
+PREHOOK: Output: statsdb@statstable
+POSTHOOK: query: alter table statstable change key key string
+POSTHOOK: type: ALTERTABLE_RENAMECOL
+POSTHOOK: Input: statsdb@statstable
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: alter table statstable set tblproperties('testtblstats'='unchange')
+PREHOOK: type: ALTERTABLE_PROPERTIES
+PREHOOK: Input: statsdb@statstable
+PREHOOK: Output: statsdb@statstable
+POSTHOOK: query: alter table statstable set tblproperties('testtblstats'='unchange')
+POSTHOOK: type: ALTERTABLE_PROPERTIES
+POSTHOOK: Input: statsdb@statstable
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: describe formatted statstable
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@statstable
+POSTHOOK: query: describe formatted statstable
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@statstable
+# col_name data_type comment
+
+key string default
+value string default
+newcol string
+
+# Detailed Table Information
+Database: statsdb
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+#### A masked pattern was here ####
+ numFiles 1
+ numRows 500
+ rawDataSize 5312
+ testtblstats unchange
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: alter table statstable update statistics set ('numRows' = '1000')
+PREHOOK: type: ALTERTABLE_UPDATETABLESTATS
+PREHOOK: Input: statsdb@statstable
+PREHOOK: Output: statsdb@statstable
+POSTHOOK: query: alter table statstable update statistics set ('numRows' = '1000')
+POSTHOOK: type: ALTERTABLE_UPDATETABLESTATS
+POSTHOOK: Input: statsdb@statstable
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: describe formatted statstable
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@statstable
+POSTHOOK: query: describe formatted statstable
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@statstable
+# col_name data_type comment
+
+key string default
+value string default
+newcol string
+
+# Detailed Table Information
+Database: statsdb
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 1
+ numRows 1000
+ rawDataSize 5312
+ testtblstats unchange
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: analyze table statstable compute statistics
+PREHOOK: type: QUERY
+PREHOOK: Input: statsdb@statstable
+PREHOOK: Output: statsdb@statstable
+POSTHOOK: query: analyze table statstable compute statistics
+POSTHOOK: type: QUERY
+POSTHOOK: Input: statsdb@statstable
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: describe formatted statstable
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@statstable
+POSTHOOK: query: describe formatted statstable
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@statstable
+# col_name data_type comment
+
+key string default
+value string default
+newcol string
+
+# Detailed Table Information
+Database: statsdb
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+#### A masked pattern was here ####
+ numFiles 1
+ numRows 500
+ rawDataSize 5312
+ testtblstats unchange
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+#### A masked pattern was here ####
+PREHOOK: type: ALTERTABLE_LOCATION
+PREHOOK: Input: statsdb@statstable
+#### A masked pattern was here ####
+PREHOOK: Output: statsdb@statstable
+#### A masked pattern was here ####
+POSTHOOK: type: ALTERTABLE_LOCATION
+POSTHOOK: Input: statsdb@statstable
+#### A masked pattern was here ####
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: describe formatted statstable
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@statstable
+POSTHOOK: query: describe formatted statstable
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@statstable
+# col_name data_type comment
+
+key string default
+value string default
+newcol string
+
+# Detailed Table Information
+Database: statsdb
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 0
+ numRows 500
+ rawDataSize 5312
+ testtblstats unchange
+ totalSize 0
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: drop table statstable
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: statsdb@statstable
+PREHOOK: Output: statsdb@statstable
+POSTHOOK: query: drop table statstable
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: statsdb@statstable
+POSTHOOK: Output: statsdb@statstable
+PREHOOK: query: create table srcpart like default.srcpart
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:statsdb
+PREHOOK: Output: statsdb@srcpart
+POSTHOOK: query: create table srcpart like default.srcpart
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:statsdb
+POSTHOOK: Output: statsdb@srcpart
+PREHOOK: query: load data local inpath '../../data/files/kv1.txt' overwrite into table srcpart partition (ds='2008-04-08', hr='11')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: statsdb@srcpart
+POSTHOOK: query: load data local inpath '../../data/files/kv1.txt' overwrite into table srcpart partition (ds='2008-04-08', hr='11')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: statsdb@srcpart
+POSTHOOK: Output: statsdb@srcpart@ds=2008-04-08/hr=11
+PREHOOK: query: load data local inpath '../../data/files/kv1.txt' overwrite into table srcpart partition (ds='2008-04-08', hr='12')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: statsdb@srcpart
+POSTHOOK: query: load data local inpath '../../data/files/kv1.txt' overwrite into table srcpart partition (ds='2008-04-08', hr='12')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: statsdb@srcpart
+POSTHOOK: Output: statsdb@srcpart@ds=2008-04-08/hr=12
+PREHOOK: query: analyze table srcpart partition (ds='2008-04-08', hr='11') compute statistics
+PREHOOK: type: QUERY
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Input: statsdb@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Output: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: query: analyze table srcpart partition (ds='2008-04-08', hr='11') compute statistics
+POSTHOOK: type: QUERY
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Input: statsdb@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Output: statsdb@srcpart
+POSTHOOK: Output: statsdb@srcpart@ds=2008-04-08/hr=11
+PREHOOK: query: describe formatted srcpart partition (ds='2008-04-08', hr='11')
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@srcpart
+POSTHOOK: query: describe formatted srcpart partition (ds='2008-04-08', hr='11')
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@srcpart
+# col_name data_type comment
+
+key string default
+value string default
+
+# Partition Information
+# col_name data_type comment
+
+ds string
+hr string
+
+# Detailed Partition Information
+Partition Value: [2008-04-08, 11]
+Database: statsdb
+Table: srcpart
+#### A masked pattern was here ####
+Partition Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+ numFiles 1
+ numRows 500
+ rawDataSize 5312
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: alter table srcpart touch
+PREHOOK: type: ALTERTABLE_TOUCH
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart
+POSTHOOK: query: alter table srcpart touch
+POSTHOOK: type: ALTERTABLE_TOUCH
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Output: statsdb@srcpart
+PREHOOK: query: alter table srcpart partition (ds='2008-04-08', hr='11') rename to partition (ds='2017-01-19', hr='11')
+PREHOOK: type: ALTERTABLE_RENAMEPART
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: query: alter table srcpart partition (ds='2008-04-08', hr='11') rename to partition (ds='2017-01-19', hr='11')
+POSTHOOK: type: ALTERTABLE_RENAMEPART
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Input: statsdb@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Output: statsdb@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+PREHOOK: query: alter table srcpart partition (ds='2017-01-19', hr='11') add columns (newcol string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: query: alter table srcpart partition (ds='2017-01-19', hr='11') add columns (newcol string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Input: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+PREHOOK: query: alter table srcpart partition (ds='2017-01-19', hr='11') change key key string
+PREHOOK: type: ALTERTABLE_RENAMECOL
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: query: alter table srcpart partition (ds='2017-01-19', hr='11') change key key string
+POSTHOOK: type: ALTERTABLE_RENAMECOL
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Input: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+PREHOOK: query: alter table srcpart set tblproperties('testpartstats'='unchange')
+PREHOOK: type: ALTERTABLE_PROPERTIES
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart
+POSTHOOK: query: alter table srcpart set tblproperties('testpartstats'='unchange')
+POSTHOOK: type: ALTERTABLE_PROPERTIES
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Output: statsdb@srcpart
+PREHOOK: query: describe formatted srcpart partition (ds='2017-01-19', hr='11')
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@srcpart
+POSTHOOK: query: describe formatted srcpart partition (ds='2017-01-19', hr='11')
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@srcpart
+# col_name data_type comment
+
+key string default
+value string default
+newcol string
+
+# Partition Information
+# col_name data_type comment
+
+ds string
+hr string
+
+# Detailed Partition Information
+Partition Value: [2017-01-19, 11]
+Database: statsdb
+Table: srcpart
+#### A masked pattern was here ####
+Partition Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+#### A masked pattern was here ####
+ numFiles 1
+ numRows 500
+ rawDataSize 5312
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: alter table srcpart partition (ds='2017-01-19', hr='11') update statistics set ('numRows' = '1000')
+PREHOOK: type: ALTERTABLE_UPDATEPARTSTATS
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: query: alter table srcpart partition (ds='2017-01-19', hr='11') update statistics set ('numRows' = '1000')
+POSTHOOK: type: ALTERTABLE_UPDATEPARTSTATS
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Input: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+PREHOOK: query: describe formatted srcpart partition (ds='2017-01-19', hr='11')
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@srcpart
+POSTHOOK: query: describe formatted srcpart partition (ds='2017-01-19', hr='11')
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@srcpart
+# col_name data_type comment
+
+key string default
+value string default
+newcol string
+
+# Partition Information
+# col_name data_type comment
+
+ds string
+hr string
+
+# Detailed Partition Information
+Partition Value: [2017-01-19, 11]
+Database: statsdb
+Table: srcpart
+#### A masked pattern was here ####
+Partition Parameters:
+#### A masked pattern was here ####
+ numFiles 1
+ numRows 1000
+ rawDataSize 5312
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: analyze table srcpart partition (ds='2017-01-19', hr='11') compute statistics
+PREHOOK: type: QUERY
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Input: statsdb@srcpart@ds=2017-01-19/hr=11
+PREHOOK: Output: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: query: analyze table srcpart partition (ds='2017-01-19', hr='11') compute statistics
+POSTHOOK: type: QUERY
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Input: statsdb@srcpart@ds=2017-01-19/hr=11
+POSTHOOK: Output: statsdb@srcpart
+POSTHOOK: Output: statsdb@srcpart@ds=2017-01-19/hr=11
+PREHOOK: query: describe formatted srcpart partition (ds='2017-01-19', hr='11')
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: statsdb@srcpart
+POSTHOOK: query: describe formatted srcpart partition (ds='2017-01-19', hr='11')
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: statsdb@srcpart
+# col_name data_type comment
+
+key string default
+value string default
+newcol string
+
+# Partition Information
+# col_name data_type comment
+
+ds string
+hr string
+
+# Detailed Partition Information
+Partition Value: [2017-01-19, 11]
+Database: statsdb
+Table: srcpart
+#### A masked pattern was here ####
+Partition Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+#### A masked pattern was here ####
+ numFiles 1
+ numRows 500
+ rawDataSize 5312
+ totalSize 5812
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: drop table srcpart
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: statsdb@srcpart
+PREHOOK: Output: statsdb@srcpart
+POSTHOOK: query: drop table srcpart
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: statsdb@srcpart
+POSTHOOK: Output: statsdb@srcpart
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out b/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
index 6c7d0ee..af21343 100644
--- a/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
+++ b/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
@@ -168,6 +168,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 2
numRows 3
@@ -247,44 +248,12 @@ PREHOOK: type: QUERY
POSTHOOK: query: explain select count(1) from calendar
POSTHOOK: type: QUERY
STAGE DEPENDENCIES:
- Stage-1 is a root stage
- Stage-0 depends on stages: Stage-1
+ Stage-0 is a root stage
STAGE PLANS:
- Stage: Stage-1
- Map Reduce
- Map Operator Tree:
- TableScan
- alias: calendar
- Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- aggregations: count(1)
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- sort order:
- Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: bigint)
- Reduce Operator Tree:
- Group By Operator
- aggregations: count(VALUE._col0)
- mode: mergepartial
- outputColumnNames: _col0
- Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- File Output Operator
- compressed: false
- Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-
Stage: Stage-0
Fetch Operator
- limit: -1
+ limit: 1
Processor Tree:
ListSink
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/create_alter_list_bucketing_table1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_alter_list_bucketing_table1.q.out b/ql/src/test/results/clientpositive/create_alter_list_bucketing_table1.q.out
index 6af696a..7d8e5c1 100644
--- a/ql/src/test/results/clientpositive/create_alter_list_bucketing_table1.q.out
+++ b/ql/src/test/results/clientpositive/create_alter_list_bucketing_table1.q.out
@@ -74,6 +74,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -120,6 +121,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -173,6 +175,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -219,6 +222,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -264,6 +268,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/create_like.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_like.q.out b/ql/src/test/results/clientpositive/create_like.q.out
index 58d9879..ff2e752 100644
--- a/ql/src/test/results/clientpositive/create_like.q.out
+++ b/ql/src/test/results/clientpositive/create_like.q.out
@@ -354,6 +354,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
avro.schema.literal {
\"namespace\": \"testing.hive.avro.serde\",
\"name\": \"doctors\",
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/describe_comment_nonascii.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/describe_comment_nonascii.q.out b/ql/src/test/results/clientpositive/describe_comment_nonascii.q.out
index de1cca9..70f234e 100644
--- a/ql/src/test/results/clientpositive/describe_comment_nonascii.q.out
+++ b/ql/src/test/results/clientpositive/describe_comment_nonascii.q.out
@@ -49,6 +49,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
#### A masked pattern was here ####
numFiles 0
numRows 0
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/llap/orc_predicate_pushdown.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/orc_predicate_pushdown.q.out b/ql/src/test/results/clientpositive/llap/orc_predicate_pushdown.q.out
index 133d6c0..4bba265 100644
--- a/ql/src/test/results/clientpositive/llap/orc_predicate_pushdown.q.out
+++ b/ql/src/test/results/clientpositive/llap/orc_predicate_pushdown.q.out
@@ -133,11 +133,11 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: orc_pred
- Statistics: Num rows: 6037 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: hash(t) (type: int)
outputColumnNames: _col0
- Statistics: Num rows: 6037 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: sum(_col0)
mode: hash
@@ -191,11 +191,11 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: orc_pred
- Statistics: Num rows: 6037 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: hash(t) (type: int)
outputColumnNames: _col0
- Statistics: Num rows: 6037 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: sum(_col0)
mode: hash
@@ -321,14 +321,14 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: orc_pred
- Statistics: Num rows: 6037 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: ((t < 0) and (UDFToInteger(t) > -2)) (type: boolean)
- Statistics: Num rows: 670 Data size: 2680 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: hash(t) (type: int)
outputColumnNames: _col0
- Statistics: Num rows: 670 Data size: 2680 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: sum(_col0)
mode: hash
@@ -389,14 +389,14 @@ STAGE PLANS:
TableScan
alias: orc_pred
filterExpr: ((t < 0) and (UDFToInteger(t) > -2)) (type: boolean)
- Statistics: Num rows: 6037 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: ((t < 0) and (UDFToInteger(t) > -2)) (type: boolean)
- Statistics: Num rows: 670 Data size: 2680 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: hash(t) (type: int)
outputColumnNames: _col0
- Statistics: Num rows: 670 Data size: 2680 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: sum(_col0)
mode: hash
@@ -589,18 +589,18 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: orc_pred
- Statistics: Num rows: 232 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: (s is not null and (s like 'bob%') and (not (t) IN (-1, -2, -3)) and t BETWEEN 25 AND 30) (type: boolean)
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: t (type: tinyint), s (type: string)
outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: tinyint), _col1 (type: string)
sort order: ++
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: all inputs
Reducer 2
@@ -609,10 +609,10 @@ STAGE PLANS:
Select Operator
expressions: KEY.reducesinkkey0 (type: tinyint), KEY.reducesinkkey1 (type: string)
outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -655,18 +655,18 @@ STAGE PLANS:
TableScan
alias: orc_pred
filterExpr: (s is not null and (s like 'bob%') and (not (t) IN (-1, -2, -3)) and t BETWEEN 25 AND 30) (type: boolean)
- Statistics: Num rows: 232 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: (s is not null and (s like 'bob%') and (not (t) IN (-1, -2, -3)) and t BETWEEN 25 AND 30) (type: boolean)
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: t (type: tinyint), s (type: string)
outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: tinyint), _col1 (type: string)
sort order: ++
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: all inputs
Reducer 2
@@ -675,10 +675,10 @@ STAGE PLANS:
Select Operator
expressions: KEY.reducesinkkey0 (type: tinyint), KEY.reducesinkkey1 (type: string)
outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 6 Data size: 624 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 29 Data size: 8602 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -786,18 +786,18 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: orc_pred
- Statistics: Num rows: 208 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: ((d >= 10.0) and (d < 12.0) and (s like '%son') and (t > 0) and si BETWEEN 300 AND 400 and (not (s like '%car%'))) (type: boolean)
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: t (type: tinyint), si (type: smallint), d (type: double), s (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col3 (type: string)
sort order: -
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
TopN Hash Memory Usage: 0.1
value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col2 (type: double)
Execution mode: llap
@@ -808,13 +808,13 @@ STAGE PLANS:
Select Operator
expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), VALUE._col2 (type: double), KEY.reducesinkkey0 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -865,18 +865,18 @@ STAGE PLANS:
TableScan
alias: orc_pred
filterExpr: ((d >= 10.0) and (d < 12.0) and (s like '%son') and (t > 0) and si BETWEEN 300 AND 400 and (not (s like '%car%'))) (type: boolean)
- Statistics: Num rows: 208 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: ((d >= 10.0) and (d < 12.0) and (s like '%son') and (t > 0) and si BETWEEN 300 AND 400 and (not (s like '%car%'))) (type: boolean)
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: t (type: tinyint), si (type: smallint), d (type: double), s (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col3 (type: string)
sort order: -
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
TopN Hash Memory Usage: 0.1
value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col2 (type: double)
Execution mode: llap
@@ -887,13 +887,13 @@ STAGE PLANS:
Select Operator
expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), VALUE._col2 (type: double), KEY.reducesinkkey0 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -1010,18 +1010,18 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: orc_pred
- Statistics: Num rows: 208 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: ((t > 10) and (t <> 101) and (d >= 10) and (d < 12.0) and (s like '%son') and (not (s like '%car%')) and (t > 0) and si BETWEEN 300 AND 400) (type: boolean)
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: t (type: tinyint), si (type: smallint), d (type: double), s (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col3 (type: string)
sort order: -
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
TopN Hash Memory Usage: 0.1
value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col2 (type: double)
Execution mode: llap
@@ -1032,14 +1032,14 @@ STAGE PLANS:
Select Operator
expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), VALUE._col2 (type: double), KEY.reducesinkkey0 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col3 (type: string)
sort order: -
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
TopN Hash Memory Usage: 0.1
value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col2 (type: double)
Reducer 3
@@ -1048,13 +1048,13 @@ STAGE PLANS:
Select Operator
expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), VALUE._col2 (type: double), KEY.reducesinkkey0 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -1110,18 +1110,18 @@ STAGE PLANS:
TableScan
alias: orc_pred
filterExpr: ((t > 10) and (t <> 101) and (d >= 10) and (d < 12.0) and (s like '%son') and (not (s like '%car%')) and (t > 0) and si BETWEEN 300 AND 400) (type: boolean)
- Statistics: Num rows: 208 Data size: 24150 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: ((t > 10) and (t <> 101) and (d >= 10) and (d < 12.0) and (s like '%son') and (not (s like '%car%')) and (t > 0) and si BETWEEN 300 AND 400) (type: boolean)
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: t (type: tinyint), si (type: smallint), d (type: double), s (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col3 (type: string)
sort order: -
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
TopN Hash Memory Usage: 0.1
value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col2 (type: double)
Execution mode: llap
@@ -1132,14 +1132,14 @@ STAGE PLANS:
Select Operator
expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), VALUE._col2 (type: double), KEY.reducesinkkey0 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col3 (type: string)
sort order: -
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
TopN Hash Memory Usage: 0.1
value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col2 (type: double)
Reducer 3
@@ -1148,13 +1148,13 @@ STAGE PLANS:
Select Operator
expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), VALUE._col2 (type: double), KEY.reducesinkkey0 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
Limit
Number of rows: 3
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 1 Data size: 296 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_table.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_table.q.out
index 5745a7e..7b420e2 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_table.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_table.q.out
@@ -70,9 +70,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=99)
+ Select Operator [SEL_1] (rows=6 width=99)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=99)
+ TableScan [TS_0] (rows=6 width=99)
default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_permute_select
@@ -183,9 +183,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=99)
+ Select Operator [SEL_1] (rows=6 width=114)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=99)
+ TableScan [TS_0] (rows=6 width=114)
default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_string_permute_select
@@ -358,9 +358,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=422)
+ Select Operator [SEL_1] (rows=6 width=370)
Output:["_col0","_col1","_col2","_col3","_col4"]
- TableScan [TS_0] (rows=5 width=422)
+ TableScan [TS_0] (rows=6 width=370)
default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double
@@ -602,9 +602,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=164)
+ Select Operator [SEL_1] (rows=6 width=479)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21"]
- TableScan [TS_0] (rows=5 width=164)
+ TableScan [TS_0] (rows=6 width=479)
default@table_change_numeric_group_string_group_multi_ints_string_group,table_change_numeric_group_string_group_multi_ints_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","c16","c17","c18","c19","c20","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,b from table_change_numeric_group_string_group_multi_ints_string_group
@@ -757,9 +757,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=588)
+ Select Operator [SEL_1] (rows=6 width=752)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16"]
- TableScan [TS_0] (rows=5 width=588)
+ TableScan [TS_0] (rows=6 width=752)
default@table_change_numeric_group_string_group_floating_string_group,table_change_numeric_group_string_group_floating_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,b from table_change_numeric_group_string_group_floating_string_group
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_table.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_table.q.out
index 87dd01c..ecc4ee6 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_table.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_table.q.out
@@ -70,9 +70,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=99)
+ Select Operator [SEL_3] (rows=6 width=99)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=99)
+ TableScan [TS_0] (rows=6 width=99)
default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_permute_select
@@ -183,9 +183,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=99)
+ Select Operator [SEL_3] (rows=6 width=114)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=99)
+ TableScan [TS_0] (rows=6 width=114)
default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_string_permute_select
@@ -358,9 +358,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=422)
+ Select Operator [SEL_3] (rows=6 width=370)
Output:["_col0","_col1","_col2","_col3","_col4"]
- TableScan [TS_0] (rows=5 width=422)
+ TableScan [TS_0] (rows=6 width=370)
default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double
@@ -602,9 +602,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=164)
+ Select Operator [SEL_3] (rows=6 width=479)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21"]
- TableScan [TS_0] (rows=5 width=164)
+ TableScan [TS_0] (rows=6 width=479)
default@table_change_numeric_group_string_group_multi_ints_string_group,table_change_numeric_group_string_group_multi_ints_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","c16","c17","c18","c19","c20","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,b from table_change_numeric_group_string_group_multi_ints_string_group
@@ -757,9 +757,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=588)
+ Select Operator [SEL_3] (rows=6 width=752)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16"]
- TableScan [TS_0] (rows=5 width=588)
+ TableScan [TS_0] (rows=6 width=752)
default@table_change_numeric_group_string_group_floating_string_group,table_change_numeric_group_string_group_floating_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,b from table_change_numeric_group_string_group_floating_string_group
[39/50] [abbrv] hive git commit: HIVE-15783 : small glitch in
LlapServiceDriver on small VMs (Sergey Shelukhin, reviewed by Gopal V)
Posted by se...@apache.org.
HIVE-15783 : small glitch in LlapServiceDriver on small VMs (Sergey Shelukhin, reviewed by Gopal V)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a67eb03c
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a67eb03c
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a67eb03c
Branch: refs/heads/hive-14535
Commit: a67eb03c80000c89e5f19d5d1e62c35a63b32f3a
Parents: d178b19
Author: Sergey Shelukhin <se...@apache.org>
Authored: Wed Feb 1 14:22:15 2017 -0800
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Wed Feb 1 14:22:15 2017 -0800
----------------------------------------------------------------------
.../java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/a67eb03c/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java b/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java
index 169be22..eba4401 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java
@@ -196,8 +196,8 @@ public class LlapServiceDriver {
final FileSystem fs = FileSystem.get(conf);
final FileSystem lfs = FileSystem.getLocal(conf).getRawFileSystem();
- final ExecutorService executor =
- Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() / 2,
+ int threadCount = Math.max(1, Runtime.getRuntime().availableProcessors() / 2);
+ final ExecutorService executor = Executors.newFixedThreadPool(threadCount,
new ThreadFactoryBuilder().setNameFormat("llap-pkg-%d").build());
final CompletionService<Void> asyncRunner = new ExecutorCompletionService<Void>(executor);
[29/50] [abbrv] hive git commit: HIVE-15703 :
HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via
Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/subquery_in.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/subquery_in.q.out b/ql/src/test/results/clientpositive/llap/subquery_in.q.out
index a75d88a..63432a0 100644
--- a/ql/src/test/results/clientpositive/llap/subquery_in.q.out
+++ b/ql/src/test/results/clientpositive/llap/subquery_in.q.out
@@ -26,16 +26,19 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
- Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: string)
+ Filter Operator
+ predicate: (key > '9') (type: boolean)
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 3
@@ -68,10 +71,10 @@ STAGE PLANS:
0 _col0 (type: string)
1 _col0 (type: string)
outputColumnNames: _col0, _col1
- Statistics: Num rows: 168 Data size: 29904 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
File Output Operator
compressed: false
- Statistics: Num rows: 168 Data size: 29904 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -346,16 +349,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3250 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_name (type: string), p_size (type: int)
- outputColumnNames: _col0, _col1
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3250 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: UDFToDouble(_col1) (type: double)
- sort order: +
- Map-reduce partition columns: UDFToDouble(_col1) (type: double)
+ Select Operator
+ expressions: p_name (type: string), p_size (type: int)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 26 Data size: 3250 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: string), _col1 (type: int)
+ Reduce Output Operator
+ key expressions: UDFToDouble(_col1) (type: double)
+ sort order: +
+ Map-reduce partition columns: UDFToDouble(_col1) (type: double)
+ Statistics: Num rows: 26 Data size: 3250 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: string), _col1 (type: int)
Execution mode: llap
LLAP IO: no inputs
Map 3
@@ -441,16 +447,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: double)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: double)
- sort order: +
- Map-reduce partition columns: _col0 (type: double)
+ Group By Operator
+ keys: _col0 (type: double)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: double)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: double)
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 6
Execution mode: llap
Reduce Operator Tree:
@@ -1010,7 +1019,7 @@ STAGE PLANS:
alias: li
Statistics: Num rows: 100 Data size: 1600 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: ((l_linenumber = 1) and l_partkey is not null) (type: boolean)
+ predicate: ((l_linenumber = 1) and l_partkey is not null and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 17 Data size: 272 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: l_orderkey (type: int), l_partkey (type: int), l_suppkey (type: int)
@@ -1030,7 +1039,7 @@ STAGE PLANS:
alias: lineitem
Statistics: Num rows: 100 Data size: 9200 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (l_shipmode = 'AIR') (type: boolean)
+ predicate: ((l_shipmode = 'AIR') and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 14 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: l_orderkey (type: int)
@@ -1648,16 +1657,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: (_col5 - 1) (type: int)
- sort order: +
- Map-reduce partition columns: (_col5 - 1) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col5 - 1) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col5 - 1) (type: int)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 3
@@ -1714,16 +1726,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
+ Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 5
Execution mode: llap
Reduce Operator Tree:
@@ -1785,16 +1800,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: (p_partkey is not null and p_size is not null) (type: boolean)
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: (_col0 * _col5) (type: int)
- sort order: +
- Map-reduce partition columns: (_col0 * _col5) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col0 * _col5) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col0 * _col5) (type: int)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 3
@@ -1851,16 +1869,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
+ Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 5
Execution mode: llap
Reduce Operator Tree:
@@ -2088,16 +2109,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_retailprice is not null (type: boolean)
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: floor(_col7) (type: bigint)
- sort order: +
- Map-reduce partition columns: floor(_col7) (type: bigint)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: floor(_col7) (type: bigint)
+ sort order: +
+ Map-reduce partition columns: floor(_col7) (type: bigint)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 3
@@ -2151,19 +2175,26 @@ STAGE PLANS:
outputColumnNames: _col0, _col1
Statistics: Num rows: 13 Data size: 1456 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
- expressions: floor(_col1) (type: bigint)
- outputColumnNames: _col0
+ expressions: _col1 (type: double)
+ outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: bigint)
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: floor(_col1) is not null (type: boolean)
+ Statistics: Num rows: 13 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: floor(_col1) (type: bigint)
+ outputColumnNames: _col0
+ Statistics: Num rows: 13 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 5
Execution mode: llap
Reduce Operator Tree:
@@ -2939,16 +2970,19 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
+ Filter Operator
+ predicate: value is not null (type: boolean)
Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col1 (type: string)
- sort order: +
- Map-reduce partition columns: _col1 (type: string)
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 5
@@ -2956,16 +2990,19 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: value (type: string)
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 214 Data size: 19474 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Filter Operator
+ predicate: value is not null (type: boolean)
+ Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: value (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 214 Data size: 19474 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 214 Data size: 19474 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Map 7
@@ -3024,12 +3061,15 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 205 Data size: 19475 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col1 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col1 (type: bigint)
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 205 Data size: 19475 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: bigint)
+ Statistics: Num rows: 205 Data size: 19475 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: string)
Reducer 4
Execution mode: llap
Reduce Operator Tree:
@@ -3074,16 +3114,19 @@ STAGE PLANS:
expressions: _col1 (type: bigint)
outputColumnNames: _col1
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col1 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
+ Group By Operator
+ keys: _col1 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 9
Execution mode: llap
Reduce Operator Tree:
@@ -3463,16 +3506,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: (_col5 - 1) (type: int)
- sort order: +
- Map-reduce partition columns: (_col5 - 1) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col5 - 1) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col5 - 1) (type: int)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 4
@@ -3541,16 +3587,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
+ Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 6
Execution mode: llap
Reduce Operator Tree:
@@ -3613,16 +3662,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: (_col5 - 1) (type: int)
- sort order: +
- Map-reduce partition columns: (_col5 - 1) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col5 - 1) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col5 - 1) (type: int)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 4
@@ -3695,16 +3747,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
+ Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 6
Execution mode: llap
Reduce Operator Tree:
@@ -3761,16 +3816,19 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
+ Filter Operator
+ predicate: key is not null (type: boolean)
Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: string)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 3
@@ -3778,20 +3836,23 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3146 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_name (type: string)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3146 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
+ Select Operator
+ expressions: p_name (type: string)
outputColumnNames: _col0
- Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 26 Data size: 3146 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Map 6
@@ -3799,20 +3860,23 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 2392 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_brand (type: string)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_brand is not null (type: boolean)
Statistics: Num rows: 26 Data size: 2392 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
+ Select Operator
+ expressions: p_brand (type: string)
outputColumnNames: _col0
- Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 26 Data size: 2392 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Reducer 2
@@ -5197,17 +5261,17 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10
Statistics: Num rows: 26 Data size: 16302 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (sq_count_check(CASE WHEN (_col10 is null) THEN (0) ELSE (_col10) END, true) > 0) (type: boolean)
+ predicate: (sq_count_check(_col10, true) > 0) (type: boolean)
Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
- Statistics: Num rows: 8 Data size: 4952 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col4 (type: string), UDFToLong(_col5) (type: bigint)
sort order: ++
Map-reduce partition columns: _col4 (type: string), UDFToLong(_col5) (type: bigint)
- Statistics: Num rows: 8 Data size: 4952 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Reducer 3
Execution mode: llap
@@ -5982,9 +6046,9 @@ STAGE PLANS:
outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 2 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col1 (type: string), _col3 (type: int)
+ key expressions: _col3 (type: int), _col1 (type: string)
sort order: ++
- Map-reduce partition columns: _col1 (type: string), _col3 (type: int)
+ Map-reduce partition columns: _col3 (type: int), _col1 (type: string)
Statistics: Num rows: 2 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col2 (type: boolean)
Reducer 2
@@ -5999,17 +6063,17 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10
Statistics: Num rows: 26 Data size: 16302 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (sq_count_check(CASE WHEN (_col10 is null) THEN (0) ELSE (_col10) END, true) > 0) (type: boolean)
+ predicate: (sq_count_check(_col10, true) > 0) (type: boolean)
Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
- Statistics: Num rows: 8 Data size: 4952 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col4 (type: string)
sort order: +
Map-reduce partition columns: _col4 (type: string)
- Statistics: Num rows: 8 Data size: 4952 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Reducer 21
Execution mode: llap
@@ -6047,14 +6111,14 @@ STAGE PLANS:
keys:
0 _col4 (type: string)
1 _col0 (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13
Statistics: Num rows: 8 Data size: 5080 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col4 (type: string), _col5 (type: int)
+ key expressions: _col5 (type: int), _col4 (type: string)
sort order: ++
- Map-reduce partition columns: _col4 (type: string), _col5 (type: int)
+ Map-reduce partition columns: _col5 (type: int), _col4 (type: string)
Statistics: Num rows: 8 Data size: 5080 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col10 (type: bigint), _col11 (type: bigint)
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col12 (type: bigint), _col13 (type: bigint)
Reducer 4
Execution mode: llap
Reduce Operator Tree:
@@ -6062,12 +6126,12 @@ STAGE PLANS:
condition map:
Left Outer Join0 to 1
keys:
- 0 _col4 (type: string), _col5 (type: int)
- 1 _col1 (type: string), _col3 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col14
+ 0 _col5 (type: int), _col4 (type: string)
+ 1 _col3 (type: int), _col1 (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13, _col16
Statistics: Num rows: 8 Data size: 5112 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: CASE WHEN ((_col10 = 0)) THEN (true) WHEN (_col10 is null) THEN (true) WHEN (_col14 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col11 < _col10)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col12 = 0)) THEN (true) WHEN (_col12 is null) THEN (true) WHEN (_col16 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col13 < _col12)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 4 Data size: 2556 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
@@ -6491,17 +6555,17 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10
Statistics: Num rows: 26 Data size: 16302 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (sq_count_check(CASE WHEN (_col10 is null) THEN (0) ELSE (_col10) END, true) > 0) (type: boolean)
+ predicate: (sq_count_check(_col10, true) > 0) (type: boolean)
Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
- Statistics: Num rows: 8 Data size: 4952 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col0 (type: int)
sort order: +
Map-reduce partition columns: _col0 (type: int)
- Statistics: Num rows: 8 Data size: 4952 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 5016 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Reducer 21
Execution mode: llap
@@ -6539,14 +6603,14 @@ STAGE PLANS:
keys:
0 _col0 (type: int)
1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13
Statistics: Num rows: 8 Data size: 5080 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col0 (type: int), _col5 (type: int)
sort order: ++
Map-reduce partition columns: _col0 (type: int), _col5 (type: int)
Statistics: Num rows: 8 Data size: 5080 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col10 (type: bigint), _col11 (type: bigint)
+ value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col12 (type: bigint), _col13 (type: bigint)
Reducer 4
Execution mode: llap
Reduce Operator Tree:
@@ -6556,10 +6620,10 @@ STAGE PLANS:
keys:
0 _col0 (type: int), _col5 (type: int)
1 _col1 (type: int), _col3 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col14
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13, _col16
Statistics: Num rows: 8 Data size: 5112 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: CASE WHEN ((_col10 = 0)) THEN (true) WHEN (_col10 is null) THEN (true) WHEN (_col14 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col11 < _col10)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col12 = 0)) THEN (true) WHEN (_col12 is null) THEN (true) WHEN (_col16 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col13 < _col12)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 4 Data size: 2556 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
@@ -6694,16 +6758,19 @@ STAGE PLANS:
TableScan
alias: t
Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: i (type: int)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: i is not null (type: boolean)
Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: UDFToLong(_col0) (type: bigint)
- sort order: +
- Map-reduce partition columns: UDFToLong(_col0) (type: bigint)
+ Select Operator
+ expressions: i (type: int)
+ outputColumnNames: _col0
Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int)
+ Reduce Output Operator
+ key expressions: UDFToLong(_col0) (type: bigint)
+ sort order: +
+ Map-reduce partition columns: UDFToLong(_col0) (type: bigint)
+ Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int)
Execution mode: llap
LLAP IO: no inputs
Map 3
@@ -6750,16 +6817,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
+ Group By Operator
+ keys: _col0 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 5
Execution mode: llap
Reduce Operator Tree:
[31/50] [abbrv] hive git commit: HIVE-15736: Add unit tests to
Utilities.getInputSummary() method for multi-threading cases (Sergio Pena,
reviewed by Chaoyu Tang)
Posted by se...@apache.org.
HIVE-15736: Add unit tests to Utilities.getInputSummary() method for multi-threading cases (Sergio Pena, reviewed by Chaoyu Tang)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0c3d5da7
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0c3d5da7
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0c3d5da7
Branch: refs/heads/hive-14535
Commit: 0c3d5da71d221a0a9792118bd780f38149822a89
Parents: 4becd68
Author: Sergio Pena <se...@cloudera.com>
Authored: Wed Feb 1 09:53:14 2017 -0600
Committer: Sergio Pena <se...@cloudera.com>
Committed: Wed Feb 1 09:53:14 2017 -0600
----------------------------------------------------------------------
.../apache/hadoop/hive/ql/exec/Utilities.java | 42 +++---
.../hive/ql/exec/InputEstimatorTestClass.java | 106 +++++++++++++
.../hadoop/hive/ql/exec/TestUtilities.java | 151 ++++++++++++++++++-
3 files changed, 279 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/0c3d5da7/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
index 68dd5e7..12a03d0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
@@ -176,7 +176,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
-import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
@@ -195,9 +194,6 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.Deflater;
@@ -2106,7 +2102,7 @@ public final class Utilities {
long[] summary = {0, 0, 0};
- final List<Path> pathNeedProcess = new ArrayList<>();
+ final Set<Path> pathNeedProcess = new HashSet<>();
// Since multiple threads could call this method concurrently, locking
// this method will avoid number of threads out of control.
@@ -2135,13 +2131,14 @@ public final class Utilities {
// Process the case when name node call is needed
final Map<String, ContentSummary> resultMap = new ConcurrentHashMap<String, ContentSummary>();
ArrayList<Future<?>> results = new ArrayList<Future<?>>();
- final ThreadPoolExecutor executor;
+ final ExecutorService executor;
int maxThreads = ctx.getConf().getInt("mapred.dfsclient.parallelism.max", 0);
if (pathNeedProcess.size() > 1 && maxThreads > 1) {
int numExecutors = Math.min(pathNeedProcess.size(), maxThreads);
LOG.info("Using " + numExecutors + " threads for getContentSummary");
- executor = new ThreadPoolExecutor(numExecutors, numExecutors, 60, TimeUnit.SECONDS,
- new LinkedBlockingQueue<Runnable>());
+ executor = Executors.newFixedThreadPool(numExecutors,
+ new ThreadFactoryBuilder().setDaemon(true)
+ .setNameFormat("Get-Input-Summary-%d").build());
} else {
executor = null;
}
@@ -2191,11 +2188,19 @@ public final class Utilities {
resultMap.put(pathStr, cs.getContentSummary(p, myJobConf));
return;
}
- HiveStorageHandler handler = HiveUtils.getStorageHandler(myConf,
- SerDeUtils.createOverlayedProperties(
- partDesc.getTableDesc().getProperties(),
- partDesc.getProperties())
- .getProperty(hive_metastoreConstants.META_TABLE_STORAGE));
+
+ String metaTableStorage = null;
+ if (partDesc.getTableDesc() != null &&
+ partDesc.getTableDesc().getProperties() != null) {
+ metaTableStorage = partDesc.getTableDesc().getProperties()
+ .getProperty(hive_metastoreConstants.META_TABLE_STORAGE, null);
+ }
+ if (partDesc.getProperties() != null) {
+ metaTableStorage = partDesc.getProperties()
+ .getProperty(hive_metastoreConstants.META_TABLE_STORAGE, metaTableStorage);
+ }
+
+ HiveStorageHandler handler = HiveUtils.getStorageHandler(myConf, metaTableStorage);
if (handler instanceof InputEstimator) {
long total = 0;
TableDesc tableDesc = partDesc.getTableDesc();
@@ -2207,14 +2212,15 @@ public final class Utilities {
Utilities.setColumnTypeList(jobConf, scanOp, true);
PlanUtils.configureInputJobPropertiesForStorageHandler(tableDesc);
Utilities.copyTableJobPropertiesToConf(tableDesc, jobConf);
- total += estimator.estimate(myJobConf, scanOp, -1).getTotalLength();
+ total += estimator.estimate(jobConf, scanOp, -1).getTotalLength();
}
resultMap.put(pathStr, new ContentSummary(total, -1, -1));
+ } else {
+ // todo: should nullify summary for non-native tables,
+ // not to be selected as a mapjoin target
+ FileSystem fs = p.getFileSystem(myConf);
+ resultMap.put(pathStr, fs.getContentSummary(p));
}
- // todo: should nullify summary for non-native tables,
- // not to be selected as a mapjoin target
- FileSystem fs = p.getFileSystem(myConf);
- resultMap.put(pathStr, fs.getContentSummary(p));
} catch (Exception e) {
// We safely ignore this exception for summary data.
// We don't update the cache to protect it from polluting other
http://git-wip-us.apache.org/repos/asf/hive/blob/0c3d5da7/ql/src/test/org/apache/hadoop/hive/ql/exec/InputEstimatorTestClass.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/InputEstimatorTestClass.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/InputEstimatorTestClass.java
new file mode 100644
index 0000000..8c52979
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/InputEstimatorTestClass.java
@@ -0,0 +1,106 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.exec;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.metastore.HiveMetaHook;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.metadata.HiveStorageHandler;
+import org.apache.hadoop.hive.ql.metadata.InputEstimator;
+import org.apache.hadoop.hive.ql.plan.TableDesc;
+import org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider;
+import org.apache.hadoop.hive.serde2.AbstractSerDe;
+import org.apache.hadoop.mapred.InputFormat;
+import org.apache.hadoop.mapred.JobConf;
+import org.apache.hadoop.mapred.OutputFormat;
+
+import java.util.Map;
+
+/**
+ * This is just a helper class to test the InputEstimator object used in some Utilities methods.
+ */
+public class InputEstimatorTestClass implements HiveStorageHandler, InputEstimator {
+ private static Estimation expectedEstimation = new Estimation(0, 0);
+
+ public InputEstimatorTestClass() {
+ }
+
+ public static void setEstimation(Estimation estimation) {
+ expectedEstimation = estimation;
+ }
+
+ @Override
+ public Class<? extends InputFormat> getInputFormatClass() {
+ return null;
+ }
+
+ @Override
+ public Class<? extends OutputFormat> getOutputFormatClass() {
+ return null;
+ }
+
+ @Override
+ public Class<? extends AbstractSerDe> getSerDeClass() {
+ return null;
+ }
+
+ @Override
+ public HiveMetaHook getMetaHook() {
+ return null;
+ }
+
+ @Override
+ public HiveAuthorizationProvider getAuthorizationProvider() throws HiveException {
+ return null;
+ }
+
+ @Override
+ public void configureInputJobProperties(TableDesc tableDesc, Map<String, String> jobProperties) {
+
+ }
+
+ @Override
+ public void configureOutputJobProperties(TableDesc tableDesc, Map<String, String> jobProperties) {
+
+ }
+
+ @Override
+ public void configureTableJobProperties(TableDesc tableDesc, Map<String, String> jobProperties) {
+
+ }
+
+ @Override
+ public void configureJobConf(TableDesc tableDesc, JobConf jobConf) {
+
+ }
+
+ @Override
+ public void setConf(Configuration conf) {
+
+ }
+
+ @Override
+ public Configuration getConf() {
+ return null;
+ }
+
+ @Override
+ public Estimation estimate(JobConf job, TableScanOperator ts, long remaining) throws HiveException {
+ return expectedEstimation;
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/0c3d5da7/ql/src/test/org/apache/hadoop/hive/ql/exec/TestUtilities.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestUtilities.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestUtilities.java
index e444946..5a9d83c 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestUtilities.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestUtilities.java
@@ -37,13 +37,16 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.ContentSummary;
+import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
import org.apache.hadoop.hive.ql.Context;
-import org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat;
-import org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat;
+import org.apache.hadoop.hive.ql.io.*;
import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.metadata.InputEstimator;
import org.apache.hadoop.hive.ql.metadata.Table;
import org.apache.hadoop.hive.ql.plan.DynamicPartitionCtx;
import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
@@ -57,7 +60,12 @@ import org.apache.hadoop.hive.ql.plan.TableDesc;
import org.apache.hadoop.hive.ql.session.SessionState;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDFFromUtcTimestamp;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
+import org.apache.hadoop.mapred.FileInputFormat;
+import org.apache.hadoop.mapred.InputFormat;
+import org.apache.hadoop.mapred.InputSplit;
import org.apache.hadoop.mapred.JobConf;
+import org.apache.hadoop.mapred.Reporter;
+import org.apache.hadoop.mapred.RecordReader;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
@@ -353,4 +361,143 @@ public class TestUtilities {
}
}
}
+
+ @Test
+ public void testGetInputSummaryWithASingleThread() throws IOException {
+ final int NUM_PARTITIONS = 5;
+ final int BYTES_PER_FILE = 5;
+
+ JobConf jobConf = new JobConf();
+ Properties properties = new Properties();
+
+ jobConf.setInt("mapred.dfsclient.parallelism.max", 0);
+ ContentSummary summary = runTestGetInputSummary(jobConf, properties, NUM_PARTITIONS, BYTES_PER_FILE, HiveInputFormat.class);
+ assertEquals(NUM_PARTITIONS * BYTES_PER_FILE, summary.getLength());
+ assertEquals(NUM_PARTITIONS, summary.getFileCount());
+ assertEquals(NUM_PARTITIONS, summary.getDirectoryCount());
+ }
+
+ @Test
+ public void testGetInputSummaryWithMultipleThreads() throws IOException {
+ final int NUM_PARTITIONS = 5;
+ final int BYTES_PER_FILE = 5;
+
+ JobConf jobConf = new JobConf();
+ Properties properties = new Properties();
+
+ jobConf.setInt("mapred.dfsclient.parallelism.max", 2);
+ ContentSummary summary = runTestGetInputSummary(jobConf, properties, NUM_PARTITIONS, BYTES_PER_FILE, HiveInputFormat.class);
+ assertEquals(NUM_PARTITIONS * BYTES_PER_FILE, summary.getLength());
+ assertEquals(NUM_PARTITIONS, summary.getFileCount());
+ assertEquals(NUM_PARTITIONS, summary.getDirectoryCount());
+ }
+
+ @Test
+ public void testGetInputSummaryWithInputEstimator() throws IOException, HiveException {
+ final int NUM_PARTITIONS = 5;
+ final int BYTES_PER_FILE = 10;
+ final int NUM_OF_ROWS = 5;
+
+ JobConf jobConf = new JobConf();
+ Properties properties = new Properties();
+
+ jobConf.setInt("mapred.dfsclient.parallelism.max", 2);
+
+ properties.setProperty(hive_metastoreConstants.META_TABLE_STORAGE, InputEstimatorTestClass.class.getName());
+ InputEstimatorTestClass.setEstimation(new InputEstimator.Estimation(NUM_OF_ROWS, BYTES_PER_FILE));
+
+ /* Let's write more bytes to the files to test that Estimator is actually working returning the file size not from the filesystem */
+ ContentSummary summary = runTestGetInputSummary(jobConf, properties, NUM_PARTITIONS, BYTES_PER_FILE * 2, HiveInputFormat.class);
+ assertEquals(NUM_PARTITIONS * BYTES_PER_FILE, summary.getLength());
+ assertEquals(NUM_PARTITIONS * -1, summary.getFileCount()); // Current getInputSummary() returns -1 for each file found
+ assertEquals(NUM_PARTITIONS * -1, summary.getDirectoryCount()); // Current getInputSummary() returns -1 for each file found
+ }
+
+ static class ContentSummaryInputFormatTestClass extends FileInputFormat implements ContentSummaryInputFormat {
+ private static ContentSummary summary = new ContentSummary.Builder().build();
+
+ public static void setContentSummary(ContentSummary contentSummary) {
+ summary = contentSummary;
+ }
+
+ @Override
+ public RecordReader getRecordReader(InputSplit inputSplit, JobConf jobConf, Reporter reporter) throws IOException {
+ return null;
+ }
+
+ @Override
+ public ContentSummary getContentSummary(Path p, JobConf job) throws IOException {
+ return summary;
+ }
+ }
+
+ @Test
+ public void testGetInputSummaryWithContentSummaryInputFormat() throws IOException {
+ final int NUM_PARTITIONS = 5;
+ final int BYTES_PER_FILE = 10;
+
+ JobConf jobConf = new JobConf();
+ Properties properties = new Properties();
+
+ jobConf.setInt("mapred.dfsclient.parallelism.max", 2);
+
+ ContentSummaryInputFormatTestClass.setContentSummary(
+ new ContentSummary.Builder().length(BYTES_PER_FILE).fileCount(2).directoryCount(1).build());
+
+ /* Let's write more bytes to the files to test that ContentSummaryInputFormat is actually working returning the file size not from the filesystem */
+ ContentSummary summary = runTestGetInputSummary(jobConf, properties, NUM_PARTITIONS, BYTES_PER_FILE * 2, ContentSummaryInputFormatTestClass.class);
+ assertEquals(NUM_PARTITIONS * BYTES_PER_FILE, summary.getLength());
+ assertEquals(NUM_PARTITIONS * 2, summary.getFileCount());
+ assertEquals(NUM_PARTITIONS, summary.getDirectoryCount());
+ }
+
+ private ContentSummary runTestGetInputSummary(JobConf jobConf, Properties properties, int numOfPartitions, int bytesPerFile, Class<? extends InputFormat> inputFormatClass) throws IOException {
+ // creates scratch directories needed by the Context object
+ SessionState.start(new HiveConf());
+
+ MapWork mapWork = new MapWork();
+ Context context = new Context(jobConf);
+ LinkedHashMap<Path, PartitionDesc> pathToPartitionInfo = new LinkedHashMap<>();
+ LinkedHashMap<Path, ArrayList<String>> pathToAliasTable = new LinkedHashMap<>();
+ TableScanOperator scanOp = new TableScanOperator();
+
+ PartitionDesc partitionDesc = new PartitionDesc(new TableDesc(inputFormatClass, null, properties), null);
+
+ String testTableName = "testTable";
+
+ Path testTablePath = new Path(testTableName);
+ Path[] testPartitionsPaths = new Path[numOfPartitions];
+ for (int i=0; i<numOfPartitions; i++) {
+ String testPartitionName = "p=" + 1;
+ testPartitionsPaths[i] = new Path(testTablePath, "p=" + i);
+
+ pathToPartitionInfo.put(testPartitionsPaths[i], partitionDesc);
+
+ pathToAliasTable.put(testPartitionsPaths[i], Lists.newArrayList(testPartitionName));
+
+ mapWork.getAliasToWork().put(testPartitionName, scanOp);
+ }
+
+ mapWork.setPathToAliases(pathToAliasTable);
+ mapWork.setPathToPartitionInfo(pathToPartitionInfo);
+
+ FileSystem fs = FileSystem.getLocal(jobConf);
+ try {
+ fs.mkdirs(testTablePath);
+ byte[] data = new byte[bytesPerFile];
+
+ for (int i=0; i<numOfPartitions; i++) {
+ fs.mkdirs(testPartitionsPaths[i]);
+ FSDataOutputStream out = fs.create(new Path(testPartitionsPaths[i], "test1.txt"));
+ out.write(data);
+ out.close();
+ }
+
+ return Utilities.getInputSummary(context, mapWork, null);
+ } finally {
+ if (fs.exists(testTablePath)) {
+ fs.delete(testTablePath, true);
+ }
+ }
+ }
}
[13/50] [abbrv] hive git commit: HIVE-15732 : add the ability to
restrict configuration for the queries submitted to HS2 (Tez pool) (Sergey
Shelukhin, reviewed by Siddharth Seth, Lefty Leverenz)
Posted by se...@apache.org.
HIVE-15732 : add the ability to restrict configuration for the queries submitted to HS2 (Tez pool) (Sergey Shelukhin, reviewed by Siddharth Seth, Lefty Leverenz)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f9d51073
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f9d51073
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f9d51073
Branch: refs/heads/hive-14535
Commit: f9d51073ac02248b46c6a4800bc1ad6c7394af04
Parents: e3b10c1
Author: Sergey Shelukhin <se...@apache.org>
Authored: Mon Jan 30 16:10:40 2017 -0800
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Mon Jan 30 16:10:40 2017 -0800
----------------------------------------------------------------------
.../org/apache/hadoop/hive/conf/HiveConf.java | 38 +++++++-
.../hive/ql/exec/tez/TezSessionPoolManager.java | 94 ++++++++++++++++----
2 files changed, 113 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/f9d51073/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index 586e693..d19d2ea 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -2364,7 +2364,14 @@ public class HiveConf extends Configuration {
HIVE_SERVER2_TEZ_SESSION_MAX_INIT_THREADS("hive.server2.tez.sessions.init.threads", 16,
"If hive.server2.tez.initialize.default.sessions is enabled, the maximum number of\n" +
"threads to use to initialize the default sessions."),
-
+ HIVE_SERVER2_TEZ_SESSION_RESTRICTED_CONFIGS("hive.server2.tez.sessions.restricted.configs", "",
+ "The configuration settings that cannot be set when submitting jobs to HiveServer2. If\n" +
+ "any of these are set to values different from those in the server configuration, an\n" +
+ "exception will be thrown."),
+ HIVE_SERVER2_TEZ_SESSION_CUSTOM_QUEUE_ALLOWED("hive.server2.tez.sessions.custom.queue.allowed",
+ "true", new StringSet("true", "false", "ignore"),
+ "Whether Tez session pool should allow submitting queries to custom queues. The options\n" +
+ "are true, false (error out), ignore (accept the query but ignore the queue setting)."),
// Operation log configuration
HIVE_SERVER2_LOGGING_OPERATION_ENABLED("hive.server2.logging.operation.enabled", true,
@@ -3331,7 +3338,7 @@ public class HiveConf extends Configuration {
"See HIVE-15121 for details.");
public final String varname;
- private final String altName;
+ public final String altName;
private final String defaultExpr;
public final String defaultStrVal;
@@ -3855,6 +3862,11 @@ public class HiveConf extends Configuration {
: conf.get(var.varname, var.defaultStrVal);
}
+ public static String getVarWithoutType(Configuration conf, ConfVars var) {
+ return var.altName != null ? conf.get(var.varname, conf.get(var.altName, var.defaultExpr))
+ : conf.get(var.varname, var.defaultExpr);
+ }
+
public static String getTrimmedVar(Configuration conf, ConfVars var) {
assert (var.valClass == String.class) : var.varname;
if (var.altName != null) {
@@ -4530,4 +4542,26 @@ public class HiveConf extends Configuration {
+ "Consider using a different execution engine (i.e. " + HiveConf.getNonMrEngines()
+ ") or using Hive 1.X releases.";
}
+
+ private static final Object reverseMapLock = new Object();
+ private static HashMap<String, ConfVars> reverseMap = null;
+
+ public static HashMap<String, ConfVars> getOrCreateReverseMap() {
+ // This should be called rarely enough; for now it's ok to just lock every time.
+ synchronized (reverseMapLock) {
+ if (reverseMap != null) return reverseMap;
+ }
+ HashMap<String, ConfVars> vars = new HashMap<>();
+ for (ConfVars val : ConfVars.values()) {
+ vars.put(val.varname.toLowerCase(), val);
+ if (val.altName != null && !val.altName.isEmpty()) {
+ vars.put(val.altName.toLowerCase(), val);
+ }
+ }
+ synchronized (reverseMapLock) {
+ if (reverseMap != null) return reverseMap;
+ reverseMap = vars;
+ return reverseMap;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/hive/blob/f9d51073/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java
index d7148bb..ecac85c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java
@@ -36,7 +36,7 @@ import java.util.concurrent.TimeUnit;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
-import java.util.Iterator;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
@@ -67,6 +67,12 @@ import org.apache.tez.dag.api.TezException;
*/
public class TezSessionPoolManager {
+ private enum CustomQueueAllowed {
+ TRUE,
+ FALSE,
+ IGNORE
+ }
+
private static final Logger LOG = LoggerFactory.getLogger(TezSessionPoolManager.class);
private static final Random rdm = new Random();
@@ -80,13 +86,16 @@ public class TezSessionPoolManager {
private Thread expirationThread;
private Thread restartThread;
-
private Semaphore llapQueue;
private HiveConf initConf = null;
// Config settings.
private int numConcurrentLlapQueries = -1;
private long sessionLifetimeMs = 0;
private long sessionLifetimeJitterMs = 0;
+ private CustomQueueAllowed customQueueAllowed = CustomQueueAllowed.TRUE;
+ private List<ConfVars> restrictedHiveConf = new ArrayList<>();
+ private List<String> restrictedNonHiveConf = new ArrayList<>();
+
/** A queue for initial sessions that have not been started yet. */
private Queue<TezSessionPoolSession> initialSessions =
new ConcurrentLinkedQueue<TezSessionPoolSession>();
@@ -199,6 +208,31 @@ public class TezSessionPoolManager {
llapQueue = new Semaphore(numConcurrentLlapQueries, true);
this.initConf = conf;
+ String queueAllowedStr = HiveConf.getVar(initConf,
+ ConfVars.HIVE_SERVER2_TEZ_SESSION_CUSTOM_QUEUE_ALLOWED);
+ try {
+ this.customQueueAllowed = CustomQueueAllowed.valueOf(queueAllowedStr.toUpperCase());
+ } catch (Exception ex) {
+ throw new RuntimeException("Invalid value '" + queueAllowedStr + "' for " +
+ ConfVars.HIVE_SERVER2_TEZ_SESSION_CUSTOM_QUEUE_ALLOWED.varname);
+ }
+ String[] restrictedConfigs = HiveConf.getTrimmedStringsVar(initConf,
+ ConfVars.HIVE_SERVER2_TEZ_SESSION_RESTRICTED_CONFIGS);
+ if (restrictedConfigs != null && restrictedConfigs.length > 0) {
+ HashMap<String, ConfVars> confVars = HiveConf.getOrCreateReverseMap();
+ for (String confName : restrictedConfigs) {
+ if (confName == null || confName.isEmpty()) continue;
+ confName = confName.toLowerCase();
+ ConfVars cv = confVars.get(confName);
+ if (cv != null) {
+ restrictedHiveConf.add(cv);
+ } else {
+ LOG.warn("A restricted config " + confName + " is not recognized as a Hive setting.");
+ restrictedNonHiveConf.add(confName);
+ }
+ }
+ }
+
sessionLifetimeMs = conf.getTimeVar(
ConfVars.HIVE_SERVER2_TEZ_SESSION_LIFETIME, TimeUnit.MILLISECONDS);
@@ -269,10 +303,33 @@ public class TezSessionPoolManager {
return sessionState;
}
- private TezSessionState getSession(HiveConf conf, boolean doOpen,
- boolean forceCreate)
+ private TezSessionState getSession(HiveConf conf, boolean doOpen)
throws Exception {
String queueName = conf.get("tez.queue.name");
+ boolean hasQueue = (queueName != null) && !queueName.isEmpty();
+ if (hasQueue) {
+ switch (customQueueAllowed) {
+ case FALSE: throw new HiveException("Specifying tez.queue.name is not allowed");
+ case IGNORE: {
+ LOG.warn("User has specified " + queueName + " queue; ignoring the setting");
+ queueName = null;
+ hasQueue = false;
+ conf.set("tez.queue.name", null);
+ }
+ default: // All good.
+ }
+ }
+ for (ConfVars var : restrictedHiveConf) {
+ String userValue = HiveConf.getVarWithoutType(conf, var),
+ serverValue = HiveConf.getVarWithoutType(initConf, var);
+ // Note: with some trickery, we could add logic for each type in ConfVars; for now the
+ // potential spurious mismatches (e.g. 0 and 0.0 for float) should be easy to work around.
+ validateRestrictedConfigValues(var.varname, userValue, serverValue);
+ }
+ for (String var : restrictedNonHiveConf) {
+ String userValue = conf.get(var), serverValue = initConf.get(var);
+ validateRestrictedConfigValues(var, userValue, serverValue);
+ }
// TODO Session re-use completely disabled for doAs=true. Always launches a new session.
boolean nonDefaultUser = conf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS);
@@ -283,11 +340,9 @@ public class TezSessionPoolManager {
* their own credentials. We expect that with the new security model, things will
* run as user hive in most cases.
*/
- if (forceCreate || nonDefaultUser || !hasInitialSessions
- || ((queueName != null) && !queueName.isEmpty())) {
- LOG.info("QueueName: {} nonDefaultUser: {} defaultQueuePool: {} hasInitialSessions: {}" +
- " forceCreate: {}", queueName, nonDefaultUser, defaultQueuePool, hasInitialSessions,
- forceCreate);
+ if (nonDefaultUser || !hasInitialSessions || hasQueue) {
+ LOG.info("QueueName: {} nonDefaultUser: {} defaultQueuePool: {} hasInitialSessions: {}",
+ queueName, nonDefaultUser, defaultQueuePool, hasInitialSessions);
return getNewSessionState(conf, queueName, doOpen);
}
@@ -299,6 +354,16 @@ public class TezSessionPoolManager {
}
}
+ private void validateRestrictedConfigValues(
+ String var, String userValue, String serverValue) throws HiveException {
+ if ((userValue == null) != (serverValue == null)
+ || (userValue != null && !userValue.equals(serverValue))) {
+ String logValue = initConf.isHiddenConfig(var) ? "(hidden)" : serverValue;
+ throw new HiveException(var + " is restricted from being set; server is configured"
+ + " to use " + logValue + ", but the query configuration specifies " + userValue);
+ }
+ }
+
/**
* @param conf HiveConf that is used to initialize the session
* @param queueName could be null. Set in the tez session.
@@ -407,11 +472,6 @@ public class TezSessionPoolManager {
return new TezSessionPoolSession(sessionId, this);
}
- public TezSessionState getSession(TezSessionState session, HiveConf conf, boolean doOpen,
- boolean llap) throws Exception {
- return getSession(session, conf, doOpen, false, llap);
- }
-
/*
* This method helps to re-use a session in case there has been no change in
* the configuration of a session. This will happen only in the case of non-hive-server2
@@ -458,8 +518,8 @@ public class TezSessionPoolManager {
}
}
- public TezSessionState getSession(TezSessionState session, HiveConf conf, boolean doOpen,
- boolean forceCreate, boolean llap) throws Exception {
+ public TezSessionState getSession(
+ TezSessionState session, HiveConf conf, boolean doOpen, boolean llap) throws Exception {
if (llap && (this.numConcurrentLlapQueries > 0)) {
llapQueue.acquire(); // blocks if no more llap queries can be submitted.
}
@@ -472,7 +532,7 @@ public class TezSessionPoolManager {
closeIfNotDefault(session, false);
}
- return getSession(conf, doOpen, forceCreate);
+ return getSession(conf, doOpen);
}
/** Reopens the session that was found to not be running. */
[36/50] [abbrv] hive git commit: HIVE-15749: Add missing ASF headers
(Peter via Xuefu)
Posted by se...@apache.org.
HIVE-15749: Add missing ASF headers (Peter via Xuefu)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/5c403e9f
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/5c403e9f
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/5c403e9f
Branch: refs/heads/hive-14535
Commit: 5c403e9fc0552559914079ca480eba8b856b7ee8
Parents: 4a03fb1
Author: Xuefu Zhang <xu...@uber.com>
Authored: Wed Feb 1 13:51:59 2017 -0800
Committer: Xuefu Zhang <xu...@uber.com>
Committed: Wed Feb 1 13:51:59 2017 -0800
----------------------------------------------------------------------
.../hive/common/classification/RetrySemantics.java | 17 +++++++++++++++++
.../hadoop/hive/druid/io/DruidRecordWriter.java | 17 +++++++++++++++++
.../hive/jdbc/TestHivePreparedStatement.java | 17 +++++++++++++++++
.../hive/llap/io/encoded/LineRrOffsetReader.java | 17 +++++++++++++++++
.../hive/llap/io/encoded/PassThruOffsetReader.java | 17 +++++++++++++++++
.../hadoop/hive/ql/parse/TestMergeStatement.java | 17 +++++++++++++++++
.../apache/hadoop/hive/ql/plan/TestMapWork.java | 17 +++++++++++++++++
7 files changed, 119 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/5c403e9f/common/src/java/org/apache/hadoop/hive/common/classification/RetrySemantics.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/common/classification/RetrySemantics.java b/common/src/java/org/apache/hadoop/hive/common/classification/RetrySemantics.java
index abad45e..5883b01 100644
--- a/common/src/java/org/apache/hadoop/hive/common/classification/RetrySemantics.java
+++ b/common/src/java/org/apache/hadoop/hive/common/classification/RetrySemantics.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.hadoop.hive.common.classification;
http://git-wip-us.apache.org/repos/asf/hive/blob/5c403e9f/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidRecordWriter.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidRecordWriter.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidRecordWriter.java
index 1601a9a..3323cc0 100644
--- a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidRecordWriter.java
+++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidRecordWriter.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.hadoop.hive.druid.io;
import com.google.common.base.Function;
http://git-wip-us.apache.org/repos/asf/hive/blob/5c403e9f/jdbc/src/test/org/apache/hive/jdbc/TestHivePreparedStatement.java
----------------------------------------------------------------------
diff --git a/jdbc/src/test/org/apache/hive/jdbc/TestHivePreparedStatement.java b/jdbc/src/test/org/apache/hive/jdbc/TestHivePreparedStatement.java
index bc49aeb..2a68c91 100644
--- a/jdbc/src/test/org/apache/hive/jdbc/TestHivePreparedStatement.java
+++ b/jdbc/src/test/org/apache/hive/jdbc/TestHivePreparedStatement.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.hive.jdbc;
import static org.junit.Assert.assertEquals;
http://git-wip-us.apache.org/repos/asf/hive/blob/5c403e9f/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/LineRrOffsetReader.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/LineRrOffsetReader.java b/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/LineRrOffsetReader.java
index 1656381..3fc1fa2 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/LineRrOffsetReader.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/LineRrOffsetReader.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.hadoop.hive.llap.io.encoded;
import java.io.IOException;
http://git-wip-us.apache.org/repos/asf/hive/blob/5c403e9f/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/PassThruOffsetReader.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/PassThruOffsetReader.java b/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/PassThruOffsetReader.java
index 43ff991..ba2b52d 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/PassThruOffsetReader.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/PassThruOffsetReader.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.hadoop.hive.llap.io.encoded;
import java.io.IOException;
http://git-wip-us.apache.org/repos/asf/hive/blob/5c403e9f/ql/src/test/org/apache/hadoop/hive/ql/parse/TestMergeStatement.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestMergeStatement.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestMergeStatement.java
index 7481e1a..a862e5c 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestMergeStatement.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestMergeStatement.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.hadoop.hive.ql.parse;
import org.antlr.runtime.tree.RewriteEmptyStreamException;
http://git-wip-us.apache.org/repos/asf/hive/blob/5c403e9f/ql/src/test/org/apache/hadoop/hive/ql/plan/TestMapWork.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/plan/TestMapWork.java b/ql/src/test/org/apache/hadoop/hive/ql/plan/TestMapWork.java
index 165c028..1756711 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/plan/TestMapWork.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/plan/TestMapWork.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.hadoop.hive.ql.plan;
import static org.junit.Assert.assertEquals;
[30/50] [abbrv] hive git commit: HIVE-15703 :
HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via
Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
HIVE-15703 : HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via Ashutosh Chauhan)
Signed-off-by: Ashutosh Chauhan <ha...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/4becd689
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4becd689
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4becd689
Branch: refs/heads/hive-14535
Commit: 4becd689d59ee3f75a36119fbb950c44e16c65df
Parents: 6c54551
Author: Vineet Garg <vg...@hortonworks.com>
Authored: Tue Jan 31 17:45:49 2017 -0800
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Tue Jan 31 17:45:49 2017 -0800
----------------------------------------------------------------------
.../calcite/HiveSubQRemoveRelBuilder.java | 12 +-
.../rules/HiveReduceExpressionsRule.java | 8 +
.../calcite/rules/HiveSubQueryRemoveRule.java | 6 +-
.../clientpositive/constant_prop_3.q.out | 34 +-
.../llap/dynamic_partition_pruning.q.out | 157 +++--
.../clientpositive/llap/explainuser_1.q.out | 270 ++++----
.../results/clientpositive/llap/lineage3.q.out | 4 +-
.../clientpositive/llap/subquery_in.q.out | 504 ++++++++------
.../clientpositive/llap/subquery_multi.q.out | 488 ++++++++------
.../clientpositive/llap/subquery_notin.q.out | 664 ++++++++++---------
.../clientpositive/llap/subquery_null_agg.q.out | 24 +-
.../clientpositive/llap/subquery_scalar.q.out | 117 ++--
.../llap/vector_groupby_mapjoin.q.out | 38 +-
.../llap/vector_mapjoin_reduce.q.out | 4 +-
.../vectorized_dynamic_partition_pruning.q.out | 157 +++--
.../results/clientpositive/perf/query14.q.out | 10 +-
.../results/clientpositive/perf/query23.q.out | 4 +-
.../results/clientpositive/perf/query33.q.out | 12 +-
.../results/clientpositive/perf/query56.q.out | 12 +-
.../results/clientpositive/perf/query60.q.out | 12 +-
.../results/clientpositive/perf/query70.q.out | 4 +-
.../results/clientpositive/perf/query83.q.out | 504 +++++++-------
.../test/results/clientpositive/semijoin4.q.out | 89 ++-
.../test/results/clientpositive/semijoin5.q.out | 44 +-
.../clientpositive/spark/subquery_in.q.out | 464 +++++++------
.../spark/vector_mapjoin_reduce.q.out | 4 +-
.../subq_where_serialization.q.out | 22 +-
.../clientpositive/subquery_in_having.q.out | 228 ++++---
.../clientpositive/subquery_notin_having.q.out | 100 +--
.../clientpositive/vector_groupby_mapjoin.q.out | 36 +-
.../clientpositive/vector_mapjoin_reduce.q.out | 4 +-
31 files changed, 2177 insertions(+), 1859 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java
index e4f3057..3a1897f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java
@@ -145,25 +145,25 @@ public class HiveSubQRemoveRelBuilder {
}
this.aggregateFactory =
Util.first(context.unwrap(RelFactories.AggregateFactory.class),
- RelFactories.DEFAULT_AGGREGATE_FACTORY);
+ HiveRelFactories.HIVE_AGGREGATE_FACTORY);
this.filterFactory =
Util.first(context.unwrap(RelFactories.FilterFactory.class),
HiveRelFactories.HIVE_FILTER_FACTORY);
this.projectFactory =
Util.first(context.unwrap(RelFactories.ProjectFactory.class),
- RelFactories.DEFAULT_PROJECT_FACTORY);
+ HiveRelFactories.HIVE_PROJECT_FACTORY);
this.sortFactory =
Util.first(context.unwrap(RelFactories.SortFactory.class),
- RelFactories.DEFAULT_SORT_FACTORY);
+ HiveRelFactories.HIVE_SORT_FACTORY);
this.setOpFactory =
Util.first(context.unwrap(RelFactories.SetOpFactory.class),
- RelFactories.DEFAULT_SET_OP_FACTORY);
+ HiveRelFactories.HIVE_SET_OP_FACTORY);
this.joinFactory =
Util.first(context.unwrap(RelFactories.JoinFactory.class),
- RelFactories.DEFAULT_JOIN_FACTORY);
+ HiveRelFactories.HIVE_JOIN_FACTORY);
this.semiJoinFactory =
Util.first(context.unwrap(RelFactories.SemiJoinFactory.class),
- RelFactories.DEFAULT_SEMI_JOIN_FACTORY);
+ HiveRelFactories.HIVE_SEMI_JOIN_FACTORY);
this.correlateFactory =
Util.first(context.unwrap(RelFactories.CorrelateFactory.class),
RelFactories.DEFAULT_CORRELATE_FACTORY);
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsRule.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsRule.java
index a1b5aeb..6efc731 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsRule.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsRule.java
@@ -29,6 +29,7 @@ import org.apache.calcite.rex.RexInputRef;
import org.apache.calcite.rex.RexNode;
import org.apache.calcite.rex.RexUtil;
import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.type.SqlTypeName;
import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.tools.RelBuilderFactory;
import org.apache.hadoop.hive.ql.optimizer.calcite.HiveRelFactories;
@@ -136,6 +137,13 @@ public abstract class HiveReduceExpressionsRule extends ReduceExpressionsRule {
newConditionExp)) {
newConditionExp = ((RexCall) newConditionExp).getOperands().get(0);
}
+ // reduce might end up creating an expression with null type
+ // e.g condition(null = null) is reduced to condition (null) with null type
+ // since this is a condition which will always be boolean type we cast it to
+ // boolean type
+ if(newConditionExp.getType().getSqlTypeName() == SqlTypeName.NULL) {
+ newConditionExp = call.builder().cast(newConditionExp, SqlTypeName.BOOLEAN);
+ }
call.transformTo(call.builder().
push(filter.getInput()).filter(newConditionExp).build());
} else {
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java
index ffe569a..c1768f4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java
@@ -312,14 +312,14 @@ public abstract class HiveSubQueryRemoveRule extends RelOptRule{
switch (logic) {
case TRUE:
if (fields.isEmpty()) {
- builder.project(builder.alias(builder.literal(true), "i"));
+ builder.project(builder.alias(builder.literal(true), "i" + e.rel.getId()));
builder.aggregate(builder.groupKey(0));
} else {
builder.aggregate(builder.groupKey(fields));
}
break;
default:
- fields.add(builder.alias(builder.literal(true), "i"));
+ fields.add(builder.alias(builder.literal(true), "i" + e.rel.getId()));
builder.project(fields);
builder.distinct();
}
@@ -359,7 +359,7 @@ public abstract class HiveSubQueryRemoveRule extends RelOptRule{
operands.add((builder.isNull(builder.field("ct", "c"))), builder.literal(false));
break;
}
- operands.add(builder.isNotNull(builder.field("dt", "i")),
+ operands.add(builder.isNotNull(builder.field("dt", "i" + e.rel.getId())),
builder.literal(true));
if (!keyIsNulls.isEmpty()) {
//Calcite creates null literal with Null type here but because HIVE doesn't support null type
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/constant_prop_3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/constant_prop_3.q.out b/ql/src/test/results/clientpositive/constant_prop_3.q.out
index 066ed07..ecf6e57 100644
--- a/ql/src/test/results/clientpositive/constant_prop_3.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_3.q.out
@@ -88,7 +88,7 @@ POSTHOOK: query: analyze table supplier_hive compute statistics for columns
POSTHOOK: type: QUERY
POSTHOOK: Input: default@supplier_hive
#### A masked pattern was here ####
-Warning: Shuffle Join JOIN[26][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Stage-2:MAPRED' is a cross product
+Warning: Shuffle Join JOIN[25][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Stage-2:MAPRED' is a cross product
PREHOOK: query: explain select
p_brand,
p_type,
@@ -378,30 +378,34 @@ STAGE PLANS:
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Select Operator
expressions: s_suppkey (type: int)
- outputColumnNames: _col0
+ outputColumnNames: s_suppkey
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Group By Operator
- keys: _col0 (type: int), true (type: boolean)
+ keys: s_suppkey (type: int)
mode: hash
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
index e2310d7..1b6bb1f 100644
--- a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
@@ -3324,6 +3324,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
@@ -3418,16 +3419,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 7
Execution mode: llap
Reduce Operator Tree:
@@ -3464,16 +3468,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 6
Vertex: Union 6
@@ -3524,6 +3531,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
@@ -3620,16 +3628,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 7
Execution mode: llap
Reduce Operator Tree:
@@ -3666,16 +3677,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 6
Vertex: Union 6
@@ -3728,6 +3742,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
keys: ds (type: string)
@@ -3765,6 +3780,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
keys: ds (type: string)
@@ -3849,16 +3865,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -3911,16 +3930,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 3
Vertex: Union 3
Union 9
@@ -5665,6 +5687,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
@@ -5725,16 +5748,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 5
Execution mode: llap
Reduce Operator Tree:
@@ -5786,16 +5812,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 4
Vertex: Union 4
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/explainuser_1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/explainuser_1.q.out b/ql/src/test/results/clientpositive/llap/explainuser_1.q.out
index b9489eb..c3f8071 100644
--- a/ql/src/test/results/clientpositive/llap/explainuser_1.q.out
+++ b/ql/src/test/results/clientpositive/llap/explainuser_1.q.out
@@ -2139,29 +2139,31 @@ Stage-0
limit:-1
Stage-1
Reducer 2 llap
- File Output Operator [FS_13]
- Merge Join Operator [MERGEJOIN_18] (rows=168 width=178)
- Conds:RS_9._col0=RS_10._col0(Inner),Output:["_col0","_col1"]
+ File Output Operator [FS_14]
+ Merge Join Operator [MERGEJOIN_19] (rows=166 width=178)
+ Conds:RS_10._col0=RS_11._col0(Inner),Output:["_col0","_col1"]
<-Map 1 [SIMPLE_EDGE] llap
- SHUFFLE [RS_9]
+ SHUFFLE [RS_10]
PartitionCols:_col0
- Select Operator [SEL_1] (rows=500 width=178)
+ Select Operator [SEL_2] (rows=166 width=178)
Output:["_col0","_col1"]
- TableScan [TS_0] (rows=500 width=178)
- default@src_cbo,src_cbo,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+ Filter Operator [FIL_17] (rows=166 width=178)
+ predicate:(key > '9')
+ TableScan [TS_0] (rows=500 width=178)
+ default@src_cbo,src_cbo,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
<-Reducer 4 [SIMPLE_EDGE] llap
- SHUFFLE [RS_10]
+ SHUFFLE [RS_11]
PartitionCols:_col0
- Group By Operator [GBY_7] (rows=69 width=87)
+ Group By Operator [GBY_8] (rows=69 width=87)
Output:["_col0"],keys:KEY._col0
<-Map 3 [SIMPLE_EDGE] llap
- SHUFFLE [RS_6]
+ SHUFFLE [RS_7]
PartitionCols:_col0
- Group By Operator [GBY_5] (rows=69 width=87)
+ Group By Operator [GBY_6] (rows=69 width=87)
Output:["_col0"],keys:key
- Filter Operator [FIL_17] (rows=166 width=87)
+ Filter Operator [FIL_18] (rows=166 width=87)
predicate:(key > '9')
- TableScan [TS_2] (rows=500 width=87)
+ TableScan [TS_3] (rows=500 width=87)
default@src_cbo,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
PREHOOK: query: explain select p.p_partkey, li.l_suppkey
@@ -2308,65 +2310,71 @@ Stage-0
limit:-1
Stage-1
Reducer 4 llap
- File Output Operator [FS_33]
- Merge Join Operator [MERGEJOIN_46] (rows=34 width=186)
- Conds:RS_29._col2=RS_30._col0(Inner),Output:["_col0","_col1","_col2"]
+ File Output Operator [FS_36]
+ Merge Join Operator [MERGEJOIN_49] (rows=34 width=186)
+ Conds:RS_32._col2=RS_33._col0(Inner),Output:["_col0","_col1","_col2"]
<-Reducer 3 [SIMPLE_EDGE] llap
- SHUFFLE [RS_29]
+ SHUFFLE [RS_32]
PartitionCols:_col2
- Group By Operator [GBY_15] (rows=84 width=186)
- Output:["_col0","_col1","_col2"],aggregations:["count(VALUE._col0)"],keys:KEY._col0, KEY._col1
- <-Reducer 2 [SIMPLE_EDGE] llap
- SHUFFLE [RS_14]
- PartitionCols:_col0, _col1
- Group By Operator [GBY_13] (rows=84 width=186)
- Output:["_col0","_col1","_col2"],aggregations:["count()"],keys:_col0, _col1
- Merge Join Operator [MERGEJOIN_45] (rows=168 width=178)
- Conds:RS_9._col0=RS_10._col0(Inner),Output:["_col0","_col1"]
- <-Map 1 [SIMPLE_EDGE] llap
- SHUFFLE [RS_9]
- PartitionCols:_col0
- Select Operator [SEL_1] (rows=500 width=178)
- Output:["_col0","_col1"]
- TableScan [TS_0] (rows=500 width=178)
- default@src_cbo,b,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
- <-Reducer 6 [SIMPLE_EDGE] llap
- SHUFFLE [RS_10]
- PartitionCols:_col0
- Group By Operator [GBY_7] (rows=69 width=87)
- Output:["_col0"],keys:KEY._col0
- <-Map 5 [SIMPLE_EDGE] llap
- SHUFFLE [RS_6]
- PartitionCols:_col0
- Group By Operator [GBY_5] (rows=69 width=87)
- Output:["_col0"],keys:key
- Filter Operator [FIL_41] (rows=166 width=87)
- predicate:(key > '8')
- TableScan [TS_2] (rows=500 width=87)
- default@src_cbo,src_cbo,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+ Filter Operator [FIL_42] (rows=83 width=186)
+ predicate:_col2 is not null
+ Group By Operator [GBY_16] (rows=83 width=186)
+ Output:["_col0","_col1","_col2"],aggregations:["count(VALUE._col0)"],keys:KEY._col0, KEY._col1
+ <-Reducer 2 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_15]
+ PartitionCols:_col0, _col1
+ Group By Operator [GBY_14] (rows=83 width=186)
+ Output:["_col0","_col1","_col2"],aggregations:["count()"],keys:_col0, _col1
+ Merge Join Operator [MERGEJOIN_48] (rows=166 width=178)
+ Conds:RS_10._col0=RS_11._col0(Inner),Output:["_col0","_col1"]
+ <-Map 1 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_10]
+ PartitionCols:_col0
+ Select Operator [SEL_2] (rows=166 width=178)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_43] (rows=166 width=178)
+ predicate:(key > '8')
+ TableScan [TS_0] (rows=500 width=178)
+ default@src_cbo,b,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+ <-Reducer 6 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_11]
+ PartitionCols:_col0
+ Group By Operator [GBY_8] (rows=69 width=87)
+ Output:["_col0"],keys:KEY._col0
+ <-Map 5 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_7]
+ PartitionCols:_col0
+ Group By Operator [GBY_6] (rows=69 width=87)
+ Output:["_col0"],keys:key
+ Filter Operator [FIL_44] (rows=166 width=87)
+ predicate:(key > '8')
+ TableScan [TS_3] (rows=500 width=87)
+ default@src_cbo,src_cbo,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
<-Reducer 9 [SIMPLE_EDGE] llap
- SHUFFLE [RS_30]
+ SHUFFLE [RS_33]
PartitionCols:_col0
- Group By Operator [GBY_27] (rows=34 width=8)
+ Group By Operator [GBY_30] (rows=34 width=8)
Output:["_col0"],keys:KEY._col0
<-Reducer 8 [SIMPLE_EDGE] llap
- SHUFFLE [RS_26]
+ SHUFFLE [RS_29]
PartitionCols:_col0
- Group By Operator [GBY_25] (rows=34 width=8)
+ Group By Operator [GBY_28] (rows=34 width=8)
Output:["_col0"],keys:_col1
- Select Operator [SEL_44] (rows=69 width=8)
- Output:["_col1"]
- Group By Operator [GBY_22] (rows=69 width=95)
- Output:["_col0","_col1"],aggregations:["count(VALUE._col0)"],keys:KEY._col0
- <-Map 7 [SIMPLE_EDGE] llap
- SHUFFLE [RS_21]
- PartitionCols:_col0
- Group By Operator [GBY_20] (rows=69 width=95)
- Output:["_col0","_col1"],aggregations:["count()"],keys:key
- Filter Operator [FIL_43] (rows=166 width=87)
- predicate:(key > '9')
- TableScan [TS_17] (rows=500 width=87)
- default@src_cbo,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+ Filter Operator [FIL_45] (rows=69 width=8)
+ predicate:_col1 is not null
+ Select Operator [SEL_47] (rows=69 width=8)
+ Output:["_col1"]
+ Group By Operator [GBY_24] (rows=69 width=95)
+ Output:["_col0","_col1"],aggregations:["count(VALUE._col0)"],keys:KEY._col0
+ <-Map 7 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_23]
+ PartitionCols:_col0
+ Group By Operator [GBY_22] (rows=69 width=95)
+ Output:["_col0","_col1"],aggregations:["count()"],keys:key
+ Filter Operator [FIL_46] (rows=166 width=87)
+ predicate:(key > '9')
+ TableScan [TS_19] (rows=500 width=87)
+ default@src_cbo,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
PREHOOK: query: explain select p_mfgr, p_name, avg(p_size)
from part
@@ -2393,44 +2401,48 @@ Stage-0
limit:-1
Stage-1
Reducer 3 llap
- File Output Operator [FS_21]
- Merge Join Operator [MERGEJOIN_26] (rows=6 width=227)
- Conds:RS_17._col1=RS_18._col0(Inner),Output:["_col0","_col1","_col2"]
+ File Output Operator [FS_23]
+ Merge Join Operator [MERGEJOIN_28] (rows=6 width=227)
+ Conds:RS_19._col1=RS_20._col0(Inner),Output:["_col0","_col1","_col2"]
<-Reducer 2 [SIMPLE_EDGE] llap
- SHUFFLE [RS_17]
+ SHUFFLE [RS_19]
PartitionCols:_col1
- Select Operator [SEL_5] (rows=13 width=227)
+ Select Operator [SEL_6] (rows=13 width=227)
Output:["_col0","_col1","_col2"]
- Group By Operator [GBY_4] (rows=13 width=227)
+ Group By Operator [GBY_5] (rows=13 width=227)
Output:["_col0","_col1","_col2"],aggregations:["avg(VALUE._col0)"],keys:KEY._col0, KEY._col1
<-Map 1 [SIMPLE_EDGE] llap
- SHUFFLE [RS_3]
+ SHUFFLE [RS_4]
PartitionCols:_col0, _col1
- Group By Operator [GBY_2] (rows=13 width=295)
+ Group By Operator [GBY_3] (rows=13 width=295)
Output:["_col0","_col1","_col2"],aggregations:["avg(p_size)"],keys:p_name, p_mfgr
- TableScan [TS_0] (rows=26 width=223)
- default@part,part,Tbl:COMPLETE,Col:COMPLETE,Output:["p_name","p_mfgr","p_size"]
+ Filter Operator [FIL_26] (rows=26 width=223)
+ predicate:p_name is not null
+ TableScan [TS_0] (rows=26 width=223)
+ default@part,part,Tbl:COMPLETE,Col:COMPLETE,Output:["p_name","p_mfgr","p_size"]
<-Reducer 6 [SIMPLE_EDGE] llap
- SHUFFLE [RS_18]
+ SHUFFLE [RS_20]
PartitionCols:_col0
- Group By Operator [GBY_15] (rows=13 width=184)
+ Group By Operator [GBY_17] (rows=13 width=184)
Output:["_col0"],keys:KEY._col0
<-Reducer 5 [SIMPLE_EDGE] llap
- SHUFFLE [RS_14]
+ SHUFFLE [RS_16]
PartitionCols:_col0
- Group By Operator [GBY_13] (rows=13 width=184)
+ Group By Operator [GBY_15] (rows=13 width=184)
Output:["_col0"],keys:_col0
- Select Operator [SEL_10] (rows=26 width=491)
+ Select Operator [SEL_11] (rows=26 width=491)
Output:["_col0"]
- PTF Operator [PTF_9] (rows=26 width=491)
- Function definitions:[{},{"name:":"windowingtablefunction","order by:":"_col5 ASC NULLS FIRST","partition by:":"_col2"}]
- Select Operator [SEL_8] (rows=26 width=491)
- Output:["_col1","_col2","_col5"]
- <-Map 4 [SIMPLE_EDGE] llap
- SHUFFLE [RS_7]
- PartitionCols:p_mfgr
- TableScan [TS_6] (rows=26 width=223)
- default@part,part,Tbl:COMPLETE,Col:COMPLETE,Output:["p_mfgr","p_name","p_size"]
+ Filter Operator [FIL_27] (rows=26 width=491)
+ predicate:first_value_window_0 is not null
+ PTF Operator [PTF_10] (rows=26 width=491)
+ Function definitions:[{},{"name:":"windowingtablefunction","order by:":"_col5 ASC NULLS FIRST","partition by:":"_col2"}]
+ Select Operator [SEL_9] (rows=26 width=491)
+ Output:["_col1","_col2","_col5"]
+ <-Map 4 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_8]
+ PartitionCols:p_mfgr
+ TableScan [TS_7] (rows=26 width=223)
+ default@part,part,Tbl:COMPLETE,Col:COMPLETE,Output:["p_mfgr","p_name","p_size"]
PREHOOK: query: explain select *
from src_cbo
@@ -2460,53 +2472,53 @@ Stage-0
limit:-1
Stage-1
Reducer 4 llap
- File Output Operator [FS_27]
- Select Operator [SEL_26] (rows=500 width=178)
+ File Output Operator [FS_26]
+ Select Operator [SEL_25] (rows=500 width=178)
Output:["_col0","_col1"]
<-Reducer 3 [SIMPLE_EDGE] llap
- SHUFFLE [RS_25]
- Select Operator [SEL_24] (rows=500 width=178)
+ SHUFFLE [RS_24]
+ Select Operator [SEL_23] (rows=500 width=178)
Output:["_col0","_col1"]
- Filter Operator [FIL_23] (rows=500 width=198)
+ Filter Operator [FIL_22] (rows=500 width=198)
predicate:((_col2 = 0) or (_col5 is null and _col0 is not null and (_col3 >= _col2)))
- Merge Join Operator [MERGEJOIN_32] (rows=500 width=198)
- Conds:RS_20._col0=RS_21._col0(Left Outer),Output:["_col0","_col1","_col2","_col3","_col5"]
+ Merge Join Operator [MERGEJOIN_31] (rows=500 width=198)
+ Conds:RS_19._col0=RS_20._col0(Left Outer),Output:["_col0","_col1","_col2","_col3","_col5"]
<-Reducer 2 [SIMPLE_EDGE] llap
- SHUFFLE [RS_20]
+ SHUFFLE [RS_19]
PartitionCols:_col0
- Merge Join Operator [MERGEJOIN_31] (rows=500 width=194)
+ Merge Join Operator [MERGEJOIN_30] (rows=500 width=194)
Conds:(Inner),Output:["_col0","_col1","_col2","_col3"]
<-Map 1 [CUSTOM_SIMPLE_EDGE] llap
- PARTITION_ONLY_SHUFFLE [RS_17]
+ PARTITION_ONLY_SHUFFLE [RS_16]
Select Operator [SEL_1] (rows=500 width=178)
Output:["_col0","_col1"]
TableScan [TS_0] (rows=500 width=178)
default@src_cbo,src_cbo,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
<-Reducer 6 [CUSTOM_SIMPLE_EDGE] llap
- PARTITION_ONLY_SHUFFLE [RS_18]
+ PARTITION_ONLY_SHUFFLE [RS_17]
Group By Operator [GBY_7] (rows=1 width=16)
Output:["_col0","_col1"],aggregations:["count(VALUE._col0)","count(VALUE._col1)"]
<-Map 5 [CUSTOM_SIMPLE_EDGE] llap
PARTITION_ONLY_SHUFFLE [RS_6]
Group By Operator [GBY_5] (rows=1 width=16)
Output:["_col0","_col1"],aggregations:["count()","count(key)"]
- Filter Operator [FIL_29] (rows=166 width=87)
+ Filter Operator [FIL_28] (rows=166 width=87)
predicate:(key > '2')
TableScan [TS_2] (rows=500 width=87)
default@src_cbo,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
<-Reducer 8 [SIMPLE_EDGE] llap
- SHUFFLE [RS_21]
+ SHUFFLE [RS_20]
PartitionCols:_col0
- Group By Operator [GBY_15] (rows=69 width=91)
- Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
- <-Map 7 [SIMPLE_EDGE] llap
- SHUFFLE [RS_14]
- PartitionCols:_col0, _col1
- Group By Operator [GBY_13] (rows=69 width=91)
- Output:["_col0","_col1"],keys:_col0, true
- Select Operator [SEL_11] (rows=166 width=87)
- Output:["_col0"]
- Filter Operator [FIL_30] (rows=166 width=87)
+ Select Operator [SEL_15] (rows=69 width=91)
+ Output:["_col0","_col1"]
+ Group By Operator [GBY_14] (rows=69 width=87)
+ Output:["_col0"],keys:KEY._col0
+ <-Map 7 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_13]
+ PartitionCols:_col0
+ Group By Operator [GBY_12] (rows=69 width=87)
+ Output:["_col0"],keys:key
+ Filter Operator [FIL_29] (rows=166 width=87)
predicate:(key > '2')
TableScan [TS_9] (rows=500 width=87)
default@src_cbo,s1,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
@@ -2723,23 +2735,25 @@ Stage-0
<-Reducer 9 [SIMPLE_EDGE] llap
SHUFFLE [RS_30]
PartitionCols:_col0
- Group By Operator [GBY_24] (rows=1 width=12)
- Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
- <-Reducer 8 [SIMPLE_EDGE] llap
- SHUFFLE [RS_23]
- PartitionCols:_col0, _col1
- Group By Operator [GBY_22] (rows=1 width=12)
- Output:["_col0","_col1"],keys:_col0, true
- Group By Operator [GBY_19] (rows=1 width=8)
- Output:["_col0"],aggregations:["avg(VALUE._col0)"]
- <-Map 7 [CUSTOM_SIMPLE_EDGE] llap
- PARTITION_ONLY_SHUFFLE [RS_18]
- Group By Operator [GBY_17] (rows=1 width=76)
- Output:["_col0"],aggregations:["avg(p_size)"]
- Filter Operator [FIL_40] (rows=8 width=4)
- predicate:(p_size < 10)
- TableScan [TS_14] (rows=26 width=4)
- default@part,part,Tbl:COMPLETE,Col:COMPLETE,Output:["p_size"]
+ Select Operator [SEL_25] (rows=1 width=12)
+ Output:["_col0","_col1"]
+ Group By Operator [GBY_24] (rows=1 width=8)
+ Output:["_col0"],keys:KEY._col0
+ <-Reducer 8 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_23]
+ PartitionCols:_col0
+ Group By Operator [GBY_22] (rows=1 width=8)
+ Output:["_col0"],keys:_col0
+ Group By Operator [GBY_19] (rows=1 width=8)
+ Output:["_col0"],aggregations:["avg(VALUE._col0)"]
+ <-Map 7 [CUSTOM_SIMPLE_EDGE] llap
+ PARTITION_ONLY_SHUFFLE [RS_18]
+ Group By Operator [GBY_17] (rows=1 width=76)
+ Output:["_col0"],aggregations:["avg(p_size)"]
+ Filter Operator [FIL_40] (rows=8 width=4)
+ predicate:(p_size < 10)
+ TableScan [TS_14] (rows=26 width=4)
+ default@part,part,Tbl:COMPLETE,Col:COMPLETE,Output:["p_size"]
PREHOOK: query: explain select b.p_mfgr, min(p_retailprice)
from part b
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/lineage3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/lineage3.q.out b/ql/src/test/results/clientpositive/llap/lineage3.q.out
index 04ae206..f092967 100644
--- a/ql/src/test/results/clientpositive/llap/lineage3.q.out
+++ b/ql/src/test/results/clientpositive/llap/lineage3.q.out
@@ -166,7 +166,7 @@ where key in (select key+18 from src1) order by key
PREHOOK: type: QUERY
PREHOOK: Input: default@src1
#### A masked pattern was here ####
-{"version":"1.0","engine":"tez","database":"default","hash":"8b9d63653e36ecf4dd425d3cc3de9199","queryText":"select key, value from src1\nwhere key in (select key+18 from src1) order by key","edges":[{"sources":[2],"targets":[0],"edgeType":"PROJECTION"},{"sources":[3],"targets":[1],"edgeType":"PROJECTION"},{"sources":[2],"targets":[0,1],"expression":"(UDFToDouble(src1.key) = (UDFToDouble(src1.key) + 18.0))","edgeType":"PREDICATE"}],"vertices":[{"id":0,"vertexType":"COLUMN","vertexId":"key"},{"id":1,"vertexType":"COLUMN","vertexId":"value"},{"id":2,"vertexType":"COLUMN","vertexId":"default.src1.key"},{"id":3,"vertexType":"COLUMN","vertexId":"default.src1.value"}]}
+{"version":"1.0","engine":"tez","database":"default","hash":"8b9d63653e36ecf4dd425d3cc3de9199","queryText":"select key, value from src1\nwhere key in (select key+18 from src1) order by key","edges":[{"sources":[2],"targets":[0],"edgeType":"PROJECTION"},{"sources":[3],"targets":[1],"edgeType":"PROJECTION"},{"sources":[2],"targets":[0,1],"expression":"src1.key is not null","edgeType":"PREDICATE"},{"sources":[2],"targets":[0,1],"expression":"(UDFToDouble(src1.key) = (UDFToDouble(src1.key) + 18.0))","edgeType":"PREDICATE"},{"sources":[2],"targets":[0,1],"expression":"(UDFToDouble(src1.key) + 18.0) is not null","edgeType":"PREDICATE"}],"vertices":[{"id":0,"vertexType":"COLUMN","vertexId":"key"},{"id":1,"vertexType":"COLUMN","vertexId":"value"},{"id":2,"vertexType":"COLUMN","vertexId":"default.src1.key"},{"id":3,"vertexType":"COLUMN","vertexId":"default.src1.value"}]}
146 val_146
273 val_273
PREHOOK: query: select * from src1 a
@@ -186,7 +186,7 @@ where key not in (select key+18 from src1) order by key
PREHOOK: type: QUERY
PREHOOK: Input: default@src1
#### A masked pattern was here ####
-{"version":"1.0","engine":"tez","database":"default","hash":"9b488fe1d7cf018aad3825173808cd36","queryText":"select key, value from src1\nwhere key not in (select key+18 from src1) order by key","edges":[{"sources":[2],"targets":[0],"edgeType":"PROJECTION"},{"sources":[3],"targets":[1],"edgeType":"PROJECTION"},{"sources":[2],"targets":[0,1],"expression":"(UDFToDouble(src1.key) = (UDFToDouble(src1.key) + 18.0))","edgeType":"PREDICATE"},{"sources":[4,2],"targets":[0,1],"expression":"((count(*) = 0) or (i is null and src1.key is not null and (count((UDFToDouble(src1.key) + 18.0)) >= count(*))))","edgeType":"PREDICATE"}],"vertices":[{"id":0,"vertexType":"COLUMN","vertexId":"key"},{"id":1,"vertexType":"COLUMN","vertexId":"value"},{"id":2,"vertexType":"COLUMN","vertexId":"default.src1.key"},{"id":3,"vertexType":"COLUMN","vertexId":"default.src1.value"},{"id":4,"vertexType":"TABLE","vertexId":"default.src1"}]}
+{"version":"1.0","engine":"tez","database":"default","hash":"9b488fe1d7cf018aad3825173808cd36","queryText":"select key, value from src1\nwhere key not in (select key+18 from src1) order by key","edges":[{"sources":[2],"targets":[0],"edgeType":"PROJECTION"},{"sources":[3],"targets":[1],"edgeType":"PROJECTION"},{"sources":[2],"targets":[0,1],"expression":"(UDFToDouble(src1.key) = (UDFToDouble(src1.key) + 18.0))","edgeType":"PREDICATE"},{"sources":[4,2],"targets":[0,1],"expression":"((count(*) = 0) or (true is null and src1.key is not null and (count((UDFToDouble(src1.key) + 18.0)) >= count(*))))","edgeType":"PREDICATE"}],"vertices":[{"id":0,"vertexType":"COLUMN","vertexId":"key"},{"id":1,"vertexType":"COLUMN","vertexId":"value"},{"id":2,"vertexType":"COLUMN","vertexId":"default.src1.key"},{"id":3,"vertexType":"COLUMN","vertexId":"default.src1.value"},{"id":4,"vertexType":"TABLE","vertexId":"default.src1"}]}
PREHOOK: query: select * from src1 a
where not exists
(select cint from alltypesorc b
[18/50] [abbrv] hive git commit: HIVE-15653: Some ALTER TABLE
commands drop table stats (Chaoyu Tang, reviewed by PengCheng Xiong)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_table.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_table.q.out
index afeb41d..da99110 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_table.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_table.q.out
@@ -70,9 +70,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=20)
+ Select Operator [SEL_1] (rows=6 width=20)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=20)
+ TableScan [TS_0] (rows=6 width=20)
default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_permute_select
@@ -183,9 +183,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=20)
+ Select Operator [SEL_1] (rows=6 width=21)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=20)
+ TableScan [TS_0] (rows=6 width=21)
default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_string_permute_select
@@ -358,9 +358,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=90)
+ Select Operator [SEL_1] (rows=6 width=80)
Output:["_col0","_col1","_col2","_col3","_col4"]
- TableScan [TS_0] (rows=5 width=90)
+ TableScan [TS_0] (rows=6 width=80)
default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double
@@ -602,9 +602,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=151)
+ Select Operator [SEL_1] (rows=6 width=178)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21"]
- TableScan [TS_0] (rows=5 width=151)
+ TableScan [TS_0] (rows=6 width=178)
default@table_change_numeric_group_string_group_multi_ints_string_group,table_change_numeric_group_string_group_multi_ints_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","c16","c17","c18","c19","c20","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,b from table_change_numeric_group_string_group_multi_ints_string_group
@@ -757,9 +757,9 @@ Stage-0
Stage-1
Map 1 llap
File Output Operator [FS_2]
- Select Operator [SEL_1] (rows=5 width=250)
+ Select Operator [SEL_1] (rows=6 width=249)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16"]
- TableScan [TS_0] (rows=5 width=250)
+ TableScan [TS_0] (rows=6 width=249)
default@table_change_numeric_group_string_group_floating_string_group,table_change_numeric_group_string_group_floating_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,b from table_change_numeric_group_string_group_floating_string_group
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_table.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_table.q.out
index 82bc8a4..06d2372 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_table.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_table.q.out
@@ -70,9 +70,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=20)
+ Select Operator [SEL_3] (rows=6 width=20)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=20)
+ TableScan [TS_0] (rows=6 width=20)
default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_permute_select
@@ -183,9 +183,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=20)
+ Select Operator [SEL_3] (rows=6 width=21)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=20)
+ TableScan [TS_0] (rows=6 width=21)
default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_string_permute_select
@@ -358,9 +358,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=90)
+ Select Operator [SEL_3] (rows=6 width=80)
Output:["_col0","_col1","_col2","_col3","_col4"]
- TableScan [TS_0] (rows=5 width=90)
+ TableScan [TS_0] (rows=6 width=80)
default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double
@@ -602,9 +602,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=151)
+ Select Operator [SEL_3] (rows=6 width=178)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21"]
- TableScan [TS_0] (rows=5 width=151)
+ TableScan [TS_0] (rows=6 width=178)
default@table_change_numeric_group_string_group_multi_ints_string_group,table_change_numeric_group_string_group_multi_ints_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","c16","c17","c18","c19","c20","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,b from table_change_numeric_group_string_group_multi_ints_string_group
@@ -757,9 +757,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=250)
+ Select Operator [SEL_3] (rows=6 width=249)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16"]
- TableScan [TS_0] (rows=5 width=250)
+ TableScan [TS_0] (rows=6 width=249)
default@table_change_numeric_group_string_group_floating_string_group,table_change_numeric_group_string_group_floating_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,b from table_change_numeric_group_string_group_floating_string_group
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_table.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_table.q.out
index 82bc8a4..06d2372 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_table.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_table.q.out
@@ -70,9 +70,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=20)
+ Select Operator [SEL_3] (rows=6 width=20)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=20)
+ TableScan [TS_0] (rows=6 width=20)
default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_permute_select
@@ -183,9 +183,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=20)
+ Select Operator [SEL_3] (rows=6 width=21)
Output:["_col0","_col1","_col2"]
- TableScan [TS_0] (rows=5 width=20)
+ TableScan [TS_0] (rows=6 width=21)
default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
PREHOOK: query: select insert_num,a,b from table_add_int_string_permute_select
@@ -358,9 +358,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=90)
+ Select Operator [SEL_3] (rows=6 width=80)
Output:["_col0","_col1","_col2","_col3","_col4"]
- TableScan [TS_0] (rows=5 width=90)
+ TableScan [TS_0] (rows=6 width=80)
default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double
@@ -602,9 +602,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=151)
+ Select Operator [SEL_3] (rows=6 width=178)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21"]
- TableScan [TS_0] (rows=5 width=151)
+ TableScan [TS_0] (rows=6 width=178)
default@table_change_numeric_group_string_group_multi_ints_string_group,table_change_numeric_group_string_group_multi_ints_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","c16","c17","c18","c19","c20","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,b from table_change_numeric_group_string_group_multi_ints_string_group
@@ -757,9 +757,9 @@ Stage-0
Stage-1
Map 1 vectorized, llap
File Output Operator [FS_4]
- Select Operator [SEL_3] (rows=5 width=250)
+ Select Operator [SEL_3] (rows=6 width=249)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16"]
- TableScan [TS_0] (rows=5 width=250)
+ TableScan [TS_0] (rows=6 width=249)
default@table_change_numeric_group_string_group_floating_string_group,table_change_numeric_group_string_group_floating_string_group,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","c14","c15","b"]
PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,b from table_change_numeric_group_string_group_floating_string_group
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/partition_coltype_literals.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/partition_coltype_literals.q.out b/ql/src/test/results/clientpositive/partition_coltype_literals.q.out
index 61d6423..fad937d 100644
--- a/ql/src/test/results/clientpositive/partition_coltype_literals.q.out
+++ b/ql/src/test/results/clientpositive/partition_coltype_literals.q.out
@@ -355,7 +355,7 @@ Database: default
Table: partcoltypenum
#### A masked pattern was here ####
Partition Parameters:
- COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"key\":\"true\",\"value\":\"true\"}}
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"value\":\"true\"}}
#### A masked pattern was here ####
numFiles 2
numRows 30
@@ -404,7 +404,7 @@ Database: default
Table: partcoltypenum
#### A masked pattern was here ####
Partition Parameters:
- COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"key\":\"true\",\"value\":\"true\"}}
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"value\":\"true\"}}
#### A masked pattern was here ####
numFiles 2
numRows 30
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/show_tblproperties.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/show_tblproperties.q.out b/ql/src/test/results/clientpositive/show_tblproperties.q.out
index 9377beb..005de89 100644
--- a/ql/src/test/results/clientpositive/show_tblproperties.q.out
+++ b/ql/src/test/results/clientpositive/show_tblproperties.q.out
@@ -36,6 +36,7 @@ PREHOOK: query: show tblproperties tmpfoo
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: show tblproperties tmpfoo
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
bar bar value
#### A masked pattern was here ####
numFiles 0
@@ -53,6 +54,7 @@ PREHOOK: query: show tblproperties default.tmpfoo
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: show tblproperties default.tmpfoo
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
bar bar value
#### A masked pattern was here ####
numFiles 0
@@ -106,6 +108,7 @@ PREHOOK: query: show tblproperties default.tmpfoo
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: show tblproperties default.tmpfoo
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
bar bar value
#### A masked pattern was here ####
numFiles 0
@@ -123,6 +126,7 @@ PREHOOK: query: show tblproperties tmpfoo
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: show tblproperties tmpfoo
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
bar bar value1
#### A masked pattern was here ####
numFiles 0
@@ -146,6 +150,7 @@ PREHOOK: query: show tblproperties db1.tmpfoo
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: show tblproperties db1.tmpfoo
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
bar bar value1
#### A masked pattern was here ####
numFiles 0
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/stats_invalidation.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/stats_invalidation.q.out b/ql/src/test/results/clientpositive/stats_invalidation.q.out
index d822f4f..a0e7663 100644
--- a/ql/src/test/results/clientpositive/stats_invalidation.q.out
+++ b/ql/src/test/results/clientpositive/stats_invalidation.q.out
@@ -88,6 +88,7 @@ Retention: 0
#### A masked pattern was here ####
Table Type: MANAGED_TABLE
Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"key\":\"true\",\"value\":\"true\"}}
#### A masked pattern was here ####
numFiles 1
numRows 500
http://git-wip-us.apache.org/repos/asf/hive/blob/5468207e/ql/src/test/results/clientpositive/unset_table_view_property.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/unset_table_view_property.q.out b/ql/src/test/results/clientpositive/unset_table_view_property.q.out
index f9c9697..d28d800 100644
--- a/ql/src/test/results/clientpositive/unset_table_view_property.q.out
+++ b/ql/src/test/results/clientpositive/unset_table_view_property.q.out
@@ -34,6 +34,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
a 1
c 3
#### A masked pattern was here ####
@@ -54,6 +55,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -72,6 +74,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
a 1
c 3
d 4
@@ -93,6 +96,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
c 3
#### A masked pattern was here ####
numFiles 0
@@ -112,6 +116,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
#### A masked pattern was here ####
numFiles 0
numRows 0
@@ -130,6 +135,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
a 1
b 2
c 3
@@ -152,6 +158,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
a 1
c 3
#### A masked pattern was here ####
@@ -172,6 +179,7 @@ PREHOOK: query: SHOW TBLPROPERTIES vt.testTable
PREHOOK: type: SHOW_TBLPROPERTIES
POSTHOOK: query: SHOW TBLPROPERTIES vt.testTable
POSTHOOK: type: SHOW_TBLPROPERTIES
+COLUMN_STATS_ACCURATE {"BASIC_STATS":"true"}
a 1
#### A masked pattern was here ####
numFiles 0
[44/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
index cc2a7a2,9bfc2b2..4997c51
--- a/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
+++ b/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
@@@ -11200,14 -11032,14 +11256,14 @@@ class ThriftHiveMetastore_get_databases
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size597 = 0;
-- $_etype600 = 0;
-- $xfer += $input->readListBegin($_etype600, $_size597);
-- for ($_i601 = 0; $_i601 < $_size597; ++$_i601)
++ $_size604 = 0;
++ $_etype607 = 0;
++ $xfer += $input->readListBegin($_etype607, $_size604);
++ for ($_i608 = 0; $_i608 < $_size604; ++$_i608)
{
-- $elem602 = null;
-- $xfer += $input->readString($elem602);
-- $this->success []= $elem602;
++ $elem609 = null;
++ $xfer += $input->readString($elem609);
++ $this->success []= $elem609;
}
$xfer += $input->readListEnd();
} else {
@@@ -11243,9 -11075,9 +11299,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter603)
++ foreach ($this->success as $iter610)
{
-- $xfer += $output->writeString($iter603);
++ $xfer += $output->writeString($iter610);
}
}
$output->writeListEnd();
@@@ -11376,14 -11208,14 +11432,14 @@@ class ThriftHiveMetastore_get_all_datab
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size604 = 0;
-- $_etype607 = 0;
-- $xfer += $input->readListBegin($_etype607, $_size604);
-- for ($_i608 = 0; $_i608 < $_size604; ++$_i608)
++ $_size611 = 0;
++ $_etype614 = 0;
++ $xfer += $input->readListBegin($_etype614, $_size611);
++ for ($_i615 = 0; $_i615 < $_size611; ++$_i615)
{
-- $elem609 = null;
-- $xfer += $input->readString($elem609);
-- $this->success []= $elem609;
++ $elem616 = null;
++ $xfer += $input->readString($elem616);
++ $this->success []= $elem616;
}
$xfer += $input->readListEnd();
} else {
@@@ -11419,9 -11251,9 +11475,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter610)
++ foreach ($this->success as $iter617)
{
-- $xfer += $output->writeString($iter610);
++ $xfer += $output->writeString($iter617);
}
}
$output->writeListEnd();
@@@ -12422,18 -12254,18 +12478,18 @@@ class ThriftHiveMetastore_get_type_all_
case 0:
if ($ftype == TType::MAP) {
$this->success = array();
-- $_size611 = 0;
-- $_ktype612 = 0;
-- $_vtype613 = 0;
-- $xfer += $input->readMapBegin($_ktype612, $_vtype613, $_size611);
-- for ($_i615 = 0; $_i615 < $_size611; ++$_i615)
++ $_size618 = 0;
++ $_ktype619 = 0;
++ $_vtype620 = 0;
++ $xfer += $input->readMapBegin($_ktype619, $_vtype620, $_size618);
++ for ($_i622 = 0; $_i622 < $_size618; ++$_i622)
{
-- $key616 = '';
-- $val617 = new \metastore\Type();
-- $xfer += $input->readString($key616);
-- $val617 = new \metastore\Type();
-- $xfer += $val617->read($input);
-- $this->success[$key616] = $val617;
++ $key623 = '';
++ $val624 = new \metastore\Type();
++ $xfer += $input->readString($key623);
++ $val624 = new \metastore\Type();
++ $xfer += $val624->read($input);
++ $this->success[$key623] = $val624;
}
$xfer += $input->readMapEnd();
} else {
@@@ -12469,10 -12301,10 +12525,10 @@@
{
$output->writeMapBegin(TType::STRING, TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $kiter618 => $viter619)
++ foreach ($this->success as $kiter625 => $viter626)
{
-- $xfer += $output->writeString($kiter618);
-- $xfer += $viter619->write($output);
++ $xfer += $output->writeString($kiter625);
++ $xfer += $viter626->write($output);
}
}
$output->writeMapEnd();
@@@ -12676,15 -12508,15 +12732,15 @@@ class ThriftHiveMetastore_get_fields_re
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size620 = 0;
-- $_etype623 = 0;
-- $xfer += $input->readListBegin($_etype623, $_size620);
-- for ($_i624 = 0; $_i624 < $_size620; ++$_i624)
++ $_size627 = 0;
++ $_etype630 = 0;
++ $xfer += $input->readListBegin($_etype630, $_size627);
++ for ($_i631 = 0; $_i631 < $_size627; ++$_i631)
{
-- $elem625 = null;
-- $elem625 = new \metastore\FieldSchema();
-- $xfer += $elem625->read($input);
-- $this->success []= $elem625;
++ $elem632 = null;
++ $elem632 = new \metastore\FieldSchema();
++ $xfer += $elem632->read($input);
++ $this->success []= $elem632;
}
$xfer += $input->readListEnd();
} else {
@@@ -12736,9 -12568,9 +12792,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter626)
++ foreach ($this->success as $iter633)
{
-- $xfer += $iter626->write($output);
++ $xfer += $iter633->write($output);
}
}
$output->writeListEnd();
@@@ -12980,15 -12812,15 +13036,15 @@@ class ThriftHiveMetastore_get_fields_wi
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size627 = 0;
-- $_etype630 = 0;
-- $xfer += $input->readListBegin($_etype630, $_size627);
-- for ($_i631 = 0; $_i631 < $_size627; ++$_i631)
++ $_size634 = 0;
++ $_etype637 = 0;
++ $xfer += $input->readListBegin($_etype637, $_size634);
++ for ($_i638 = 0; $_i638 < $_size634; ++$_i638)
{
-- $elem632 = null;
-- $elem632 = new \metastore\FieldSchema();
-- $xfer += $elem632->read($input);
-- $this->success []= $elem632;
++ $elem639 = null;
++ $elem639 = new \metastore\FieldSchema();
++ $xfer += $elem639->read($input);
++ $this->success []= $elem639;
}
$xfer += $input->readListEnd();
} else {
@@@ -13040,9 -12872,9 +13096,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter633)
++ foreach ($this->success as $iter640)
{
-- $xfer += $iter633->write($output);
++ $xfer += $iter640->write($output);
}
}
$output->writeListEnd();
@@@ -13256,15 -13088,15 +13312,15 @@@ class ThriftHiveMetastore_get_schema_re
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size634 = 0;
-- $_etype637 = 0;
-- $xfer += $input->readListBegin($_etype637, $_size634);
-- for ($_i638 = 0; $_i638 < $_size634; ++$_i638)
++ $_size641 = 0;
++ $_etype644 = 0;
++ $xfer += $input->readListBegin($_etype644, $_size641);
++ for ($_i645 = 0; $_i645 < $_size641; ++$_i645)
{
-- $elem639 = null;
-- $elem639 = new \metastore\FieldSchema();
-- $xfer += $elem639->read($input);
-- $this->success []= $elem639;
++ $elem646 = null;
++ $elem646 = new \metastore\FieldSchema();
++ $xfer += $elem646->read($input);
++ $this->success []= $elem646;
}
$xfer += $input->readListEnd();
} else {
@@@ -13316,9 -13148,9 +13372,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter640)
++ foreach ($this->success as $iter647)
{
-- $xfer += $iter640->write($output);
++ $xfer += $iter647->write($output);
}
}
$output->writeListEnd();
@@@ -13560,15 -13392,15 +13616,15 @@@ class ThriftHiveMetastore_get_schema_wi
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size641 = 0;
-- $_etype644 = 0;
-- $xfer += $input->readListBegin($_etype644, $_size641);
-- for ($_i645 = 0; $_i645 < $_size641; ++$_i645)
++ $_size648 = 0;
++ $_etype651 = 0;
++ $xfer += $input->readListBegin($_etype651, $_size648);
++ for ($_i652 = 0; $_i652 < $_size648; ++$_i652)
{
-- $elem646 = null;
-- $elem646 = new \metastore\FieldSchema();
-- $xfer += $elem646->read($input);
-- $this->success []= $elem646;
++ $elem653 = null;
++ $elem653 = new \metastore\FieldSchema();
++ $xfer += $elem653->read($input);
++ $this->success []= $elem653;
}
$xfer += $input->readListEnd();
} else {
@@@ -13620,9 -13452,9 +13676,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter647)
++ foreach ($this->success as $iter654)
{
-- $xfer += $iter647->write($output);
++ $xfer += $iter654->write($output);
}
}
$output->writeListEnd();
@@@ -14230,15 -14062,15 +14286,15 @@@ class ThriftHiveMetastore_create_table_
case 2:
if ($ftype == TType::LST) {
$this->primaryKeys = array();
-- $_size648 = 0;
-- $_etype651 = 0;
-- $xfer += $input->readListBegin($_etype651, $_size648);
-- for ($_i652 = 0; $_i652 < $_size648; ++$_i652)
++ $_size655 = 0;
++ $_etype658 = 0;
++ $xfer += $input->readListBegin($_etype658, $_size655);
++ for ($_i659 = 0; $_i659 < $_size655; ++$_i659)
{
-- $elem653 = null;
-- $elem653 = new \metastore\SQLPrimaryKey();
-- $xfer += $elem653->read($input);
-- $this->primaryKeys []= $elem653;
++ $elem660 = null;
++ $elem660 = new \metastore\SQLPrimaryKey();
++ $xfer += $elem660->read($input);
++ $this->primaryKeys []= $elem660;
}
$xfer += $input->readListEnd();
} else {
@@@ -14248,15 -14080,15 +14304,15 @@@
case 3:
if ($ftype == TType::LST) {
$this->foreignKeys = array();
-- $_size654 = 0;
-- $_etype657 = 0;
-- $xfer += $input->readListBegin($_etype657, $_size654);
-- for ($_i658 = 0; $_i658 < $_size654; ++$_i658)
++ $_size661 = 0;
++ $_etype664 = 0;
++ $xfer += $input->readListBegin($_etype664, $_size661);
++ for ($_i665 = 0; $_i665 < $_size661; ++$_i665)
{
-- $elem659 = null;
-- $elem659 = new \metastore\SQLForeignKey();
-- $xfer += $elem659->read($input);
-- $this->foreignKeys []= $elem659;
++ $elem666 = null;
++ $elem666 = new \metastore\SQLForeignKey();
++ $xfer += $elem666->read($input);
++ $this->foreignKeys []= $elem666;
}
$xfer += $input->readListEnd();
} else {
@@@ -14292,9 -14124,9 +14348,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->primaryKeys));
{
-- foreach ($this->primaryKeys as $iter660)
++ foreach ($this->primaryKeys as $iter667)
{
-- $xfer += $iter660->write($output);
++ $xfer += $iter667->write($output);
}
}
$output->writeListEnd();
@@@ -14309,9 -14141,9 +14365,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->foreignKeys));
{
-- foreach ($this->foreignKeys as $iter661)
++ foreach ($this->foreignKeys as $iter668)
{
-- $xfer += $iter661->write($output);
++ $xfer += $iter668->write($output);
}
}
$output->writeListEnd();
@@@ -15657,14 -15489,14 +15713,14 @@@ class ThriftHiveMetastore_get_tables_re
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size662 = 0;
-- $_etype665 = 0;
-- $xfer += $input->readListBegin($_etype665, $_size662);
-- for ($_i666 = 0; $_i666 < $_size662; ++$_i666)
++ $_size669 = 0;
++ $_etype672 = 0;
++ $xfer += $input->readListBegin($_etype672, $_size669);
++ for ($_i673 = 0; $_i673 < $_size669; ++$_i673)
{
-- $elem667 = null;
-- $xfer += $input->readString($elem667);
-- $this->success []= $elem667;
++ $elem674 = null;
++ $xfer += $input->readString($elem674);
++ $this->success []= $elem674;
}
$xfer += $input->readListEnd();
} else {
@@@ -15700,9 -15532,9 +15756,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter668)
++ foreach ($this->success as $iter675)
{
-- $xfer += $output->writeString($iter668);
++ $xfer += $output->writeString($iter675);
}
}
$output->writeListEnd();
@@@ -15904,14 -15736,14 +15960,14 @@@ class ThriftHiveMetastore_get_tables_by
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size669 = 0;
-- $_etype672 = 0;
-- $xfer += $input->readListBegin($_etype672, $_size669);
-- for ($_i673 = 0; $_i673 < $_size669; ++$_i673)
++ $_size676 = 0;
++ $_etype679 = 0;
++ $xfer += $input->readListBegin($_etype679, $_size676);
++ for ($_i680 = 0; $_i680 < $_size676; ++$_i680)
{
-- $elem674 = null;
-- $xfer += $input->readString($elem674);
-- $this->success []= $elem674;
++ $elem681 = null;
++ $xfer += $input->readString($elem681);
++ $this->success []= $elem681;
}
$xfer += $input->readListEnd();
} else {
@@@ -15947,9 -15779,9 +16003,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter675)
++ foreach ($this->success as $iter682)
{
-- $xfer += $output->writeString($iter675);
++ $xfer += $output->writeString($iter682);
}
}
$output->writeListEnd();
@@@ -16054,14 -15886,14 +16110,14 @@@ class ThriftHiveMetastore_get_table_met
case 3:
if ($ftype == TType::LST) {
$this->tbl_types = array();
-- $_size676 = 0;
-- $_etype679 = 0;
-- $xfer += $input->readListBegin($_etype679, $_size676);
-- for ($_i680 = 0; $_i680 < $_size676; ++$_i680)
++ $_size683 = 0;
++ $_etype686 = 0;
++ $xfer += $input->readListBegin($_etype686, $_size683);
++ for ($_i687 = 0; $_i687 < $_size683; ++$_i687)
{
-- $elem681 = null;
-- $xfer += $input->readString($elem681);
-- $this->tbl_types []= $elem681;
++ $elem688 = null;
++ $xfer += $input->readString($elem688);
++ $this->tbl_types []= $elem688;
}
$xfer += $input->readListEnd();
} else {
@@@ -16099,9 -15931,9 +16155,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->tbl_types));
{
-- foreach ($this->tbl_types as $iter682)
++ foreach ($this->tbl_types as $iter689)
{
-- $xfer += $output->writeString($iter682);
++ $xfer += $output->writeString($iter689);
}
}
$output->writeListEnd();
@@@ -16178,15 -16010,15 +16234,15 @@@ class ThriftHiveMetastore_get_table_met
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size683 = 0;
-- $_etype686 = 0;
-- $xfer += $input->readListBegin($_etype686, $_size683);
-- for ($_i687 = 0; $_i687 < $_size683; ++$_i687)
++ $_size690 = 0;
++ $_etype693 = 0;
++ $xfer += $input->readListBegin($_etype693, $_size690);
++ for ($_i694 = 0; $_i694 < $_size690; ++$_i694)
{
-- $elem688 = null;
-- $elem688 = new \metastore\TableMeta();
-- $xfer += $elem688->read($input);
-- $this->success []= $elem688;
++ $elem695 = null;
++ $elem695 = new \metastore\TableMeta();
++ $xfer += $elem695->read($input);
++ $this->success []= $elem695;
}
$xfer += $input->readListEnd();
} else {
@@@ -16222,9 -16054,9 +16278,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter689)
++ foreach ($this->success as $iter696)
{
-- $xfer += $iter689->write($output);
++ $xfer += $iter696->write($output);
}
}
$output->writeListEnd();
@@@ -16380,14 -16212,14 +16436,14 @@@ class ThriftHiveMetastore_get_all_table
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size690 = 0;
-- $_etype693 = 0;
-- $xfer += $input->readListBegin($_etype693, $_size690);
-- for ($_i694 = 0; $_i694 < $_size690; ++$_i694)
++ $_size697 = 0;
++ $_etype700 = 0;
++ $xfer += $input->readListBegin($_etype700, $_size697);
++ for ($_i701 = 0; $_i701 < $_size697; ++$_i701)
{
-- $elem695 = null;
-- $xfer += $input->readString($elem695);
-- $this->success []= $elem695;
++ $elem702 = null;
++ $xfer += $input->readString($elem702);
++ $this->success []= $elem702;
}
$xfer += $input->readListEnd();
} else {
@@@ -16423,9 -16255,9 +16479,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter696)
++ foreach ($this->success as $iter703)
{
-- $xfer += $output->writeString($iter696);
++ $xfer += $output->writeString($iter703);
}
}
$output->writeListEnd();
@@@ -16740,14 -16572,14 +16796,14 @@@ class ThriftHiveMetastore_get_table_obj
case 2:
if ($ftype == TType::LST) {
$this->tbl_names = array();
-- $_size697 = 0;
-- $_etype700 = 0;
-- $xfer += $input->readListBegin($_etype700, $_size697);
-- for ($_i701 = 0; $_i701 < $_size697; ++$_i701)
++ $_size704 = 0;
++ $_etype707 = 0;
++ $xfer += $input->readListBegin($_etype707, $_size704);
++ for ($_i708 = 0; $_i708 < $_size704; ++$_i708)
{
-- $elem702 = null;
-- $xfer += $input->readString($elem702);
-- $this->tbl_names []= $elem702;
++ $elem709 = null;
++ $xfer += $input->readString($elem709);
++ $this->tbl_names []= $elem709;
}
$xfer += $input->readListEnd();
} else {
@@@ -16780,9 -16612,9 +16836,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->tbl_names));
{
-- foreach ($this->tbl_names as $iter703)
++ foreach ($this->tbl_names as $iter710)
{
-- $xfer += $output->writeString($iter703);
++ $xfer += $output->writeString($iter710);
}
}
$output->writeListEnd();
@@@ -16847,15 -16679,15 +16903,15 @@@ class ThriftHiveMetastore_get_table_obj
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size704 = 0;
-- $_etype707 = 0;
-- $xfer += $input->readListBegin($_etype707, $_size704);
-- for ($_i708 = 0; $_i708 < $_size704; ++$_i708)
++ $_size711 = 0;
++ $_etype714 = 0;
++ $xfer += $input->readListBegin($_etype714, $_size711);
++ for ($_i715 = 0; $_i715 < $_size711; ++$_i715)
{
-- $elem709 = null;
-- $elem709 = new \metastore\Table();
-- $xfer += $elem709->read($input);
-- $this->success []= $elem709;
++ $elem716 = null;
++ $elem716 = new \metastore\Table();
++ $xfer += $elem716->read($input);
++ $this->success []= $elem716;
}
$xfer += $input->readListEnd();
} else {
@@@ -16883,9 -16715,9 +16939,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter710)
++ foreach ($this->success as $iter717)
{
-- $xfer += $iter710->write($output);
++ $xfer += $iter717->write($output);
}
}
$output->writeListEnd();
@@@ -17551,14 -17383,14 +17607,14 @@@ class ThriftHiveMetastore_get_table_nam
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size711 = 0;
-- $_etype714 = 0;
-- $xfer += $input->readListBegin($_etype714, $_size711);
-- for ($_i715 = 0; $_i715 < $_size711; ++$_i715)
++ $_size718 = 0;
++ $_etype721 = 0;
++ $xfer += $input->readListBegin($_etype721, $_size718);
++ for ($_i722 = 0; $_i722 < $_size718; ++$_i722)
{
-- $elem716 = null;
-- $xfer += $input->readString($elem716);
-- $this->success []= $elem716;
++ $elem723 = null;
++ $xfer += $input->readString($elem723);
++ $this->success []= $elem723;
}
$xfer += $input->readListEnd();
} else {
@@@ -17610,9 -17442,9 +17666,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter717)
++ foreach ($this->success as $iter724)
{
-- $xfer += $output->writeString($iter717);
++ $xfer += $output->writeString($iter724);
}
}
$output->writeListEnd();
@@@ -18925,15 -18757,15 +18981,15 @@@ class ThriftHiveMetastore_add_partition
case 1:
if ($ftype == TType::LST) {
$this->new_parts = array();
-- $_size718 = 0;
-- $_etype721 = 0;
-- $xfer += $input->readListBegin($_etype721, $_size718);
-- for ($_i722 = 0; $_i722 < $_size718; ++$_i722)
++ $_size725 = 0;
++ $_etype728 = 0;
++ $xfer += $input->readListBegin($_etype728, $_size725);
++ for ($_i729 = 0; $_i729 < $_size725; ++$_i729)
{
-- $elem723 = null;
-- $elem723 = new \metastore\Partition();
-- $xfer += $elem723->read($input);
-- $this->new_parts []= $elem723;
++ $elem730 = null;
++ $elem730 = new \metastore\Partition();
++ $xfer += $elem730->read($input);
++ $this->new_parts []= $elem730;
}
$xfer += $input->readListEnd();
} else {
@@@ -18961,9 -18793,9 +19017,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->new_parts));
{
-- foreach ($this->new_parts as $iter724)
++ foreach ($this->new_parts as $iter731)
{
-- $xfer += $iter724->write($output);
++ $xfer += $iter731->write($output);
}
}
$output->writeListEnd();
@@@ -19178,15 -19010,15 +19234,15 @@@ class ThriftHiveMetastore_add_partition
case 1:
if ($ftype == TType::LST) {
$this->new_parts = array();
-- $_size725 = 0;
-- $_etype728 = 0;
-- $xfer += $input->readListBegin($_etype728, $_size725);
-- for ($_i729 = 0; $_i729 < $_size725; ++$_i729)
++ $_size732 = 0;
++ $_etype735 = 0;
++ $xfer += $input->readListBegin($_etype735, $_size732);
++ for ($_i736 = 0; $_i736 < $_size732; ++$_i736)
{
-- $elem730 = null;
-- $elem730 = new \metastore\PartitionSpec();
-- $xfer += $elem730->read($input);
-- $this->new_parts []= $elem730;
++ $elem737 = null;
++ $elem737 = new \metastore\PartitionSpec();
++ $xfer += $elem737->read($input);
++ $this->new_parts []= $elem737;
}
$xfer += $input->readListEnd();
} else {
@@@ -19214,9 -19046,9 +19270,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->new_parts));
{
-- foreach ($this->new_parts as $iter731)
++ foreach ($this->new_parts as $iter738)
{
-- $xfer += $iter731->write($output);
++ $xfer += $iter738->write($output);
}
}
$output->writeListEnd();
@@@ -19466,14 -19298,14 +19522,14 @@@ class ThriftHiveMetastore_append_partit
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size732 = 0;
-- $_etype735 = 0;
-- $xfer += $input->readListBegin($_etype735, $_size732);
-- for ($_i736 = 0; $_i736 < $_size732; ++$_i736)
++ $_size739 = 0;
++ $_etype742 = 0;
++ $xfer += $input->readListBegin($_etype742, $_size739);
++ for ($_i743 = 0; $_i743 < $_size739; ++$_i743)
{
-- $elem737 = null;
-- $xfer += $input->readString($elem737);
-- $this->part_vals []= $elem737;
++ $elem744 = null;
++ $xfer += $input->readString($elem744);
++ $this->part_vals []= $elem744;
}
$xfer += $input->readListEnd();
} else {
@@@ -19511,9 -19343,9 +19567,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter738)
++ foreach ($this->part_vals as $iter745)
{
-- $xfer += $output->writeString($iter738);
++ $xfer += $output->writeString($iter745);
}
}
$output->writeListEnd();
@@@ -20015,14 -19847,14 +20071,14 @@@ class ThriftHiveMetastore_append_partit
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size739 = 0;
-- $_etype742 = 0;
-- $xfer += $input->readListBegin($_etype742, $_size739);
-- for ($_i743 = 0; $_i743 < $_size739; ++$_i743)
++ $_size746 = 0;
++ $_etype749 = 0;
++ $xfer += $input->readListBegin($_etype749, $_size746);
++ for ($_i750 = 0; $_i750 < $_size746; ++$_i750)
{
-- $elem744 = null;
-- $xfer += $input->readString($elem744);
-- $this->part_vals []= $elem744;
++ $elem751 = null;
++ $xfer += $input->readString($elem751);
++ $this->part_vals []= $elem751;
}
$xfer += $input->readListEnd();
} else {
@@@ -20068,9 -19900,9 +20124,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter745)
++ foreach ($this->part_vals as $iter752)
{
-- $xfer += $output->writeString($iter745);
++ $xfer += $output->writeString($iter752);
}
}
$output->writeListEnd();
@@@ -20924,14 -20756,14 +20980,14 @@@ class ThriftHiveMetastore_drop_partitio
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size746 = 0;
-- $_etype749 = 0;
-- $xfer += $input->readListBegin($_etype749, $_size746);
-- for ($_i750 = 0; $_i750 < $_size746; ++$_i750)
++ $_size753 = 0;
++ $_etype756 = 0;
++ $xfer += $input->readListBegin($_etype756, $_size753);
++ for ($_i757 = 0; $_i757 < $_size753; ++$_i757)
{
-- $elem751 = null;
-- $xfer += $input->readString($elem751);
-- $this->part_vals []= $elem751;
++ $elem758 = null;
++ $xfer += $input->readString($elem758);
++ $this->part_vals []= $elem758;
}
$xfer += $input->readListEnd();
} else {
@@@ -20976,9 -20808,9 +21032,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter752)
++ foreach ($this->part_vals as $iter759)
{
-- $xfer += $output->writeString($iter752);
++ $xfer += $output->writeString($iter759);
}
}
$output->writeListEnd();
@@@ -21231,14 -21063,14 +21287,14 @@@ class ThriftHiveMetastore_drop_partitio
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size753 = 0;
-- $_etype756 = 0;
-- $xfer += $input->readListBegin($_etype756, $_size753);
-- for ($_i757 = 0; $_i757 < $_size753; ++$_i757)
++ $_size760 = 0;
++ $_etype763 = 0;
++ $xfer += $input->readListBegin($_etype763, $_size760);
++ for ($_i764 = 0; $_i764 < $_size760; ++$_i764)
{
-- $elem758 = null;
-- $xfer += $input->readString($elem758);
-- $this->part_vals []= $elem758;
++ $elem765 = null;
++ $xfer += $input->readString($elem765);
++ $this->part_vals []= $elem765;
}
$xfer += $input->readListEnd();
} else {
@@@ -21291,9 -21123,9 +21347,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter759)
++ foreach ($this->part_vals as $iter766)
{
-- $xfer += $output->writeString($iter759);
++ $xfer += $output->writeString($iter766);
}
}
$output->writeListEnd();
@@@ -22307,14 -22139,14 +22363,14 @@@ class ThriftHiveMetastore_get_partition
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size760 = 0;
-- $_etype763 = 0;
-- $xfer += $input->readListBegin($_etype763, $_size760);
-- for ($_i764 = 0; $_i764 < $_size760; ++$_i764)
++ $_size767 = 0;
++ $_etype770 = 0;
++ $xfer += $input->readListBegin($_etype770, $_size767);
++ for ($_i771 = 0; $_i771 < $_size767; ++$_i771)
{
-- $elem765 = null;
-- $xfer += $input->readString($elem765);
-- $this->part_vals []= $elem765;
++ $elem772 = null;
++ $xfer += $input->readString($elem772);
++ $this->part_vals []= $elem772;
}
$xfer += $input->readListEnd();
} else {
@@@ -22352,9 -22184,9 +22408,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter766)
++ foreach ($this->part_vals as $iter773)
{
-- $xfer += $output->writeString($iter766);
++ $xfer += $output->writeString($iter773);
}
}
$output->writeListEnd();
@@@ -22596,17 -22428,17 +22652,17 @@@ class ThriftHiveMetastore_exchange_part
case 1:
if ($ftype == TType::MAP) {
$this->partitionSpecs = array();
-- $_size767 = 0;
-- $_ktype768 = 0;
-- $_vtype769 = 0;
-- $xfer += $input->readMapBegin($_ktype768, $_vtype769, $_size767);
-- for ($_i771 = 0; $_i771 < $_size767; ++$_i771)
++ $_size774 = 0;
++ $_ktype775 = 0;
++ $_vtype776 = 0;
++ $xfer += $input->readMapBegin($_ktype775, $_vtype776, $_size774);
++ for ($_i778 = 0; $_i778 < $_size774; ++$_i778)
{
-- $key772 = '';
-- $val773 = '';
-- $xfer += $input->readString($key772);
-- $xfer += $input->readString($val773);
-- $this->partitionSpecs[$key772] = $val773;
++ $key779 = '';
++ $val780 = '';
++ $xfer += $input->readString($key779);
++ $xfer += $input->readString($val780);
++ $this->partitionSpecs[$key779] = $val780;
}
$xfer += $input->readMapEnd();
} else {
@@@ -22662,10 -22494,10 +22718,10 @@@
{
$output->writeMapBegin(TType::STRING, TType::STRING, count($this->partitionSpecs));
{
-- foreach ($this->partitionSpecs as $kiter774 => $viter775)
++ foreach ($this->partitionSpecs as $kiter781 => $viter782)
{
-- $xfer += $output->writeString($kiter774);
-- $xfer += $output->writeString($viter775);
++ $xfer += $output->writeString($kiter781);
++ $xfer += $output->writeString($viter782);
}
}
$output->writeMapEnd();
@@@ -22977,17 -22809,17 +23033,17 @@@ class ThriftHiveMetastore_exchange_part
case 1:
if ($ftype == TType::MAP) {
$this->partitionSpecs = array();
-- $_size776 = 0;
-- $_ktype777 = 0;
-- $_vtype778 = 0;
-- $xfer += $input->readMapBegin($_ktype777, $_vtype778, $_size776);
-- for ($_i780 = 0; $_i780 < $_size776; ++$_i780)
++ $_size783 = 0;
++ $_ktype784 = 0;
++ $_vtype785 = 0;
++ $xfer += $input->readMapBegin($_ktype784, $_vtype785, $_size783);
++ for ($_i787 = 0; $_i787 < $_size783; ++$_i787)
{
-- $key781 = '';
-- $val782 = '';
-- $xfer += $input->readString($key781);
-- $xfer += $input->readString($val782);
-- $this->partitionSpecs[$key781] = $val782;
++ $key788 = '';
++ $val789 = '';
++ $xfer += $input->readString($key788);
++ $xfer += $input->readString($val789);
++ $this->partitionSpecs[$key788] = $val789;
}
$xfer += $input->readMapEnd();
} else {
@@@ -23043,10 -22875,10 +23099,10 @@@
{
$output->writeMapBegin(TType::STRING, TType::STRING, count($this->partitionSpecs));
{
-- foreach ($this->partitionSpecs as $kiter783 => $viter784)
++ foreach ($this->partitionSpecs as $kiter790 => $viter791)
{
-- $xfer += $output->writeString($kiter783);
-- $xfer += $output->writeString($viter784);
++ $xfer += $output->writeString($kiter790);
++ $xfer += $output->writeString($viter791);
}
}
$output->writeMapEnd();
@@@ -23179,15 -23011,15 +23235,15 @@@ class ThriftHiveMetastore_exchange_part
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size785 = 0;
-- $_etype788 = 0;
-- $xfer += $input->readListBegin($_etype788, $_size785);
-- for ($_i789 = 0; $_i789 < $_size785; ++$_i789)
++ $_size792 = 0;
++ $_etype795 = 0;
++ $xfer += $input->readListBegin($_etype795, $_size792);
++ for ($_i796 = 0; $_i796 < $_size792; ++$_i796)
{
-- $elem790 = null;
-- $elem790 = new \metastore\Partition();
-- $xfer += $elem790->read($input);
-- $this->success []= $elem790;
++ $elem797 = null;
++ $elem797 = new \metastore\Partition();
++ $xfer += $elem797->read($input);
++ $this->success []= $elem797;
}
$xfer += $input->readListEnd();
} else {
@@@ -23247,9 -23079,9 +23303,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter791)
++ foreach ($this->success as $iter798)
{
-- $xfer += $iter791->write($output);
++ $xfer += $iter798->write($output);
}
}
$output->writeListEnd();
@@@ -23395,14 -23227,14 +23451,14 @@@ class ThriftHiveMetastore_get_partition
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size792 = 0;
-- $_etype795 = 0;
-- $xfer += $input->readListBegin($_etype795, $_size792);
-- for ($_i796 = 0; $_i796 < $_size792; ++$_i796)
++ $_size799 = 0;
++ $_etype802 = 0;
++ $xfer += $input->readListBegin($_etype802, $_size799);
++ for ($_i803 = 0; $_i803 < $_size799; ++$_i803)
{
-- $elem797 = null;
-- $xfer += $input->readString($elem797);
-- $this->part_vals []= $elem797;
++ $elem804 = null;
++ $xfer += $input->readString($elem804);
++ $this->part_vals []= $elem804;
}
$xfer += $input->readListEnd();
} else {
@@@ -23419,14 -23251,14 +23475,14 @@@
case 5:
if ($ftype == TType::LST) {
$this->group_names = array();
-- $_size798 = 0;
-- $_etype801 = 0;
-- $xfer += $input->readListBegin($_etype801, $_size798);
-- for ($_i802 = 0; $_i802 < $_size798; ++$_i802)
++ $_size805 = 0;
++ $_etype808 = 0;
++ $xfer += $input->readListBegin($_etype808, $_size805);
++ for ($_i809 = 0; $_i809 < $_size805; ++$_i809)
{
-- $elem803 = null;
-- $xfer += $input->readString($elem803);
-- $this->group_names []= $elem803;
++ $elem810 = null;
++ $xfer += $input->readString($elem810);
++ $this->group_names []= $elem810;
}
$xfer += $input->readListEnd();
} else {
@@@ -23464,9 -23296,9 +23520,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter804)
++ foreach ($this->part_vals as $iter811)
{
-- $xfer += $output->writeString($iter804);
++ $xfer += $output->writeString($iter811);
}
}
$output->writeListEnd();
@@@ -23486,9 -23318,9 +23542,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->group_names));
{
-- foreach ($this->group_names as $iter805)
++ foreach ($this->group_names as $iter812)
{
-- $xfer += $output->writeString($iter805);
++ $xfer += $output->writeString($iter812);
}
}
$output->writeListEnd();
@@@ -24079,15 -23911,15 +24135,15 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size806 = 0;
-- $_etype809 = 0;
-- $xfer += $input->readListBegin($_etype809, $_size806);
-- for ($_i810 = 0; $_i810 < $_size806; ++$_i810)
++ $_size813 = 0;
++ $_etype816 = 0;
++ $xfer += $input->readListBegin($_etype816, $_size813);
++ for ($_i817 = 0; $_i817 < $_size813; ++$_i817)
{
-- $elem811 = null;
-- $elem811 = new \metastore\Partition();
-- $xfer += $elem811->read($input);
-- $this->success []= $elem811;
++ $elem818 = null;
++ $elem818 = new \metastore\Partition();
++ $xfer += $elem818->read($input);
++ $this->success []= $elem818;
}
$xfer += $input->readListEnd();
} else {
@@@ -24131,9 -23963,9 +24187,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter812)
++ foreach ($this->success as $iter819)
{
-- $xfer += $iter812->write($output);
++ $xfer += $iter819->write($output);
}
}
$output->writeListEnd();
@@@ -24279,14 -24111,14 +24335,14 @@@ class ThriftHiveMetastore_get_partition
case 5:
if ($ftype == TType::LST) {
$this->group_names = array();
-- $_size813 = 0;
-- $_etype816 = 0;
-- $xfer += $input->readListBegin($_etype816, $_size813);
-- for ($_i817 = 0; $_i817 < $_size813; ++$_i817)
++ $_size820 = 0;
++ $_etype823 = 0;
++ $xfer += $input->readListBegin($_etype823, $_size820);
++ for ($_i824 = 0; $_i824 < $_size820; ++$_i824)
{
-- $elem818 = null;
-- $xfer += $input->readString($elem818);
-- $this->group_names []= $elem818;
++ $elem825 = null;
++ $xfer += $input->readString($elem825);
++ $this->group_names []= $elem825;
}
$xfer += $input->readListEnd();
} else {
@@@ -24334,9 -24166,9 +24390,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->group_names));
{
-- foreach ($this->group_names as $iter819)
++ foreach ($this->group_names as $iter826)
{
-- $xfer += $output->writeString($iter819);
++ $xfer += $output->writeString($iter826);
}
}
$output->writeListEnd();
@@@ -24425,15 -24257,15 +24481,15 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size820 = 0;
-- $_etype823 = 0;
-- $xfer += $input->readListBegin($_etype823, $_size820);
-- for ($_i824 = 0; $_i824 < $_size820; ++$_i824)
++ $_size827 = 0;
++ $_etype830 = 0;
++ $xfer += $input->readListBegin($_etype830, $_size827);
++ for ($_i831 = 0; $_i831 < $_size827; ++$_i831)
{
-- $elem825 = null;
-- $elem825 = new \metastore\Partition();
-- $xfer += $elem825->read($input);
-- $this->success []= $elem825;
++ $elem832 = null;
++ $elem832 = new \metastore\Partition();
++ $xfer += $elem832->read($input);
++ $this->success []= $elem832;
}
$xfer += $input->readListEnd();
} else {
@@@ -24477,9 -24309,9 +24533,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter826)
++ foreach ($this->success as $iter833)
{
-- $xfer += $iter826->write($output);
++ $xfer += $iter833->write($output);
}
}
$output->writeListEnd();
@@@ -24699,15 -24531,15 +24755,15 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size827 = 0;
-- $_etype830 = 0;
-- $xfer += $input->readListBegin($_etype830, $_size827);
-- for ($_i831 = 0; $_i831 < $_size827; ++$_i831)
++ $_size834 = 0;
++ $_etype837 = 0;
++ $xfer += $input->readListBegin($_etype837, $_size834);
++ for ($_i838 = 0; $_i838 < $_size834; ++$_i838)
{
-- $elem832 = null;
-- $elem832 = new \metastore\PartitionSpec();
-- $xfer += $elem832->read($input);
-- $this->success []= $elem832;
++ $elem839 = null;
++ $elem839 = new \metastore\PartitionSpec();
++ $xfer += $elem839->read($input);
++ $this->success []= $elem839;
}
$xfer += $input->readListEnd();
} else {
@@@ -24751,9 -24583,9 +24807,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter833)
++ foreach ($this->success as $iter840)
{
-- $xfer += $iter833->write($output);
++ $xfer += $iter840->write($output);
}
}
$output->writeListEnd();
@@@ -24960,14 -24792,14 +25016,14 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size834 = 0;
-- $_etype837 = 0;
-- $xfer += $input->readListBegin($_etype837, $_size834);
-- for ($_i838 = 0; $_i838 < $_size834; ++$_i838)
++ $_size841 = 0;
++ $_etype844 = 0;
++ $xfer += $input->readListBegin($_etype844, $_size841);
++ for ($_i845 = 0; $_i845 < $_size841; ++$_i845)
{
-- $elem839 = null;
-- $xfer += $input->readString($elem839);
-- $this->success []= $elem839;
++ $elem846 = null;
++ $xfer += $input->readString($elem846);
++ $this->success []= $elem846;
}
$xfer += $input->readListEnd();
} else {
@@@ -25003,9 -24835,9 +25059,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter840)
++ foreach ($this->success as $iter847)
{
-- $xfer += $output->writeString($iter840);
++ $xfer += $output->writeString($iter847);
}
}
$output->writeListEnd();
@@@ -25121,14 -24953,14 +25177,14 @@@ class ThriftHiveMetastore_get_partition
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size841 = 0;
-- $_etype844 = 0;
-- $xfer += $input->readListBegin($_etype844, $_size841);
-- for ($_i845 = 0; $_i845 < $_size841; ++$_i845)
++ $_size848 = 0;
++ $_etype851 = 0;
++ $xfer += $input->readListBegin($_etype851, $_size848);
++ for ($_i852 = 0; $_i852 < $_size848; ++$_i852)
{
-- $elem846 = null;
-- $xfer += $input->readString($elem846);
-- $this->part_vals []= $elem846;
++ $elem853 = null;
++ $xfer += $input->readString($elem853);
++ $this->part_vals []= $elem853;
}
$xfer += $input->readListEnd();
} else {
@@@ -25173,9 -25005,9 +25229,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter847)
++ foreach ($this->part_vals as $iter854)
{
-- $xfer += $output->writeString($iter847);
++ $xfer += $output->writeString($iter854);
}
}
$output->writeListEnd();
@@@ -25269,15 -25101,15 +25325,15 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size848 = 0;
-- $_etype851 = 0;
-- $xfer += $input->readListBegin($_etype851, $_size848);
-- for ($_i852 = 0; $_i852 < $_size848; ++$_i852)
++ $_size855 = 0;
++ $_etype858 = 0;
++ $xfer += $input->readListBegin($_etype858, $_size855);
++ for ($_i859 = 0; $_i859 < $_size855; ++$_i859)
{
-- $elem853 = null;
-- $elem853 = new \metastore\Partition();
-- $xfer += $elem853->read($input);
-- $this->success []= $elem853;
++ $elem860 = null;
++ $elem860 = new \metastore\Partition();
++ $xfer += $elem860->read($input);
++ $this->success []= $elem860;
}
$xfer += $input->readListEnd();
} else {
@@@ -25321,9 -25153,9 +25377,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter854)
++ foreach ($this->success as $iter861)
{
-- $xfer += $iter854->write($output);
++ $xfer += $iter861->write($output);
}
}
$output->writeListEnd();
@@@ -25470,14 -25302,14 +25526,14 @@@ class ThriftHiveMetastore_get_partition
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size855 = 0;
-- $_etype858 = 0;
-- $xfer += $input->readListBegin($_etype858, $_size855);
-- for ($_i859 = 0; $_i859 < $_size855; ++$_i859)
++ $_size862 = 0;
++ $_etype865 = 0;
++ $xfer += $input->readListBegin($_etype865, $_size862);
++ for ($_i866 = 0; $_i866 < $_size862; ++$_i866)
{
-- $elem860 = null;
-- $xfer += $input->readString($elem860);
-- $this->part_vals []= $elem860;
++ $elem867 = null;
++ $xfer += $input->readString($elem867);
++ $this->part_vals []= $elem867;
}
$xfer += $input->readListEnd();
} else {
@@@ -25501,14 -25333,14 +25557,14 @@@
case 6:
if ($ftype == TType::LST) {
$this->group_names = array();
-- $_size861 = 0;
-- $_etype864 = 0;
-- $xfer += $input->readListBegin($_etype864, $_size861);
-- for ($_i865 = 0; $_i865 < $_size861; ++$_i865)
++ $_size868 = 0;
++ $_etype871 = 0;
++ $xfer += $input->readListBegin($_etype871, $_size868);
++ for ($_i872 = 0; $_i872 < $_size868; ++$_i872)
{
-- $elem866 = null;
-- $xfer += $input->readString($elem866);
-- $this->group_names []= $elem866;
++ $elem873 = null;
++ $xfer += $input->readString($elem873);
++ $this->group_names []= $elem873;
}
$xfer += $input->readListEnd();
} else {
@@@ -25546,9 -25378,9 +25602,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter867)
++ foreach ($this->part_vals as $iter874)
{
-- $xfer += $output->writeString($iter867);
++ $xfer += $output->writeString($iter874);
}
}
$output->writeListEnd();
@@@ -25573,9 -25405,9 +25629,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->group_names));
{
-- foreach ($this->group_names as $iter868)
++ foreach ($this->group_names as $iter875)
{
-- $xfer += $output->writeString($iter868);
++ $xfer += $output->writeString($iter875);
}
}
$output->writeListEnd();
@@@ -25664,15 -25496,15 +25720,15 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size869 = 0;
-- $_etype872 = 0;
-- $xfer += $input->readListBegin($_etype872, $_size869);
-- for ($_i873 = 0; $_i873 < $_size869; ++$_i873)
++ $_size876 = 0;
++ $_etype879 = 0;
++ $xfer += $input->readListBegin($_etype879, $_size876);
++ for ($_i880 = 0; $_i880 < $_size876; ++$_i880)
{
-- $elem874 = null;
-- $elem874 = new \metastore\Partition();
-- $xfer += $elem874->read($input);
-- $this->success []= $elem874;
++ $elem881 = null;
++ $elem881 = new \metastore\Partition();
++ $xfer += $elem881->read($input);
++ $this->success []= $elem881;
}
$xfer += $input->readListEnd();
} else {
@@@ -25716,9 -25548,9 +25772,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter875)
++ foreach ($this->success as $iter882)
{
-- $xfer += $iter875->write($output);
++ $xfer += $iter882->write($output);
}
}
$output->writeListEnd();
@@@ -25839,14 -25671,14 +25895,14 @@@ class ThriftHiveMetastore_get_partition
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size876 = 0;
-- $_etype879 = 0;
-- $xfer += $input->readListBegin($_etype879, $_size876);
-- for ($_i880 = 0; $_i880 < $_size876; ++$_i880)
++ $_size883 = 0;
++ $_etype886 = 0;
++ $xfer += $input->readListBegin($_etype886, $_size883);
++ for ($_i887 = 0; $_i887 < $_size883; ++$_i887)
{
-- $elem881 = null;
-- $xfer += $input->readString($elem881);
-- $this->part_vals []= $elem881;
++ $elem888 = null;
++ $xfer += $input->readString($elem888);
++ $this->part_vals []= $elem888;
}
$xfer += $input->readListEnd();
} else {
@@@ -25891,9 -25723,9 +25947,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter882)
++ foreach ($this->part_vals as $iter889)
{
-- $xfer += $output->writeString($iter882);
++ $xfer += $output->writeString($iter889);
}
}
$output->writeListEnd();
@@@ -25986,14 -25818,14 +26042,14 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size883 = 0;
-- $_etype886 = 0;
-- $xfer += $input->readListBegin($_etype886, $_size883);
-- for ($_i887 = 0; $_i887 < $_size883; ++$_i887)
++ $_size890 = 0;
++ $_etype893 = 0;
++ $xfer += $input->readListBegin($_etype893, $_size890);
++ for ($_i894 = 0; $_i894 < $_size890; ++$_i894)
{
-- $elem888 = null;
-- $xfer += $input->readString($elem888);
-- $this->success []= $elem888;
++ $elem895 = null;
++ $xfer += $input->readString($elem895);
++ $this->success []= $elem895;
}
$xfer += $input->readListEnd();
} else {
@@@ -26037,9 -25869,9 +26093,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter889)
++ foreach ($this->success as $iter896)
{
-- $xfer += $output->writeString($iter889);
++ $xfer += $output->writeString($iter896);
}
}
$output->writeListEnd();
@@@ -26282,15 -26114,15 +26338,15 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size890 = 0;
-- $_etype893 = 0;
-- $xfer += $input->readListBegin($_etype893, $_size890);
-- for ($_i894 = 0; $_i894 < $_size890; ++$_i894)
++ $_size897 = 0;
++ $_etype900 = 0;
++ $xfer += $input->readListBegin($_etype900, $_size897);
++ for ($_i901 = 0; $_i901 < $_size897; ++$_i901)
{
-- $elem895 = null;
-- $elem895 = new \metastore\Partition();
-- $xfer += $elem895->read($input);
-- $this->success []= $elem895;
++ $elem902 = null;
++ $elem902 = new \metastore\Partition();
++ $xfer += $elem902->read($input);
++ $this->success []= $elem902;
}
$xfer += $input->readListEnd();
} else {
@@@ -26334,9 -26166,9 +26390,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter896)
++ foreach ($this->success as $iter903)
{
-- $xfer += $iter896->write($output);
++ $xfer += $iter903->write($output);
}
}
$output->writeListEnd();
@@@ -26579,15 -26411,15 +26635,15 @@@ class ThriftHiveMetastore_get_part_spec
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size897 = 0;
-- $_etype900 = 0;
-- $xfer += $input->readListBegin($_etype900, $_size897);
-- for ($_i901 = 0; $_i901 < $_size897; ++$_i901)
++ $_size904 = 0;
++ $_etype907 = 0;
++ $xfer += $input->readListBegin($_etype907, $_size904);
++ for ($_i908 = 0; $_i908 < $_size904; ++$_i908)
{
-- $elem902 = null;
-- $elem902 = new \metastore\PartitionSpec();
-- $xfer += $elem902->read($input);
-- $this->success []= $elem902;
++ $elem909 = null;
++ $elem909 = new \metastore\PartitionSpec();
++ $xfer += $elem909->read($input);
++ $this->success []= $elem909;
}
$xfer += $input->readListEnd();
} else {
@@@ -26631,9 -26463,9 +26687,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter903)
++ foreach ($this->success as $iter910)
{
-- $xfer += $iter903->write($output);
++ $xfer += $iter910->write($output);
}
}
$output->writeListEnd();
@@@ -27199,14 -27031,14 +27255,14 @@@ class ThriftHiveMetastore_get_partition
case 3:
if ($ftype == TType::LST) {
$this->names = array();
-- $_size904 = 0;
-- $_etype907 = 0;
-- $xfer += $input->readListBegin($_etype907, $_size904);
-- for ($_i908 = 0; $_i908 < $_size904; ++$_i908)
++ $_size911 = 0;
++ $_etype914 = 0;
++ $xfer += $input->readListBegin($_etype914, $_size911);
++ for ($_i915 = 0; $_i915 < $_size911; ++$_i915)
{
-- $elem909 = null;
-- $xfer += $input->readString($elem909);
-- $this->names []= $elem909;
++ $elem916 = null;
++ $xfer += $input->readString($elem916);
++ $this->names []= $elem916;
}
$xfer += $input->readListEnd();
} else {
@@@ -27244,9 -27076,9 +27300,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->names));
{
-- foreach ($this->names as $iter910)
++ foreach ($this->names as $iter917)
{
-- $xfer += $output->writeString($iter910);
++ $xfer += $output->writeString($iter917);
}
}
$output->writeListEnd();
@@@ -27335,15 -27167,15 +27391,15 @@@ class ThriftHiveMetastore_get_partition
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size911 = 0;
-- $_etype914 = 0;
-- $xfer += $input->readListBegin($_etype914, $_size911);
-- for ($_i915 = 0; $_i915 < $_size911; ++$_i915)
++ $_size918 = 0;
++ $_etype921 = 0;
++ $xfer += $input->readListBegin($_etype921, $_size918);
++ for ($_i922 = 0; $_i922 < $_size918; ++$_i922)
{
-- $elem916 = null;
-- $elem916 = new \metastore\Partition();
-- $xfer += $elem916->read($input);
-- $this->success []= $elem916;
++ $elem923 = null;
++ $elem923 = new \metastore\Partition();
++ $xfer += $elem923->read($input);
++ $this->success []= $elem923;
}
$xfer += $input->readListEnd();
} else {
@@@ -27387,9 -27219,9 +27443,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter917)
++ foreach ($this->success as $iter924)
{
-- $xfer += $iter917->write($output);
++ $xfer += $iter924->write($output);
}
}
$output->writeListEnd();
@@@ -27728,15 -27560,15 +27784,15 @@@ class ThriftHiveMetastore_alter_partiti
case 3:
if ($ftype == TType::LST) {
$this->new_parts = array();
-- $_size918 = 0;
-- $_etype921 = 0;
-- $xfer += $input->readListBegin($_etype921, $_size918);
-- for ($_i922 = 0; $_i922 < $_size918; ++$_i922)
++ $_size925 = 0;
++ $_etype928 = 0;
++ $xfer += $input->readListBegin($_etype928, $_size925);
++ for ($_i929 = 0; $_i929 < $_size925; ++$_i929)
{
-- $elem923 = null;
-- $elem923 = new \metastore\Partition();
-- $xfer += $elem923->read($input);
-- $this->new_parts []= $elem923;
++ $elem930 = null;
++ $elem930 = new \metastore\Partition();
++ $xfer += $elem930->read($input);
++ $this->new_parts []= $elem930;
}
$xfer += $input->readListEnd();
} else {
@@@ -27774,9 -27606,9 +27830,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->new_parts));
{
-- foreach ($this->new_parts as $iter924)
++ foreach ($this->new_parts as $iter931)
{
-- $xfer += $iter924->write($output);
++ $xfer += $iter931->write($output);
}
}
$output->writeListEnd();
@@@ -27991,15 -27823,15 +28047,15 @@@ class ThriftHiveMetastore_alter_partiti
case 3:
if ($ftype == TType::LST) {
$this->new_parts = array();
-- $_size925 = 0;
-- $_etype928 = 0;
-- $xfer += $input->readListBegin($_etype928, $_size925);
-- for ($_i929 = 0; $_i929 < $_size925; ++$_i929)
++ $_size932 = 0;
++ $_etype935 = 0;
++ $xfer += $input->readListBegin($_etype935, $_size932);
++ for ($_i936 = 0; $_i936 < $_size932; ++$_i936)
{
-- $elem930 = null;
-- $elem930 = new \metastore\Partition();
-- $xfer += $elem930->read($input);
-- $this->new_parts []= $elem930;
++ $elem937 = null;
++ $elem937 = new \metastore\Partition();
++ $xfer += $elem937->read($input);
++ $this->new_parts []= $elem937;
}
$xfer += $input->readListEnd();
} else {
@@@ -28045,9 -27877,9 +28101,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->new_parts));
{
-- foreach ($this->new_parts as $iter931)
++ foreach ($this->new_parts as $iter938)
{
-- $xfer += $iter931->write($output);
++ $xfer += $iter938->write($output);
}
}
$output->writeListEnd();
@@@ -28525,14 -28357,14 +28581,14 @@@ class ThriftHiveMetastore_rename_partit
case 3:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size932 = 0;
-- $_etype935 = 0;
-- $xfer += $input->readListBegin($_etype935, $_size932);
-- for ($_i936 = 0; $_i936 < $_size932; ++$_i936)
++ $_size939 = 0;
++ $_etype942 = 0;
++ $xfer += $input->readListBegin($_etype942, $_size939);
++ for ($_i943 = 0; $_i943 < $_size939; ++$_i943)
{
-- $elem937 = null;
-- $xfer += $input->readString($elem937);
-- $this->part_vals []= $elem937;
++ $elem944 = null;
++ $xfer += $input->readString($elem944);
++ $this->part_vals []= $elem944;
}
$xfer += $input->readListEnd();
} else {
@@@ -28578,9 -28410,9 +28634,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter938)
++ foreach ($this->part_vals as $iter945)
{
-- $xfer += $output->writeString($iter938);
++ $xfer += $output->writeString($iter945);
}
}
$output->writeListEnd();
@@@ -28765,14 -28597,14 +28821,14 @@@ class ThriftHiveMetastore_partition_nam
case 1:
if ($ftype == TType::LST) {
$this->part_vals = array();
-- $_size939 = 0;
-- $_etype942 = 0;
-- $xfer += $input->readListBegin($_etype942, $_size939);
-- for ($_i943 = 0; $_i943 < $_size939; ++$_i943)
++ $_size946 = 0;
++ $_etype949 = 0;
++ $xfer += $input->readListBegin($_etype949, $_size946);
++ for ($_i950 = 0; $_i950 < $_size946; ++$_i950)
{
-- $elem944 = null;
-- $xfer += $input->readString($elem944);
-- $this->part_vals []= $elem944;
++ $elem951 = null;
++ $xfer += $input->readString($elem951);
++ $this->part_vals []= $elem951;
}
$xfer += $input->readListEnd();
} else {
@@@ -28807,9 -28639,9 +28863,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $iter945)
++ foreach ($this->part_vals as $iter952)
{
-- $xfer += $output->writeString($iter945);
++ $xfer += $output->writeString($iter952);
}
}
$output->writeListEnd();
@@@ -29263,14 -29095,14 +29319,14 @@@ class ThriftHiveMetastore_partition_nam
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size946 = 0;
-- $_etype949 = 0;
-- $xfer += $input->readListBegin($_etype949, $_size946);
-- for ($_i950 = 0; $_i950 < $_size946; ++$_i950)
++ $_size953 = 0;
++ $_etype956 = 0;
++ $xfer += $input->readListBegin($_etype956, $_size953);
++ for ($_i957 = 0; $_i957 < $_size953; ++$_i957)
{
-- $elem951 = null;
-- $xfer += $input->readString($elem951);
-- $this->success []= $elem951;
++ $elem958 = null;
++ $xfer += $input->readString($elem958);
++ $this->success []= $elem958;
}
$xfer += $input->readListEnd();
} else {
@@@ -29306,9 -29138,9 +29362,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter952)
++ foreach ($this->success as $iter959)
{
-- $xfer += $output->writeString($iter952);
++ $xfer += $output->writeString($iter959);
}
}
$output->writeListEnd();
@@@ -29468,17 -29300,17 +29524,17 @@@ class ThriftHiveMetastore_partition_nam
case 0:
if ($ftype == TType::MAP) {
$this->success = array();
-- $_size953 = 0;
-- $_ktype954 = 0;
-- $_vtype955 = 0;
-- $xfer += $input->readMapBegin($_ktype954, $_vtype955, $_size953);
-- for ($_i957 = 0; $_i957 < $_size953; ++$_i957)
++ $_size960 = 0;
++ $_ktype961 = 0;
++ $_vtype962 = 0;
++ $xfer += $input->readMapBegin($_ktype961, $_vtype962, $_size960);
++ for ($_i964 = 0; $_i964 < $_size960; ++$_i964)
{
-- $key958 = '';
-- $val959 = '';
-- $xfer += $input->readString($key958);
-- $xfer += $input->readString($val959);
-- $this->success[$key958] = $val959;
++ $key965 = '';
++ $val966 = '';
++ $xfer += $input->readString($key965);
++ $xfer += $input->readString($val966);
++ $this->success[$key965] = $val966;
}
$xfer += $input->readMapEnd();
} else {
@@@ -29514,10 -29346,10 +29570,10 @@@
{
$output->writeMapBegin(TType::STRING, TType::STRING, count($this->success));
{
-- foreach ($this->success as $kiter960 => $viter961)
++ foreach ($this->success as $kiter967 => $viter968)
{
-- $xfer += $output->writeString($kiter960);
-- $xfer += $output->writeString($viter961);
++ $xfer += $output->writeString($kiter967);
++ $xfer += $output->writeString($viter968);
}
}
$output->writeMapEnd();
@@@ -29637,17 -29469,17 +29693,17 @@@ class ThriftHiveMetastore_markPartition
case 3:
if ($ftype == TType::MAP) {
$this->part_vals = array();
-- $_size962 = 0;
-- $_ktype963 = 0;
-- $_vtype964 = 0;
-- $xfer += $input->readMapBegin($_ktype963, $_vtype964, $_size962);
-- for ($_i966 = 0; $_i966 < $_size962; ++$_i966)
++ $_size969 = 0;
++ $_ktype970 = 0;
++ $_vtype971 = 0;
++ $xfer += $input->readMapBegin($_ktype970, $_vtype971, $_size969);
++ for ($_i973 = 0; $_i973 < $_size969; ++$_i973)
{
-- $key967 = '';
-- $val968 = '';
-- $xfer += $input->readString($key967);
-- $xfer += $input->readString($val968);
-- $this->part_vals[$key967] = $val968;
++ $key974 = '';
++ $val975 = '';
++ $xfer += $input->readString($key974);
++ $xfer += $input->readString($val975);
++ $this->part_vals[$key974] = $val975;
}
$xfer += $input->readMapEnd();
} else {
@@@ -29692,10 -29524,10 +29748,10 @@@
{
$output->writeMapBegin(TType::STRING, TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $kiter969 => $viter970)
++ foreach ($this->part_vals as $kiter976 => $viter977)
{
-- $xfer += $output->writeString($kiter969);
-- $xfer += $output->writeString($viter970);
++ $xfer += $output->writeString($kiter976);
++ $xfer += $output->writeString($viter977);
}
}
$output->writeMapEnd();
@@@ -30017,17 -29849,17 +30073,17 @@@ class ThriftHiveMetastore_isPartitionMa
case 3:
if ($ftype == TType::MAP) {
$this->part_vals = array();
-- $_size971 = 0;
-- $_ktype972 = 0;
-- $_vtype973 = 0;
-- $xfer += $input->readMapBegin($_ktype972, $_vtype973, $_size971);
-- for ($_i975 = 0; $_i975 < $_size971; ++$_i975)
++ $_size978 = 0;
++ $_ktype979 = 0;
++ $_vtype980 = 0;
++ $xfer += $input->readMapBegin($_ktype979, $_vtype980, $_size978);
++ for ($_i982 = 0; $_i982 < $_size978; ++$_i982)
{
-- $key976 = '';
-- $val977 = '';
-- $xfer += $input->readString($key976);
-- $xfer += $input->readString($val977);
-- $this->part_vals[$key976] = $val977;
++ $key983 = '';
++ $val984 = '';
++ $xfer += $input->readString($key983);
++ $xfer += $input->readString($val984);
++ $this->part_vals[$key983] = $val984;
}
$xfer += $input->readMapEnd();
} else {
@@@ -30072,10 -29904,10 +30128,10 @@@
{
$output->writeMapBegin(TType::STRING, TType::STRING, count($this->part_vals));
{
-- foreach ($this->part_vals as $kiter978 => $viter979)
++ foreach ($this->part_vals as $kiter985 => $viter986)
{
-- $xfer += $output->writeString($kiter978);
-- $xfer += $output->writeString($viter979);
++ $xfer += $output->writeString($kiter985);
++ $xfer += $output->writeString($viter986);
}
}
$output->writeMapEnd();
@@@ -31549,15 -31381,15 +31605,15 @@@ class ThriftHiveMetastore_get_indexes_r
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size980 = 0;
-- $_etype983 = 0;
-- $xfer += $input->readListBegin($_etype983, $_size980);
-- for ($_i984 = 0; $_i984 < $_size980; ++$_i984)
++ $_size987 = 0;
++ $_etype990 = 0;
++ $xfer += $input->readListBegin($_etype990, $_size987);
++ for ($_i991 = 0; $_i991 < $_size987; ++$_i991)
{
-- $elem985 = null;
-- $elem985 = new \metastore\Index();
-- $xfer += $elem985->read($input);
-- $this->success []= $elem985;
++ $elem992 = null;
++ $elem992 = new \metastore\Index();
++ $xfer += $elem992->read($input);
++ $this->success []= $elem992;
}
$xfer += $input->readListEnd();
} else {
@@@ -31601,9 -31433,9 +31657,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter986)
++ foreach ($this->success as $iter993)
{
-- $xfer += $iter986->write($output);
++ $xfer += $iter993->write($output);
}
}
$output->writeListEnd();
@@@ -31810,14 -31642,14 +31866,14 @@@ class ThriftHiveMetastore_get_index_nam
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size987 = 0;
-- $_etype990 = 0;
-- $xfer += $input->readListBegin($_etype990, $_size987);
-- for ($_i991 = 0; $_i991 < $_size987; ++$_i991)
++ $_size994 = 0;
++ $_etype997 = 0;
++ $xfer += $input->readListBegin($_etype997, $_size994);
++ for ($_i998 = 0; $_i998 < $_size994; ++$_i998)
{
-- $elem992 = null;
-- $xfer += $input->readString($elem992);
-- $this->success []= $elem992;
++ $elem999 = null;
++ $xfer += $input->readString($elem999);
++ $this->success []= $elem999;
}
$xfer += $input->readListEnd();
} else {
@@@ -31853,9 -31685,9 +31909,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter993)
++ foreach ($this->success as $iter1000)
{
-- $xfer += $output->writeString($iter993);
++ $xfer += $output->writeString($iter1000);
}
}
$output->writeListEnd();
@@@ -35749,14 -35581,14 +35805,14 @@@ class ThriftHiveMetastore_get_functions
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size994 = 0;
-- $_etype997 = 0;
-- $xfer += $input->readListBegin($_etype997, $_size994);
-- for ($_i998 = 0; $_i998 < $_size994; ++$_i998)
++ $_size1001 = 0;
++ $_etype1004 = 0;
++ $xfer += $input->readListBegin($_etype1004, $_size1001);
++ for ($_i1005 = 0; $_i1005 < $_size1001; ++$_i1005)
{
-- $elem999 = null;
-- $xfer += $input->readString($elem999);
-- $this->success []= $elem999;
++ $elem1006 = null;
++ $xfer += $input->readString($elem1006);
++ $this->success []= $elem1006;
}
$xfer += $input->readListEnd();
} else {
@@@ -35792,9 -35624,9 +35848,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter1000)
++ foreach ($this->success as $iter1007)
{
-- $xfer += $output->writeString($iter1000);
++ $xfer += $output->writeString($iter1007);
}
}
$output->writeListEnd();
@@@ -36663,14 -36495,14 +36719,14 @@@ class ThriftHiveMetastore_get_role_name
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size1001 = 0;
-- $_etype1004 = 0;
-- $xfer += $input->readListBegin($_etype1004, $_size1001);
-- for ($_i1005 = 0; $_i1005 < $_size1001; ++$_i1005)
++ $_size1008 = 0;
++ $_etype1011 = 0;
++ $xfer += $input->readListBegin($_etype1011, $_size1008);
++ for ($_i1012 = 0; $_i1012 < $_size1008; ++$_i1012)
{
-- $elem1006 = null;
-- $xfer += $input->readString($elem1006);
-- $this->success []= $elem1006;
++ $elem1013 = null;
++ $xfer += $input->readString($elem1013);
++ $this->success []= $elem1013;
}
$xfer += $input->readListEnd();
} else {
@@@ -36706,9 -36538,9 +36762,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter1007)
++ foreach ($this->success as $iter1014)
{
-- $xfer += $output->writeString($iter1007);
++ $xfer += $output->writeString($iter1014);
}
}
$output->writeListEnd();
@@@ -37399,15 -37231,15 +37455,15 @@@ class ThriftHiveMetastore_list_roles_re
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size1008 = 0;
-- $_etype1011 = 0;
-- $xfer += $input->readListBegin($_etype1011, $_size1008);
-- for ($_i1012 = 0; $_i1012 < $_size1008; ++$_i1012)
++ $_size1015 = 0;
++ $_etype1018 = 0;
++ $xfer += $input->readListBegin($_etype1018, $_size1015);
++ for ($_i1019 = 0; $_i1019 < $_size1015; ++$_i1019)
{
-- $elem1013 = null;
-- $elem1013 = new \metastore\Role();
-- $xfer += $elem1013->read($input);
-- $this->success []= $elem1013;
++ $elem1020 = null;
++ $elem1020 = new \metastore\Role();
++ $xfer += $elem1020->read($input);
++ $this->success []= $elem1020;
}
$xfer += $input->readListEnd();
} else {
@@@ -37443,9 -37275,9 +37499,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter1014)
++ foreach ($this->success as $iter1021)
{
-- $xfer += $iter1014->write($output);
++ $xfer += $iter1021->write($output);
}
}
$output->writeListEnd();
@@@ -38107,14 -37939,14 +38163,14 @@@ class ThriftHiveMetastore_get_privilege
case 3:
if ($ftype == TType::LST) {
$this->group_names = array();
-- $_size1015 = 0;
-- $_etype1018 = 0;
-- $xfer += $input->readListBegin($_etype1018, $_size1015);
-- for ($_i1019 = 0; $_i1019 < $_size1015; ++$_i1019)
++ $_size1022 = 0;
++ $_etype1025 = 0;
++ $xfer += $input->readListBegin($_etype1025, $_size1022);
++ for ($_i1026 = 0; $_i1026 < $_size1022; ++$_i1026)
{
-- $elem1020 = null;
-- $xfer += $input->readString($elem1020);
-- $this->group_names []= $elem1020;
++ $elem1027 = null;
++ $xfer += $input->readString($elem1027);
++ $this->group_names []= $elem1027;
}
$xfer += $input->readListEnd();
} else {
@@@ -38155,9 -37987,9 +38211,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->group_names));
{
-- foreach ($this->group_names as $iter1021)
++ foreach ($this->group_names as $iter1028)
{
-- $xfer += $output->writeString($iter1021);
++ $xfer += $output->writeString($iter1028);
}
}
$output->writeListEnd();
@@@ -38465,15 -38297,15 +38521,15 @@@ class ThriftHiveMetastore_list_privileg
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size1022 = 0;
-- $_etype1025 = 0;
-- $xfer += $input->readListBegin($_etype1025, $_size1022);
-- for ($_i1026 = 0; $_i1026 < $_size1022; ++$_i1026)
++ $_size1029 = 0;
++ $_etype1032 = 0;
++ $xfer += $input->readListBegin($_etype1032, $_size1029);
++ for ($_i1033 = 0; $_i1033 < $_size1029; ++$_i1033)
{
-- $elem1027 = null;
-- $elem1027 = new \metastore\HiveObjectPrivilege();
-- $xfer += $elem1027->read($input);
-- $this->success []= $elem1027;
++ $elem1034 = null;
++ $elem1034 = new \metastore\HiveObjectPrivilege();
++ $xfer += $elem1034->read($input);
++ $this->success []= $elem1034;
}
$xfer += $input->readListEnd();
} else {
@@@ -38509,9 -38341,9 +38565,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->success));
{
-- foreach ($this->success as $iter1028)
++ foreach ($this->success as $iter1035)
{
-- $xfer += $iter1028->write($output);
++ $xfer += $iter1035->write($output);
}
}
$output->writeListEnd();
@@@ -39143,14 -38975,14 +39199,14 @@@ class ThriftHiveMetastore_set_ugi_args
case 2:
if ($ftype == TType::LST) {
$this->group_names = array();
-- $_size1029 = 0;
-- $_etype1032 = 0;
-- $xfer += $input->readListBegin($_etype1032, $_size1029);
-- for ($_i1033 = 0; $_i1033 < $_size1029; ++$_i1033)
++ $_size1036 = 0;
++ $_etype1039 = 0;
++ $xfer += $input->readListBegin($_etype1039, $_size1036);
++ for ($_i1040 = 0; $_i1040 < $_size1036; ++$_i1040)
{
-- $elem1034 = null;
-- $xfer += $input->readString($elem1034);
-- $this->group_names []= $elem1034;
++ $elem1041 = null;
++ $xfer += $input->readString($elem1041);
++ $this->group_names []= $elem1041;
}
$xfer += $input->readListEnd();
} else {
@@@ -39183,9 -39015,9 +39239,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->group_names));
{
-- foreach ($this->group_names as $iter1035)
++ foreach ($this->group_names as $iter1042)
{
-- $xfer += $output->writeString($iter1035);
++ $xfer += $output->writeString($iter1042);
}
}
$output->writeListEnd();
@@@ -39261,14 -39093,14 +39317,14 @@@ class ThriftHiveMetastore_set_ugi_resul
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size1036 = 0;
-- $_etype1039 = 0;
-- $xfer += $input->readListBegin($_etype1039, $_size1036);
-- for ($_i1040 = 0; $_i1040 < $_size1036; ++$_i1040)
++ $_size1043 = 0;
++ $_etype1046 = 0;
++ $xfer += $input->readListBegin($_etype1046, $_size1043);
++ for ($_i1047 = 0; $_i1047 < $_size1043; ++$_i1047)
{
-- $elem1041 = null;
-- $xfer += $input->readString($elem1041);
-- $this->success []= $elem1041;
++ $elem1048 = null;
++ $xfer += $input->readString($elem1048);
++ $this->success []= $elem1048;
}
$xfer += $input->readListEnd();
} else {
@@@ -39304,9 -39136,9 +39360,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter1042)
++ foreach ($this->success as $iter1049)
{
-- $xfer += $output->writeString($iter1042);
++ $xfer += $output->writeString($iter1049);
}
}
$output->writeListEnd();
@@@ -40423,14 -40255,14 +40479,14 @@@ class ThriftHiveMetastore_get_all_token
case 0:
if ($ftype == TType::LST) {
$this->success = array();
-- $_size1043 = 0;
-- $_etype1046 = 0;
-- $xfer += $input->readListBegin($_etype1046, $_size1043);
-- for ($_i1047 = 0; $_i1047 < $_size1043; ++$_i1047)
++ $_size1050 = 0;
++ $_etype1053 = 0;
++ $xfer += $input->readListBegin($_etype1053, $_size1050);
++ for ($_i1054 = 0; $_i1054 < $_size1050; ++$_i1054)
{
-- $elem1048 = null;
-- $xfer += $input->readString($elem1048);
-- $this->success []= $elem1048;
++ $elem1055 = null;
++ $xfer += $input->readString($elem1055);
++ $this->success []= $elem1055;
}
$xfer += $input->readListEnd();
} else {
@@@ -40458,9 -40290,9 +40514,9 @@@
{
$output->writeListBegin(TType::STRING, count($this->success));
{
-- foreach ($this->success as $iter1049)
++ foreach ($this->success as $iter1056)
{
-- $xfer += $output->writeString($iter104
<TRUNCATED>
[10/50] [abbrv] hive git commit: HIVE-15387: NPE in HiveServer2 webUI
Historical SQL Operations section (Barna Zsombor Klara via Chaoyu Tang)
Posted by se...@apache.org.
HIVE-15387: NPE in HiveServer2 webUI Historical SQL Operations section (Barna Zsombor Klara via Chaoyu Tang)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f4d7471e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f4d7471e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f4d7471e
Branch: refs/heads/hive-14535
Commit: f4d7471ec45389103b81c8e3edc9fbf96086835e
Parents: 803e1e0
Author: Chaoyu Tang <ct...@cloudera.com>
Authored: Mon Jan 30 11:35:51 2017 -0500
Committer: Chaoyu Tang <ct...@cloudera.com>
Committed: Mon Jan 30 11:35:51 2017 -0500
----------------------------------------------------------------------
service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/f4d7471e/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp
----------------------------------------------------------------------
diff --git a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp
index 6e89981..33797ed 100644
--- a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp
+++ b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp
@@ -193,7 +193,7 @@ for (HiveSession hiveSession: hiveSessions) {
<td><%= operation.getState() %></td>
<td><%= operation.getElapsedTime()/1000 %></td>
<td><%= operation.getEndTime() == null ? "In Progress" : new Date(operation.getEndTime()) %></td>
- <td><%= operation.getRuntime()/1000 %></td>
+ <td><%= operation.getRuntime() == null ? "n/a" : operation.getRuntime()/1000 %></td>
<% String link = "/query_page?operationId=" + operation.getOperationId(); %>
<td> <a href= <%= link %>>Drilldown</a> </td>
</tr>
[05/50] [abbrv] hive git commit: HIVE-15693: LLAP: cached threadpool
in AMReporter creates too many threads leading to OOM (Rajesh Balamohan,
reviewed by Siddharth Seth, Lefty Leverenz)
Posted by se...@apache.org.
HIVE-15693: LLAP: cached threadpool in AMReporter creates too many threads leading to OOM (Rajesh Balamohan, reviewed by Siddharth Seth, Lefty Leverenz)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/79eb2243
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/79eb2243
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/79eb2243
Branch: refs/heads/hive-14535
Commit: 79eb2243aac6b5b0f5678369d579581a91a1925f
Parents: aabe83d
Author: Rajesh Balamohan <rb...@apache.org>
Authored: Sat Jan 28 04:41:35 2017 +0530
Committer: Rajesh Balamohan <rb...@apache.org>
Committed: Sat Jan 28 04:41:35 2017 +0530
----------------------------------------------------------------------
.../org/apache/hadoop/hive/conf/HiveConf.java | 4 ++++
.../hive/llap/daemon/impl/AMReporter.java | 20 ++++++++++++++------
.../hive/llap/daemon/impl/LlapDaemon.java | 4 +++-
3 files changed, 21 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/79eb2243/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index 1e7bfd7..4e83867 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -3081,6 +3081,10 @@ public class HiveConf extends Configuration {
LLAP_DAEMON_NUM_EXECUTORS("hive.llap.daemon.num.executors", 4,
"Number of executors to use in LLAP daemon; essentially, the number of tasks that can be\n" +
"executed in parallel.", "llap.daemon.num.executors"),
+ LLAP_DAEMON_AM_REPORTER_MAX_THREADS("hive.llap.daemon.am-reporter.max.threads", 4,
+ "Maximum number of threads to be used for AM reporter. If this is lower than number of\n" +
+ "executors in llap daemon, it would be set to number of executors at runtime.",
+ "llap.daemon.am-reporter.max.threads"),
LLAP_DAEMON_RPC_PORT("hive.llap.daemon.rpc.port", 0, "The LLAP daemon RPC port.",
"llap.daemon.rpc.port. A value of 0 indicates a dynamic port"),
LLAP_DAEMON_MEMORY_PER_INSTANCE_MB("hive.llap.daemon.memory.per.instance.mb", 4096,
http://git-wip-us.apache.org/repos/asf/hive/blob/79eb2243/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/AMReporter.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/AMReporter.java b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/AMReporter.java
index 027d8eb..93237e6 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/AMReporter.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/AMReporter.java
@@ -40,6 +40,8 @@ import java.util.concurrent.DelayQueue;
import java.util.concurrent.Delayed;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -90,8 +92,6 @@ public class AMReporter extends AbstractService {
Ignore exceptions when communicating with the AM.
At a later point, report back saying the AM is dead so that tasks can be removed from the running queue.
- Use a cachedThreadPool so that a few AMs going down does not affect other AppMasters.
-
Race: When a task completes - it sends out it's message via the regular TaskReporter. The AM after this may run another DAG,
or may die. This may need to be consolidated with the LlapTaskReporter. Try ensuring there's no race between the two.
@@ -118,15 +118,23 @@ public class AMReporter extends AbstractService {
volatile ListenableFuture<Void> queueLookupFuture;
private final DaemonId daemonId;
- public AMReporter(AtomicReference<InetSocketAddress> localAddress,
- QueryFailedHandler queryFailedHandler, Configuration conf, DaemonId daemonId) {
+ public AMReporter(int numExecutors, int maxThreads, AtomicReference<InetSocketAddress>
+ localAddress, QueryFailedHandler queryFailedHandler, Configuration conf, DaemonId daemonId) {
super(AMReporter.class.getName());
this.localAddress = localAddress;
this.queryFailedHandler = queryFailedHandler;
this.conf = conf;
this.daemonId = daemonId;
- ExecutorService rawExecutor = Executors.newCachedThreadPool(
- new ThreadFactoryBuilder().setDaemon(true).setNameFormat("AMReporter %d").build());
+ if (maxThreads < numExecutors) {
+ maxThreads = numExecutors;
+ LOG.warn("maxThreads={} is less than numExecutors={}. Setting maxThreads=numExecutors",
+ maxThreads, numExecutors);
+ }
+ ExecutorService rawExecutor =
+ new ThreadPoolExecutor(numExecutors, maxThreads,
+ 60L, TimeUnit.SECONDS,
+ new LinkedBlockingQueue<Runnable>(),
+ new ThreadFactoryBuilder().setDaemon(true).setNameFormat("AMReporter %d").build());
this.executor = MoreExecutors.listeningDecorator(rawExecutor);
ExecutorService rawExecutor2 = Executors.newFixedThreadPool(1,
new ThreadFactoryBuilder().setDaemon(true).setNameFormat("AMReporterQueueDrainer").build());
http://git-wip-us.apache.org/repos/asf/hive/blob/79eb2243/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java
index 519bfbd..cca6bc6 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java
@@ -254,7 +254,9 @@ public class LlapDaemon extends CompositeService implements ContainerRunner, Lla
LOG.info("Started LlapMetricsSystem with displayName: " + displayName +
" sessionId: " + sessionId);
- this.amReporter = new AMReporter(srvAddress, new QueryFailedHandlerProxy(), daemonConf, daemonId);
+ int maxAmReporterThreads = HiveConf.getIntVar(daemonConf, ConfVars.LLAP_DAEMON_AM_REPORTER_MAX_THREADS);
+ this.amReporter = new AMReporter(numExecutors, maxAmReporterThreads, srvAddress,
+ new QueryFailedHandlerProxy(), daemonConf, daemonId);
SecretManager sm = null;
if (UserGroupInformation.isSecurityEnabled()) {
[28/50] [abbrv] hive git commit: HIVE-15703 :
HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via
Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/subquery_multi.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/subquery_multi.q.out b/ql/src/test/results/clientpositive/llap/subquery_multi.q.out
index 90cdf3e..bbdce1d 100644
--- a/ql/src/test/results/clientpositive/llap/subquery_multi.q.out
+++ b/ql/src/test/results/clientpositive/llap/subquery_multi.q.out
@@ -99,16 +99,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: (p_size is not null and p_brand is not null) (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col5 (type: int)
- sort order: +
- Map-reduce partition columns: _col5 (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: _col5 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col5 (type: int)
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 4
@@ -116,16 +119,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_size (type: int)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Group By Operator
+ keys: p_size (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 6
@@ -133,16 +139,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_brand (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_brand is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: p_brand (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Reducer 2
@@ -248,7 +257,7 @@ POSTHOOK: Input: default@part_null
78487 NULL Manufacturer#6 Brand#52 LARGE BRUSHED BRASS 23 MED BAG 1464.48 hely blith
155733 almond antique sky peru orange Manufacturer#5 Brand#53 SMALL PLATED BRASS 2 WRAP DRUM 1788.73 furiously. bra
15103 almond aquamarine dodger light gainsboro Manufacturer#5 Brand#53 ECONOMY BURNISHED STEEL 46 LG PACK 1018.1 packages hinder carefu
-Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND p_brand NOT IN (select p_name from part_null)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND p_brand NOT IN (select p_name from part_null)
@@ -275,16 +284,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col1 (type: string)
- sort order: +
- Map-reduce partition columns: _col1 (type: string)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 5
@@ -292,16 +304,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_name (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: p_name (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 7
@@ -329,36 +344,36 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_name (type: string)
+ Group By Operator
+ keys: p_name (type: string)
+ mode: hash
outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: string), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Reducer 10
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -448,7 +463,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: select * from part_null where p_name IN (select p_name from part_null) AND p_brand NOT IN (select p_name from part_null)
PREHOOK: type: QUERY
PREHOOK: Input: default@part_null
@@ -457,7 +472,7 @@ POSTHOOK: query: select * from part_null where p_name IN (select p_name from par
POSTHOOK: type: QUERY
POSTHOOK: Input: default@part_null
#### A masked pattern was here ####
-Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND p_brand NOT IN (select p_type from part_null)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND p_brand NOT IN (select p_type from part_null)
@@ -484,16 +499,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col1 (type: string)
- sort order: +
- Map-reduce partition columns: _col1 (type: string)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 5
@@ -501,16 +519,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_name (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: p_name (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 7
@@ -538,36 +559,36 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_type (type: string)
+ Group By Operator
+ keys: p_type (type: string)
+ mode: hash
outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: string), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Reducer 10
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -657,7 +678,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: select * from part_null where p_name IN (select p_name from part_null) AND p_brand NOT IN (select p_type from part_null)
PREHOOK: type: QUERY
PREHOOK: Input: default@part_null
@@ -692,7 +713,7 @@ POSTHOOK: Input: default@part_null
78486 almond azure blanched chiffon midnight Manufacturer#5 Brand#52 LARGE BRUSHED BRASS 23 MED BAG 1464.48 hely blith
155733 almond antique sky peru orange Manufacturer#5 Brand#53 SMALL PLATED BRASS 2 WRAP DRUM 1788.73 furiously. bra
15103 almond aquamarine dodger light gainsboro Manufacturer#5 Brand#53 ECONOMY BURNISHED STEEL 46 LG PACK 1018.1 packages hinder carefu
-Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: explain select * from part_null where p_brand IN (select p_brand from part_null) AND p_brand NOT IN (select p_name from part_null)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_brand IN (select p_brand from part_null) AND p_brand NOT IN (select p_name from part_null)
@@ -719,16 +740,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_brand is not null (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col3 (type: string)
- sort order: +
- Map-reduce partition columns: _col3 (type: string)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: _col3 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col3 (type: string)
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 5
@@ -736,16 +760,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_brand (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_brand is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: p_brand (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 7
@@ -773,19 +800,18 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_name (type: string)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Group By Operator
- keys: _col0 (type: string), true (type: boolean)
+ keys: p_name (type: string)
mode: hash
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
@@ -793,16 +819,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -892,7 +922,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: select * from part_null where p_brand IN (select p_brand from part_null) AND p_brand NOT IN (select p_name from part_null)
PREHOOK: type: QUERY
PREHOOK: Input: default@part_null
@@ -901,7 +931,7 @@ POSTHOOK: query: select * from part_null where p_brand IN (select p_brand from p
POSTHOOK: type: QUERY
POSTHOOK: Input: default@part_null
#### A masked pattern was here ####
-Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[43][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: explain select * from part_null where p_name NOT IN (select c from tempty) AND p_brand IN (select p_brand from part_null)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_name NOT IN (select c from tempty) AND p_brand IN (select p_brand from part_null)
@@ -928,14 +958,17 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_brand is not null (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- sort order:
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 5
@@ -963,20 +996,16 @@ STAGE PLANS:
TableScan
alias: tempty
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- Select Operator
- expressions: c (type: char(2))
+ Group By Operator
+ keys: c (type: char(2))
+ mode: hash
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- Group By Operator
- keys: _col0 (type: char(2)), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
+ Reduce Output Operator
+ key expressions: _col0 (type: char(2))
+ sort order: +
+ Map-reduce partition columns: _col0 (type: char(2))
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: char(2)), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: char(2)), _col1 (type: boolean)
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 9
@@ -984,16 +1013,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_brand (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_brand is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: p_brand (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Reducer 10
@@ -1084,16 +1116,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: char(2)), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: char(2))
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- Reduce Output Operator
- key expressions: UDFToString(_col0) (type: string)
- sort order: +
- Map-reduce partition columns: UDFToString(_col0) (type: string)
+ Select Operator
+ expressions: _col0 (type: char(2)), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: UDFToString(_col0) (type: string)
+ sort order: +
+ Map-reduce partition columns: UDFToString(_col0) (type: string)
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -1101,7 +1137,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[43][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select * from part_null where p_name NOT IN (select c from tempty) AND p_brand IN (select p_brand from part_null)
PREHOOK: type: QUERY
PREHOOK: Input: default@part_null
@@ -1139,7 +1175,7 @@ POSTHOOK: Input: default@tempty
78487 NULL Manufacturer#6 Brand#52 LARGE BRUSHED BRASS 23 MED BAG 1464.48 hely blith
15103 almond aquamarine dodger light gainsboro Manufacturer#5 Brand#53 ECONOMY BURNISHED STEEL 46 LG PACK 1018.1 packages hinder carefu
155733 almond antique sky peru orange Manufacturer#5 Brand#53 SMALL PLATED BRASS 2 WRAP DRUM 1788.73 furiously. bra
-Warning: Shuffle Join MERGEJOIN[28][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[30][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND EXISTS (select c from tnull)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND EXISTS (select c from tnull)
@@ -1164,16 +1200,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col1 (type: string)
- sort order: +
- Map-reduce partition columns: _col1 (type: string)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 4
@@ -1181,16 +1220,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_name (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: p_name (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 6
@@ -1278,7 +1320,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[28][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[30][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: select * from part_null where p_name IN (select p_name from part_null) AND EXISTS (select c from tnull)
PREHOOK: type: QUERY
PREHOOK: Input: default@part_null
@@ -1315,7 +1357,7 @@ POSTHOOK: Input: default@tnull
17927 almond aquamarine yellow dodger mint Manufacturer#4 Brand#41 ECONOMY BRUSHED COPPER 7 SM PKG 1844.92 ites. eve
33357 almond azure aquamarine papaya violet Manufacturer#4 Brand#41 STANDARD ANODIZED TIN 12 WRAP CASE 1290.35 reful
78486 almond azure blanched chiffon midnight Manufacturer#5 Brand#52 LARGE BRUSHED BRASS 23 MED BAG 1464.48 hely blith
-Warning: Shuffle Join MERGEJOIN[28][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[30][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: explain select * from part_null where p_size IN (select p_size from part_null) AND EXISTS (select c from tempty)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_size IN (select p_size from part_null) AND EXISTS (select c from tempty)
@@ -1340,16 +1382,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col5 (type: int)
- sort order: +
- Map-reduce partition columns: _col5 (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: _col5 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col5 (type: int)
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 4
@@ -1357,16 +1402,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_size (type: int)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Group By Operator
+ keys: p_size (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 814 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 6
@@ -1454,7 +1502,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[28][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[30][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: select * from part_null where p_size IN (select p_size from part_null) AND EXISTS (select c from tempty)
PREHOOK: type: QUERY
PREHOOK: Input: default@part_null
@@ -1465,7 +1513,7 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@part_null
POSTHOOK: Input: default@tempty
#### A masked pattern was here ####
-Warning: Shuffle Join MERGEJOIN[29][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[31][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND NOT EXISTS (select c from tempty)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_name IN (select p_name from part_null) AND NOT EXISTS (select c from tempty)
@@ -1490,16 +1538,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col1 (type: string)
- sort order: +
- Map-reduce partition columns: _col1 (type: string)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 5 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
Map 4
@@ -1507,16 +1558,19 @@ STAGE PLANS:
TableScan
alias: part_null
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: p_name (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: p_name (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 32 Data size: 3256 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Map 6
@@ -1610,7 +1664,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[29][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[31][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
PREHOOK: query: select * from part_null where p_name IN (select p_name from part_null) AND NOT EXISTS (select c from tempty)
PREHOOK: type: QUERY
PREHOOK: Input: default@part_null
[27/50] [abbrv] hive git commit: HIVE-15703 :
HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via
Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/subquery_notin.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/subquery_notin.q.out b/ql/src/test/results/clientpositive/llap/subquery_notin.q.out
index a42c7ee..48fe336 100644
--- a/ql/src/test/results/clientpositive/llap/subquery_notin.q.out
+++ b/ql/src/test/results/clientpositive/llap/subquery_notin.q.out
@@ -1,4 +1,4 @@
-Warning: Shuffle Join MERGEJOIN[29][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[28][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: explain
select *
from src
@@ -72,20 +72,16 @@ STAGE PLANS:
Filter Operator
predicate: (key > '2') (type: boolean)
Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: key (type: string)
+ Group By Operator
+ keys: key (type: string)
+ mode: hash
outputColumnNames: _col0
- Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 69 Data size: 6279 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 69 Data size: 6279 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 69 Data size: 6003 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 69 Data size: 6003 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Reducer 2
@@ -146,16 +142,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 69 Data size: 6279 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 69 Data size: 6003 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 69 Data size: 6279 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 69 Data size: 6279 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -163,7 +163,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[31][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[30][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select *
from src
where src.key not in ( select key from src s1 where s1.key > '2')
@@ -822,16 +822,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: double), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: double)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: double)
- sort order: +
- Map-reduce partition columns: _col0 (type: double)
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: double), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: double)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: double)
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -988,15 +992,15 @@ STAGE PLANS:
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
- keys: _col0 (type: double), true (type: boolean)
+ keys: _col0 (type: double)
mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: double), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: double), _col1 (type: boolean)
- Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+ key expressions: _col0 (type: double)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: double)
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Stage: Stage-0
Fetch Operator
@@ -1415,17 +1419,17 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col4
Statistics: Num rows: 26 Data size: 6006 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (sq_count_check(CASE WHEN (_col4 is null) THEN (0) ELSE (_col4) END, true) > 0) (type: boolean)
+ predicate: (sq_count_check(_col4, true) > 0) (type: boolean)
Statistics: Num rows: 8 Data size: 1848 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col0 (type: string), _col1 (type: string), _col2 (type: int)
outputColumnNames: _col0, _col1, _col2
- Statistics: Num rows: 8 Data size: 1784 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 1848 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col1 (type: string)
sort order: +
Map-reduce partition columns: _col1 (type: string)
- Statistics: Num rows: 8 Data size: 1784 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 8 Data size: 1848 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col0 (type: string), _col2 (type: int)
Reducer 20
Execution mode: llap
@@ -1516,14 +1520,14 @@ STAGE PLANS:
keys:
0 _col1 (type: string)
1 _col0 (type: string)
- outputColumnNames: _col0, _col1, _col2, _col4, _col5
+ outputColumnNames: _col0, _col1, _col2, _col6, _col7
Statistics: Num rows: 8 Data size: 1912 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col1 (type: string), _col2 (type: int)
sort order: ++
Map-reduce partition columns: _col1 (type: string), _col2 (type: int)
Statistics: Num rows: 8 Data size: 1912 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: string), _col4 (type: bigint), _col5 (type: bigint)
+ value expressions: _col0 (type: string), _col6 (type: bigint), _col7 (type: bigint)
Reducer 4
Execution mode: llap
Reduce Operator Tree:
@@ -1533,10 +1537,10 @@ STAGE PLANS:
keys:
0 _col1 (type: string), _col2 (type: int)
1 _col1 (type: string), _col3 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col8
+ outputColumnNames: _col0, _col1, _col2, _col6, _col7, _col10
Statistics: Num rows: 8 Data size: 1944 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: CASE WHEN ((_col4 = 0)) THEN (true) WHEN (_col4 is null) THEN (true) WHEN (_col8 is not null) THEN (false) WHEN (_col2 is null) THEN (null) WHEN ((_col5 < _col4)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col6 = 0)) THEN (true) WHEN (_col6 is null) THEN (true) WHEN (_col10 is not null) THEN (false) WHEN (_col2 is null) THEN (null) WHEN ((_col7 < _col6)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 4 Data size: 972 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col1 (type: string), _col0 (type: string), _col2 (type: int)
@@ -1675,7 +1679,7 @@ Manufacturer#5 almond antique medium spring khaki 6
Manufacturer#5 almond azure blanched chiffon midnight 23
Manufacturer#5 almond antique blue firebrick mint 31
Manufacturer#5 almond aquamarine dodger light gainsboro 46
-Warning: Shuffle Join MERGEJOIN[35][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[34][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select li.l_partkey, count(*)
from lineitem li
where li.l_linenumber = 1 and
@@ -1708,7 +1712,7 @@ POSTHOOK: Input: default@lineitem
139636 1
175839 1
182052 1
-Warning: Shuffle Join MERGEJOIN[31][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[30][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select *
from src
where not src.key in ( select key from src s1 where s1.key > '2')
@@ -1947,22 +1951,22 @@ STAGE PLANS:
insideView TRUE
Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (key < '11') (type: boolean)
- Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
+ predicate: ((key < '11') and CASE WHEN ((key > '104')) THEN (null) ELSE ((key < '11')) END) (type: boolean)
+ Statistics: Num rows: 83 Data size: 7221 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: CASE WHEN ((key > '104')) THEN (null) ELSE (key) END (type: string)
outputColumnNames: _col0
- Statistics: Num rows: 166 Data size: 31208 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 83 Data size: 15272 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
- keys: _col0 (type: string), true (type: boolean)
+ keys: _col0 (type: string)
mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 69 Data size: 12972 Basic stats: COMPLETE Column stats: COMPLETE
+ outputColumnNames: _col0
+ Statistics: Num rows: 35 Data size: 6440 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 69 Data size: 12972 Basic stats: COMPLETE Column stats: COMPLETE
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 35 Data size: 6440 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Reducer 2
@@ -2023,16 +2027,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 69 Data size: 12972 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
- Statistics: Num rows: 69 Data size: 12972 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ outputColumnNames: _col0
+ Statistics: Num rows: 35 Data size: 6440 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 35 Data size: 6580 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 35 Data size: 6580 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -2578,34 +2586,34 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: _col1 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
outputColumnNames: _col0
- Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: int), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 9
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -2810,34 +2818,34 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: _col1 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
outputColumnNames: _col0
- Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: int), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 9
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -3389,31 +3397,35 @@ STAGE PLANS:
Select Operator
expressions: floor(_col1) (type: bigint)
outputColumnNames: _col0
- Statistics: Num rows: 13 Data size: 156 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 13 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
- keys: _col0 (type: bigint), true (type: boolean)
+ keys: _col0 (type: bigint)
mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: bigint), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: bigint), _col1 (type: boolean)
- Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 9
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: bigint), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: bigint)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: bigint), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -4782,7 +4794,7 @@ almond azure aquamarine papaya violet
almond antique medium spring khaki
almond aquamarine sandy cyan gainsboro
almond antique olive coral navajo
-Warning: Shuffle Join MERGEJOIN[55][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[56][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: explain select key, count(*) from src where value NOT IN (select key from src) group by key having count(*) in (select count(*) from src s1 where s1.key = '90' group by s1.key )
PREHOOK: type: QUERY
POSTHOOK: query: explain select key, count(*) from src where value NOT IN (select key from src) group by key having count(*) in (select count(*) from src s1 where s1.key = '90' group by s1.key )
@@ -4870,20 +4882,16 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: key (type: string)
+ Group By Operator
+ keys: key (type: string)
+ mode: hash
outputColumnNames: _col0
- Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 205 Data size: 18655 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 205 Data size: 18655 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 205 Data size: 17835 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 205 Data size: 17835 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Reducer 11
@@ -4899,16 +4907,19 @@ STAGE PLANS:
expressions: _col1 (type: bigint)
outputColumnNames: _col1
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col1 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
+ Group By Operator
+ keys: _col1 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 12
Execution mode: llap
Reduce Operator Tree:
@@ -4978,12 +4989,15 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 205 Data size: 19475 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col1 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col1 (type: bigint)
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 205 Data size: 19475 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: bigint)
+ Statistics: Num rows: 205 Data size: 19475 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: string)
Reducer 5
Execution mode: llap
Reduce Operator Tree:
@@ -5018,16 +5032,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 205 Data size: 18655 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 205 Data size: 17835 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 205 Data size: 18655 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 205 Data size: 18655 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -5035,7 +5053,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[55][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[56][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select key, count(*) from src where value NOT IN (select key from src) group by key having count(*) in (select count(*) from src s1 where s1.key = '90' group by s1.key )
PREHOOK: type: QUERY
PREHOOK: Input: default@src
@@ -5627,16 +5645,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -5738,20 +5760,16 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: _col1 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
outputColumnNames: _col0
- Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: int), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Stage: Stage-0
Fetch Operator
@@ -5872,16 +5890,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -5987,20 +6009,16 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: _col1 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
outputColumnNames: _col0
- Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: int), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
- Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
Stage: Stage-0
Fetch Operator
@@ -6070,15 +6088,15 @@ STAGE PLANS:
outputColumnNames: _col0
Statistics: Num rows: 26 Data size: 2392 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
- keys: _col0 (type: string), true (type: boolean)
+ keys: _col0 (type: string)
mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 25 Data size: 3125 Basic stats: COMPLETE Column stats: COMPLETE
+ outputColumnNames: _col0
+ Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 25 Data size: 3125 Basic stats: COMPLETE Column stats: COMPLETE
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Map 4
@@ -6131,31 +6149,35 @@ STAGE PLANS:
outputColumnNames: _col0
Statistics: Num rows: 26 Data size: 3146 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
- keys: _col0 (type: string), true (type: boolean)
+ keys: _col0 (type: string)
mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 25 Data size: 3125 Basic stats: COMPLETE Column stats: COMPLETE
+ outputColumnNames: _col0
+ Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 25 Data size: 3125 Basic stats: COMPLETE Column stats: COMPLETE
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Reducer 10
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 25 Data size: 3125 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 25 Data size: 3025 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 25 Data size: 3125 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 25 Data size: 3125 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -7102,7 +7124,7 @@ POSTHOOK: query: INSERT INTO t2 VALUES (null), (2), (100)
POSTHOOK: type: QUERY
POSTHOOK: Output: default@t2
POSTHOOK: Lineage: t2.c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-Warning: Shuffle Join MERGEJOIN[26][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[25][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: explain SELECT c1 FROM t1 WHERE c1 NOT IN (SELECT c1 FROM t2)
PREHOOK: type: QUERY
POSTHOOK: query: explain SELECT c1 FROM t1 WHERE c1 NOT IN (SELECT c1 FROM t2)
@@ -7162,20 +7184,16 @@ STAGE PLANS:
TableScan
alias: t2
Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: c1 (type: int)
+ Group By Operator
+ keys: c1 (type: int)
+ mode: hash
outputColumnNames: _col0
Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: int), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
- Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Reducer 2
@@ -7236,16 +7254,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 1 Data size: 2 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -7253,7 +7275,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[26][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[25][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: SELECT c1 FROM t1 WHERE c1 NOT IN (SELECT c1 FROM t2)
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -8162,12 +8184,16 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Select Operator
+ expressions: _col0 (type: int), _col1 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: int)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: int), _col2 (type: boolean)
Reducer 12
Execution mode: llap
Reduce Operator Tree:
@@ -8177,14 +8203,14 @@ STAGE PLANS:
keys:
0 _col0 (type: int)
1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2
+ outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col2 (type: int), _col1 (type: int)
+ key expressions: _col3 (type: int), _col1 (type: int)
sort order: ++
- Map-reduce partition columns: _col2 (type: int), _col1 (type: int)
+ Map-reduce partition columns: _col3 (type: int), _col1 (type: int)
Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int)
+ value expressions: _col2 (type: boolean)
Reducer 14
Execution mode: llap
Reduce Operator Tree:
@@ -8236,11 +8262,11 @@ STAGE PLANS:
Left Outer Join0 to 1
keys:
0 _col1 (type: int), _col1 (type: int)
- 1 _col2 (type: int), _col1 (type: int)
- outputColumnNames: _col0, _col1, _col3, _col4, _col5
+ 1 _col3 (type: int), _col1 (type: int)
+ outputColumnNames: _col0, _col1, _col3, _col4, _col7
Statistics: Num rows: 2 Data size: 9 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: CASE WHEN ((_col3 = 0)) THEN (true) WHEN (_col3 is null) THEN (true) WHEN (_col5 is not null) THEN (false) WHEN (_col1 is null) THEN (null) WHEN ((_col4 < _col3)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col3 = 0)) THEN (true) WHEN (_col3 is null) THEN (true) WHEN (_col7 is not null) THEN (false) WHEN (_col1 is null) THEN (null) WHEN ((_col4 < _col3)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int), _col1 (type: int)
@@ -8514,12 +8540,16 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Select Operator
+ expressions: _col0 (type: int), _col1 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: int)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: int), _col2 (type: boolean)
Reducer 12
Execution mode: llap
Reduce Operator Tree:
@@ -8529,14 +8559,14 @@ STAGE PLANS:
keys:
0 _col0 (type: int)
1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2
+ outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col2 (type: int), _col1 (type: int)
+ key expressions: _col3 (type: int), _col1 (type: int)
sort order: ++
- Map-reduce partition columns: _col2 (type: int), _col1 (type: int)
+ Map-reduce partition columns: _col3 (type: int), _col1 (type: int)
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int)
+ value expressions: _col2 (type: boolean)
Reducer 14
Execution mode: llap
Reduce Operator Tree:
@@ -8588,11 +8618,11 @@ STAGE PLANS:
Left Outer Join0 to 1
keys:
0 _col1 (type: int), _col1 (type: int)
- 1 _col2 (type: int), _col1 (type: int)
- outputColumnNames: _col0, _col1, _col3, _col4, _col5
+ 1 _col3 (type: int), _col1 (type: int)
+ outputColumnNames: _col0, _col1, _col3, _col4, _col7
Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: CASE WHEN ((_col3 = 0)) THEN (true) WHEN (_col3 is null) THEN (true) WHEN (_col5 is not null) THEN (false) WHEN (_col1 is null) THEN (null) WHEN ((_col4 < _col3)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col3 = 0)) THEN (true) WHEN (_col3 is null) THEN (true) WHEN (_col7 is not null) THEN (false) WHEN (_col1 is null) THEN (null) WHEN ((_col4 < _col3)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int)
@@ -8834,12 +8864,16 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Select Operator
+ expressions: _col0 (type: int), _col1 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: int)
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: int), _col2 (type: boolean)
Reducer 12
Execution mode: llap
Reduce Operator Tree:
@@ -8849,14 +8883,14 @@ STAGE PLANS:
keys:
0 _col0 (type: int)
1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2
+ outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col2 (type: int), _col1 (type: int)
+ key expressions: _col3 (type: int), _col1 (type: int)
sort order: ++
- Map-reduce partition columns: _col2 (type: int), _col1 (type: int)
+ Map-reduce partition columns: _col3 (type: int), _col1 (type: int)
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int)
+ value expressions: _col2 (type: boolean)
Reducer 14
Execution mode: llap
Reduce Operator Tree:
@@ -8908,11 +8942,11 @@ STAGE PLANS:
Left Outer Join0 to 1
keys:
0 _col0 (type: int), _col1 (type: int)
- 1 _col2 (type: int), _col1 (type: int)
- outputColumnNames: _col0, _col3, _col4, _col5
+ 1 _col3 (type: int), _col1 (type: int)
+ outputColumnNames: _col0, _col3, _col4, _col7
Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: CASE WHEN ((_col3 = 0)) THEN (true) WHEN (_col3 is null) THEN (true) WHEN (_col5 is not null) THEN (false) WHEN (_col0 is null) THEN (null) WHEN ((_col4 < _col3)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col3 = 0)) THEN (true) WHEN (_col3 is null) THEN (true) WHEN (_col7 is not null) THEN (false) WHEN (_col0 is null) THEN (null) WHEN ((_col4 < _col3)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int)
@@ -8996,7 +9030,7 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t
#### A masked pattern was here ####
7
-Warning: Shuffle Join MERGEJOIN[26][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[25][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: explain select t.i from t where t.j NOT IN (select t1.i from t t1 )
PREHOOK: type: QUERY
POSTHOOK: query: explain select t.i from t where t.j NOT IN (select t1.i from t t1 )
@@ -9056,20 +9090,16 @@ STAGE PLANS:
TableScan
alias: t1
Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: i (type: int)
+ Group By Operator
+ keys: i (type: int)
+ mode: hash
outputColumnNames: _col0
Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: int), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
- Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Reducer 2
@@ -9098,10 +9128,10 @@ STAGE PLANS:
keys:
0 _col1 (type: int)
1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4
+ outputColumnNames: _col0, _col1, _col2, _col3, _col5
Statistics: Num rows: 3 Data size: 67 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: ((_col2 = 0) or (_col4 is null and _col1 is not null and (_col3 >= _col2))) (type: boolean)
+ predicate: ((_col2 = 0) or (_col5 is null and _col1 is not null and (_col3 >= _col2))) (type: boolean)
Statistics: Num rows: 1 Data size: 22 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int)
@@ -9130,19 +9160,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
Select Operator
- expressions: _col0 (type: int)
- outputColumnNames: _col0
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: int)
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -9150,7 +9181,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[26][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[25][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select t.i from t where t.j NOT IN (select t1.i from t t1 )
PREHOOK: type: QUERY
PREHOOK: Input: default@t
@@ -9161,7 +9192,7 @@ POSTHOOK: Input: default@t
#### A masked pattern was here ####
1
4
-Warning: Shuffle Join MERGEJOIN[26][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[25][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: explain select t.i from t where t.i NOT IN (select t1.i from t t1 )
PREHOOK: type: QUERY
POSTHOOK: query: explain select t.i from t where t.i NOT IN (select t1.i from t t1 )
@@ -9221,20 +9252,16 @@ STAGE PLANS:
TableScan
alias: t1
Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: i (type: int)
+ Group By Operator
+ keys: i (type: int)
+ mode: hash
outputColumnNames: _col0
Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: int), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
- Statistics: Num rows: 3 Data size: 10 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
Reducer 2
@@ -9263,10 +9290,10 @@ STAGE PLANS:
keys:
0 _col0 (type: int)
1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3
+ outputColumnNames: _col0, _col1, _col2, _col4
Statistics: Num rows: 3 Data size: 67 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: ((_col1 = 0) or (_col3 is null and _col0 is not null and (_col2 >= _col1))) (type: boolean)
+ predicate: ((_col1 = 0) or (_col4 is null and _col0 is not null and (_col2 >= _col1))) (type: boolean)
Statistics: Num rows: 1 Data size: 22 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int)
@@ -9295,19 +9322,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
Select Operator
- expressions: _col0 (type: int)
- outputColumnNames: _col0
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: int)
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
Stage: Stage-0
Fetch Operator
@@ -9315,7 +9343,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[26][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[25][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select t.i from t where t.i NOT IN (select t1.i from t t1 )
PREHOOK: type: QUERY
PREHOOK: Input: default@t
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/subquery_null_agg.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/subquery_null_agg.q.out b/ql/src/test/results/clientpositive/llap/subquery_null_agg.q.out
index 3591c44..7d9d77c 100644
--- a/ql/src/test/results/clientpositive/llap/subquery_null_agg.q.out
+++ b/ql/src/test/results/clientpositive/llap/subquery_null_agg.q.out
@@ -105,14 +105,14 @@ STAGE PLANS:
predicate: false (type: boolean)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
Group By Operator
- keys: false (type: boolean), true (type: boolean)
+ keys: false (type: boolean)
mode: hash
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: boolean), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: boolean), _col1 (type: boolean)
+ key expressions: _col0 (type: boolean)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: boolean)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
@@ -140,10 +140,10 @@ STAGE PLANS:
keys:
0
1
- outputColumnNames: _col1, _col4
+ outputColumnNames: _col1, _col3
Statistics: Num rows: 1 Data size: 18 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (_col4 is null or (_col1 = 0)) (type: boolean)
+ predicate: (_col3 is null or (_col1 = 0)) (type: boolean)
Statistics: Num rows: 1 Data size: 18 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: null (type: double)
@@ -179,18 +179,18 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: boolean), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: boolean)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
Select Operator
- expressions: _col1 (type: boolean)
- outputColumnNames: _col1
+ expressions: true (type: boolean)
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
Reduce Output Operator
sort order:
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ value expressions: _col0 (type: boolean)
Stage: Stage-0
Fetch Operator
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/subquery_scalar.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/subquery_scalar.q.out b/ql/src/test/results/clientpositive/llap/subquery_scalar.q.out
index 3be4b6a..a1a74a7 100644
--- a/ql/src/test/results/clientpositive/llap/subquery_scalar.q.out
+++ b/ql/src/test/results/clientpositive/llap/subquery_scalar.q.out
@@ -399,7 +399,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[28][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[24][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: explain select * from part where p_name = (select p_name from part_null where p_name is null)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part where p_name = (select p_name from part_null where p_name is null)
@@ -413,9 +413,8 @@ STAGE PLANS:
Tez
#### A masked pattern was here ####
Edges:
- Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE), Reducer 5 (CUSTOM_SIMPLE_EDGE)
- Reducer 3 <- Map 6 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
- Reducer 5 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+ Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE), Map 5 (CUSTOM_SIMPLE_EDGE), Reducer 4 (CUSTOM_SIMPLE_EDGE)
+ Reducer 4 <- Map 3 (CUSTOM_SIMPLE_EDGE)
#### A masked pattern was here ####
Vertices:
Map 1
@@ -423,17 +422,20 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
- Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- sort order:
- Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Filter Operator
+ predicate: (p_name = null) (type: boolean)
+ Statistics: Num rows: 1 Data size: 619 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: p_partkey (type: int), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Statistics: Num rows: 1 Data size: 582 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 582 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Execution mode: llap
LLAP IO: no inputs
- Map 4
+ Map 3
Map Operator Tree:
TableScan
alias: part_null
@@ -454,7 +456,7 @@ STAGE PLANS:
value expressions: _col0 (type: bigint)
Execution mode: llap
LLAP IO: no inputs
- Map 6
+ Map 5
Map Operator Tree:
TableScan
alias: part_null
@@ -465,9 +467,7 @@ STAGE PLANS:
Select Operator
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: null (type: string)
- sort order: +
- Map-reduce partition columns: null (type: string)
+ sort order:
Statistics: Num rows: 16 Data size: 1628 Basic stats: COMPLETE Column stats: NONE
Execution mode: llap
LLAP IO: no inputs
@@ -477,40 +477,25 @@ STAGE PLANS:
Merge Join Operator
condition map:
Inner Join 0 to 1
+ Inner Join 0 to 2
keys:
0
1
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
- Statistics: Num rows: 26 Data size: 16328 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col1 (type: string)
- sort order: +
- Map-reduce partition columns: _col1 (type: string)
- Statistics: Num rows: 26 Data size: 16328 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
- Reducer 3
- Execution mode: llap
- Reduce Operator Tree:
- Merge Join Operator
- condition map:
- Inner Join 0 to 1
- keys:
- 0 _col1 (type: string)
- 1 null (type: string)
+ 2
outputColumnNames: _col0, _col2, _col3, _col4, _col5, _col6, _col7, _col8
- Statistics: Num rows: 28 Data size: 17960 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 16 Data size: 11084 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int), null (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
- Statistics: Num rows: 28 Data size: 17960 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 16 Data size: 11084 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 28 Data size: 17960 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 16 Data size: 11084 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
- Reducer 5
+ Reducer 4
Execution mode: llap
Reduce Operator Tree:
Group By Operator
@@ -533,7 +518,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[28][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[24][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 2' is a cross product
PREHOOK: query: select * from part where p_name = (select p_name from part_null where p_name is null)
PREHOOK: type: QUERY
PREHOOK: Input: default@part
@@ -4238,9 +4223,9 @@ POSTHOOK: Input: default@part
65667
144293
15103
-Warning: Shuffle Join MERGEJOIN[54][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
-Warning: Shuffle Join MERGEJOIN[55][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
-Warning: Shuffle Join MERGEJOIN[56][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 4' is a cross product
+Warning: Shuffle Join MERGEJOIN[53][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[54][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[55][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 4' is a cross product
PREHOOK: query: explain select * from part_null where p_name NOT LIKE (select min(p_name) from part_null) AND p_brand NOT IN (select p_name from part)
PREHOOK: type: QUERY
POSTHOOK: query: explain select * from part_null where p_name NOT LIKE (select min(p_name) from part_null) AND p_brand NOT IN (select p_name from part)
@@ -4304,20 +4289,16 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3146 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: p_name (type: string)
+ Group By Operator
+ keys: p_name (type: string)
+ mode: hash
outputColumnNames: _col0
- Statistics: Num rows: 26 Data size: 3146 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 13 Data size: 1625 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 13 Data size: 1625 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: COMPLETE
Execution mode: llap
LLAP IO: no inputs
Map 6
@@ -4376,16 +4357,20 @@ STAGE PLANS:
Execution mode: llap
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 13 Data size: 1625 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 13 Data size: 1625 Basic stats: COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: boolean)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 13 Data size: 1625 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: boolean)
Reducer 2
Execution mode: llap
Reduce Operator Tree:
@@ -4507,9 +4492,9 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[54][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
-Warning: Shuffle Join MERGEJOIN[55][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
-Warning: Shuffle Join MERGEJOIN[56][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 4' is a cross product
+Warning: Shuffle Join MERGEJOIN[53][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
+Warning: Shuffle Join MERGEJOIN[54][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[55][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 4' is a cross product
PREHOOK: query: select * from part_null where p_name NOT LIKE (select min(p_name) from part_null) AND p_brand NOT IN (select p_name from part)
PREHOOK: type: QUERY
PREHOOK: Input: default@part
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out b/ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out
index c27668f..a0a3393 100644
--- a/ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out
@@ -1,4 +1,4 @@
-Warning: Map Join MAPJOIN[28][bigTable=?] in task 'Map 1' is a cross product
+Warning: Map Join MAPJOIN[27][bigTable=?] in task 'Map 1' is a cross product
PREHOOK: query: explain
select *
from src
@@ -30,32 +30,32 @@ Stage-0
Select Operator [SEL_36] (rows=500 width=178)
Output:["_col0","_col1"]
<-Map 1 [SIMPLE_EDGE] llap
- SHUFFLE [RS_23]
- Select Operator [SEL_22] (rows=500 width=178)
+ SHUFFLE [RS_22]
+ Select Operator [SEL_21] (rows=500 width=178)
Output:["_col0","_col1"]
- Filter Operator [FIL_21] (rows=500 width=198)
+ Filter Operator [FIL_20] (rows=500 width=198)
predicate:((_col2 = 0) or (_col5 is null and _col0 is not null and (_col3 >= _col2)))
- Map Join Operator [MAPJOIN_29] (rows=500 width=198)
- Conds:MAPJOIN_28._col0=RS_35._col0(Left Outer),Output:["_col0","_col1","_col2","_col3","_col5"]
+ Map Join Operator [MAPJOIN_28] (rows=500 width=198)
+ Conds:MAPJOIN_27._col0=RS_35._col0(Left Outer),Output:["_col0","_col1","_col2","_col3","_col5"]
<-Reducer 6 [BROADCAST_EDGE] vectorized, llap
BROADCAST [RS_35]
PartitionCols:_col0
- Group By Operator [GBY_34] (rows=205 width=91)
- Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
- <-Map 5 [SIMPLE_EDGE] llap
- SHUFFLE [RS_12]
- PartitionCols:_col0, _col1
- Group By Operator [GBY_11] (rows=205 width=91)
- Output:["_col0","_col1"],keys:_col0, true
- Select Operator [SEL_9] (rows=500 width=87)
- Output:["_col0"]
+ Select Operator [SEL_34] (rows=205 width=91)
+ Output:["_col0","_col1"]
+ Group By Operator [GBY_33] (rows=205 width=87)
+ Output:["_col0"],keys:KEY._col0
+ <-Map 5 [SIMPLE_EDGE] llap
+ SHUFFLE [RS_11]
+ PartitionCols:_col0
+ Group By Operator [GBY_10] (rows=205 width=87)
+ Output:["_col0"],keys:key
TableScan [TS_8] (rows=500 width=87)
default@src,src,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
- <-Map Join Operator [MAPJOIN_28] (rows=500 width=194)
+ <-Map Join Operator [MAPJOIN_27] (rows=500 width=194)
Conds:(Inner),Output:["_col0","_col1","_col2","_col3"]
<-Reducer 4 [BROADCAST_EDGE] vectorized, llap
- BROADCAST [RS_33]
- Group By Operator [GBY_32] (rows=1 width=16)
+ BROADCAST [RS_32]
+ Group By Operator [GBY_31] (rows=1 width=16)
Output:["_col0","_col1"],aggregations:["count(VALUE._col0)","count(VALUE._col1)"]
<-Map 3 [CUSTOM_SIMPLE_EDGE] llap
PARTITION_ONLY_SHUFFLE [RS_5]
@@ -70,7 +70,7 @@ Stage-0
TableScan [TS_0] (rows=500 width=178)
default@src,src,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
-Warning: Map Join MAPJOIN[28][bigTable=?] in task 'Map 1' is a cross product
+Warning: Map Join MAPJOIN[27][bigTable=?] in task 'Map 1' is a cross product
PREHOOK: query: select *
from src
where not key in
[07/50] [abbrv] hive git commit: HIVE-15698: Vectorization support
for min/max/bloomfilter runtime filtering (Jason Dere,
reviewed by Matt McCline)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java b/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java
index 59cb31e..889f00a 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java
@@ -28,6 +28,7 @@ import junit.framework.Assert;
import org.apache.hadoop.hive.ql.CompilationOpContext;
import org.apache.hadoop.hive.ql.exec.*;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor.Mode;
import org.apache.hadoop.hive.ql.exec.vector.VectorGroupByOperator;
import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFSumLong;
@@ -218,4 +219,34 @@ public class TestVectorizer {
Vectorizer vectorizer = new Vectorizer();
Assert.assertTrue(vectorizer.validateMapWorkOperator(map, null, false));
}
+
+ @Test
+ public void testExprNodeDynamicValue() {
+ ExprNodeDesc exprNode = new ExprNodeDynamicValueDesc(new DynamicValue("id1", TypeInfoFactory.stringTypeInfo));
+ Vectorizer v = new Vectorizer();
+ Assert.assertTrue(v.validateExprNodeDesc(exprNode, Mode.FILTER));
+ Assert.assertTrue(v.validateExprNodeDesc(exprNode, Mode.PROJECTION));
+ }
+
+ @Test
+ public void testExprNodeBetweenWithDynamicValue() {
+ ExprNodeDesc notBetween = new ExprNodeConstantDesc(TypeInfoFactory.booleanTypeInfo, Boolean.FALSE);
+ ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(String.class, "col1", "table", false);
+ ExprNodeDesc minExpr = new ExprNodeDynamicValueDesc(new DynamicValue("id1", TypeInfoFactory.stringTypeInfo));
+ ExprNodeDesc maxExpr = new ExprNodeDynamicValueDesc(new DynamicValue("id2", TypeInfoFactory.stringTypeInfo));
+
+ ExprNodeGenericFuncDesc betweenExpr = new ExprNodeGenericFuncDesc();
+ GenericUDF betweenUdf = new GenericUDFBetween();
+ betweenExpr.setTypeInfo(TypeInfoFactory.booleanTypeInfo);
+ betweenExpr.setGenericUDF(betweenUdf);
+ List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2);
+ children1.add(notBetween);
+ children1.add(colExpr);
+ children1.add(minExpr);
+ children1.add(maxExpr);
+ betweenExpr.setChildren(children1);
+
+ Vectorizer v = new Vectorizer();
+ Assert.assertTrue(v.validateExprNodeDesc(betweenExpr, Mode.FILTER));
+ }
}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/queries/clientpositive/explainuser_3.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/explainuser_3.q b/ql/src/test/queries/clientpositive/explainuser_3.q
index 282629e..9c6c9dc 100644
--- a/ql/src/test/queries/clientpositive/explainuser_3.q
+++ b/ql/src/test/queries/clientpositive/explainuser_3.q
@@ -13,6 +13,7 @@ set hive.vectorized.execution.enabled=true;
CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true');
insert into table acid_vectorized select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10;
+analyze table acid_vectorized compute statistics for columns;
explain select a, b from acid_vectorized order by a, b;
explain select key, value
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/queries/clientpositive/vectorized_dynamic_semijoin_reduction.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vectorized_dynamic_semijoin_reduction.q b/ql/src/test/queries/clientpositive/vectorized_dynamic_semijoin_reduction.q
new file mode 100644
index 0000000..e1eefff
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/vectorized_dynamic_semijoin_reduction.q
@@ -0,0 +1,43 @@
+set hive.compute.query.using.stats=false;
+set hive.mapred.mode=nonstrict;
+set hive.explain.user=false;
+set hive.optimize.ppd=true;
+set hive.ppd.remove.duplicatefilters=true;
+set hive.tez.dynamic.partition.pruning=true;
+set hive.tez.dynamic.semijoin.reduction=true;
+set hive.optimize.metadataonly=false;
+set hive.optimize.index.filter=true;
+
+set hive.vectorized.adaptor.usage.mode=none;
+set hive.vectorized.execution.enabled=true;
+
+-- Create Tables
+create table dsrv_big stored as orc as select key as key_str, cast(key as int) as key_int, value from src;
+create table dsrv_small stored as orc as select distinct key as key_str, cast(key as int) as key_int, value from src where key < 100;
+
+-- single key (int)
+EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int);
+select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int);
+
+-- single key (string)
+EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str);
+select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str);
+
+-- keys are different type
+EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str);
+select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_str);
+
+-- multiple tables
+EXPLAIN select count(*) from dsrv_big a, dsrv_small b, dsrv_small c where a.key_int = b.key_int and a.key_int = c.key_int;
+select count(*) from dsrv_big a, dsrv_small b, dsrv_small c where a.key_int = b.key_int and a.key_int = c.key_int;
+
+-- multiple keys
+EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str and a.key_int = b.key_int);
+select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str and a.key_int = b.key_int);
+
+-- small table result is empty
+EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int) where b.value in ('nonexistent1', 'nonexistent2');
+select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int) where b.value in ('nonexistent1', 'nonexistent2');
+
+drop table dsrv_big;
+drop table dsrv_small;
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/results/clientpositive/llap/mergejoin.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/mergejoin.q.out b/ql/src/test/results/clientpositive/llap/mergejoin.q.out
index 4ec2a71..6114548 100644
--- a/ql/src/test/results/clientpositive/llap/mergejoin.q.out
+++ b/ql/src/test/results/clientpositive/llap/mergejoin.q.out
@@ -92,7 +92,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 4
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=25)
@@ -321,7 +321,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 5
Map Operator Tree:
@@ -341,7 +341,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -378,7 +378,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 4
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
@@ -1434,7 +1434,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 5
Map Operator Tree:
@@ -1453,7 +1453,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -1490,7 +1490,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 4
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
@@ -1565,7 +1565,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 242 Data size: 24684 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 4
Map Operator Tree:
@@ -1594,7 +1594,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -1631,7 +1631,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 5
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=500)
@@ -1831,7 +1831,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 6
Map Operator Tree:
@@ -1851,7 +1851,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 7
Map Operator Tree:
@@ -1937,7 +1937,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 5
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
@@ -1949,7 +1949,7 @@ STAGE PLANS:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
Reducer 8
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=25)
@@ -2034,7 +2034,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 5
Map Operator Tree:
@@ -2054,7 +2054,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col1 (type: string)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -2091,7 +2091,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 4
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
@@ -2224,7 +2224,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 9
Map Operator Tree:
@@ -2244,7 +2244,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -2310,7 +2310,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 6
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=508)
@@ -2380,7 +2380,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 5
Map Operator Tree:
@@ -2400,7 +2400,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col1 (type: string)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -2437,7 +2437,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 4
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
@@ -2524,7 +2524,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 6
Map Operator Tree:
@@ -2544,7 +2544,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 7
Map Operator Tree:
@@ -2630,7 +2630,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 5
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
@@ -2642,7 +2642,7 @@ STAGE PLANS:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
Reducer 8
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=25)
@@ -2777,7 +2777,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 9
Map Operator Tree:
@@ -2797,7 +2797,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -2863,7 +2863,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 6
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=508)
@@ -2954,10 +2954,10 @@ STAGE PLANS:
key expressions: _col0 (type: int), _col1 (type: string)
sort order: ++
Statistics: Num rows: 500 Data size: 51000 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Select Operator
expressions: KEY.reducesinkkey0 (type: int)
@@ -3016,7 +3016,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 5
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/results/clientpositive/llap/orc_llap.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/orc_llap.q.out b/ql/src/test/results/clientpositive/llap/orc_llap.q.out
index 90055a5..4fb3d12 100644
--- a/ql/src/test/results/clientpositive/llap/orc_llap.q.out
+++ b/ql/src/test/results/clientpositive/llap/orc_llap.q.out
@@ -597,7 +597,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: smallint), _col1 (type: smallint), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 5
Map Operator Tree:
@@ -618,7 +618,7 @@ STAGE PLANS:
Map-reduce partition columns: _col0 (type: smallint)
Statistics: Num rows: 122880 Data size: 29079940 Basic stats: COMPLETE Column stats: NONE
value expressions: _col2 (type: string)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -660,7 +660,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 4
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=122880)
@@ -1089,7 +1089,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: smallint), _col1 (type: smallint), _col2 (type: binary)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 5
Map Operator Tree:
@@ -1110,7 +1110,7 @@ STAGE PLANS:
Map-reduce partition columns: _col0 (type: smallint)
Statistics: Num rows: 245760 Data size: 58159880 Basic stats: COMPLETE Column stats: NONE
value expressions: _col2 (type: string)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -1152,7 +1152,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 4
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=245760)
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/results/clientpositive/llap/vector_binary_join_groupby.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_binary_join_groupby.q.out b/ql/src/test/results/clientpositive/llap/vector_binary_join_groupby.q.out
index 9fbce7d..7de04a7 100644
--- a/ql/src/test/results/clientpositive/llap/vector_binary_join_groupby.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_binary_join_groupby.q.out
@@ -151,7 +151,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: bigint)
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Map 3
Map Operator Tree:
@@ -171,7 +171,7 @@ STAGE PLANS:
Map-reduce partition columns: _col10 (type: binary)
Statistics: Num rows: 100 Data size: 29638 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col2 (type: int), _col3 (type: bigint), _col4 (type: float), _col5 (type: double), _col6 (type: boolean), _col7 (type: string), _col8 (type: timestamp), _col9 (type: decimal(4,2))
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: vectorized, llap
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
index 3d087b3..729a84e 100644
--- a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
@@ -2958,7 +2958,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 172 Basic stats: COMPLETE Column stats: NONE
- Execution mode: llap
+ Execution mode: vectorized, llap
LLAP IO: all inputs
Reducer 2
Execution mode: llap
@@ -3024,7 +3024,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 5
- Execution mode: llap
+ Execution mode: vectorized, llap
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=1)
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
new file mode 100644
index 0000000..29f2391
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
@@ -0,0 +1,932 @@
+PREHOOK: query: create table dsrv_big stored as orc as select key as key_str, cast(key as int) as key_int, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@dsrv_big
+POSTHOOK: query: create table dsrv_big stored as orc as select key as key_str, cast(key as int) as key_int, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@dsrv_big
+POSTHOOK: Lineage: dsrv_big.key_int EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dsrv_big.key_str SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dsrv_big.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: create table dsrv_small stored as orc as select distinct key as key_str, cast(key as int) as key_int, value from src where key < 100
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@dsrv_small
+POSTHOOK: query: create table dsrv_small stored as orc as select distinct key as key_str, cast(key as int) as key_int, value from src where key < 100
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@dsrv_small
+POSTHOOK: Lineage: dsrv_small.key_int EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dsrv_small.key_str SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dsrv_small.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Reducer 5 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 5 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: (key_int is not null and key_int BETWEEN DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key_int is not null and key_int BETWEEN DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_int (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: key_int is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: key_int is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_int (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=57)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ Statistics: Num rows: 550 Data size: 99000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=57)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dsrv_big
+PREHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dsrv_big
+POSTHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+84
+PREHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Reducer 5 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 5 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: (key_str is not null and key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key_str is not null and key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_str (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: key_str is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: key_str is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_str (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=57)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: string)
+ 1 _col0 (type: string)
+ Statistics: Num rows: 550 Data size: 99000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=57)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dsrv_big
+PREHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dsrv_big
+POSTHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+84
+PREHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Reducer 5 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 5 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: (key_str is not null and key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key_str is not null and key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_str (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: key_str is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: key_str is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_str (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=57)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: string)
+ 1 _col0 (type: string)
+ Statistics: Num rows: 550 Data size: 99000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=57)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_str)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dsrv_big
+PREHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_str)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dsrv_big
+POSTHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+84
+PREHOOK: query: EXPLAIN select count(*) from dsrv_big a, dsrv_small b, dsrv_small c where a.key_int = b.key_int and a.key_int = c.key_int
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from dsrv_big a, dsrv_small b, dsrv_small c where a.key_int = b.key_int and a.key_int = c.key_int
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Reducer 5 (BROADCAST_EDGE), Reducer 7 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 6 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 5 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+ Reducer 7 <- Map 6 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: (key_int is not null and key_int BETWEEN DynamicValue(RS_10_b_key_int_min) AND DynamicValue(RS_10_b_key_int_max) and key_int BETWEEN DynamicValue(RS_11_c_key_int_min) AND DynamicValue(RS_11_c_key_int_max) and in_bloom_filter(key_int, DynamicValue(RS_10_b_key_int_bloom_filter)) and in_bloom_filter(key_int, DynamicValue(RS_11_c_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key_int is not null and key_int BETWEEN DynamicValue(RS_10_b_key_int_min) AND DynamicValue(RS_10_b_key_int_max) and key_int BETWEEN DynamicValue(RS_11_c_key_int_min) AND DynamicValue(RS_11_c_key_int_max) and in_bloom_filter(key_int, DynamicValue(RS_10_b_key_int_bloom_filter)) and in_bloom_filter(key_int, DynamicValue(RS_11_c_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_int (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: key_int is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: key_int is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_int (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=57)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Map 6
+ Map Operator Tree:
+ TableScan
+ alias: c
+ filterExpr: key_int is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: key_int is not null (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_int (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=57)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ Inner Join 0 to 2
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ 2 _col0 (type: int)
+ Statistics: Num rows: 1100 Data size: 198000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=57)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+ Reducer 7
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=57)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from dsrv_big a, dsrv_small b, dsrv_small c where a.key_int = b.key_int and a.key_int = c.key_int
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dsrv_big
+PREHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from dsrv_big a, dsrv_small b, dsrv_small c where a.key_int = b.key_int and a.key_int = c.key_int
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dsrv_big
+POSTHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+84
+PREHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str and a.key_int = b.key_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str and a.key_int = b.key_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Reducer 5 (BROADCAST_EDGE), Reducer 6 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 5 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+ Reducer 6 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: (key_str is not null and key_int is not null and key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and key_int BETWEEN DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)) and in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key_str is not null and key_int is not null and key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and key_int BETWEEN DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)) and in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_str (type: string), key_int (type: int)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: int)
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: (key_str is not null and key_int is not null) (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key_str is not null and key_int is not null) (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_str (type: string), key_int (type: int)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: int)
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=57)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+ Select Operator
+ expressions: _col1 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=57)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: string), _col1 (type: int)
+ 1 _col0 (type: string), _col1 (type: int)
+ Statistics: Num rows: 550 Data size: 99000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=57)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
+ Reducer 6
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=57)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str and a.key_int = b.key_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dsrv_big
+PREHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_str = b.key_str and a.key_int = b.key_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dsrv_big
+POSTHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+84
+PREHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int) where b.value in ('nonexistent1', 'nonexistent2')
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int) where b.value in ('nonexistent1', 'nonexistent2')
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Map 1 <- Reducer 5 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 5 <- Map 4 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: (key_int is not null and key_int BETWEEN DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key_int is not null and key_int BETWEEN DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: boolean)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_int (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 500 Data size: 90000 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: ((value) IN ('nonexistent1', 'nonexistent2') and key_int is not null) (type: boolean)
+ Statistics: Num rows: 57 Data size: 10146 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: ((value) IN ('nonexistent1', 'nonexistent2') and key_int is not null) (type: boolean)
+ Statistics: Num rows: 29 Data size: 5162 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key_int (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 29 Data size: 5162 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 29 Data size: 5162 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 29 Data size: 5162 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), bloom_filter(_col0, expectedEntries=29)
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+ Execution mode: vectorized, llap
+ LLAP IO: all inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ Statistics: Num rows: 550 Data size: 99000 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=29)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: binary)
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int) where b.value in ('nonexistent1', 'nonexistent2')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dsrv_big
+PREHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from dsrv_big a join dsrv_small b on (a.key_int = b.key_int) where b.value in ('nonexistent1', 'nonexistent2')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dsrv_big
+POSTHOOK: Input: default@dsrv_small
+#### A masked pattern was here ####
+0
+PREHOOK: query: drop table dsrv_big
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@dsrv_big
+PREHOOK: Output: default@dsrv_big
+POSTHOOK: query: drop table dsrv_big
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@dsrv_big
+POSTHOOK: Output: default@dsrv_big
+PREHOOK: query: drop table dsrv_small
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@dsrv_small
+PREHOOK: Output: default@dsrv_small
+POSTHOOK: query: drop table dsrv_small
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@dsrv_small
+POSTHOOK: Output: default@dsrv_small
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/explainuser_3.q.out b/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
index fbf61ef..17c9ec3 100644
--- a/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
+++ b/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
@@ -16,6 +16,14 @@ POSTHOOK: Input: default@alltypesorc
POSTHOOK: Output: default@acid_vectorized
POSTHOOK: Lineage: acid_vectorized.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
POSTHOOK: Lineage: acid_vectorized.b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
+PREHOOK: query: analyze table acid_vectorized compute statistics for columns
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_vectorized
+#### A masked pattern was here ####
+POSTHOOK: query: analyze table acid_vectorized compute statistics for columns
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_vectorized
+#### A masked pattern was here ####
PREHOOK: query: explain select a, b from acid_vectorized order by a, b
PREHOOK: type: QUERY
POSTHOOK: query: explain select a, b from acid_vectorized order by a, b
@@ -31,14 +39,14 @@ Stage-0
Stage-1
Reducer 2 vectorized
File Output Operator [FS_8]
- Select Operator [SEL_7] (rows=16 width=106)
+ Select Operator [SEL_7] (rows=16 width=101)
Output:["_col0","_col1"]
<-Map 1 [SIMPLE_EDGE] vectorized
SHUFFLE [RS_6]
- Select Operator [SEL_5] (rows=16 width=106)
+ Select Operator [SEL_5] (rows=16 width=101)
Output:["_col0","_col1"]
- TableScan [TS_0] (rows=16 width=106)
- default@acid_vectorized,acid_vectorized, ACID table,Tbl:COMPLETE,Col:NONE,Output:["a","b"]
+ TableScan [TS_0] (rows=16 width=101)
+ default@acid_vectorized,acid_vectorized, ACID table,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b"]
PREHOOK: query: explain select key, value
FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol
@@ -721,6 +729,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Reducer 2
+ Execution mode: vectorized
Reduce Operator Tree:
Group By Operator
aggregations: min(VALUE._col0), max(VALUE._col1), bloom_filter(VALUE._col2, expectedEntries=242)
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/test/results/clientpositive/vector_binary_join_groupby.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_binary_join_groupby.q.out b/ql/src/test/results/clientpositive/vector_binary_join_groupby.q.out
index 850278e..dead5a6 100644
--- a/ql/src/test/results/clientpositive/vector_binary_join_groupby.q.out
+++ b/ql/src/test/results/clientpositive/vector_binary_join_groupby.q.out
@@ -166,6 +166,7 @@ STAGE PLANS:
sort order:
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
value expressions: _col0 (type: bigint)
+ Execution mode: vectorized
Local Work:
Map Reduce Local Work
Reduce Operator Tree:
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/storage-api/src/java/org/apache/hive/common/util/BloomFilter.java
----------------------------------------------------------------------
diff --git a/storage-api/src/java/org/apache/hive/common/util/BloomFilter.java b/storage-api/src/java/org/apache/hive/common/util/BloomFilter.java
index d44bba8..e9f419d 100644
--- a/storage-api/src/java/org/apache/hive/common/util/BloomFilter.java
+++ b/storage-api/src/java/org/apache/hive/common/util/BloomFilter.java
@@ -292,6 +292,42 @@ public class BloomFilter {
}
}
+ // Given a byte array consisting of a serialized BloomFilter, gives the offset (from 0)
+ // for the start of the serialized long values that make up the bitset.
+ // NumHashFunctions (1 byte) + NumBits (4 bytes)
+ public static final int START_OF_SERIALIZED_LONGS = 5;
+
+ /**
+ * Merges BloomFilter bf2 into bf1.
+ * Assumes 2 BloomFilters with the same size/hash functions are serialized to byte arrays
+ * @param bf1Bytes
+ * @param bf1Start
+ * @param bf1Length
+ * @param bf2Bytes
+ * @param bf2Start
+ * @param bf2Length
+ */
+ public static void mergeBloomFilterBytes(
+ byte[] bf1Bytes, int bf1Start, int bf1Length,
+ byte[] bf2Bytes, int bf2Start, int bf2Length) {
+ if (bf1Length != bf2Length) {
+ throw new IllegalArgumentException("bf1Length " + bf1Length + " does not match bf2Length " + bf2Length);
+ }
+
+ // Validation on the bitset size/3 hash functions.
+ for (int idx = 0; idx < START_OF_SERIALIZED_LONGS; ++idx) {
+ if (bf1Bytes[bf1Start + idx] != bf2Bytes[bf2Start + idx]) {
+ throw new IllegalArgumentException("bf1 NumHashFunctions/NumBits does not match bf2");
+ }
+ }
+
+ // Just bitwise-OR the bits together - size/# functions should be the same,
+ // rest of the data is serialized long values for the bitset which are supposed to be bitwise-ORed.
+ for (int idx = START_OF_SERIALIZED_LONGS; idx < bf1Length; ++idx) {
+ bf1Bytes[bf1Start + idx] |= bf2Bytes[bf2Start + idx];
+ }
+ }
+
/**
* Bare metal bit set implementation. For performance reasons, this implementation does not check
* for index bounds nor expand the bit set size if the specified index is greater than the size.
[09/50] [abbrv] hive git commit: HIVE-15485: Investigate the DoAs
failure in HoS (Chaoyu Tang, reviewed by Xuefu Zhang and Jimmy Xiang)
Posted by se...@apache.org.
HIVE-15485: Investigate the DoAs failure in HoS (Chaoyu Tang, reviewed by Xuefu Zhang and Jimmy Xiang)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/803e1e0b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/803e1e0b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/803e1e0b
Branch: refs/heads/hive-14535
Commit: 803e1e0b89140350c40a7ec5c42f217532550495
Parents: 62ebd1a
Author: Chaoyu Tang <ct...@cloudera.com>
Authored: Mon Jan 30 11:26:06 2017 -0500
Committer: Chaoyu Tang <ct...@cloudera.com>
Committed: Mon Jan 30 11:26:06 2017 -0500
----------------------------------------------------------------------
.../hive/spark/client/SparkClientImpl.java | 40 ++++++++++++++------
1 file changed, 29 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/803e1e0b/spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java
----------------------------------------------------------------------
diff --git a/spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java b/spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java
index 0da40dd..d4b63f0 100644
--- a/spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java
+++ b/spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java
@@ -335,7 +335,7 @@ class SparkClientImpl implements SparkClient {
Preconditions.checkArgument(master != null, "spark.master is not defined.");
String deployMode = conf.get("spark.submit.deployMode");
- List<String> argv = Lists.newArrayList();
+ List<String> argv = Lists.newLinkedList();
if (sparkHome != null) {
argv.add(new File(sparkHome, "bin/spark-submit").getAbsolutePath());
@@ -376,16 +376,6 @@ class SparkClientImpl implements SparkClient {
argv.add("org.apache.spark.deploy.SparkSubmit");
}
- if ("kerberos".equals(hiveConf.get(HADOOP_SECURITY_AUTHENTICATION))) {
- String principal = SecurityUtil.getServerPrincipal(hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL),
- "0.0.0.0");
- String keyTabFile = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB);
- argv.add("--principal");
- argv.add(principal);
- argv.add("--keytab");
- argv.add(keyTabFile);
- }
-
if (SparkClientUtilities.isYarnClusterMode(master, deployMode)) {
String executorCores = conf.get("spark.executor.cores");
if (executorCores != null) {
@@ -405,6 +395,34 @@ class SparkClientImpl implements SparkClient {
argv.add(numOfExecutors);
}
}
+ // The options --principal/--keypad do not work with --proxy-user in spark-submit.sh
+ // (see HIVE-15485, SPARK-5493, SPARK-19143), so Hive could only support doAs or
+ // delegation token renewal, but not both. Since doAs is a more common case, if both
+ // are needed, we choose to favor doAs. So when doAs is enabled, we use kinit command,
+ // otherwise, we pass the principal/keypad to spark to support the token renewal for
+ // long-running application.
+ if ("kerberos".equals(hiveConf.get(HADOOP_SECURITY_AUTHENTICATION))) {
+ String principal = SecurityUtil.getServerPrincipal(hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL),
+ "0.0.0.0");
+ String keyTabFile = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB);
+ if (hiveConf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS)) {
+ List<String> kinitArgv = Lists.newLinkedList();
+ kinitArgv.add("kinit");
+ kinitArgv.add(principal);
+ kinitArgv.add("-k");
+ kinitArgv.add("-t");
+ kinitArgv.add(keyTabFile + ";");
+ kinitArgv.addAll(argv);
+ argv = kinitArgv;
+ } else {
+ // if doAs is not enabled, we pass the principal/keypad to spark-submit in order to
+ // support the possible delegation token renewal in Spark
+ argv.add("--principal");
+ argv.add(principal);
+ argv.add("--keytab");
+ argv.add(keyTabFile);
+ }
+ }
if (hiveConf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS)) {
try {
String currentUser = Utils.getUGI().getShortUserName();
[43/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-php/metastore/Types.php
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-php/metastore/Types.php
index 5d438b8,103cd86..0a5e3da
--- a/metastore/src/gen/thrift/gen-php/metastore/Types.php
+++ b/metastore/src/gen/thrift/gen-php/metastore/Types.php
@@@ -4566,13 -4564,9 +4566,17 @@@ class Table
*/
public $temporary = false;
/**
+ * @var bool
+ */
+ public $rewriteEnabled = null;
++ /**
+ * @var int
+ */
+ public $mmNextWriteId = null;
+ /**
+ * @var int
+ */
+ public $mmWatermarkWriteId = null;
public function __construct($vals=null) {
if (!isset(self::$_TSPEC)) {
@@@ -4649,13 -4643,9 +4653,17 @@@
'type' => TType::BOOL,
),
15 => array(
+ 'var' => 'rewriteEnabled',
+ 'type' => TType::BOOL,
+ ),
++ 16 => array(
+ 'var' => 'mmNextWriteId',
+ 'type' => TType::I64,
+ ),
- 16 => array(
++ 17 => array(
+ 'var' => 'mmWatermarkWriteId',
+ 'type' => TType::I64,
+ ),
);
}
if (is_array($vals)) {
@@@ -4701,12 -4691,9 +4709,15 @@@
if (isset($vals['temporary'])) {
$this->temporary = $vals['temporary'];
}
+ if (isset($vals['rewriteEnabled'])) {
+ $this->rewriteEnabled = $vals['rewriteEnabled'];
+ }
+ if (isset($vals['mmNextWriteId'])) {
+ $this->mmNextWriteId = $vals['mmNextWriteId'];
+ }
+ if (isset($vals['mmWatermarkWriteId'])) {
+ $this->mmWatermarkWriteId = $vals['mmWatermarkWriteId'];
+ }
}
}
@@@ -4854,19 -4841,12 +4865,26 @@@
}
break;
case 15:
+ if ($ftype == TType::BOOL) {
+ $xfer += $input->readBool($this->rewriteEnabled);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
++ case 16:
+ if ($ftype == TType::I64) {
+ $xfer += $input->readI64($this->mmNextWriteId);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
- case 16:
++ case 17:
+ if ($ftype == TType::I64) {
+ $xfer += $input->readI64($this->mmWatermarkWriteId);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
default:
$xfer += $input->skip($ftype);
break;
@@@ -4981,16 -4961,11 +4999,21 @@@
$xfer += $output->writeBool($this->temporary);
$xfer += $output->writeFieldEnd();
}
+ if ($this->rewriteEnabled !== null) {
+ $xfer += $output->writeFieldBegin('rewriteEnabled', TType::BOOL, 15);
+ $xfer += $output->writeBool($this->rewriteEnabled);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->mmNextWriteId !== null) {
- $xfer += $output->writeFieldBegin('mmNextWriteId', TType::I64, 15);
++ $xfer += $output->writeFieldBegin('mmNextWriteId', TType::I64, 16);
+ $xfer += $output->writeI64($this->mmNextWriteId);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->mmWatermarkWriteId !== null) {
- $xfer += $output->writeFieldBegin('mmWatermarkWriteId', TType::I64, 16);
++ $xfer += $output->writeFieldBegin('mmWatermarkWriteId', TType::I64, 17);
+ $xfer += $output->writeI64($this->mmWatermarkWriteId);
+ $xfer += $output->writeFieldEnd();
+ }
$xfer += $output->writeFieldStop();
$xfer += $output->writeStructEnd();
return $xfer;
@@@ -17989,882 -18216,17 +18205,882 @@@ class HeartbeatWriteIdRequest
$xfer += $output->writeString($this->dbName);
$xfer += $output->writeFieldEnd();
}
- if ($this->tblNames !== null) {
- if (!is_array($this->tblNames)) {
+ if ($this->tblName !== null) {
+ $xfer += $output->writeFieldBegin('tblName', TType::STRING, 2);
+ $xfer += $output->writeString($this->tblName);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->writeId !== null) {
+ $xfer += $output->writeFieldBegin('writeId', TType::I64, 3);
+ $xfer += $output->writeI64($this->writeId);
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class HeartbeatWriteIdResult {
+ static $_TSPEC;
+
+
+ public function __construct() {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ );
+ }
+ }
+
+ public function getName() {
+ return 'HeartbeatWriteIdResult';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('HeartbeatWriteIdResult');
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class GetValidWriteIdsRequest {
+ static $_TSPEC;
+
+ /**
+ * @var string
+ */
+ public $dbName = null;
+ /**
+ * @var string
+ */
+ public $tblName = null;
+
+ public function __construct($vals=null) {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ 1 => array(
+ 'var' => 'dbName',
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'tblName',
+ 'type' => TType::STRING,
+ ),
+ );
+ }
+ if (is_array($vals)) {
+ if (isset($vals['dbName'])) {
+ $this->dbName = $vals['dbName'];
+ }
+ if (isset($vals['tblName'])) {
+ $this->tblName = $vals['tblName'];
+ }
+ }
+ }
+
+ public function getName() {
+ return 'GetValidWriteIdsRequest';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ case 1:
+ if ($ftype == TType::STRING) {
+ $xfer += $input->readString($this->dbName);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 2:
+ if ($ftype == TType::STRING) {
+ $xfer += $input->readString($this->tblName);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('GetValidWriteIdsRequest');
+ if ($this->dbName !== null) {
+ $xfer += $output->writeFieldBegin('dbName', TType::STRING, 1);
+ $xfer += $output->writeString($this->dbName);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->tblName !== null) {
+ $xfer += $output->writeFieldBegin('tblName', TType::STRING, 2);
+ $xfer += $output->writeString($this->tblName);
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class GetValidWriteIdsResult {
+ static $_TSPEC;
+
+ /**
+ * @var int
+ */
+ public $lowWatermarkId = null;
+ /**
+ * @var int
+ */
+ public $highWatermarkId = null;
+ /**
+ * @var bool
+ */
+ public $areIdsValid = null;
+ /**
+ * @var int[]
+ */
+ public $ids = null;
+
+ public function __construct($vals=null) {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ 1 => array(
+ 'var' => 'lowWatermarkId',
+ 'type' => TType::I64,
+ ),
+ 2 => array(
+ 'var' => 'highWatermarkId',
+ 'type' => TType::I64,
+ ),
+ 3 => array(
+ 'var' => 'areIdsValid',
+ 'type' => TType::BOOL,
+ ),
+ 4 => array(
+ 'var' => 'ids',
+ 'type' => TType::LST,
+ 'etype' => TType::I64,
+ 'elem' => array(
+ 'type' => TType::I64,
+ ),
+ ),
+ );
+ }
+ if (is_array($vals)) {
+ if (isset($vals['lowWatermarkId'])) {
+ $this->lowWatermarkId = $vals['lowWatermarkId'];
+ }
+ if (isset($vals['highWatermarkId'])) {
+ $this->highWatermarkId = $vals['highWatermarkId'];
+ }
+ if (isset($vals['areIdsValid'])) {
+ $this->areIdsValid = $vals['areIdsValid'];
+ }
+ if (isset($vals['ids'])) {
+ $this->ids = $vals['ids'];
+ }
+ }
+ }
+
+ public function getName() {
+ return 'GetValidWriteIdsResult';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ case 1:
+ if ($ftype == TType::I64) {
+ $xfer += $input->readI64($this->lowWatermarkId);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 2:
+ if ($ftype == TType::I64) {
+ $xfer += $input->readI64($this->highWatermarkId);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 3:
+ if ($ftype == TType::BOOL) {
+ $xfer += $input->readBool($this->areIdsValid);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 4:
+ if ($ftype == TType::LST) {
+ $this->ids = array();
- $_size562 = 0;
- $_etype565 = 0;
- $xfer += $input->readListBegin($_etype565, $_size562);
- for ($_i566 = 0; $_i566 < $_size562; ++$_i566)
++ $_size569 = 0;
++ $_etype572 = 0;
++ $xfer += $input->readListBegin($_etype572, $_size569);
++ for ($_i573 = 0; $_i573 < $_size569; ++$_i573)
+ {
- $elem567 = null;
- $xfer += $input->readI64($elem567);
- $this->ids []= $elem567;
++ $elem574 = null;
++ $xfer += $input->readI64($elem574);
++ $this->ids []= $elem574;
+ }
+ $xfer += $input->readListEnd();
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('GetValidWriteIdsResult');
+ if ($this->lowWatermarkId !== null) {
+ $xfer += $output->writeFieldBegin('lowWatermarkId', TType::I64, 1);
+ $xfer += $output->writeI64($this->lowWatermarkId);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->highWatermarkId !== null) {
+ $xfer += $output->writeFieldBegin('highWatermarkId', TType::I64, 2);
+ $xfer += $output->writeI64($this->highWatermarkId);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->areIdsValid !== null) {
+ $xfer += $output->writeFieldBegin('areIdsValid', TType::BOOL, 3);
+ $xfer += $output->writeBool($this->areIdsValid);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->ids !== null) {
+ if (!is_array($this->ids)) {
+ throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+ }
+ $xfer += $output->writeFieldBegin('ids', TType::LST, 4);
+ {
+ $output->writeListBegin(TType::I64, count($this->ids));
+ {
- foreach ($this->ids as $iter568)
++ foreach ($this->ids as $iter575)
+ {
- $xfer += $output->writeI64($iter568);
++ $xfer += $output->writeI64($iter575);
+ }
+ }
+ $output->writeListEnd();
+ }
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class GetAllFunctionsResponse {
+ static $_TSPEC;
+
+ /**
+ * @var \metastore\Function[]
+ */
+ public $functions = null;
+
+ public function __construct($vals=null) {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ 1 => array(
+ 'var' => 'functions',
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\metastore\Function',
+ ),
+ ),
+ );
+ }
+ if (is_array($vals)) {
+ if (isset($vals['functions'])) {
+ $this->functions = $vals['functions'];
+ }
+ }
+ }
+
+ public function getName() {
+ return 'GetAllFunctionsResponse';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ case 1:
+ if ($ftype == TType::LST) {
+ $this->functions = array();
- $_size569 = 0;
- $_etype572 = 0;
- $xfer += $input->readListBegin($_etype572, $_size569);
- for ($_i573 = 0; $_i573 < $_size569; ++$_i573)
++ $_size576 = 0;
++ $_etype579 = 0;
++ $xfer += $input->readListBegin($_etype579, $_size576);
++ for ($_i580 = 0; $_i580 < $_size576; ++$_i580)
+ {
- $elem574 = null;
- $elem574 = new \metastore\Function();
- $xfer += $elem574->read($input);
- $this->functions []= $elem574;
++ $elem581 = null;
++ $elem581 = new \metastore\Function();
++ $xfer += $elem581->read($input);
++ $this->functions []= $elem581;
+ }
+ $xfer += $input->readListEnd();
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('GetAllFunctionsResponse');
+ if ($this->functions !== null) {
+ if (!is_array($this->functions)) {
+ throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+ }
+ $xfer += $output->writeFieldBegin('functions', TType::LST, 1);
+ {
+ $output->writeListBegin(TType::STRUCT, count($this->functions));
+ {
- foreach ($this->functions as $iter575)
++ foreach ($this->functions as $iter582)
+ {
- $xfer += $iter575->write($output);
++ $xfer += $iter582->write($output);
+ }
+ }
+ $output->writeListEnd();
+ }
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class ClientCapabilities {
+ static $_TSPEC;
+
+ /**
+ * @var int[]
+ */
+ public $values = null;
+
+ public function __construct($vals=null) {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ 1 => array(
+ 'var' => 'values',
+ 'type' => TType::LST,
+ 'etype' => TType::I32,
+ 'elem' => array(
+ 'type' => TType::I32,
+ ),
+ ),
+ );
+ }
+ if (is_array($vals)) {
+ if (isset($vals['values'])) {
+ $this->values = $vals['values'];
+ }
+ }
+ }
+
+ public function getName() {
+ return 'ClientCapabilities';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ case 1:
+ if ($ftype == TType::LST) {
+ $this->values = array();
- $_size576 = 0;
- $_etype579 = 0;
- $xfer += $input->readListBegin($_etype579, $_size576);
- for ($_i580 = 0; $_i580 < $_size576; ++$_i580)
++ $_size583 = 0;
++ $_etype586 = 0;
++ $xfer += $input->readListBegin($_etype586, $_size583);
++ for ($_i587 = 0; $_i587 < $_size583; ++$_i587)
+ {
- $elem581 = null;
- $xfer += $input->readI32($elem581);
- $this->values []= $elem581;
++ $elem588 = null;
++ $xfer += $input->readI32($elem588);
++ $this->values []= $elem588;
+ }
+ $xfer += $input->readListEnd();
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('ClientCapabilities');
+ if ($this->values !== null) {
+ if (!is_array($this->values)) {
+ throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+ }
+ $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+ {
+ $output->writeListBegin(TType::I32, count($this->values));
+ {
- foreach ($this->values as $iter582)
++ foreach ($this->values as $iter589)
+ {
- $xfer += $output->writeI32($iter582);
++ $xfer += $output->writeI32($iter589);
+ }
+ }
+ $output->writeListEnd();
+ }
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class GetTableRequest {
+ static $_TSPEC;
+
+ /**
+ * @var string
+ */
+ public $dbName = null;
+ /**
+ * @var string
+ */
+ public $tblName = null;
+ /**
+ * @var \metastore\ClientCapabilities
+ */
+ public $capabilities = null;
+
+ public function __construct($vals=null) {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ 1 => array(
+ 'var' => 'dbName',
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'tblName',
+ 'type' => TType::STRING,
+ ),
+ 3 => array(
+ 'var' => 'capabilities',
+ 'type' => TType::STRUCT,
+ 'class' => '\metastore\ClientCapabilities',
+ ),
+ );
+ }
+ if (is_array($vals)) {
+ if (isset($vals['dbName'])) {
+ $this->dbName = $vals['dbName'];
+ }
+ if (isset($vals['tblName'])) {
+ $this->tblName = $vals['tblName'];
+ }
+ if (isset($vals['capabilities'])) {
+ $this->capabilities = $vals['capabilities'];
+ }
+ }
+ }
+
+ public function getName() {
+ return 'GetTableRequest';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ case 1:
+ if ($ftype == TType::STRING) {
+ $xfer += $input->readString($this->dbName);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 2:
+ if ($ftype == TType::STRING) {
+ $xfer += $input->readString($this->tblName);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 3:
+ if ($ftype == TType::STRUCT) {
+ $this->capabilities = new \metastore\ClientCapabilities();
+ $xfer += $this->capabilities->read($input);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('GetTableRequest');
+ if ($this->dbName !== null) {
+ $xfer += $output->writeFieldBegin('dbName', TType::STRING, 1);
+ $xfer += $output->writeString($this->dbName);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->tblName !== null) {
+ $xfer += $output->writeFieldBegin('tblName', TType::STRING, 2);
+ $xfer += $output->writeString($this->tblName);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->capabilities !== null) {
+ if (!is_object($this->capabilities)) {
+ throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+ }
+ $xfer += $output->writeFieldBegin('capabilities', TType::STRUCT, 3);
+ $xfer += $this->capabilities->write($output);
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class GetTableResult {
+ static $_TSPEC;
+
+ /**
+ * @var \metastore\Table
+ */
+ public $table = null;
+
+ public function __construct($vals=null) {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ 1 => array(
+ 'var' => 'table',
+ 'type' => TType::STRUCT,
+ 'class' => '\metastore\Table',
+ ),
+ );
+ }
+ if (is_array($vals)) {
+ if (isset($vals['table'])) {
+ $this->table = $vals['table'];
+ }
+ }
+ }
+
+ public function getName() {
+ return 'GetTableResult';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ case 1:
+ if ($ftype == TType::STRUCT) {
+ $this->table = new \metastore\Table();
+ $xfer += $this->table->read($input);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('GetTableResult');
+ if ($this->table !== null) {
+ if (!is_object($this->table)) {
+ throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+ }
+ $xfer += $output->writeFieldBegin('table', TType::STRUCT, 1);
+ $xfer += $this->table->write($output);
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+ return $xfer;
+ }
+
+}
+
+class GetTablesRequest {
+ static $_TSPEC;
+
+ /**
+ * @var string
+ */
+ public $dbName = null;
+ /**
+ * @var string[]
+ */
+ public $tblNames = null;
+ /**
+ * @var \metastore\ClientCapabilities
+ */
+ public $capabilities = null;
+
+ public function __construct($vals=null) {
+ if (!isset(self::$_TSPEC)) {
+ self::$_TSPEC = array(
+ 1 => array(
+ 'var' => 'dbName',
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'tblNames',
+ 'type' => TType::LST,
+ 'etype' => TType::STRING,
+ 'elem' => array(
+ 'type' => TType::STRING,
+ ),
+ ),
+ 3 => array(
+ 'var' => 'capabilities',
+ 'type' => TType::STRUCT,
+ 'class' => '\metastore\ClientCapabilities',
+ ),
+ );
+ }
+ if (is_array($vals)) {
+ if (isset($vals['dbName'])) {
+ $this->dbName = $vals['dbName'];
+ }
+ if (isset($vals['tblNames'])) {
+ $this->tblNames = $vals['tblNames'];
+ }
+ if (isset($vals['capabilities'])) {
+ $this->capabilities = $vals['capabilities'];
+ }
+ }
+ }
+
+ public function getName() {
+ return 'GetTablesRequest';
+ }
+
+ public function read($input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true)
+ {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ switch ($fid)
+ {
+ case 1:
+ if ($ftype == TType::STRING) {
+ $xfer += $input->readString($this->dbName);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 2:
+ if ($ftype == TType::LST) {
+ $this->tblNames = array();
- $_size583 = 0;
- $_etype586 = 0;
- $xfer += $input->readListBegin($_etype586, $_size583);
- for ($_i587 = 0; $_i587 < $_size583; ++$_i587)
++ $_size590 = 0;
++ $_etype593 = 0;
++ $xfer += $input->readListBegin($_etype593, $_size590);
++ for ($_i594 = 0; $_i594 < $_size590; ++$_i594)
+ {
- $elem588 = null;
- $xfer += $input->readString($elem588);
- $this->tblNames []= $elem588;
++ $elem595 = null;
++ $xfer += $input->readString($elem595);
++ $this->tblNames []= $elem595;
+ }
+ $xfer += $input->readListEnd();
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ case 3:
+ if ($ftype == TType::STRUCT) {
+ $this->capabilities = new \metastore\ClientCapabilities();
+ $xfer += $this->capabilities->read($input);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
+ default:
+ $xfer += $input->skip($ftype);
+ break;
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+ return $xfer;
+ }
+
+ public function write($output) {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('GetTablesRequest');
+ if ($this->dbName !== null) {
+ $xfer += $output->writeFieldBegin('dbName', TType::STRING, 1);
+ $xfer += $output->writeString($this->dbName);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($this->tblNames !== null) {
+ if (!is_array($this->tblNames)) {
throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
}
$xfer += $output->writeFieldBegin('tblNames', TType::LST, 2);
{
$output->writeListBegin(TType::STRING, count($this->tblNames));
{
-- foreach ($this->tblNames as $iter589)
++ foreach ($this->tblNames as $iter596)
{
-- $xfer += $output->writeString($iter589);
++ $xfer += $output->writeString($iter596);
}
}
$output->writeListEnd();
@@@ -18937,15 -18299,15 +19153,15 @@@ class GetTablesResult
case 1:
if ($ftype == TType::LST) {
$this->tables = array();
-- $_size590 = 0;
-- $_etype593 = 0;
-- $xfer += $input->readListBegin($_etype593, $_size590);
-- for ($_i594 = 0; $_i594 < $_size590; ++$_i594)
++ $_size597 = 0;
++ $_etype600 = 0;
++ $xfer += $input->readListBegin($_etype600, $_size597);
++ for ($_i601 = 0; $_i601 < $_size597; ++$_i601)
{
-- $elem595 = null;
-- $elem595 = new \metastore\Table();
-- $xfer += $elem595->read($input);
-- $this->tables []= $elem595;
++ $elem602 = null;
++ $elem602 = new \metastore\Table();
++ $xfer += $elem602->read($input);
++ $this->tables []= $elem602;
}
$xfer += $input->readListEnd();
} else {
@@@ -18973,9 -18335,9 +19189,9 @@@
{
$output->writeListBegin(TType::STRUCT, count($this->tables));
{
-- foreach ($this->tables as $iter596)
++ foreach ($this->tables as $iter603)
{
-- $xfer += $iter596->write($output);
++ $xfer += $iter603->write($output);
}
}
$output->writeListEnd();
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore-remote
----------------------------------------------------------------------
[45/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
index 040258a,b7b7da7..6b80461
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
@@@ -29810,13 -29414,13 +29942,13 @@@ public class ThriftHiveMetastore
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list674 = iprot.readListBegin();
-- struct.success = new ArrayList<String>(_list674.size);
-- String _elem675;
-- for (int _i676 = 0; _i676 < _list674.size; ++_i676)
++ org.apache.thrift.protocol.TList _list682 = iprot.readListBegin();
++ struct.success = new ArrayList<String>(_list682.size);
++ String _elem683;
++ for (int _i684 = 0; _i684 < _list682.size; ++_i684)
{
-- _elem675 = iprot.readString();
-- struct.success.add(_elem675);
++ _elem683 = iprot.readString();
++ struct.success.add(_elem683);
}
iprot.readListEnd();
}
@@@ -29851,9 -29455,9 +29983,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-- for (String _iter677 : struct.success)
++ for (String _iter685 : struct.success)
{
-- oprot.writeString(_iter677);
++ oprot.writeString(_iter685);
}
oprot.writeListEnd();
}
@@@ -29892,9 -29496,9 +30024,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (String _iter678 : struct.success)
++ for (String _iter686 : struct.success)
{
-- oprot.writeString(_iter678);
++ oprot.writeString(_iter686);
}
}
}
@@@ -29909,13 -29513,13 +30041,13 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list679 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.success = new ArrayList<String>(_list679.size);
-- String _elem680;
-- for (int _i681 = 0; _i681 < _list679.size; ++_i681)
++ org.apache.thrift.protocol.TList _list687 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.success = new ArrayList<String>(_list687.size);
++ String _elem688;
++ for (int _i689 = 0; _i689 < _list687.size; ++_i689)
{
-- _elem680 = iprot.readString();
-- struct.success.add(_elem680);
++ _elem688 = iprot.readString();
++ struct.success.add(_elem688);
}
}
struct.setSuccessIsSet(true);
@@@ -30569,13 -30173,13 +30701,13 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list682 = iprot.readListBegin();
-- struct.success = new ArrayList<String>(_list682.size);
-- String _elem683;
-- for (int _i684 = 0; _i684 < _list682.size; ++_i684)
++ org.apache.thrift.protocol.TList _list690 = iprot.readListBegin();
++ struct.success = new ArrayList<String>(_list690.size);
++ String _elem691;
++ for (int _i692 = 0; _i692 < _list690.size; ++_i692)
{
-- _elem683 = iprot.readString();
-- struct.success.add(_elem683);
++ _elem691 = iprot.readString();
++ struct.success.add(_elem691);
}
iprot.readListEnd();
}
@@@ -30610,9 -30214,9 +30742,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-- for (String _iter685 : struct.success)
++ for (String _iter693 : struct.success)
{
-- oprot.writeString(_iter685);
++ oprot.writeString(_iter693);
}
oprot.writeListEnd();
}
@@@ -30651,9 -30255,9 +30783,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (String _iter686 : struct.success)
++ for (String _iter694 : struct.success)
{
-- oprot.writeString(_iter686);
++ oprot.writeString(_iter694);
}
}
}
@@@ -30668,13 -30272,13 +30800,13 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list687 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.success = new ArrayList<String>(_list687.size);
-- String _elem688;
-- for (int _i689 = 0; _i689 < _list687.size; ++_i689)
++ org.apache.thrift.protocol.TList _list695 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.success = new ArrayList<String>(_list695.size);
++ String _elem696;
++ for (int _i697 = 0; _i697 < _list695.size; ++_i697)
{
-- _elem688 = iprot.readString();
-- struct.success.add(_elem688);
++ _elem696 = iprot.readString();
++ struct.success.add(_elem696);
}
}
struct.setSuccessIsSet(true);
@@@ -35281,16 -34885,16 +35413,16 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
{
-- org.apache.thrift.protocol.TMap _map690 = iprot.readMapBegin();
-- struct.success = new HashMap<String,Type>(2*_map690.size);
-- String _key691;
-- Type _val692;
-- for (int _i693 = 0; _i693 < _map690.size; ++_i693)
++ org.apache.thrift.protocol.TMap _map698 = iprot.readMapBegin();
++ struct.success = new HashMap<String,Type>(2*_map698.size);
++ String _key699;
++ Type _val700;
++ for (int _i701 = 0; _i701 < _map698.size; ++_i701)
{
-- _key691 = iprot.readString();
-- _val692 = new Type();
-- _val692.read(iprot);
-- struct.success.put(_key691, _val692);
++ _key699 = iprot.readString();
++ _val700 = new Type();
++ _val700.read(iprot);
++ struct.success.put(_key699, _val700);
}
iprot.readMapEnd();
}
@@@ -35325,10 -34929,10 +35457,10 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (Map.Entry<String, Type> _iter694 : struct.success.entrySet())
++ for (Map.Entry<String, Type> _iter702 : struct.success.entrySet())
{
-- oprot.writeString(_iter694.getKey());
-- _iter694.getValue().write(oprot);
++ oprot.writeString(_iter702.getKey());
++ _iter702.getValue().write(oprot);
}
oprot.writeMapEnd();
}
@@@ -35367,10 -34971,10 +35499,10 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (Map.Entry<String, Type> _iter695 : struct.success.entrySet())
++ for (Map.Entry<String, Type> _iter703 : struct.success.entrySet())
{
-- oprot.writeString(_iter695.getKey());
-- _iter695.getValue().write(oprot);
++ oprot.writeString(_iter703.getKey());
++ _iter703.getValue().write(oprot);
}
}
}
@@@ -35385,16 -34989,16 +35517,16 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TMap _map696 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new HashMap<String,Type>(2*_map696.size);
-- String _key697;
-- Type _val698;
-- for (int _i699 = 0; _i699 < _map696.size; ++_i699)
++ org.apache.thrift.protocol.TMap _map704 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new HashMap<String,Type>(2*_map704.size);
++ String _key705;
++ Type _val706;
++ for (int _i707 = 0; _i707 < _map704.size; ++_i707)
{
-- _key697 = iprot.readString();
-- _val698 = new Type();
-- _val698.read(iprot);
-- struct.success.put(_key697, _val698);
++ _key705 = iprot.readString();
++ _val706 = new Type();
++ _val706.read(iprot);
++ struct.success.put(_key705, _val706);
}
}
struct.setSuccessIsSet(true);
@@@ -36429,14 -36033,14 +36561,14 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list700 = iprot.readListBegin();
-- struct.success = new ArrayList<FieldSchema>(_list700.size);
-- FieldSchema _elem701;
-- for (int _i702 = 0; _i702 < _list700.size; ++_i702)
++ org.apache.thrift.protocol.TList _list708 = iprot.readListBegin();
++ struct.success = new ArrayList<FieldSchema>(_list708.size);
++ FieldSchema _elem709;
++ for (int _i710 = 0; _i710 < _list708.size; ++_i710)
{
-- _elem701 = new FieldSchema();
-- _elem701.read(iprot);
-- struct.success.add(_elem701);
++ _elem709 = new FieldSchema();
++ _elem709.read(iprot);
++ struct.success.add(_elem709);
}
iprot.readListEnd();
}
@@@ -36489,9 -36093,9 +36621,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (FieldSchema _iter703 : struct.success)
++ for (FieldSchema _iter711 : struct.success)
{
-- _iter703.write(oprot);
++ _iter711.write(oprot);
}
oprot.writeListEnd();
}
@@@ -36546,9 -36150,9 +36678,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (FieldSchema _iter704 : struct.success)
++ for (FieldSchema _iter712 : struct.success)
{
-- _iter704.write(oprot);
++ _iter712.write(oprot);
}
}
}
@@@ -36569,14 -36173,14 +36701,14 @@@
BitSet incoming = iprot.readBitSet(4);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list705 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new ArrayList<FieldSchema>(_list705.size);
-- FieldSchema _elem706;
-- for (int _i707 = 0; _i707 < _list705.size; ++_i707)
++ org.apache.thrift.protocol.TList _list713 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new ArrayList<FieldSchema>(_list713.size);
++ FieldSchema _elem714;
++ for (int _i715 = 0; _i715 < _list713.size; ++_i715)
{
-- _elem706 = new FieldSchema();
-- _elem706.read(iprot);
-- struct.success.add(_elem706);
++ _elem714 = new FieldSchema();
++ _elem714.read(iprot);
++ struct.success.add(_elem714);
}
}
struct.setSuccessIsSet(true);
@@@ -37730,14 -37334,14 +37862,14 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list708 = iprot.readListBegin();
-- struct.success = new ArrayList<FieldSchema>(_list708.size);
-- FieldSchema _elem709;
-- for (int _i710 = 0; _i710 < _list708.size; ++_i710)
++ org.apache.thrift.protocol.TList _list716 = iprot.readListBegin();
++ struct.success = new ArrayList<FieldSchema>(_list716.size);
++ FieldSchema _elem717;
++ for (int _i718 = 0; _i718 < _list716.size; ++_i718)
{
-- _elem709 = new FieldSchema();
-- _elem709.read(iprot);
-- struct.success.add(_elem709);
++ _elem717 = new FieldSchema();
++ _elem717.read(iprot);
++ struct.success.add(_elem717);
}
iprot.readListEnd();
}
@@@ -37790,9 -37394,9 +37922,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (FieldSchema _iter711 : struct.success)
++ for (FieldSchema _iter719 : struct.success)
{
-- _iter711.write(oprot);
++ _iter719.write(oprot);
}
oprot.writeListEnd();
}
@@@ -37847,9 -37451,9 +37979,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (FieldSchema _iter712 : struct.success)
++ for (FieldSchema _iter720 : struct.success)
{
-- _iter712.write(oprot);
++ _iter720.write(oprot);
}
}
}
@@@ -37870,14 -37474,14 +38002,14 @@@
BitSet incoming = iprot.readBitSet(4);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list713 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new ArrayList<FieldSchema>(_list713.size);
-- FieldSchema _elem714;
-- for (int _i715 = 0; _i715 < _list713.size; ++_i715)
++ org.apache.thrift.protocol.TList _list721 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new ArrayList<FieldSchema>(_list721.size);
++ FieldSchema _elem722;
++ for (int _i723 = 0; _i723 < _list721.size; ++_i723)
{
-- _elem714 = new FieldSchema();
-- _elem714.read(iprot);
-- struct.success.add(_elem714);
++ _elem722 = new FieldSchema();
++ _elem722.read(iprot);
++ struct.success.add(_elem722);
}
}
struct.setSuccessIsSet(true);
@@@ -38922,14 -38526,14 +39054,14 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list716 = iprot.readListBegin();
-- struct.success = new ArrayList<FieldSchema>(_list716.size);
-- FieldSchema _elem717;
-- for (int _i718 = 0; _i718 < _list716.size; ++_i718)
++ org.apache.thrift.protocol.TList _list724 = iprot.readListBegin();
++ struct.success = new ArrayList<FieldSchema>(_list724.size);
++ FieldSchema _elem725;
++ for (int _i726 = 0; _i726 < _list724.size; ++_i726)
{
-- _elem717 = new FieldSchema();
-- _elem717.read(iprot);
-- struct.success.add(_elem717);
++ _elem725 = new FieldSchema();
++ _elem725.read(iprot);
++ struct.success.add(_elem725);
}
iprot.readListEnd();
}
@@@ -38982,9 -38586,9 +39114,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (FieldSchema _iter719 : struct.success)
++ for (FieldSchema _iter727 : struct.success)
{
-- _iter719.write(oprot);
++ _iter727.write(oprot);
}
oprot.writeListEnd();
}
@@@ -39039,9 -38643,9 +39171,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (FieldSchema _iter720 : struct.success)
++ for (FieldSchema _iter728 : struct.success)
{
-- _iter720.write(oprot);
++ _iter728.write(oprot);
}
}
}
@@@ -39062,14 -38666,14 +39194,14 @@@
BitSet incoming = iprot.readBitSet(4);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list721 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new ArrayList<FieldSchema>(_list721.size);
-- FieldSchema _elem722;
-- for (int _i723 = 0; _i723 < _list721.size; ++_i723)
++ org.apache.thrift.protocol.TList _list729 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new ArrayList<FieldSchema>(_list729.size);
++ FieldSchema _elem730;
++ for (int _i731 = 0; _i731 < _list729.size; ++_i731)
{
-- _elem722 = new FieldSchema();
-- _elem722.read(iprot);
-- struct.success.add(_elem722);
++ _elem730 = new FieldSchema();
++ _elem730.read(iprot);
++ struct.success.add(_elem730);
}
}
struct.setSuccessIsSet(true);
@@@ -40223,14 -39827,14 +40355,14 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list724 = iprot.readListBegin();
-- struct.success = new ArrayList<FieldSchema>(_list724.size);
-- FieldSchema _elem725;
-- for (int _i726 = 0; _i726 < _list724.size; ++_i726)
++ org.apache.thrift.protocol.TList _list732 = iprot.readListBegin();
++ struct.success = new ArrayList<FieldSchema>(_list732.size);
++ FieldSchema _elem733;
++ for (int _i734 = 0; _i734 < _list732.size; ++_i734)
{
-- _elem725 = new FieldSchema();
-- _elem725.read(iprot);
-- struct.success.add(_elem725);
++ _elem733 = new FieldSchema();
++ _elem733.read(iprot);
++ struct.success.add(_elem733);
}
iprot.readListEnd();
}
@@@ -40283,9 -39887,9 +40415,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (FieldSchema _iter727 : struct.success)
++ for (FieldSchema _iter735 : struct.success)
{
-- _iter727.write(oprot);
++ _iter735.write(oprot);
}
oprot.writeListEnd();
}
@@@ -40340,9 -39944,9 +40472,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (FieldSchema _iter728 : struct.success)
++ for (FieldSchema _iter736 : struct.success)
{
-- _iter728.write(oprot);
++ _iter736.write(oprot);
}
}
}
@@@ -40363,14 -39967,14 +40495,14 @@@
BitSet incoming = iprot.readBitSet(4);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list729 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new ArrayList<FieldSchema>(_list729.size);
-- FieldSchema _elem730;
-- for (int _i731 = 0; _i731 < _list729.size; ++_i731)
++ org.apache.thrift.protocol.TList _list737 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new ArrayList<FieldSchema>(_list737.size);
++ FieldSchema _elem738;
++ for (int _i739 = 0; _i739 < _list737.size; ++_i739)
{
-- _elem730 = new FieldSchema();
-- _elem730.read(iprot);
-- struct.success.add(_elem730);
++ _elem738 = new FieldSchema();
++ _elem738.read(iprot);
++ struct.success.add(_elem738);
}
}
struct.setSuccessIsSet(true);
@@@ -43095,14 -42699,14 +43227,14 @@@
case 2: // PRIMARY_KEYS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list732 = iprot.readListBegin();
-- struct.primaryKeys = new ArrayList<SQLPrimaryKey>(_list732.size);
-- SQLPrimaryKey _elem733;
-- for (int _i734 = 0; _i734 < _list732.size; ++_i734)
++ org.apache.thrift.protocol.TList _list740 = iprot.readListBegin();
++ struct.primaryKeys = new ArrayList<SQLPrimaryKey>(_list740.size);
++ SQLPrimaryKey _elem741;
++ for (int _i742 = 0; _i742 < _list740.size; ++_i742)
{
-- _elem733 = new SQLPrimaryKey();
-- _elem733.read(iprot);
-- struct.primaryKeys.add(_elem733);
++ _elem741 = new SQLPrimaryKey();
++ _elem741.read(iprot);
++ struct.primaryKeys.add(_elem741);
}
iprot.readListEnd();
}
@@@ -43114,14 -42718,14 +43246,14 @@@
case 3: // FOREIGN_KEYS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list735 = iprot.readListBegin();
-- struct.foreignKeys = new ArrayList<SQLForeignKey>(_list735.size);
-- SQLForeignKey _elem736;
-- for (int _i737 = 0; _i737 < _list735.size; ++_i737)
++ org.apache.thrift.protocol.TList _list743 = iprot.readListBegin();
++ struct.foreignKeys = new ArrayList<SQLForeignKey>(_list743.size);
++ SQLForeignKey _elem744;
++ for (int _i745 = 0; _i745 < _list743.size; ++_i745)
{
-- _elem736 = new SQLForeignKey();
-- _elem736.read(iprot);
-- struct.foreignKeys.add(_elem736);
++ _elem744 = new SQLForeignKey();
++ _elem744.read(iprot);
++ struct.foreignKeys.add(_elem744);
}
iprot.readListEnd();
}
@@@ -43152,9 -42756,9 +43284,9 @@@
oprot.writeFieldBegin(PRIMARY_KEYS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.primaryKeys.size()));
-- for (SQLPrimaryKey _iter738 : struct.primaryKeys)
++ for (SQLPrimaryKey _iter746 : struct.primaryKeys)
{
-- _iter738.write(oprot);
++ _iter746.write(oprot);
}
oprot.writeListEnd();
}
@@@ -43164,9 -42768,9 +43296,9 @@@
oprot.writeFieldBegin(FOREIGN_KEYS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.foreignKeys.size()));
-- for (SQLForeignKey _iter739 : struct.foreignKeys)
++ for (SQLForeignKey _iter747 : struct.foreignKeys)
{
-- _iter739.write(oprot);
++ _iter747.write(oprot);
}
oprot.writeListEnd();
}
@@@ -43206,18 -42810,18 +43338,18 @@@
if (struct.isSetPrimaryKeys()) {
{
oprot.writeI32(struct.primaryKeys.size());
-- for (SQLPrimaryKey _iter740 : struct.primaryKeys)
++ for (SQLPrimaryKey _iter748 : struct.primaryKeys)
{
-- _iter740.write(oprot);
++ _iter748.write(oprot);
}
}
}
if (struct.isSetForeignKeys()) {
{
oprot.writeI32(struct.foreignKeys.size());
-- for (SQLForeignKey _iter741 : struct.foreignKeys)
++ for (SQLForeignKey _iter749 : struct.foreignKeys)
{
-- _iter741.write(oprot);
++ _iter749.write(oprot);
}
}
}
@@@ -43234,28 -42838,28 +43366,28 @@@
}
if (incoming.get(1)) {
{
-- org.apache.thrift.protocol.TList _list742 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.primaryKeys = new ArrayList<SQLPrimaryKey>(_list742.size);
-- SQLPrimaryKey _elem743;
-- for (int _i744 = 0; _i744 < _list742.size; ++_i744)
++ org.apache.thrift.protocol.TList _list750 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.primaryKeys = new ArrayList<SQLPrimaryKey>(_list750.size);
++ SQLPrimaryKey _elem751;
++ for (int _i752 = 0; _i752 < _list750.size; ++_i752)
{
-- _elem743 = new SQLPrimaryKey();
-- _elem743.read(iprot);
-- struct.primaryKeys.add(_elem743);
++ _elem751 = new SQLPrimaryKey();
++ _elem751.read(iprot);
++ struct.primaryKeys.add(_elem751);
}
}
struct.setPrimaryKeysIsSet(true);
}
if (incoming.get(2)) {
{
-- org.apache.thrift.protocol.TList _list745 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.foreignKeys = new ArrayList<SQLForeignKey>(_list745.size);
-- SQLForeignKey _elem746;
-- for (int _i747 = 0; _i747 < _list745.size; ++_i747)
++ org.apache.thrift.protocol.TList _list753 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.foreignKeys = new ArrayList<SQLForeignKey>(_list753.size);
++ SQLForeignKey _elem754;
++ for (int _i755 = 0; _i755 < _list753.size; ++_i755)
{
-- _elem746 = new SQLForeignKey();
-- _elem746.read(iprot);
-- struct.foreignKeys.add(_elem746);
++ _elem754 = new SQLForeignKey();
++ _elem754.read(iprot);
++ struct.foreignKeys.add(_elem754);
}
}
struct.setForeignKeysIsSet(true);
@@@ -49454,13 -49058,13 +49586,13 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list748 = iprot.readListBegin();
-- struct.success = new ArrayList<String>(_list748.size);
-- String _elem749;
-- for (int _i750 = 0; _i750 < _list748.size; ++_i750)
++ org.apache.thrift.protocol.TList _list756 = iprot.readListBegin();
++ struct.success = new ArrayList<String>(_list756.size);
++ String _elem757;
++ for (int _i758 = 0; _i758 < _list756.size; ++_i758)
{
-- _elem749 = iprot.readString();
-- struct.success.add(_elem749);
++ _elem757 = iprot.readString();
++ struct.success.add(_elem757);
}
iprot.readListEnd();
}
@@@ -49495,9 -49099,9 +49627,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-- for (String _iter751 : struct.success)
++ for (String _iter759 : struct.success)
{
-- oprot.writeString(_iter751);
++ oprot.writeString(_iter759);
}
oprot.writeListEnd();
}
@@@ -49536,9 -49140,9 +49668,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (String _iter752 : struct.success)
++ for (String _iter760 : struct.success)
{
-- oprot.writeString(_iter752);
++ oprot.writeString(_iter760);
}
}
}
@@@ -49553,13 -49157,13 +49685,13 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list753 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.success = new ArrayList<String>(_list753.size);
-- String _elem754;
-- for (int _i755 = 0; _i755 < _list753.size; ++_i755)
++ org.apache.thrift.protocol.TList _list761 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.success = new ArrayList<String>(_list761.size);
++ String _elem762;
++ for (int _i763 = 0; _i763 < _list761.size; ++_i763)
{
-- _elem754 = iprot.readString();
-- struct.success.add(_elem754);
++ _elem762 = iprot.readString();
++ struct.success.add(_elem762);
}
}
struct.setSuccessIsSet(true);
@@@ -50533,13 -50137,13 +50665,13 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list756 = iprot.readListBegin();
-- struct.success = new ArrayList<String>(_list756.size);
-- String _elem757;
-- for (int _i758 = 0; _i758 < _list756.size; ++_i758)
++ org.apache.thrift.protocol.TList _list764 = iprot.readListBegin();
++ struct.success = new ArrayList<String>(_list764.size);
++ String _elem765;
++ for (int _i766 = 0; _i766 < _list764.size; ++_i766)
{
-- _elem757 = iprot.readString();
-- struct.success.add(_elem757);
++ _elem765 = iprot.readString();
++ struct.success.add(_elem765);
}
iprot.readListEnd();
}
@@@ -50574,9 -50178,9 +50706,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-- for (String _iter759 : struct.success)
++ for (String _iter767 : struct.success)
{
-- oprot.writeString(_iter759);
++ oprot.writeString(_iter767);
}
oprot.writeListEnd();
}
@@@ -50615,9 -50219,9 +50747,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (String _iter760 : struct.success)
++ for (String _iter768 : struct.success)
{
-- oprot.writeString(_iter760);
++ oprot.writeString(_iter768);
}
}
}
@@@ -50632,13 -50236,13 +50764,13 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list761 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.success = new ArrayList<String>(_list761.size);
-- String _elem762;
-- for (int _i763 = 0; _i763 < _list761.size; ++_i763)
++ org.apache.thrift.protocol.TList _list769 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.success = new ArrayList<String>(_list769.size);
++ String _elem770;
++ for (int _i771 = 0; _i771 < _list769.size; ++_i771)
{
-- _elem762 = iprot.readString();
-- struct.success.add(_elem762);
++ _elem770 = iprot.readString();
++ struct.success.add(_elem770);
}
}
struct.setSuccessIsSet(true);
@@@ -51143,13 -50747,13 +51275,13 @@@
case 3: // TBL_TYPES
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list764 = iprot.readListBegin();
-- struct.tbl_types = new ArrayList<String>(_list764.size);
-- String _elem765;
-- for (int _i766 = 0; _i766 < _list764.size; ++_i766)
++ org.apache.thrift.protocol.TList _list772 = iprot.readListBegin();
++ struct.tbl_types = new ArrayList<String>(_list772.size);
++ String _elem773;
++ for (int _i774 = 0; _i774 < _list772.size; ++_i774)
{
-- _elem765 = iprot.readString();
-- struct.tbl_types.add(_elem765);
++ _elem773 = iprot.readString();
++ struct.tbl_types.add(_elem773);
}
iprot.readListEnd();
}
@@@ -51185,9 -50789,9 +51317,9 @@@
oprot.writeFieldBegin(TBL_TYPES_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.tbl_types.size()));
-- for (String _iter767 : struct.tbl_types)
++ for (String _iter775 : struct.tbl_types)
{
-- oprot.writeString(_iter767);
++ oprot.writeString(_iter775);
}
oprot.writeListEnd();
}
@@@ -51230,9 -50834,9 +51362,9 @@@
if (struct.isSetTbl_types()) {
{
oprot.writeI32(struct.tbl_types.size());
-- for (String _iter768 : struct.tbl_types)
++ for (String _iter776 : struct.tbl_types)
{
-- oprot.writeString(_iter768);
++ oprot.writeString(_iter776);
}
}
}
@@@ -51252,13 -50856,13 +51384,13 @@@
}
if (incoming.get(2)) {
{
-- org.apache.thrift.protocol.TList _list769 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.tbl_types = new ArrayList<String>(_list769.size);
-- String _elem770;
-- for (int _i771 = 0; _i771 < _list769.size; ++_i771)
++ org.apache.thrift.protocol.TList _list777 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.tbl_types = new ArrayList<String>(_list777.size);
++ String _elem778;
++ for (int _i779 = 0; _i779 < _list777.size; ++_i779)
{
-- _elem770 = iprot.readString();
-- struct.tbl_types.add(_elem770);
++ _elem778 = iprot.readString();
++ struct.tbl_types.add(_elem778);
}
}
struct.setTbl_typesIsSet(true);
@@@ -51664,14 -51268,14 +51796,14 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list772 = iprot.readListBegin();
-- struct.success = new ArrayList<TableMeta>(_list772.size);
-- TableMeta _elem773;
-- for (int _i774 = 0; _i774 < _list772.size; ++_i774)
++ org.apache.thrift.protocol.TList _list780 = iprot.readListBegin();
++ struct.success = new ArrayList<TableMeta>(_list780.size);
++ TableMeta _elem781;
++ for (int _i782 = 0; _i782 < _list780.size; ++_i782)
{
-- _elem773 = new TableMeta();
-- _elem773.read(iprot);
-- struct.success.add(_elem773);
++ _elem781 = new TableMeta();
++ _elem781.read(iprot);
++ struct.success.add(_elem781);
}
iprot.readListEnd();
}
@@@ -51706,9 -51310,9 +51838,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (TableMeta _iter775 : struct.success)
++ for (TableMeta _iter783 : struct.success)
{
-- _iter775.write(oprot);
++ _iter783.write(oprot);
}
oprot.writeListEnd();
}
@@@ -51747,9 -51351,9 +51879,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (TableMeta _iter776 : struct.success)
++ for (TableMeta _iter784 : struct.success)
{
-- _iter776.write(oprot);
++ _iter784.write(oprot);
}
}
}
@@@ -51764,14 -51368,14 +51896,14 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list777 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new ArrayList<TableMeta>(_list777.size);
-- TableMeta _elem778;
-- for (int _i779 = 0; _i779 < _list777.size; ++_i779)
++ org.apache.thrift.protocol.TList _list785 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new ArrayList<TableMeta>(_list785.size);
++ TableMeta _elem786;
++ for (int _i787 = 0; _i787 < _list785.size; ++_i787)
{
-- _elem778 = new TableMeta();
-- _elem778.read(iprot);
-- struct.success.add(_elem778);
++ _elem786 = new TableMeta();
++ _elem786.read(iprot);
++ struct.success.add(_elem786);
}
}
struct.setSuccessIsSet(true);
@@@ -52537,13 -52141,13 +52669,13 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list780 = iprot.readListBegin();
-- struct.success = new ArrayList<String>(_list780.size);
-- String _elem781;
-- for (int _i782 = 0; _i782 < _list780.size; ++_i782)
++ org.apache.thrift.protocol.TList _list788 = iprot.readListBegin();
++ struct.success = new ArrayList<String>(_list788.size);
++ String _elem789;
++ for (int _i790 = 0; _i790 < _list788.size; ++_i790)
{
-- _elem781 = iprot.readString();
-- struct.success.add(_elem781);
++ _elem789 = iprot.readString();
++ struct.success.add(_elem789);
}
iprot.readListEnd();
}
@@@ -52578,9 -52182,9 +52710,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-- for (String _iter783 : struct.success)
++ for (String _iter791 : struct.success)
{
-- oprot.writeString(_iter783);
++ oprot.writeString(_iter791);
}
oprot.writeListEnd();
}
@@@ -52619,9 -52223,9 +52751,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (String _iter784 : struct.success)
++ for (String _iter792 : struct.success)
{
-- oprot.writeString(_iter784);
++ oprot.writeString(_iter792);
}
}
}
@@@ -52636,13 -52240,13 +52768,13 @@@
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list785 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.success = new ArrayList<String>(_list785.size);
-- String _elem786;
-- for (int _i787 = 0; _i787 < _list785.size; ++_i787)
++ org.apache.thrift.protocol.TList _list793 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.success = new ArrayList<String>(_list793.size);
++ String _elem794;
++ for (int _i795 = 0; _i795 < _list793.size; ++_i795)
{
-- _elem786 = iprot.readString();
-- struct.success.add(_elem786);
++ _elem794 = iprot.readString();
++ struct.success.add(_elem794);
}
}
struct.setSuccessIsSet(true);
@@@ -54095,13 -53699,13 +54227,13 @@@
case 2: // TBL_NAMES
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list788 = iprot.readListBegin();
-- struct.tbl_names = new ArrayList<String>(_list788.size);
-- String _elem789;
-- for (int _i790 = 0; _i790 < _list788.size; ++_i790)
++ org.apache.thrift.protocol.TList _list796 = iprot.readListBegin();
++ struct.tbl_names = new ArrayList<String>(_list796.size);
++ String _elem797;
++ for (int _i798 = 0; _i798 < _list796.size; ++_i798)
{
-- _elem789 = iprot.readString();
-- struct.tbl_names.add(_elem789);
++ _elem797 = iprot.readString();
++ struct.tbl_names.add(_elem797);
}
iprot.readListEnd();
}
@@@ -54132,9 -53736,9 +54264,9 @@@
oprot.writeFieldBegin(TBL_NAMES_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.tbl_names.size()));
-- for (String _iter791 : struct.tbl_names)
++ for (String _iter799 : struct.tbl_names)
{
-- oprot.writeString(_iter791);
++ oprot.writeString(_iter799);
}
oprot.writeListEnd();
}
@@@ -54171,9 -53775,9 +54303,9 @@@
if (struct.isSetTbl_names()) {
{
oprot.writeI32(struct.tbl_names.size());
-- for (String _iter792 : struct.tbl_names)
++ for (String _iter800 : struct.tbl_names)
{
-- oprot.writeString(_iter792);
++ oprot.writeString(_iter800);
}
}
}
@@@ -54189,13 -53793,13 +54321,13 @@@
}
if (incoming.get(1)) {
{
-- org.apache.thrift.protocol.TList _list793 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.tbl_names = new ArrayList<String>(_list793.size);
-- String _elem794;
-- for (int _i795 = 0; _i795 < _list793.size; ++_i795)
++ org.apache.thrift.protocol.TList _list801 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.tbl_names = new ArrayList<String>(_list801.size);
++ String _elem802;
++ for (int _i803 = 0; _i803 < _list801.size; ++_i803)
{
-- _elem794 = iprot.readString();
-- struct.tbl_names.add(_elem794);
++ _elem802 = iprot.readString();
++ struct.tbl_names.add(_elem802);
}
}
struct.setTbl_namesIsSet(true);
@@@ -54520,14 -54124,14 +54652,14 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list796 = iprot.readListBegin();
-- struct.success = new ArrayList<Table>(_list796.size);
-- Table _elem797;
-- for (int _i798 = 0; _i798 < _list796.size; ++_i798)
++ org.apache.thrift.protocol.TList _list804 = iprot.readListBegin();
++ struct.success = new ArrayList<Table>(_list804.size);
++ Table _elem805;
++ for (int _i806 = 0; _i806 < _list804.size; ++_i806)
{
-- _elem797 = new Table();
-- _elem797.read(iprot);
-- struct.success.add(_elem797);
++ _elem805 = new Table();
++ _elem805.read(iprot);
++ struct.success.add(_elem805);
}
iprot.readListEnd();
}
@@@ -54553,9 -54157,9 +54685,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (Table _iter799 : struct.success)
++ for (Table _iter807 : struct.success)
{
-- _iter799.write(oprot);
++ _iter807.write(oprot);
}
oprot.writeListEnd();
}
@@@ -54586,9 -54190,9 +54718,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (Table _iter800 : struct.success)
++ for (Table _iter808 : struct.success)
{
-- _iter800.write(oprot);
++ _iter808.write(oprot);
}
}
}
@@@ -54600,14 -54204,14 +54732,14 @@@
BitSet incoming = iprot.readBitSet(1);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list801 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new ArrayList<Table>(_list801.size);
-- Table _elem802;
-- for (int _i803 = 0; _i803 < _list801.size; ++_i803)
++ org.apache.thrift.protocol.TList _list809 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new ArrayList<Table>(_list809.size);
++ Table _elem810;
++ for (int _i811 = 0; _i811 < _list809.size; ++_i811)
{
-- _elem802 = new Table();
-- _elem802.read(iprot);
-- struct.success.add(_elem802);
++ _elem810 = new Table();
++ _elem810.read(iprot);
++ struct.success.add(_elem810);
}
}
struct.setSuccessIsSet(true);
@@@ -57720,13 -57324,13 +57852,13 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list804 = iprot.readListBegin();
-- struct.success = new ArrayList<String>(_list804.size);
-- String _elem805;
-- for (int _i806 = 0; _i806 < _list804.size; ++_i806)
++ org.apache.thrift.protocol.TList _list812 = iprot.readListBegin();
++ struct.success = new ArrayList<String>(_list812.size);
++ String _elem813;
++ for (int _i814 = 0; _i814 < _list812.size; ++_i814)
{
-- _elem805 = iprot.readString();
-- struct.success.add(_elem805);
++ _elem813 = iprot.readString();
++ struct.success.add(_elem813);
}
iprot.readListEnd();
}
@@@ -57779,9 -57383,9 +57911,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-- for (String _iter807 : struct.success)
++ for (String _iter815 : struct.success)
{
-- oprot.writeString(_iter807);
++ oprot.writeString(_iter815);
}
oprot.writeListEnd();
}
@@@ -57836,9 -57440,9 +57968,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (String _iter808 : struct.success)
++ for (String _iter816 : struct.success)
{
-- oprot.writeString(_iter808);
++ oprot.writeString(_iter816);
}
}
}
@@@ -57859,13 -57463,13 +57991,13 @@@
BitSet incoming = iprot.readBitSet(4);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list809 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.success = new ArrayList<String>(_list809.size);
-- String _elem810;
-- for (int _i811 = 0; _i811 < _list809.size; ++_i811)
++ org.apache.thrift.protocol.TList _list817 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.success = new ArrayList<String>(_list817.size);
++ String _elem818;
++ for (int _i819 = 0; _i819 < _list817.size; ++_i819)
{
-- _elem810 = iprot.readString();
-- struct.success.add(_elem810);
++ _elem818 = iprot.readString();
++ struct.success.add(_elem818);
}
}
struct.setSuccessIsSet(true);
@@@ -63724,14 -63328,14 +63856,14 @@@
case 1: // NEW_PARTS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list812 = iprot.readListBegin();
-- struct.new_parts = new ArrayList<Partition>(_list812.size);
-- Partition _elem813;
-- for (int _i814 = 0; _i814 < _list812.size; ++_i814)
++ org.apache.thrift.protocol.TList _list820 = iprot.readListBegin();
++ struct.new_parts = new ArrayList<Partition>(_list820.size);
++ Partition _elem821;
++ for (int _i822 = 0; _i822 < _list820.size; ++_i822)
{
-- _elem813 = new Partition();
-- _elem813.read(iprot);
-- struct.new_parts.add(_elem813);
++ _elem821 = new Partition();
++ _elem821.read(iprot);
++ struct.new_parts.add(_elem821);
}
iprot.readListEnd();
}
@@@ -63757,9 -63361,9 +63889,9 @@@
oprot.writeFieldBegin(NEW_PARTS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.new_parts.size()));
-- for (Partition _iter815 : struct.new_parts)
++ for (Partition _iter823 : struct.new_parts)
{
-- _iter815.write(oprot);
++ _iter823.write(oprot);
}
oprot.writeListEnd();
}
@@@ -63790,9 -63394,9 +63922,9 @@@
if (struct.isSetNew_parts()) {
{
oprot.writeI32(struct.new_parts.size());
-- for (Partition _iter816 : struct.new_parts)
++ for (Partition _iter824 : struct.new_parts)
{
-- _iter816.write(oprot);
++ _iter824.write(oprot);
}
}
}
@@@ -63804,14 -63408,14 +63936,14 @@@
BitSet incoming = iprot.readBitSet(1);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list817 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.new_parts = new ArrayList<Partition>(_list817.size);
-- Partition _elem818;
-- for (int _i819 = 0; _i819 < _list817.size; ++_i819)
++ org.apache.thrift.protocol.TList _list825 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.new_parts = new ArrayList<Partition>(_list825.size);
++ Partition _elem826;
++ for (int _i827 = 0; _i827 < _list825.size; ++_i827)
{
-- _elem818 = new Partition();
-- _elem818.read(iprot);
-- struct.new_parts.add(_elem818);
++ _elem826 = new Partition();
++ _elem826.read(iprot);
++ struct.new_parts.add(_elem826);
}
}
struct.setNew_partsIsSet(true);
@@@ -64812,14 -64416,14 +64944,14 @@@
case 1: // NEW_PARTS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list820 = iprot.readListBegin();
-- struct.new_parts = new ArrayList<PartitionSpec>(_list820.size);
-- PartitionSpec _elem821;
-- for (int _i822 = 0; _i822 < _list820.size; ++_i822)
++ org.apache.thrift.protocol.TList _list828 = iprot.readListBegin();
++ struct.new_parts = new ArrayList<PartitionSpec>(_list828.size);
++ PartitionSpec _elem829;
++ for (int _i830 = 0; _i830 < _list828.size; ++_i830)
{
-- _elem821 = new PartitionSpec();
-- _elem821.read(iprot);
-- struct.new_parts.add(_elem821);
++ _elem829 = new PartitionSpec();
++ _elem829.read(iprot);
++ struct.new_parts.add(_elem829);
}
iprot.readListEnd();
}
@@@ -64845,9 -64449,9 +64977,9 @@@
oprot.writeFieldBegin(NEW_PARTS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.new_parts.size()));
-- for (PartitionSpec _iter823 : struct.new_parts)
++ for (PartitionSpec _iter831 : struct.new_parts)
{
-- _iter823.write(oprot);
++ _iter831.write(oprot);
}
oprot.writeListEnd();
}
@@@ -64878,9 -64482,9 +65010,9 @@@
if (struct.isSetNew_parts()) {
{
oprot.writeI32(struct.new_parts.size());
-- for (PartitionSpec _iter824 : struct.new_parts)
++ for (PartitionSpec _iter832 : struct.new_parts)
{
-- _iter824.write(oprot);
++ _iter832.write(oprot);
}
}
}
@@@ -64892,14 -64496,14 +65024,14 @@@
BitSet incoming = iprot.readBitSet(1);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list825 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.new_parts = new ArrayList<PartitionSpec>(_list825.size);
-- PartitionSpec _elem826;
-- for (int _i827 = 0; _i827 < _list825.size; ++_i827)
++ org.apache.thrift.protocol.TList _list833 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.new_parts = new ArrayList<PartitionSpec>(_list833.size);
++ PartitionSpec _elem834;
++ for (int _i835 = 0; _i835 < _list833.size; ++_i835)
{
-- _elem826 = new PartitionSpec();
-- _elem826.read(iprot);
-- struct.new_parts.add(_elem826);
++ _elem834 = new PartitionSpec();
++ _elem834.read(iprot);
++ struct.new_parts.add(_elem834);
}
}
struct.setNew_partsIsSet(true);
@@@ -66075,13 -65679,13 +66207,13 @@@
case 3: // PART_VALS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list828 = iprot.readListBegin();
-- struct.part_vals = new ArrayList<String>(_list828.size);
-- String _elem829;
-- for (int _i830 = 0; _i830 < _list828.size; ++_i830)
++ org.apache.thrift.protocol.TList _list836 = iprot.readListBegin();
++ struct.part_vals = new ArrayList<String>(_list836.size);
++ String _elem837;
++ for (int _i838 = 0; _i838 < _list836.size; ++_i838)
{
-- _elem829 = iprot.readString();
-- struct.part_vals.add(_elem829);
++ _elem837 = iprot.readString();
++ struct.part_vals.add(_elem837);
}
iprot.readListEnd();
}
@@@ -66117,9 -65721,9 +66249,9 @@@
oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.part_vals.size()));
-- for (String _iter831 : struct.part_vals)
++ for (String _iter839 : struct.part_vals)
{
-- oprot.writeString(_iter831);
++ oprot.writeString(_iter839);
}
oprot.writeListEnd();
}
@@@ -66162,9 -65766,9 +66294,9 @@@
if (struct.isSetPart_vals()) {
{
oprot.writeI32(struct.part_vals.size());
-- for (String _iter832 : struct.part_vals)
++ for (String _iter840 : struct.part_vals)
{
-- oprot.writeString(_iter832);
++ oprot.writeString(_iter840);
}
}
}
@@@ -66184,13 -65788,13 +66316,13 @@@
}
if (incoming.get(2)) {
{
-- org.apache.thrift.protocol.TList _list833 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.part_vals = new ArrayList<String>(_list833.size);
-- String _elem834;
-- for (int _i835 = 0; _i835 < _list833.size; ++_i835)
++ org.apache.thrift.protocol.TList _list841 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.part_vals = new ArrayList<String>(_list841.size);
++ String _elem842;
++ for (int _i843 = 0; _i843 < _list841.size; ++_i843)
{
-- _elem834 = iprot.readString();
-- struct.part_vals.add(_elem834);
++ _elem842 = iprot.readString();
++ struct.part_vals.add(_elem842);
}
}
struct.setPart_valsIsSet(true);
@@@ -68499,13 -68103,13 +68631,13 @@@
case 3: // PART_VALS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list836 = iprot.readListBegin();
-- struct.part_vals = new ArrayList<String>(_list836.size);
-- String _elem837;
-- for (int _i838 = 0; _i838 < _list836.size; ++_i838)
++ org.apache.thrift.protocol.TList _list844 = iprot.readListBegin();
++ struct.part_vals = new ArrayList<String>(_list844.size);
++ String _elem845;
++ for (int _i846 = 0; _i846 < _list844.size; ++_i846)
{
-- _elem837 = iprot.readString();
-- struct.part_vals.add(_elem837);
++ _elem845 = iprot.readString();
++ struct.part_vals.add(_elem845);
}
iprot.readListEnd();
}
@@@ -68550,9 -68154,9 +68682,9 @@@
oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.part_vals.size()));
-- for (String _iter839 : struct.part_vals)
++ for (String _iter847 : struct.part_vals)
{
-- oprot.writeString(_iter839);
++ oprot.writeString(_iter847);
}
oprot.writeListEnd();
}
@@@ -68603,9 -68207,9 +68735,9 @@@
if (struct.isSetPart_vals()) {
{
oprot.writeI32(struct.part_vals.size());
-- for (String _iter840 : struct.part_vals)
++ for (String _iter848 : struct.part_vals)
{
-- oprot.writeString(_iter840);
++ oprot.writeString(_iter848);
}
}
}
@@@ -68628,13 -68232,13 +68760,13 @@@
}
if (incoming.get(2)) {
{
-- org.apache.thrift.protocol.TList _list841 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.part_vals = new ArrayList<String>(_list841.size);
-- String _elem842;
-- for (int _i843 = 0; _i843 < _list841.size; ++_i843)
++ org.apache.thrift.protocol.TList _list849 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.part_vals = new ArrayList<String>(_list849.size);
++ String _elem850;
++ for (int _i851 = 0; _i851 < _list849.size; ++_i851)
{
-- _elem842 = iprot.readString();
-- struct.part_vals.add(_elem842);
++ _elem850 = iprot.readString();
++ struct.part_vals.add(_elem850);
}
}
struct.setPart_valsIsSet(true);
@@@ -72504,13 -72108,13 +72636,13 @@@
case 3: // PART_VALS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list844 = iprot.readListBegin();
-- struct.part_vals = new ArrayList<String>(_list844.size);
-- String _elem845;
-- for (int _i846 = 0; _i846 < _list844.size; ++_i846)
++ org.apache.thrift.protocol.TList _list852 = iprot.readListBegin();
++ struct.part_vals = new ArrayList<String>(_list852.size);
++ String _elem853;
++ for (int _i854 = 0; _i854 < _list852.size; ++_i854)
{
-- _elem845 = iprot.readString();
-- struct.part_vals.add(_elem845);
++ _elem853 = iprot.readString();
++ struct.part_vals.add(_elem853);
}
iprot.readListEnd();
}
@@@ -72554,9 -72158,9 +72686,9 @@@
oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.part_vals.size()));
-- for (String _iter847 : struct.part_vals)
++ for (String _iter855 : struct.part_vals)
{
-- oprot.writeString(_iter847);
++ oprot.writeString(_iter855);
}
oprot.writeListEnd();
}
@@@ -72605,9 -72209,9 +72737,9 @@@
if (struct.isSetPart_vals()) {
{
oprot.writeI32(struct.part_vals.size());
-- for (String _iter848 : struct.part_vals)
++ for (String _iter856 : struct.part_vals)
{
-- oprot.writeString(_iter848);
++ oprot.writeString(_iter856);
}
}
}
@@@ -72630,13 -72234,13 +72762,13 @@@
}
if (incoming.get(2)) {
{
-- org.apache.thrift.protocol.TList _list849 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.part_vals = new ArrayList<String>(_list849.size);
-- String _elem850;
-- for (int _i851 = 0; _i851 < _list849.size; ++_i851)
++ org.apache.thrift.protocol.TList _list857 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.part_vals = new ArrayList<String>(_list857.size);
++ String _elem858;
++ for (int _i859 = 0; _i859 < _list857.size; ++_i859)
{
-- _elem850 = iprot.readString();
-- struct.part_vals.add(_elem850);
++ _elem858 = iprot.readString();
++ struct.part_vals.add(_elem858);
}
}
struct.setPart_valsIsSet(true);
@@@ -73875,13 -73479,13 +74007,13 @@@
case 3: // PART_VALS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list852 = iprot.readListBegin();
-- struct.part_vals = new ArrayList<String>(_list852.size);
-- String _elem853;
-- for (int _i854 = 0; _i854 < _list852.size; ++_i854)
++ org.apache.thrift.protocol.TList _list860 = iprot.readListBegin();
++ struct.part_vals = new ArrayList<String>(_list860.size);
++ String _elem861;
++ for (int _i862 = 0; _i862 < _list860.size; ++_i862)
{
-- _elem853 = iprot.readString();
-- struct.part_vals.add(_elem853);
++ _elem861 = iprot.readString();
++ struct.part_vals.add(_elem861);
}
iprot.readListEnd();
}
@@@ -73934,9 -73538,9 +74066,9 @@@
oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.part_vals.size()));
-- for (String _iter855 : struct.part_vals)
++ for (String _iter863 : struct.part_vals)
{
-- oprot.writeString(_iter855);
++ oprot.writeString(_iter863);
}
oprot.writeListEnd();
}
@@@ -73993,9 -73597,9 +74125,9 @@@
if (struct.isSetPart_vals()) {
{
oprot.writeI32(struct.part_vals.size());
-- for (String _iter856 : struct.part_vals)
++ for (String _iter864 : struct.part_vals)
{
-- oprot.writeString(_iter856);
++ oprot.writeString(_iter864);
}
}
}
@@@ -74021,13 -73625,13 +74153,13 @@@
}
if (incoming.get(2)) {
{
-- org.apache.thrift.protocol.TList _list857 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.part_vals = new ArrayList<String>(_list857.size);
-- String _elem858;
-- for (int _i859 = 0; _i859 < _list857.size; ++_i859)
++ org.apache.thrift.protocol.TList _list865 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.part_vals = new ArrayList<String>(_list865.size);
++ String _elem866;
++ for (int _i867 = 0; _i867 < _list865.size; ++_i867)
{
-- _elem858 = iprot.readString();
-- struct.part_vals.add(_elem858);
++ _elem866 = iprot.readString();
++ struct.part_vals.add(_elem866);
}
}
struct.setPart_valsIsSet(true);
@@@ -78629,13 -78233,13 +78761,13 @@@
case 3: // PART_VALS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list860 = iprot.readListBegin();
-- struct.part_vals = new ArrayList<String>(_list860.size);
-- String _elem861;
-- for (int _i862 = 0; _i862 < _list860.size; ++_i862)
++ org.apache.thrift.protocol.TList _list868 = iprot.readListBegin();
++ struct.part_vals = new ArrayList<String>(_list868.size);
++ String _elem869;
++ for (int _i870 = 0; _i870 < _list868.size; ++_i870)
{
-- _elem861 = iprot.readString();
-- struct.part_vals.add(_elem861);
++ _elem869 = iprot.readString();
++ struct.part_vals.add(_elem869);
}
iprot.readListEnd();
}
@@@ -78671,9 -78275,9 +78803,9 @@@
oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.part_vals.size()));
-- for (String _iter863 : struct.part_vals)
++ for (String _iter871 : struct.part_vals)
{
-- oprot.writeString(_iter863);
++ oprot.writeString(_iter871);
}
oprot.writeListEnd();
}
@@@ -78716,9 -78320,9 +78848,9 @@@
if (struct.isSetPart_vals()) {
{
oprot.writeI32(struct.part_vals.size());
-- for (String _iter864 : struct.part_vals)
++ for (String _iter872 : struct.part_vals)
{
-- oprot.writeString(_iter864);
++ oprot.writeString(_iter872);
}
}
}
@@@ -78738,13 -78342,13 +78870,13 @@@
}
if (incoming.get(2)) {
{
-- org.apache.thrift.protocol.TList _list865 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.part_vals = new ArrayList<String>(_list865.size);
-- String _elem866;
-- for (int _i867 = 0; _i867 < _list865.size; ++_i867)
++ org.apache.thrift.protocol.TList _list873 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.part_vals = new ArrayList<String>(_list873.size);
++ String _elem874;
++ for (int _i875 = 0; _i875 < _list873.size; ++_i875)
{
-- _elem866 = iprot.readString();
-- struct.part_vals.add(_elem866);
++ _elem874 = iprot.readString();
++ struct.part_vals.add(_elem874);
}
}
struct.setPart_valsIsSet(true);
@@@ -79962,15 -79566,15 +80094,15 @@@
case 1: // PARTITION_SPECS
if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
{
-- org.apache.thrift.protocol.TMap _map868 = iprot.readMapBegin();
-- struct.partitionSpecs = new HashMap<String,String>(2*_map868.size);
-- String _key869;
-- String _val870;
-- for (int _i871 = 0; _i871 < _map868.size; ++_i871)
++ org.apache.thrift.protocol.TMap _map876 = iprot.readMapBegin();
++ struct.partitionSpecs = new HashMap<String,String>(2*_map876.size);
++ String _key877;
++ String _val878;
++ for (int _i879 = 0; _i879 < _map876.size; ++_i879)
{
-- _key869 = iprot.readString();
-- _val870 = iprot.readString();
-- struct.partitionSpecs.put(_key869, _val870);
++ _key877 = iprot.readString();
++ _val878 = iprot.readString();
++ struct.partitionSpecs.put(_key877, _val878);
}
iprot.readMapEnd();
}
@@@ -80028,10 -79632,10 +80160,10 @@@
oprot.writeFieldBegin(PARTITION_SPECS_FIELD_DESC);
{
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.partitionSpecs.size()));
-- for (Map.Entry<String, String> _iter872 : struct.partitionSpecs.entrySet())
++ for (Map.Entry<String, String> _iter880 : struct.partitionSpecs.entrySet())
{
-- oprot.writeString(_iter872.getKey());
-- oprot.writeString(_iter872.getValue());
++ oprot.writeString(_iter880.getKey());
++ oprot.writeString(_iter880.getValue());
}
oprot.writeMapEnd();
}
@@@ -80094,10 -79698,10 +80226,10 @@@
if (struct.isSetPartitionSpecs()) {
{
oprot.writeI32(struct.partitionSpecs.size());
-- for (Map.Entry<String, String> _iter873 : struct.partitionSpecs.entrySet())
++ for (Map.Entry<String, String> _iter881 : struct.partitionSpecs.entrySet())
{
-- oprot.writeString(_iter873.getKey());
-- oprot.writeString(_iter873.getValue());
++ oprot.writeString(_iter881.getKey());
++ oprot.writeString(_iter881.getValue());
}
}
}
@@@ -80121,15 -79725,15 +80253,15 @@@
BitSet incoming = iprot.readBitSet(5);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TMap _map874 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.partitionSpecs = new HashMap<String,String>(2*_map874.size);
-- String _key875;
-- String _val876;
-- for (int _i877 = 0; _i877 < _map874.size; ++_i877)
++ org.apache.thrift.protocol.TMap _map882 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.partitionSpecs = new HashMap<String,String>(2*_map882.size);
++ String _key883;
++ String _val884;
++ for (int _i885 = 0; _i885 < _map882.size; ++_i885)
{
-- _key875 = iprot.readString();
-- _val876 = iprot.readString();
-- struct.partitionSpecs.put(_key875, _val876);
++ _key883 = iprot.readString();
++ _val884 = iprot.readString();
++ struct.partitionSpecs.put(_key883, _val884);
}
}
struct.setPartitionSpecsIsSet(true);
@@@ -81575,15 -81179,15 +81707,15 @@@
case 1: // PARTITION_SPECS
if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
{
-- org.apache.thrift.protocol.TMap _map878 = iprot.readMapBegin();
-- struct.partitionSpecs = new HashMap<String,String>(2*_map878.size);
-- String _key879;
-- String _val880;
-- for (int _i881 = 0; _i881 < _map878.size; ++_i881)
++ org.apache.thrift.protocol.TMap _map886 = iprot.readMapBegin();
++ struct.partitionSpecs = new HashMap<String,String>(2*_map886.size);
++ String _key887;
++ String _val888;
++ for (int _i889 = 0; _i889 < _map886.size; ++_i889)
{
-- _key879 = iprot.readString();
-- _val880 = iprot.readString();
-- struct.partitionSpecs.put(_key879, _val880);
++ _key887 = iprot.readString();
++ _val888 = iprot.readString();
++ struct.partitionSpecs.put(_key887, _val888);
}
iprot.readMapEnd();
}
@@@ -81641,10 -81245,10 +81773,10 @@@
oprot.writeFieldBegin(PARTITION_SPECS_FIELD_DESC);
{
oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.partitionSpecs.size()));
-- for (Map.Entry<String, String> _iter882 : struct.partitionSpecs.entrySet())
++ for (Map.Entry<String, String> _iter890 : struct.partitionSpecs.entrySet())
{
-- oprot.writeString(_iter882.getKey());
-- oprot.writeString(_iter882.getValue());
++ oprot.writeString(_iter890.getKey());
++ oprot.writeString(_iter890.getValue());
}
oprot.writeMapEnd();
}
@@@ -81707,10 -81311,10 +81839,10 @@@
if (struct.isSetPartitionSpecs()) {
{
oprot.writeI32(struct.partitionSpecs.size());
-- for (Map.Entry<String, String> _iter883 : struct.partitionSpecs.entrySet())
++ for (Map.Entry<String, String> _iter891 : struct.partitionSpecs.entrySet())
{
-- oprot.writeString(_iter883.getKey());
-- oprot.writeString(_iter883.getValue());
++ oprot.writeString(_iter891.getKey());
++ oprot.writeString(_iter891.getValue());
}
}
}
@@@ -81734,15 -81338,15 +81866,15 @@@
BitSet incoming = iprot.readBitSet(5);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TMap _map884 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-- struct.partitionSpecs = new HashMap<String,String>(2*_map884.size);
-- String _key885;
-- String _val886;
-- for (int _i887 = 0; _i887 < _map884.size; ++_i887)
++ org.apache.thrift.protocol.TMap _map892 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++ struct.partitionSpecs = new HashMap<String,String>(2*_map892.size);
++ String _key893;
++ String _val894;
++ for (int _i895 = 0; _i895 < _map892.size; ++_i895)
{
-- _key885 = iprot.readString();
-- _val886 = iprot.readString();
-- struct.partitionSpecs.put(_key885, _val886);
++ _key893 = iprot.readString();
++ _val894 = iprot.readString();
++ struct.partitionSpecs.put(_key893, _val894);
}
}
struct.setPartitionSpecsIsSet(true);
@@@ -82407,14 -82011,14 +82539,14 @@@
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list888 = iprot.readListBegin();
-- struct.success = new ArrayList<Partition>(_list888.size);
-- Partition _elem889;
-- for (int _i890 = 0; _i890 < _list888.size; ++_i890)
++ org.apache.thrift.protocol.TList _list896 = iprot.readListBegin();
++ struct.success = new ArrayList<Partition>(_list896.size);
++ Partition _elem897;
++ for (int _i898 = 0; _i898 < _list896.size; ++_i898)
{
-- _elem889 = new Partition();
-- _elem889.read(iprot);
-- struct.success.add(_elem889);
++ _elem897 = new Partition();
++ _elem897.read(iprot);
++ struct.success.add(_elem897);
}
iprot.readListEnd();
}
@@@ -82476,9 -82080,9 +82608,9 @@@
oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-- for (Partition _iter891 : struct.success)
++ for (Partition _iter899 : struct.success)
{
-- _iter891.write(oprot);
++ _iter899.write(oprot);
}
oprot.writeListEnd();
}
@@@ -82541,9 -82145,9 +82673,9 @@@
if (struct.isSetSuccess()) {
{
oprot.writeI32(struct.success.size());
-- for (Partition _iter892 : struct.success)
++ for (Partition _iter900 : struct.success)
{
-- _iter892.write(oprot);
++ _iter900.write(oprot);
}
}
}
@@@ -82567,14 -82171,14 +82699,14 @@@
BitSet incoming = iprot.readBitSet(5);
if (incoming.get(0)) {
{
-- org.apache.thrift.protocol.TList _list893 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.success = new ArrayList<Partition>(_list893.size);
-- Partition _elem894;
-- for (int _i895 = 0; _i895 < _list893.size; ++_i895)
++ org.apache.thrift.protocol.TList _list901 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.success = new ArrayList<Partition>(_list901.size);
++ Partition _elem902;
++ for (int _i903 = 0; _i903 < _list901.size; ++_i903)
{
-- _elem894 = new Partition();
-- _elem894.read(iprot);
-- struct.success.add(_elem894);
++ _elem902 = new Partition();
++ _elem902.read(iprot);
++ struct.success.add(_elem902);
}
}
struct.setSuccessIsSet(true);
@@@ -83273,13 -82877,13 +83405,13 @@@
case 3: // PART_VALS
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list896 = iprot.readListBegin();
-- struct.part_vals = new ArrayList<String>(_list896.size);
-- String _elem897;
-- for (int _i898 = 0; _i898 < _list896.size; ++_i898)
++ org.apache.thrift.protocol.TList _list904 = iprot.readListBegin();
++ struct.part_vals = new ArrayList<String>(_list904.size);
++ String _elem905;
++ for (int _i906 = 0; _i906 < _list904.size; ++_i906)
{
-- _elem897 = iprot.readString();
-- struct.part_vals.add(_elem897);
++ _elem905 = iprot.readString();
++ struct.part_vals.add(_elem905);
}
iprot.readListEnd();
}
@@@ -83299,13 -82903,13 +83431,13 @@@
case 5: // GROUP_NAMES
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list899 = iprot.readListBegin();
-- struct.group_names = new ArrayList<String>(_list899.size);
-- String _elem900;
-- for (int _i901 = 0; _i901 < _list899.size; ++_i901)
++ org.apache.thrift.protocol.TList _list907 = iprot.readListBegin();
++ struct.group_names = new ArrayList<String>(_list907.size);
++ String _elem908;
++ for (int _i909 = 0; _i909 < _list907.size; ++_i909)
{
-- _elem900 = iprot.readString();
-- struct.group_names.add(_elem900);
++ _elem908 = iprot.readString();
++ struct.group_names.add(_elem908);
}
iprot.readListEnd();
}
@@@ -83341,9 -82945,9 +83473,9 @@@
oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.part_vals.size()));
-- for (String _iter902 : struct.part_vals)
++ for (String _iter910 : struct.part_vals)
{
-- oprot.writeString(_iter902);
++ oprot.writeString(_iter910);
}
oprot.writeListEnd();
}
@@@ -83358,9 -82962,9 +83490,9 @@@
oprot.writeFieldBegin(GROUP_NAMES_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.group_names.size()));
-- for (String _iter903 : struct.group_names)
++ for (String _iter911 : struct.group_names)
{
-- oprot.writeString(_
<TRUNCATED>
[16/50] [abbrv] hive git commit: HIVE-15723 Hive should report a
warning about missing table/column statistics to user (reviewed by Ashutosh
Chauhan)
Posted by se...@apache.org.
HIVE-15723 Hive should report a warning about missing table/column statistics to user (reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/1c2c4858
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/1c2c4858
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/1c2c4858
Branch: refs/heads/hive-14535
Commit: 1c2c4858a371eaf99417e6e31e58cb6491a0c588
Parents: f7bc764
Author: Remus Rusanu <re...@apache.org>
Authored: Tue Jan 31 05:44:20 2017 -0800
Committer: Remus Rusanu <re...@apache.org>
Committed: Tue Jan 31 05:44:20 2017 -0800
----------------------------------------------------------------------
.../org/apache/hadoop/hive/conf/HiveConf.java | 2 +
.../ql/optimizer/calcite/RelOptHiveTable.java | 7 +
.../hadoop/hive/ql/session/SessionState.java | 6 +
.../clientpositive/stats_missing_warning.q | 55 +++++++
.../clientpositive/stats_missing_warning.q.out | 159 +++++++++++++++++++
5 files changed, 229 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/1c2c4858/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index d19d2ea..a2ec1f0 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -1079,6 +1079,8 @@ public class HiveConf extends Configuration {
+ " expressed as multiple of Local FS write cost"),
HIVE_CBO_COST_MODEL_HDFS_READ("hive.cbo.costmodel.hdfs.read", "1.5", "Default cost of reading a byte from HDFS;"
+ " expressed as multiple of Local FS read cost"),
+ HIVE_CBO_SHOW_WARNINGS("hive.cbo.show.warnings", false,
+ "Toggle display of CBO warnings like missing column stats"),
AGGR_JOIN_TRANSPOSE("hive.transpose.aggr.join", false, "push aggregates through join"),
SEMIJOIN_CONVERSION("hive.enable.semijoin.conversion", true, "convert group by followed by inner equi join into semijoin"),
HIVE_COLUMN_ALIGNMENT("hive.order.columnalignment", true, "Flag to control whether we want to try to align" +
http://git-wip-us.apache.org/repos/asf/hive/blob/1c2c4858/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
index 009d9e5..9faccd7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
@@ -56,6 +56,8 @@ import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
import org.apache.hadoop.hive.ql.plan.ColStatistics;
import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
import org.apache.hadoop.hive.ql.plan.Statistics;
+import org.apache.hadoop.hive.ql.session.SessionState;
+import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
import org.apache.hadoop.hive.ql.stats.StatsUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -391,6 +393,11 @@ public class RelOptHiveTable extends RelOptAbstractTable {
noColsMissingStats.getAndAdd(colNamesFailedStats.size());
if (allowNullColumnForMissingStats) {
LOG.warn(logMsg);
+ HiveConf conf = SessionState.getSessionConf();
+ if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_CBO_SHOW_WARNINGS)) {
+ LogHelper console = SessionState.getConsole();
+ console.printInfoNoLog(logMsg);
+ }
} else {
LOG.error(logMsg);
throw new RuntimeException(logMsg);
http://git-wip-us.apache.org/repos/asf/hive/blob/1c2c4858/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
index 453e0a5..d607f61 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
@@ -1099,6 +1099,12 @@ public class SessionState {
LOG.info(info + StringUtils.defaultString(detail));
}
+ public void printInfoNoLog(String info) {
+ if (!getIsSilent()) {
+ getInfoStream().println(info);
+ }
+ }
+
public void printError(String error) {
printError(error, null);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/1c2c4858/ql/src/test/queries/clientpositive/stats_missing_warning.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/stats_missing_warning.q b/ql/src/test/queries/clientpositive/stats_missing_warning.q
new file mode 100644
index 0000000..b6cf049
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/stats_missing_warning.q
@@ -0,0 +1,55 @@
+set hive.stats.autogather=false;
+
+-- Explictily DROP vs. CREATE IF NOT EXISTS to ensure stats are not carried over
+DROP TABLE IF EXISTS missing_stats_t1;
+DROP TABLE IF EXISTS missing_stats_t2;
+DROP TABLE IF EXISTS missing_stats_t3;
+CREATE TABLE missing_stats_t1 (key STRING, value STRING);
+CREATE TABLE missing_stats_t2 (key STRING, value STRING);
+CREATE TABLE missing_stats_t3 (key STRING, value STRING);
+
+INSERT INTO missing_stats_t1 (key, value)
+ SELECT key, value
+ FROM src;
+
+INSERT INTO missing_stats_t2 (key, value)
+ SELECT key, value
+ FROM src;
+
+INSERT INTO missing_stats_t3 (key, value)
+ SELECT key, value
+ FROM src;
+
+-- Default should be FALSE
+set hive.cbo.show.warnings=true;
+
+set hive.cbo.enable=true;
+
+-- Should print warning
+set hive.cbo.show.warnings=true;
+
+SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value;
+
+-- Should not print warning
+set hive.cbo.show.warnings=false;
+
+SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value;
+
+ANALYZE TABLE missing_stats_t1 COMPUTE STATISTICS FOR COLUMNS;
+ANALYZE TABLE missing_stats_t2 COMPUTE STATISTICS FOR COLUMNS;
+ANALYZE TABLE missing_stats_t3 COMPUTE STATISTICS FOR COLUMNS;
+
+
+-- Warning should be gone
+set hive.cbo.show.warnings=true;
+
+SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value;
http://git-wip-us.apache.org/repos/asf/hive/blob/1c2c4858/ql/src/test/results/clientpositive/stats_missing_warning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/stats_missing_warning.q.out b/ql/src/test/results/clientpositive/stats_missing_warning.q.out
new file mode 100644
index 0000000..0ed70a0
--- /dev/null
+++ b/ql/src/test/results/clientpositive/stats_missing_warning.q.out
@@ -0,0 +1,159 @@
+PREHOOK: query: DROP TABLE IF EXISTS missing_stats_t1
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS missing_stats_t1
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: DROP TABLE IF EXISTS missing_stats_t2
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS missing_stats_t2
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: DROP TABLE IF EXISTS missing_stats_t3
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS missing_stats_t3
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE missing_stats_t1 (key STRING, value STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@missing_stats_t1
+POSTHOOK: query: CREATE TABLE missing_stats_t1 (key STRING, value STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@missing_stats_t1
+PREHOOK: query: CREATE TABLE missing_stats_t2 (key STRING, value STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@missing_stats_t2
+POSTHOOK: query: CREATE TABLE missing_stats_t2 (key STRING, value STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@missing_stats_t2
+PREHOOK: query: CREATE TABLE missing_stats_t3 (key STRING, value STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@missing_stats_t3
+POSTHOOK: query: CREATE TABLE missing_stats_t3 (key STRING, value STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@missing_stats_t3
+PREHOOK: query: INSERT INTO missing_stats_t1 (key, value)
+ SELECT key, value
+ FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@missing_stats_t1
+POSTHOOK: query: INSERT INTO missing_stats_t1 (key, value)
+ SELECT key, value
+ FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@missing_stats_t1
+POSTHOOK: Lineage: missing_stats_t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: missing_stats_t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: INSERT INTO missing_stats_t2 (key, value)
+ SELECT key, value
+ FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@missing_stats_t2
+POSTHOOK: query: INSERT INTO missing_stats_t2 (key, value)
+ SELECT key, value
+ FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@missing_stats_t2
+POSTHOOK: Lineage: missing_stats_t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: missing_stats_t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: INSERT INTO missing_stats_t3 (key, value)
+ SELECT key, value
+ FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@missing_stats_t3
+POSTHOOK: query: INSERT INTO missing_stats_t3 (key, value)
+ SELECT key, value
+ FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@missing_stats_t3
+POSTHOOK: Lineage: missing_stats_t3.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: missing_stats_t3.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@missing_stats_t1
+PREHOOK: Input: default@missing_stats_t2
+PREHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@missing_stats_t1
+POSTHOOK: Input: default@missing_stats_t2
+POSTHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+0
+PREHOOK: query: SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@missing_stats_t1
+PREHOOK: Input: default@missing_stats_t2
+PREHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@missing_stats_t1
+POSTHOOK: Input: default@missing_stats_t2
+POSTHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+0
+PREHOOK: query: ANALYZE TABLE missing_stats_t1 COMPUTE STATISTICS FOR COLUMNS
+PREHOOK: type: QUERY
+PREHOOK: Input: default@missing_stats_t1
+#### A masked pattern was here ####
+POSTHOOK: query: ANALYZE TABLE missing_stats_t1 COMPUTE STATISTICS FOR COLUMNS
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@missing_stats_t1
+#### A masked pattern was here ####
+PREHOOK: query: ANALYZE TABLE missing_stats_t2 COMPUTE STATISTICS FOR COLUMNS
+PREHOOK: type: QUERY
+PREHOOK: Input: default@missing_stats_t2
+#### A masked pattern was here ####
+POSTHOOK: query: ANALYZE TABLE missing_stats_t2 COMPUTE STATISTICS FOR COLUMNS
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@missing_stats_t2
+#### A masked pattern was here ####
+PREHOOK: query: ANALYZE TABLE missing_stats_t3 COMPUTE STATISTICS FOR COLUMNS
+PREHOOK: type: QUERY
+PREHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+POSTHOOK: query: ANALYZE TABLE missing_stats_t3 COMPUTE STATISTICS FOR COLUMNS
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+PREHOOK: query: SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@missing_stats_t1
+PREHOOK: Input: default@missing_stats_t2
+PREHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT COUNT(*)
+FROM missing_stats_t1 t1
+JOIN missing_stats_t2 t2 ON t1.value = t2.key
+JOIN missing_stats_t3 t3 ON t2.key = t3.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@missing_stats_t1
+POSTHOOK: Input: default@missing_stats_t2
+POSTHOOK: Input: default@missing_stats_t3
+#### A masked pattern was here ####
+0
[17/50] [abbrv] hive git commit: HIVE-15735: In some cases,
view objects inside a view do not have parents. (Yongzhi Chen,
reviewed by Aihua Xu)
Posted by se...@apache.org.
HIVE-15735: In some cases, view objects inside a view do not have parents. (Yongzhi Chen, reviewed by Aihua Xu)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/77dfbe0b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/77dfbe0b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/77dfbe0b
Branch: refs/heads/hive-14535
Commit: 77dfbe0b52ed7098347d734fd5e7f42b3354c67a
Parents: 1c2c485
Author: Yongzhi Chen <yc...@apache.org>
Authored: Thu Jan 26 16:43:52 2017 -0500
Committer: Yongzhi Chen <yc...@apache.org>
Committed: Tue Jan 31 09:07:39 2017 -0500
----------------------------------------------------------------------
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 4 +++
.../apache/hadoop/hive/ql/plan/PlanUtils.java | 3 +-
.../hadoop/hive/ql/plan/TestViewEntity.java | 37 ++++++++++++++++++++
3 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/77dfbe0b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 6c0f300..248dd63 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -2005,6 +2005,10 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
replaceViewReferenceWithDefinition(qb, tab, tabName, alias);
// This is the last time we'll see the Table objects for views, so add it to the inputs
// now. isInsideView will tell if this view is embedded in another view.
+ // If the view is Inside another view, it should have at least one parent
+ if (qb.isInsideView() && parentInput == null) {
+ parentInput = PlanUtils.getParentViewInfo(getAliasId(alias, qb), viewAliasToInput);
+ }
ReadEntity viewInput = new ReadEntity(tab, parentInput, !qb.isInsideView());
viewInput = PlanUtils.addInput(inputs, viewInput);
aliasToViewInfo.put(alias, new ObjectPair<String, ReadEntity>(fullViewName, viewInput));
http://git-wip-us.apache.org/repos/asf/hive/blob/77dfbe0b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
index b2c5865..05d2c81 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
@@ -1127,7 +1127,8 @@ public final class PlanUtils {
// For eg: for a query like 'select * from V3', where V3 -> V2, V2 -> V1, V1 -> T
// -> implies depends on.
// T's parent would be V1
- for (int pos = 0; pos < aliases.length; pos++) {
+ // do not check last alias in the array for parent can not be itself.
+ for (int pos = 0; pos < aliases.length -1; pos++) {
currentAlias = currentAlias == null ? aliases[pos] : currentAlias + ":" + aliases[pos];
currentAlias = currentAlias.replace(SemanticAnalyzer.SUBQUERY_TAG_1, "")
http://git-wip-us.apache.org/repos/asf/hive/blob/77dfbe0b/ql/src/test/org/apache/hadoop/hive/ql/plan/TestViewEntity.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/plan/TestViewEntity.java b/ql/src/test/org/apache/hadoop/hive/ql/plan/TestViewEntity.java
index fa01416..4cc9d72 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/plan/TestViewEntity.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/plan/TestViewEntity.java
@@ -168,8 +168,45 @@ public class TestViewEntity {
// table1 and view1 as second read entity
assertEquals("default@" + view1, CheckInputReadEntity.readEntities[1].getName());
assertFalse("Table is not direct input", CheckInputReadEntity.readEntities[1].isDirect());
+ Set<ReadEntity> parents = CheckInputReadEntity.readEntities[1].getParents();
+ assertTrue("Table does not have parent", parents != null && parents.size() > 0);
assertEquals("default@" + tab1, CheckInputReadEntity.readEntities[2].getName());
assertFalse("Table is not direct input", CheckInputReadEntity.readEntities[2].isDirect());
}
+
+ /**
+ * Verify that the the query with the subquery inside a view will have the correct
+ * direct and indirect inputs.
+ * @throws Exception
+ */
+ @Test
+ public void testUnionAllInSubView() throws Exception {
+ String prefix = "tvunionallinsubview" + NAME_PREFIX;
+ final String tab1 = prefix + "t";
+ final String view1 = prefix + "v";
+ final String view2 = prefix + "v2";
+
+ int ret = driver.run("create table " + tab1 + "(id int)").getResponseCode();
+ assertEquals("Checking command success", 0, ret);
+ ret = driver.run("create view " + view1 + " as select * from " + tab1).getResponseCode();
+ assertEquals("Checking command success", 0, ret);
+
+ ret = driver.run("create view " + view2 + " as select * from (select * from " + view1 + " union all select * from " + view1 + ") x").getResponseCode();
+ assertEquals("Checking command success", 0, ret);
+
+ driver.compile("select * from " + view2);
+ // view entity
+ assertEquals("default@" + view2, CheckInputReadEntity.readEntities[0].getName());
+
+ // table1 and view1 as second read entity
+ assertEquals("default@" + view1, CheckInputReadEntity.readEntities[1].getName());
+ assertFalse("Table is not direct input", CheckInputReadEntity.readEntities[1].isDirect());
+ Set<ReadEntity> parents = CheckInputReadEntity.readEntities[1].getParents();
+ assertTrue("Table does not have parent", parents != null && parents.size() > 0);
+ assertEquals("default@" + tab1, CheckInputReadEntity.readEntities[2].getName());
+ assertFalse("Table is not direct input", CheckInputReadEntity.readEntities[2].isDirect());
+
+ }
+
}
[04/50] [abbrv] hive git commit: HIVE-15722. LLAP: Avoid marking a
query as complete if the AMReporter runs into an error. (Siddharth Seth,
reviewed by Sergey Shelukhin, Prasanth Jayachandran)
Posted by se...@apache.org.
HIVE-15722. LLAP: Avoid marking a query as complete if the AMReporter runs into an error. (Siddharth Seth, reviewed by Sergey Shelukhin, Prasanth Jayachandran)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/aabe83db
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/aabe83db
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/aabe83db
Branch: refs/heads/hive-14535
Commit: aabe83dbf303ac4891d41ced72916c72b46ae072
Parents: 888e5d7
Author: Siddharth Seth <ss...@apache.org>
Authored: Fri Jan 27 11:52:52 2017 -0800
Committer: Siddharth Seth <ss...@apache.org>
Committed: Fri Jan 27 11:52:52 2017 -0800
----------------------------------------------------------------------
.../llap/daemon/impl/ContainerRunnerImpl.java | 17 +++++-------
.../hive/llap/daemon/impl/QueryTracker.java | 29 ++++++++++++++++----
2 files changed, 31 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/aabe83db/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/ContainerRunnerImpl.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/ContainerRunnerImpl.java b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/ContainerRunnerImpl.java
index 6d7d4de..8c33fa2 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/ContainerRunnerImpl.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/ContainerRunnerImpl.java
@@ -55,7 +55,6 @@ import org.apache.hadoop.hive.llap.daemon.rpc.LlapDaemonProtocolProtos.Terminate
import org.apache.hadoop.hive.llap.daemon.rpc.LlapDaemonProtocolProtos.VertexOrBinary;
import org.apache.hadoop.hive.llap.metrics.LlapDaemonExecutorMetrics;
import org.apache.hadoop.hive.llap.security.LlapSignerImpl;
-import org.apache.hadoop.hive.llap.security.LlapTokenIdentifier;
import org.apache.hadoop.hive.llap.tez.Converters;
import org.apache.hadoop.hive.llap.tezplugins.LlapTezUtils;
import org.apache.hadoop.io.DataInputBuffer;
@@ -183,14 +182,16 @@ public class ContainerRunnerImpl extends CompositeService implements ContainerRu
SignableVertexSpec vertex = extractVertexSpec(request, tokenInfo);
TezEvent initialEvent = extractInitialEvent(request, tokenInfo);
- if (LOG.isInfoEnabled()) {
- LOG.info("Queueing container for execution: " + stringifySubmitRequest(request, vertex));
- }
- QueryIdentifierProto qIdProto = vertex.getQueryIdentifier();
TezTaskAttemptID attemptId =
Converters.createTaskAttemptId(vertex.getQueryIdentifier(), vertex.getVertexIndex(),
request.getFragmentNumber(), request.getAttemptNumber());
String fragmentIdString = attemptId.toString();
+ if (LOG.isInfoEnabled()) {
+ LOG.info("Queueing container for execution: fragemendId={}, {}",
+ fragmentIdString, stringifySubmitRequest(request, vertex));
+ }
+ QueryIdentifierProto qIdProto = vertex.getQueryIdentifier();
+
HistoryLogger.logFragmentStart(qIdProto.getApplicationIdString(), request.getContainerIdString(),
localAddress.get().getHostName(), vertex.getDagName(), qIdProto.getDagIndex(),
vertex.getVertexName(), request.getFragmentNumber(), request.getAttemptNumber());
@@ -478,11 +479,7 @@ public class ContainerRunnerImpl extends CompositeService implements ContainerRu
public void queryFailed(QueryIdentifier queryIdentifier) {
LOG.info("Processing query failed notification for {}", queryIdentifier);
List<QueryFragmentInfo> knownFragments;
- try {
- knownFragments = queryTracker.queryComplete(queryIdentifier, -1, true);
- } catch (IOException e) {
- throw new RuntimeException(e); // Should never happen here, no permission check.
- }
+ knownFragments = queryTracker.getRegisteredFragments(queryIdentifier);
LOG.info("DBG: Pending fragment count for failed query {} = {}", queryIdentifier,
knownFragments.size());
for (QueryFragmentInfo fragmentInfo : knownFragments) {
http://git-wip-us.apache.org/repos/asf/hive/blob/aabe83db/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/QueryTracker.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/QueryTracker.java b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/QueryTracker.java
index a7d7981..9eaddd2 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/QueryTracker.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/QueryTracker.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.hive.llap.log.Log4jQueryCompleteMarker;
import org.apache.hadoop.hive.llap.log.LogHelpers;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token;
+import org.apache.hadoop.util.StringUtils;
import org.apache.log4j.MDC;
import org.apache.logging.slf4j.Log4jMarker;
import org.apache.tez.common.CallableWithNdc;
@@ -141,14 +142,17 @@ public class QueryTracker extends AbstractService {
String fragmentIdString, LlapTokenInfo tokenInfo) throws IOException {
ReadWriteLock dagLock = getDagLock(queryIdentifier);
+ // Note: This is a readLock to prevent a race with queryComplete. Operations
+ // and mutations within this lock need to be on concurrent structures.
dagLock.readLock().lock();
try {
if (completedDagMap.contains(queryIdentifier)) {
// Cleanup the dag lock here, since it may have been created after the query completed
dagSpecificLocks.remove(queryIdentifier);
- throw new RuntimeException(
- "Dag " + dagName + " already complete. Rejecting fragment ["
- + vertexName + ", " + fragmentNumber + ", " + attemptNumber + "]");
+ String message = "Dag " + dagName + " already complete. Rejecting fragment ["
+ + vertexName + ", " + fragmentNumber + ", " + attemptNumber + "]";
+ LOG.info(message);
+ throw new RuntimeException(message);
}
// TODO: for now, we get the secure username out of UGI... after signing, we can take it
// out of the request provided that it's signed.
@@ -211,6 +215,22 @@ public class QueryTracker extends AbstractService {
}
}
+ List<QueryFragmentInfo> getRegisteredFragments(QueryIdentifier queryIdentifier) {
+ ReadWriteLock dagLock = getDagLock(queryIdentifier);
+ dagLock.readLock().lock();
+ try {
+ QueryInfo queryInfo = queryInfoMap.get(queryIdentifier);
+ if (queryInfo == null) {
+ // Race with queryComplete
+ LOG.warn("Unknown query: Returning an empty list of fragments");
+ return Collections.emptyList();
+ }
+ return queryInfo.getRegisteredFragments();
+ } finally {
+ dagLock.readLock().unlock();
+ }
+ }
+
/**
* Register completion for a query
* @param queryIdentifier
@@ -231,8 +251,7 @@ public class QueryTracker extends AbstractService {
deleteDelay);
queryInfoMap.remove(queryIdentifier);
if (queryInfo == null) {
- // One case where this happens is when a query is killed via an explicit signal, and then
- // another message is received from teh AMHeartbeater.
+ // Should not happen.
LOG.warn("Ignoring query complete for unknown dag: {}", queryIdentifier);
return Collections.emptyList();
}
[11/50] [abbrv] hive git commit: HIVE-15740: Include
hive-hcatalog-core.jar and hive-hcatalog-server-extensions.jar in binary
distribution (Daniel Dai, reviewed by Thejas Nair)
Posted by se...@apache.org.
HIVE-15740: Include hive-hcatalog-core.jar and hive-hcatalog-server-extensions.jar in binary distribution (Daniel Dai, reviewed by Thejas Nair)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/8db19d15
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/8db19d15
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/8db19d15
Branch: refs/heads/hive-14535
Commit: 8db19d1508a4ac2f576b5580b3a7abcbdcc0d46c
Parents: f4d7471
Author: Daniel Dai <da...@hortonworks.com>
Authored: Mon Jan 30 11:38:24 2017 -0800
Committer: Daniel Dai <da...@hortonworks.com>
Committed: Mon Jan 30 11:38:24 2017 -0800
----------------------------------------------------------------------
packaging/src/main/assembly/bin.xml | 10 ++++++++++
1 file changed, 10 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/8db19d15/packaging/src/main/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/packaging/src/main/assembly/bin.xml b/packaging/src/main/assembly/bin.xml
index 4327977..84686ee 100644
--- a/packaging/src/main/assembly/bin.xml
+++ b/packaging/src/main/assembly/bin.xml
@@ -59,6 +59,16 @@
</includes>
</dependencySet>
<dependencySet>
+ <outputDirectory>lib</outputDirectory>
+ <unpack>false</unpack>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useStrictFiltering>true</useStrictFiltering>
+ <includes>
+ <include>org.apache.hive.hcatalog:hive-hcatalog-core</include>
+ <include>org.apache.hive.hcatalog:hive-hcatalog-server-extensions</include>
+ </includes>
+ </dependencySet>
+ <dependencySet>
<outputDirectory>hcatalog/share/hcatalog</outputDirectory>
<unpack>false</unpack>
<useProjectArtifact>false</useProjectArtifact>
[50/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
HIVE-14671 : merge master into hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Conflicts:
metastore/if/hive_metastore.thrift
metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
metastore/scripts/upgrade/mssql/upgrade-2.1.0-to-2.2.0.mssql.sql
metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
metastore/scripts/upgrade/mysql/upgrade-2.1.0-to-2.2.0.mysql.sql
metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
metastore/scripts/upgrade/oracle/upgrade-2.1.0-to-2.2.0.oracle.sql
metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
metastore/scripts/upgrade/postgres/upgrade-2.1.0-to-2.2.0.postgres.sql
metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
metastore/src/gen/thrift/gen-php/metastore/Types.php
metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
metastore/src/model/org/apache/hadoop/hive/metastore/model/MTable.java
ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java
ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java
ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java
ql/src/java/org/apache/hadoop/hive/ql/parse/EximUtil.java
ql/src/java/org/apache/hadoop/hive/ql/parse/ExportSemanticAnalyzer.java
ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java
ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
ql/src/java/org/apache/hadoop/hive/ql/plan/LoadDesc.java
ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/748c1bd2
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/748c1bd2
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/748c1bd2
Branch: refs/heads/hive-14535
Commit: 748c1bd2fa2942459e88e26e9820ebe3b3dd1fb5
Parents: d00196c a67eb03
Author: Sergey Shelukhin <se...@apache.org>
Authored: Wed Feb 1 18:00:52 2017 -0800
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Wed Feb 1 18:00:52 2017 -0800
----------------------------------------------------------------------
LICENSE | 235 -
NOTICE | 9 +-
.../test/results/positive/accumulo_joins.q.out | 16 +-
.../positive/accumulo_predicate_pushdown.q.out | 72 +-
.../results/positive/accumulo_queries.q.out | 20 +-
.../accumulo_single_sourced_multi_insert.q.out | 41 +-
.../apache/hadoop/hive/ant/GenVectorCode.java | 83 +
beeline/pom.xml | 12 +-
.../java/org/apache/hive/beeline/BeeLine.java | 155 +-
.../org/apache/hive/beeline/HiveSchemaTool.java | 461 +-
.../hive/beeline/cli/CliOptionsProcessor.java | 4 +-
.../org/apache/hive/beeline/cli/HiveCli.java | 6 +-
.../apache/hive/beeline/TestBeeLineHistory.java | 9 +-
bin/beeline | 4 -
bin/ext/help.cmd | 4 +-
bin/ext/help.sh | 2 +-
bin/ext/hwi.cmd | 62 -
bin/ext/hwi.sh | 50 -
bin/hive | 8 +
bin/hive.cmd | 4 +-
bin/hplsql | 4 -
binary-package-licenses/NOTICE | 15 +
binary-package-licenses/README | 89 +
binary-package-licenses/asm-LICENSE | 29 +
.../com.google.protobuf-LICENSE | 42 +
.../com.ibm.icu.icu4j-LICENSE | 385 +
binary-package-licenses/com.sun.jersey-LICENSE | 93 +
.../com.thoughtworks.paranamer-LICENSE | 26 +
.../javax.transaction.transaction-api-LICENSE | 128 +
binary-package-licenses/javolution-LICENSE | 25 +
binary-package-licenses/jline-LICENSE | 32 +
.../org.abego.treelayout.core-LICENSE | 26 +
binary-package-licenses/org.antlr-LICENSE | 27 +
.../org.antlr.antlr4-LICENSE | 27 +
.../org.antlr.stringtemplate-LICENSE | 27 +
.../org.codehaus.janino-LICENSE | 29 +
.../org.jamon.jamon-runtime-LICENSE | 27 +
binary-package-licenses/org.jruby-LICENSE | 17 +
binary-package-licenses/org.json-LICENSE | 22 +
.../org.mozilla.rhino-LICENSE | 373 +
binary-package-licenses/org.slf4j-LICENSE | 21 +
binary-package-licenses/sqlline-LICENSE | 33 +
.../org/apache/hadoop/hive/cli/CliDriver.java | 46 +-
.../hadoop/hive/cli/OptionsProcessor.java | 4 +-
common/pom.xml | 1 -
.../hadoop/hive/common/BlobStorageUtils.java | 14 +-
.../apache/hadoop/hive/common/FileUtils.java | 49 +-
.../hadoop/hive/common/JvmPauseMonitor.java | 3 +-
.../hadoop/hive/common/StatsSetupConst.java | 24 +
.../common/classification/RetrySemantics.java | 55 +
.../org/apache/hadoop/hive/conf/Constants.java | 7 +
.../org/apache/hadoop/hive/conf/HiveConf.java | 226 +-
.../hive/common/util/HiveStringUtils.java | 5 +
.../java/org/apache/hive/common/util/Ref.java | 32 +
.../java/org/apache/hive/http/HttpServer.java | 8 +-
.../hadoop/hive/common/TestFileUtils.java | 51 +
.../hive/common/type/HiveDecimalTestBase.java | 561 ++
.../hive/common/type/TestHiveDecimal.java | 216 -
.../TestHiveDecimalOrcSerializationUtils.java | 378 +
.../apache/hadoop/hive/conf/TestHiveConf.java | 2 +-
.../hive/common/util/TestBloomFilter.java | 464 -
conf/hive-env.sh.template | 4 +-
.../hadoop/hive/contrib/serde2/RegexSerDe.java | 5 +-
.../hive/contrib/serde2/TypedBytesSerDe.java | 5 +-
.../clientnegative/case_with_row_sequence.q.out | 4 +-
.../clientnegative/invalid_row_sequence.q.out | 8 +-
.../results/clientnegative/serde_regex.q.out | 6 +-
.../test/results/clientpositive/dboutput.q.out | 10 +-
.../clientpositive/fileformat_base64.q.out | 10 +-
.../clientpositive/udaf_example_max.q.out | 2 +
.../clientpositive/udaf_example_min.q.out | 2 +
.../clientpositive/udf_row_sequence.q.out | 22 +-
.../test/results/clientpositive/url_hook.q.out | 6 +-
data/conf/hive-site.xml | 6 +
data/conf/spark/yarn-client/hive-site.xml | 7 +-
data/files/escapetest.txt | Bin 254 -> 202 bytes
data/files/over10k.gz | Bin 0 -> 249276 bytes
data/files/part_tiny_nulls.txt | 26 +
data/files/table1.avsc | 25 +
data/files/table1_1.avsc | 19 +
data/files/trunc_number.txt | 4 +
data/files/trunc_number1.txt | 4 +
druid-handler/README.md | 3 +
druid-handler/pom.xml | 165 +-
.../hadoop/hive/druid/DruidStorageHandler.java | 474 +-
.../hive/druid/DruidStorageHandlerUtils.java | 372 +-
.../hive/druid/HiveDruidOutputFormat.java | 55 -
.../druid/HiveDruidQueryBasedInputFormat.java | 370 -
.../hadoop/hive/druid/HiveDruidSplit.java | 83 -
.../hadoop/hive/druid/io/DruidOutputFormat.java | 205 +
.../druid/io/DruidQueryBasedInputFormat.java | 420 +
.../hadoop/hive/druid/io/DruidRecordWriter.java | 277 +
.../hadoop/hive/druid/io/HiveDruidSplit.java | 84 +
.../serde/DruidGroupByQueryRecordReader.java | 15 +-
.../druid/serde/DruidQueryRecordReader.java | 58 +-
.../serde/DruidSelectQueryRecordReader.java | 23 +-
.../hadoop/hive/druid/serde/DruidSerDe.java | 257 +-
.../hive/druid/serde/DruidSerDeUtils.java | 6 +-
.../serde/DruidTimeseriesQueryRecordReader.java | 7 +-
.../druid/serde/DruidTopNQueryRecordReader.java | 8 +-
.../hive/druid/DruidStorageHandlerTest.java | 224 +
.../hadoop/hive/druid/QTestDruidSerDe.java | 60 +-
.../hadoop/hive/druid/QTestDruidSerDe2.java | 92 +
.../hive/druid/QTestDruidStorageHandler2.java | 34 +
.../hadoop/hive/druid/TestDerbyConnector.java | 126 +
.../hadoop/hive/druid/TestDruidSerDe.java | 853 +-
.../TestHiveDruidQueryBasedInputFormat.java | 91 +-
.../hive/ql/io/DruidRecordWriterTest.java | 239 +
errata.txt | 1 +
.../hive/hbase/HiveHFileOutputFormat.java | 2 +-
.../test/results/negative/cascade_dbdrop.q.out | 24 +-
.../generatehfiles_require_family_path.q.out | 8 +-
.../results/positive/hbase_binary_binary.q.out | 4 -
.../hbase_binary_external_table_queries.q.out | 6 +-
.../src/test/results/positive/hbase_bulk.q.out | 47 +-
.../results/positive/hbase_custom_key2.q.out | 24 +-
.../results/positive/hbase_custom_key3.q.out | 24 +-
.../results/positive/hbase_handler_bulk.q.out | 34 +-
.../src/test/results/positive/hbase_joins.q.out | 16 +-
.../test/results/positive/hbase_ppd_join.q.out | 64 +-
.../results/positive/hbase_ppd_key_range.q.out | 78 +-
.../test/results/positive/hbase_pushdown.q.out | 72 +-
.../test/results/positive/hbase_queries.q.out | 20 +-
.../hbase_single_sourced_multi_insert.q.out | 41 +-
.../positive/hbase_timestamp_format.q.out | 6 +-
.../test/results/positive/hbase_viewjoins.q.out | 6 +
.../src/test/results/positive/hbasestats.q.out | 7 +-
.../hive/hcatalog/data/HCatRecordSerDe.java | 6 +-
.../apache/hive/hcatalog/data/JsonSerDe.java | 5 +-
.../hive/hcatalog/mapreduce/InternalUtil.java | 3 +
.../hive/hcatalog/common/TestHCatUtil.java | 5 +-
.../hcatalog/pig/AbstractHCatLoaderTest.java | 746 ++
.../hcatalog/pig/AbstractHCatStorerTest.java | 8 +-
.../hive/hcatalog/pig/TestAvroHCatLoader.java | 31 +
.../hive/hcatalog/pig/TestE2EScenarios.java | 2 +-
.../hive/hcatalog/pig/TestHCatLoader.java | 816 --
.../hcatalog/pig/TestHCatLoaderEncryption.java | 4 +-
.../hive/hcatalog/pig/TestHCatLoaderStorer.java | 10 +-
.../hive/hcatalog/pig/TestOrcHCatLoader.java | 31 +
.../hcatalog/pig/TestParquetHCatLoader.java | 85 +
.../hive/hcatalog/pig/TestRCFileHCatLoader.java | 31 +
.../pig/TestSequenceFileHCatLoader.java | 32 +
.../hcatalog/pig/TestTextFileHCatLoader.java | 31 +
.../listener/DbNotificationListener.java | 321 +-
.../listener/TestNotificationListener.java | 29 +-
.../hive/hcatalog/streaming/HiveEndPoint.java | 16 +-
.../hive/hcatalog/streaming/TestStreaming.java | 19 +
.../worker/TestWarehousePartitionHelper.java | 4 +-
.../apache/hive/hcatalog/templeton/Server.java | 29 +-
.../templeton/tool/TempletonStorage.java | 2 +-
.../templeton/tool/ZooKeeperCleanup.java | 4 -
.../hive/hcatalog/templeton/TestServer.java | 30 +
.../java/org/apache/hive/hplsql/Arguments.java | 4 +-
hwi/pom.xml | 132 -
.../org/apache/hadoop/hive/hwi/HWIAuth.java | 105 -
.../hadoop/hive/hwi/HWIContextListener.java | 74 -
.../apache/hadoop/hive/hwi/HWIException.java | 48 -
.../org/apache/hadoop/hive/hwi/HWIServer.java | 146 -
.../apache/hadoop/hive/hwi/HWISessionItem.java | 610 --
.../hadoop/hive/hwi/HWISessionManager.java | 222 -
.../apache/hadoop/hive/hwi/TestHWIServer.java | 77 -
hwi/web/WEB-INF/web.xml | 34 -
hwi/web/authorize.jsp | 88 -
hwi/web/css/bootstrap.min.css | 706 --
hwi/web/diagnostics.jsp | 84 -
hwi/web/error_page.jsp | 54 -
hwi/web/img/glyphicons-halflings-white.png | Bin 4352 -> 0 bytes
hwi/web/img/glyphicons-halflings.png | Bin 4352 -> 0 bytes
hwi/web/index.jsp | 48 -
hwi/web/left_navigation.jsp | 31 -
hwi/web/navbar.jsp | 33 -
hwi/web/session_create.jsp | 84 -
hwi/web/session_diagnostics.jsp | 77 -
hwi/web/session_history.jsp | 125 -
hwi/web/session_kill.jsp | 65 -
hwi/web/session_list.jsp | 73 -
hwi/web/session_manage.jsp | 197 -
hwi/web/session_remove.jsp | 67 -
hwi/web/session_result.jsp | 72 -
hwi/web/show_database.jsp | 71 -
hwi/web/show_databases.jsp | 62 -
hwi/web/show_table.jsp | 184 -
hwi/web/view_file.jsp | 79 -
.../apache/hadoop/hive/serde2/CustomSerDe1.java | 5 +-
.../apache/hadoop/hive/serde2/CustomSerDe2.java | 5 +-
.../apache/hadoop/hive/serde2/CustomSerDe3.java | 7 +-
.../apache/hadoop/hive/serde2/CustomSerDe4.java | 5 +-
.../apache/hadoop/hive/serde2/CustomSerDe5.java | 5 +-
.../api/TestHCatClientNotification.java | 90 +-
.../listener/TestDbNotificationListener.java | 1102 +-
itests/hive-blobstore/pom.xml | 25 -
.../src/test/queries/clientpositive/ctas.q | 30 +
.../test/queries/clientpositive/insert_into.q | 7 -
.../insert_into_dynamic_partitions.q | 24 +
.../queries/clientpositive/insert_into_table.q | 12 +
.../clientpositive/insert_overwrite_directory.q | 27 +
.../insert_overwrite_dynamic_partitions.q | 30 +
.../clientpositive/insert_overwrite_table.q | 13 +
.../write_final_output_blobstore.q | 21 +
.../src/test/resources/hive-site.xml | 19 +
.../clientnegative/select_dropped_table.q.out | 4 +-
.../src/test/results/clientpositive/ctas.q.out | 879 ++
.../results/clientpositive/insert_into.q.out | 330 -
.../insert_into_dynamic_partitions.q.out | 333 +
.../clientpositive/insert_into_table.q.out | 368 +
.../insert_overwrite_directory.q.out | 645 ++
.../insert_overwrite_dynamic_partitions.q.out | 413 +
.../clientpositive/insert_overwrite_table.q.out | 403 +
.../write_final_output_blobstore.q.out | 470 +
itests/hive-unit/pom.xml | 5 +
.../hadoop/hive/io/TestHadoopFileStatus.java | 92 +
.../hive/metastore/TestHiveMetaStore.java | 1 +
.../hive/metastore/TestReplChangeManager.java | 330 +
.../hive/metastore/hbase/TestHBaseImport.java | 110 +-
.../metastore/hbase/TestHBaseSchemaTool.java | 8 +-
.../hive/ql/TestReplicationScenarios.java | 1097 ++
.../TestHiveAuthorizerCheckInvocation.java | 4 +-
.../org/apache/hive/beeline/TestSchemaTool.java | 149 +-
.../org/apache/hive/jdbc/TestJdbcDriver2.java | 47 +-
.../apache/hive/jdbc/TestJdbcWithMiniHS2.java | 35 +
.../cli/session/TestHiveSessionImpl.java | 2 +-
.../test/resources/testconfiguration.properties | 42 +-
.../control/AbstractCoreBlobstoreCliDriver.java | 13 +-
.../hadoop/hive/cli/control/CliConfigs.java | 1 +
.../org/apache/hadoop/hive/ql/QTestUtil.java | 8 +-
jdbc/pom.xml | 6 -
.../org/apache/hive/jdbc/HiveBaseResultSet.java | 6 +-
.../hive/jdbc/TestHivePreparedStatement.java | 17 +
.../ext/LlapTaskUmbilicalExternalClient.java | 66 +-
.../apache/hadoop/hive/llap/io/api/LlapIo.java | 3 +-
.../hive/llap/registry/ServiceInstance.java | 7 -
.../hive/llap/registry/ServiceInstanceSet.java | 5 +
.../registry/impl/InactiveServiceInstance.java | 5 -
.../registry/impl/LlapFixedRegistryImpl.java | 5 -
.../impl/LlapZookeeperRegistryImpl.java | 42 +-
.../daemon/rpc/LlapDaemonProtocolProtos.java | 323 +-
.../org/apache/hadoop/hive/llap/DaemonId.java | 17 +-
.../org/apache/hadoop/hive/llap/LlapUtil.java | 55 +-
.../protocol/LlapTaskUmbilicalProtocol.java | 12 +-
.../hive/llap/security/LlapTokenIdentifier.java | 3 +-
.../src/protobuf/LlapDaemonProtocol.proto | 1 +
.../hadoop/hive/llap/LlapBaseInputFormat.java | 4 +-
llap-server/pom.xml | 9 +
.../llap/IncrementalObjectSizeEstimator.java | 2 +-
.../hadoop/hive/llap/cache/BuddyAllocator.java | 3 +-
.../hive/llap/cache/EvictionDispatcher.java | 13 +-
.../hadoop/hive/llap/cache/FileCache.java | 107 +
.../hive/llap/cache/FileCacheCleanupThread.java | 104 +
.../hadoop/hive/llap/cache/LlapDataBuffer.java | 7 +
.../hive/llap/cache/LowLevelCacheImpl.java | 255 +-
.../llap/cache/LowLevelLrfuCachePolicy.java | 2 +-
.../hive/llap/cache/SerDeLowLevelCacheImpl.java | 731 ++
.../hadoop/hive/llap/cli/LlapServiceDriver.java | 54 +-
.../llap/cli/LlapStatusOptionsProcessor.java | 85 +-
.../hive/llap/cli/LlapStatusServiceDriver.java | 413 +-
.../hive/llap/daemon/impl/AMReporter.java | 133 +-
.../llap/daemon/impl/ContainerRunnerImpl.java | 67 +-
.../impl/EvictingPriorityBlockingQueue.java | 16 +-
.../hive/llap/daemon/impl/LlapDaemon.java | 62 +-
.../hive/llap/daemon/impl/LlapTokenChecker.java | 4 +-
.../llap/daemon/impl/PriorityBlockingDeque.java | 4 +-
.../hadoop/hive/llap/daemon/impl/QueryInfo.java | 7 +-
.../hive/llap/daemon/impl/QueryTracker.java | 27 +-
.../llap/daemon/impl/TaskExecutorService.java | 63 +-
.../llap/daemon/impl/TaskRunnerCallable.java | 62 +-
.../comparator/ShortestJobFirstComparator.java | 17 +-
.../daemon/services/impl/LlapWebServices.java | 6 +-
.../hive/llap/io/api/impl/LlapInputFormat.java | 350 +-
.../hive/llap/io/api/impl/LlapIoImpl.java | 32 +-
.../hive/llap/io/api/impl/LlapRecordReader.java | 350 +
.../llap/io/decode/ColumnVectorProducer.java | 12 +-
.../llap/io/decode/EncodedDataConsumer.java | 23 +-
.../io/decode/GenericColumnVectorProducer.java | 208 +
.../llap/io/decode/OrcColumnVectorProducer.java | 19 +-
.../llap/io/decode/OrcEncodedDataConsumer.java | 102 +-
.../hive/llap/io/decode/ReadPipeline.java | 3 +-
.../llap/io/encoded/LineRrOffsetReader.java | 86 +
.../llap/io/encoded/OrcEncodedDataReader.java | 20 +-
.../llap/io/encoded/PassThruOffsetReader.java | 66 +
.../llap/io/encoded/SerDeEncodedDataReader.java | 1291 +++
.../io/encoded/VertorDeserializeOrcWriter.java | 261 +
.../llap/io/metadata/ConsumerFileMetadata.java | 31 +
.../io/metadata/ConsumerStripeMetadata.java | 35 +
.../hive/llap/io/metadata/OrcFileMetadata.java | 8 +-
.../hive/llap/io/metadata/OrcMetadataCache.java | 2 +-
.../llap/io/metadata/OrcStripeMetadata.java | 13 +-
.../llap/metrics/LlapDaemonExecutorMetrics.java | 17 +-
.../llap/shufflehandler/ShuffleHandler.java | 2 +-
.../main/resources/hive-webapps/llap/index.html | 14 +-
.../resources/hive-webapps/llap/js/metrics.js | 2 +-
.../resources/llap-daemon-log4j2.properties | 5 +-
llap-server/src/main/resources/package.py | 2 +-
.../hive/llap/cache/TestLowLevelCacheImpl.java | 34 +
.../hive/llap/daemon/MiniLlapCluster.java | 2 +-
.../daemon/impl/TaskExecutorTestHelpers.java | 21 +-
.../daemon/impl/TestTaskExecutorService.java | 26 +-
.../TestShortestJobFirstComparator.java | 107 +-
.../services/impl/TestLlapWebServices.java | 69 +
.../llap/tezplugins/LlapTaskCommunicator.java | 88 +-
.../tezplugins/LlapTaskSchedulerService.java | 401 +-
.../TestLlapTaskSchedulerService.java | 58 +-
metastore/if/hive_metastore.thrift | 19 +-
.../upgrade/derby/037-HIVE-14496.derby.sql | 8 +
.../upgrade/derby/037-HIVE-14637.derby.sql | 6 -
.../upgrade/derby/038-HIVE-14637.derby.sql | 6 +
.../upgrade/derby/hive-schema-2.2.0.derby.sql | 2 +-
.../derby/hive-txn-schema-2.2.0.derby.sql | 2 +
.../derby/upgrade-2.1.0-to-2.2.0.derby.sql | 1 +
.../upgrade/mssql/022-HIVE-14496.mssql.sql | 1 +
.../upgrade/mssql/022-HIVE-14637.mssql.sql | 15 -
.../upgrade/mssql/023-HIVE-14637.mssql.sql | 15 +
.../upgrade/mssql/hive-schema-2.2.0.mssql.sql | 3 +
.../mssql/upgrade-2.1.0-to-2.2.0.mssql.sql | 3 +-
.../upgrade/mysql/037-HIVE-14496.mysql.sql | 8 +
.../upgrade/mysql/037-HIVE-14637.mysql.sql | 15 -
.../upgrade/mysql/038-HIVE-14637.mysql.sql | 15 +
.../upgrade/mysql/hive-schema-2.2.0.mysql.sql | 1 +
.../mysql/hive-txn-schema-2.2.0.mysql.sql | 2 +
.../mysql/upgrade-2.1.0-to-2.2.0.mysql.sql | 3 +-
.../upgrade/oracle/037-HIVE-14496.oracle.sql | 9 +
.../upgrade/oracle/037-HIVE-14637.oracle.sql | 15 -
.../upgrade/oracle/038-HIVE-14637.oracle.sql | 15 +
.../upgrade/oracle/hive-schema-2.2.0.oracle.sql | 1 +
.../oracle/hive-txn-schema-2.2.0.oracle.sql | 2 +
.../oracle/upgrade-2.1.0-to-2.2.0.oracle.sql | 3 +-
.../postgres/036-HIVE-14496.postgres.sql | 8 +
.../postgres/036-HIVE-14637.postgres.sql | 16 -
.../postgres/037-HIVE-14637.postgres.sql | 16 +
.../postgres/hive-schema-2.2.0.postgres.sql | 1 +
.../postgres/hive-txn-schema-2.2.0.postgres.sql | 2 +
.../upgrade-2.1.0-to-2.2.0.postgres.sql | 3 +-
.../metastore/hbase/HbaseMetastoreProto.java | 5474 +++++++++-
.../gen/thrift/gen-cpp/ThriftHiveMetastore.cpp | 2437 +++--
.../gen/thrift/gen-cpp/ThriftHiveMetastore.h | 126 +
.../ThriftHiveMetastore_server.skeleton.cpp | 5 +
.../gen/thrift/gen-cpp/hive_metastore_types.cpp | 1387 +--
.../gen/thrift/gen-cpp/hive_metastore_types.h | 89 +-
.../metastore/api/ClearFileMetadataRequest.java | 32 +-
.../hive/metastore/api/ClientCapabilities.java | 32 +-
.../hive/metastore/api/CompactionResponse.java | 583 ++
.../hive/metastore/api/FireEventRequest.java | 32 +-
.../metastore/api/GetAllFunctionsResponse.java | 36 +-
.../api/GetFileMetadataByExprRequest.java | 32 +-
.../api/GetFileMetadataByExprResult.java | 48 +-
.../metastore/api/GetFileMetadataRequest.java | 32 +-
.../metastore/api/GetFileMetadataResult.java | 44 +-
.../hive/metastore/api/GetTablesRequest.java | 32 +-
.../hive/metastore/api/GetTablesResult.java | 36 +-
.../metastore/api/GetValidWriteIdsResult.java | 32 +-
.../metastore/api/InsertEventRequestData.java | 181 +-
.../metastore/api/PutFileMetadataRequest.java | 64 +-
.../api/ShowCompactResponseElement.java | 107 +-
.../apache/hadoop/hive/metastore/api/Table.java | 131 +-
.../hive/metastore/api/ThriftHiveMetastore.java | 3456 ++++---
.../gen-php/metastore/ThriftHiveMetastore.php | 1466 +--
.../src/gen/thrift/gen-php/metastore/Types.php | 484 +-
.../hive_metastore/ThriftHiveMetastore-remote | 7 +
.../hive_metastore/ThriftHiveMetastore.py | 1391 +--
.../gen/thrift/gen-py/hive_metastore/ttypes.py | 334 +-
.../gen/thrift/gen-rb/hive_metastore_types.rb | 37 +-
.../gen/thrift/gen-rb/thrift_hive_metastore.rb | 54 +
.../hadoop/hive/metastore/HiveAlterHandler.java | 29 +-
.../hadoop/hive/metastore/HiveMetaHookV2.java | 51 +
.../hadoop/hive/metastore/HiveMetaStore.java | 145 +-
.../hive/metastore/HiveMetaStoreClient.java | 137 +-
.../hadoop/hive/metastore/IMetaStoreClient.java | 38 +-
.../hive/metastore/MetaStoreDirectSql.java | 19 +-
.../hadoop/hive/metastore/MetaStoreUtils.java | 83 +-
.../hadoop/hive/metastore/ObjectStore.java | 17 +-
.../apache/hadoop/hive/metastore/RawStore.java | 12 +
.../hive/metastore/ReplChangeManager.java | 356 +
.../hive/metastore/RetryingHMSHandler.java | 14 +-
.../hive/metastore/RetryingMetaStoreClient.java | 13 +-
.../apache/hadoop/hive/metastore/Warehouse.java | 7 +-
.../hive/metastore/events/InsertEvent.java | 35 +-
.../hive/metastore/hbase/HBaseImport.java | 19 +
.../hive/metastore/hbase/HBaseReadWrite.java | 100 +
.../hadoop/hive/metastore/hbase/HBaseStore.java | 146 +-
.../hadoop/hive/metastore/hbase/HBaseUtils.java | 123 +
.../messaging/AddPartitionMessage.java | 66 +
.../metastore/messaging/AlterIndexMessage.java | 33 +
.../messaging/AlterPartitionMessage.java | 65 +
.../metastore/messaging/AlterTableMessage.java | 54 +
.../messaging/CreateDatabaseMessage.java | 28 +
.../messaging/CreateFunctionMessage.java | 46 +
.../metastore/messaging/CreateIndexMessage.java | 46 +
.../metastore/messaging/CreateTableMessage.java | 51 +
.../messaging/DropDatabaseMessage.java | 27 +
.../messaging/DropFunctionMessage.java | 38 +
.../metastore/messaging/DropIndexMessage.java | 46 +
.../messaging/DropPartitionMessage.java | 47 +
.../metastore/messaging/DropTableMessage.java | 40 +
.../hive/metastore/messaging/EventMessage.java | 106 +
.../hive/metastore/messaging/EventUtils.java | 244 +
.../hive/metastore/messaging/InsertMessage.java | 59 +
.../messaging/MessageDeserializer.java | 145 +
.../metastore/messaging/MessageFactory.java | 244 +
.../metastore/messaging/PartitionFiles.java | 50 +
.../messaging/json/JSONAddPartitionMessage.java | 165 +
.../messaging/json/JSONAlterIndexMessage.java | 98 +
.../json/JSONAlterPartitionMessage.java | 137 +
.../messaging/json/JSONAlterTableMessage.java | 110 +
.../json/JSONCreateDatabaseMessage.java | 71 +
.../json/JSONCreateFunctionMessage.java | 86 +
.../messaging/json/JSONCreateIndexMessage.java | 87 +
.../messaging/json/JSONCreateTableMessage.java | 118 +
.../messaging/json/JSONDropDatabaseMessage.java | 71 +
.../messaging/json/JSONDropFunctionMessage.java | 79 +
.../messaging/json/JSONDropIndexMessage.java | 91 +
.../json/JSONDropPartitionMessage.java | 119 +
.../messaging/json/JSONDropTableMessage.java | 86 +
.../messaging/json/JSONInsertMessage.java | 110 +
.../messaging/json/JSONMessageDeserializer.java | 189 +
.../messaging/json/JSONMessageFactory.java | 307 +
.../metastore/txn/CompactionTxnHandler.java | 76 +-
.../hadoop/hive/metastore/txn/TxnHandler.java | 326 +-
.../hadoop/hive/metastore/txn/TxnStore.java | 54 +-
.../hadoop/hive/metastore/txn/TxnUtils.java | 12 +-
.../hadoop/hive/metastore/model/MTable.java | 18 +-
metastore/src/model/package.jdo | 3 +
.../metastore/hbase/hbase_metastore_proto.proto | 37 +
.../hive/metastore/TestHiveAlterHandler.java | 108 +
.../hive/metastore/TestMetaStoreUtils.java | 41 +
.../hadoop/hive/metastore/TestObjectStore.java | 27 +-
.../TestRetriesInRetryingHMSHandler.java | 109 +
.../hbase/TestHBaseAggregateStatsCache.java | 20 +-
...stHBaseAggregateStatsCacheWithBitVector.java | 21 +-
.../TestHBaseAggregateStatsExtrapolation.java | 21 +-
.../TestHBaseAggregateStatsNDVUniformDist.java | 21 +-
.../hive/metastore/hbase/TestHBaseStore.java | 392 +
.../metastore/hbase/TestHBaseStoreCached.java | 43 +-
.../hadoop/hive/metastore/txn/TestTxnUtils.java | 40 +-
orc/pom.xml | 1 -
orc/src/java/org/apache/orc/OrcUtils.java | 83 +
.../java/org/apache/orc/TypeDescription.java | 212 +-
.../apache/orc/impl/ColumnStatisticsImpl.java | 50 +-
.../orc/impl/ConvertTreeReaderFactory.java | 81 +-
.../java/org/apache/orc/impl/OrcAcidUtils.java | 3 +
orc/src/java/org/apache/orc/impl/OrcTail.java | 2 +-
.../org/apache/orc/impl/PhysicalFsWriter.java | 529 +
.../org/apache/orc/impl/PhysicalWriter.java | 122 +
.../java/org/apache/orc/impl/ReaderImpl.java | 13 +-
.../org/apache/orc/impl/RecordReaderImpl.java | 58 +-
.../org/apache/orc/impl/RecordReaderUtils.java | 2 +-
.../org/apache/orc/impl/SchemaEvolution.java | 77 +-
.../org/apache/orc/impl/TreeReaderFactory.java | 34 +-
.../java/org/apache/orc/impl/WriterImpl.java | 666 +-
.../org/apache/orc/TestColumnStatistics.java | 13 +-
.../org/apache/orc/impl/TestOrcWideTable.java | 12 +-
.../apache/orc/impl/TestRecordReaderImpl.java | 2 +-
packaging/pom.xml | 6 -
packaging/src/main/assembly/bin.xml | 23 +
packaging/src/main/assembly/src.xml | 2 +-
pom.xml | 34 +-
.../ExpressionTemplates/FilterColumnBetween.txt | 2 +-
.../FilterColumnBetweenDynamicValue.txt | 101 +
.../FilterDecimalColumnBetween.txt | 16 +
.../FilterStringColumnBetween.txt | 8 +-
.../FilterTimestampColumnBetween.txt | 16 +
.../FilterTruncStringColumnBetween.txt | 8 +-
.../UDAFTemplates/VectorUDAFMinMaxDecimal.txt | 45 +-
.../org/apache/hadoop/hive/llap/DebugUtils.java | 1 +
.../java/org/apache/hadoop/hive/ql/Context.java | 39 +-
.../java/org/apache/hadoop/hive/ql/Driver.java | 121 +-
.../org/apache/hadoop/hive/ql/ErrorMsg.java | 11 +-
.../org/apache/hadoop/hive/ql/QueryState.java | 2 -
.../hive/ql/exec/AbstractMapJoinOperator.java | 2 +-
.../hive/ql/exec/AbstractMapOperator.java | 1 +
.../hadoop/hive/ql/exec/ArchiveUtils.java | 2 +-
.../hadoop/hive/ql/exec/CommonJoinOperator.java | 309 +-
.../hive/ql/exec/CommonMergeJoinOperator.java | 8 +-
.../org/apache/hadoop/hive/ql/exec/DDLTask.java | 181 +-
.../hive/ql/exec/DynamicValueRegistry.java | 30 +
.../hive/ql/exec/ExprNodeColumnEvaluator.java | 5 +-
.../exec/ExprNodeConstantDefaultEvaluator.java | 7 +-
.../hive/ql/exec/ExprNodeConstantEvaluator.java | 7 +-
.../ql/exec/ExprNodeDynamicValueEvaluator.java | 54 +
.../hadoop/hive/ql/exec/ExprNodeEvaluator.java | 13 +-
.../hive/ql/exec/ExprNodeEvaluatorFactory.java | 18 +-
.../hive/ql/exec/ExprNodeEvaluatorHead.java | 2 +-
.../hive/ql/exec/ExprNodeEvaluatorRef.java | 2 +-
.../hive/ql/exec/ExprNodeFieldEvaluator.java | 7 +-
.../ql/exec/ExprNodeGenericFuncEvaluator.java | 7 +-
.../hadoop/hive/ql/exec/FetchOperator.java | 2 +-
.../hadoop/hive/ql/exec/FileSinkOperator.java | 34 +-
.../hadoop/hive/ql/exec/FilterOperator.java | 2 +-
.../hadoop/hive/ql/exec/FunctionRegistry.java | 17 +-
.../hadoop/hive/ql/exec/GroupByOperator.java | 88 +-
.../hive/ql/exec/HashTableDummyOperator.java | 10 +
.../hive/ql/exec/HashTableSinkOperator.java | 6 +-
.../hadoop/hive/ql/exec/JoinOperator.java | 3 +-
.../apache/hadoop/hive/ql/exec/JoinUtil.java | 25 +-
.../apache/hadoop/hive/ql/exec/MapOperator.java | 72 +-
.../apache/hadoop/hive/ql/exec/MoveTask.java | 15 +-
.../apache/hadoop/hive/ql/exec/ObjectCache.java | 10 +
.../hadoop/hive/ql/exec/ObjectCacheWrapper.java | 5 +
.../apache/hadoop/hive/ql/exec/Operator.java | 8 +-
.../hadoop/hive/ql/exec/OperatorUtils.java | 16 +
.../apache/hadoop/hive/ql/exec/PTFOperator.java | 12 +-
.../hadoop/hive/ql/exec/PTFPartition.java | 6 +-
.../apache/hadoop/hive/ql/exec/PTFTopNHash.java | 13 +-
.../hadoop/hive/ql/exec/ReduceSinkOperator.java | 4 +-
.../apache/hadoop/hive/ql/exec/Registry.java | 2 +-
.../hadoop/hive/ql/exec/ReplCopyTask.java | 43 +-
.../hadoop/hive/ql/exec/SelectOperator.java | 2 +-
.../hadoop/hive/ql/exec/SkewJoinHandler.java | 2 +-
.../apache/hadoop/hive/ql/exec/StatsTask.java | 11 +-
.../apache/hadoop/hive/ql/exec/TopNHash.java | 33 +-
.../apache/hadoop/hive/ql/exec/Utilities.java | 219 +-
.../hadoop/hive/ql/exec/mr/MapRedTask.java | 9 +
.../hadoop/hive/ql/exec/mr/ObjectCache.java | 5 +
.../persistence/MapJoinEagerRowContainer.java | 2 +-
.../persistence/MapJoinTableContainerSerDe.java | 2 +-
.../hive/ql/exec/spark/GroupByShuffler.java | 10 +-
.../hive/ql/exec/spark/HiveReduceFunction.java | 4 +-
.../spark/HiveReduceFunctionResultList.java | 8 +-
.../ql/exec/spark/HiveSparkClientFactory.java | 31 +-
.../hadoop/hive/ql/exec/spark/ReduceTran.java | 4 +-
.../ql/exec/spark/RemoteHiveSparkClient.java | 8 +-
.../hadoop/hive/ql/exec/spark/ShuffleTran.java | 6 +-
.../hive/ql/exec/spark/SortByShuffler.java | 65 +-
.../hive/ql/exec/spark/SparkPlanGenerator.java | 7 -
.../ql/exec/spark/SparkReduceRecordHandler.java | 29 +-
.../hive/ql/exec/spark/SparkShuffler.java | 2 +-
.../hadoop/hive/ql/exec/spark/SparkTask.java | 102 +-
.../hive/ql/exec/spark/SparkUtilities.java | 8 +-
.../spark/status/RemoteSparkJobMonitor.java | 24 +-
.../ql/exec/spark/status/SparkJobStatus.java | 2 +
.../spark/status/impl/LocalSparkJobStatus.java | 12 +
.../spark/status/impl/RemoteSparkJobStatus.java | 5 +
.../hadoop/hive/ql/exec/tez/DagUtils.java | 5 +
.../ql/exec/tez/DynamicValueRegistryTez.java | 137 +
.../hive/ql/exec/tez/LlapObjectCache.java | 18 +
.../hive/ql/exec/tez/MapRecordProcessor.java | 39 +-
.../hadoop/hive/ql/exec/tez/ObjectCache.java | 16 +
.../hive/ql/exec/tez/ReduceRecordProcessor.java | 56 +-
.../hive/ql/exec/tez/TezSessionPoolManager.java | 143 +-
.../hive/ql/exec/tez/TezSessionState.java | 7 +-
.../apache/hadoop/hive/ql/exec/tez/TezTask.java | 10 +-
.../ql/exec/vector/VectorDeserializeRow.java | 3 +-
.../exec/vector/VectorExpressionDescriptor.java | 3 +-
.../hive/ql/exec/vector/VectorExtractRow.java | 6 +-
.../ql/exec/vector/VectorFilterOperator.java | 2 +
.../ql/exec/vector/VectorHashKeyWrapper.java | 3 +-
.../exec/vector/VectorHashKeyWrapperBatch.java | 2 +-
.../ql/exec/vector/VectorMapJoinOperator.java | 2 +-
.../VectorMapJoinOuterFilteredOperator.java | 4 +-
.../hive/ql/exec/vector/VectorMapOperator.java | 1 -
.../exec/vector/VectorSMBMapJoinOperator.java | 2 +-
.../ql/exec/vector/VectorSelectOperator.java | 1 +
.../hive/ql/exec/vector/VectorSerializeRow.java | 635 +-
.../ql/exec/vector/VectorizationContext.java | 328 +-
.../expressions/CastDecimalToBoolean.java | 7 +-
.../vector/expressions/CastDecimalToChar.java | 4 +-
.../vector/expressions/CastDecimalToDouble.java | 2 +-
.../vector/expressions/CastDecimalToLong.java | 44 +-
.../vector/expressions/CastDecimalToString.java | 23 +-
.../expressions/CastDecimalToTimestamp.java | 11 +-
.../expressions/CastDecimalToVarChar.java | 4 +-
.../vector/expressions/CastDoubleToDecimal.java | 10 +-
.../vector/expressions/DecimalColumnInList.java | 21 +-
.../ql/exec/vector/expressions/DecimalUtil.java | 281 +-
.../DynamicValueVectorExpression.java | 314 +
.../expressions/FilterDecimalColumnInList.java | 18 +-
.../expressions/FilterStructColumnInList.java | 2 +-
.../vector/expressions/FuncDecimalToLong.java | 19 +-
.../vector/expressions/StructColumnInList.java | 2 +-
.../vector/expressions/VectorExpression.java | 13 +-
.../VectorInBloomFilterColDynamicValue.java | 285 +
.../expressions/VectorUDFDateAddScalarCol.java | 2 +
.../expressions/VectorUDFDateDiffColScalar.java | 2 +
.../expressions/VectorUDFDateDiffScalarCol.java | 2 +
.../aggregates/VectorUDAFAvgDecimal.java | 95 +-
.../aggregates/VectorUDAFBloomFilter.java | 474 +
.../aggregates/VectorUDAFBloomFilterMerge.java | 365 +
.../aggregates/VectorUDAFSumDecimal.java | 148 +-
.../mapjoin/VectorMapJoinCommonOperator.java | 11 +-
.../VectorMapJoinGenerateResultOperator.java | 5 +-
.../ql/exec/vector/udf/VectorUDFAdaptor.java | 10 +-
.../apache/hadoop/hive/ql/hooks/ATSHook.java | 269 +-
.../hadoop/hive/ql/hooks/HookContext.java | 38 +-
.../hadoop/hive/ql/hooks/LineageLogger.java | 31 +-
.../hooks/PostExecOrcRowGroupCountPrinter.java | 75 +
.../apache/hadoop/hive/ql/hooks/ReadEntity.java | 6 +-
.../org/apache/hadoop/hive/ql/io/AcidUtils.java | 32 +-
.../hive/ql/io/CombineHiveRecordReader.java | 67 +-
.../ql/io/HiveContextAwareRecordReader.java | 10 +
.../hadoop/hive/ql/io/HiveInputFormat.java | 102 +-
.../io/LlapWrappableInputFormatInterface.java | 5 +-
.../hadoop/hive/ql/io/NullRowsInputFormat.java | 3 +-
.../hive/ql/io/OneNullRowInputFormat.java | 2 +-
.../hadoop/hive/ql/io/ZeroRowsInputFormat.java | 54 +
.../ql/io/avro/AvroGenericRecordReader.java | 7 +-
.../hadoop/hive/ql/io/merge/MergeFileTask.java | 3 +-
.../hadoop/hive/ql/io/orc/OrcInputFormat.java | 128 +-
.../hadoop/hive/ql/io/orc/OrcOutputFormat.java | 7 +-
.../hive/ql/io/orc/OrcRawRecordMerger.java | 14 +-
.../apache/hadoop/hive/ql/io/orc/OrcSerde.java | 6 +-
.../apache/hadoop/hive/ql/io/orc/OrcSplit.java | 6 +-
.../hadoop/hive/ql/io/orc/ReaderImpl.java | 9 +-
.../ql/io/orc/VectorizedOrcInputFormat.java | 5 +-
.../hadoop/hive/ql/io/orc/WriterImpl.java | 28 +-
.../hive/ql/io/orc/encoded/CacheChunk.java | 4 +
.../ql/io/orc/encoded/EncodedReaderImpl.java | 20 +-
.../orc/encoded/EncodedTreeReaderFactory.java | 2 +-
.../hive/ql/io/orc/encoded/StreamUtils.java | 13 +-
.../io/parquet/MapredParquetOutputFormat.java | 8 +-
.../parquet/read/DataWritableReadSupport.java | 24 +-
.../serde/ArrayWritableObjectInspector.java | 82 +-
.../ql/io/parquet/serde/ParquetHiveSerDe.java | 64 +-
.../parquet/vector/VectorizedColumnReader.java | 566 +-
.../vector/VectorizedParquetRecordReader.java | 84 +-
.../vector/VectorizedPrimitiveColumnReader.java | 589 ++
.../vector/VectorizedStructColumnReader.java | 59 +
.../ql/io/parquet/write/DataWritableWriter.java | 3 +-
.../ql/io/rcfile/stats/PartialScanTask.java | 3 +-
.../io/rcfile/truncate/ColumnTruncateTask.java | 3 +-
.../hive/ql/io/sarg/ConvertAstToSearchArg.java | 62 +-
.../hadoop/hive/ql/lib/ExpressionWalker.java | 97 +
.../hadoop/hive/ql/lockmgr/DbLockManager.java | 3 +-
.../hadoop/hive/ql/lockmgr/DbTxnManager.java | 18 +-
.../hadoop/hive/ql/lockmgr/DummyTxnManager.java | 11 +-
.../hive/ql/lockmgr/EmbeddedLockManager.java | 3 +-
.../hadoop/hive/ql/lockmgr/HiveLockManager.java | 3 +-
.../hadoop/hive/ql/lockmgr/HiveTxnManager.java | 20 +-
.../hive/ql/lockmgr/HiveTxnManagerImpl.java | 8 +
.../zookeeper/ZooKeeperHiveLockManager.java | 29 +-
.../apache/hadoop/hive/ql/metadata/Hive.java | 294 +-
.../metadata/HiveMaterializedViewsRegistry.java | 393 +
.../apache/hadoop/hive/ql/metadata/Table.java | 27 +-
.../formatting/MetaDataFormatUtils.java | 3 +-
.../hive/ql/optimizer/ColumnPrunerProcCtx.java | 325 +-
.../ql/optimizer/ColumnPrunerProcFactory.java | 258 +-
.../ql/optimizer/ConstantPropagateProcCtx.java | 2 +-
.../optimizer/ConstantPropagateProcFactory.java | 4 +-
.../hive/ql/optimizer/ConvertJoinMapJoin.java | 82 +-
.../DynamicPartitionPruningOptimization.java | 342 +-
.../hadoop/hive/ql/optimizer/FieldNode.java | 134 +-
.../optimizer/FixedBucketPruningOptimizer.java | 2 +-
.../hive/ql/optimizer/GenMapRedUtils.java | 171 +-
.../ql/optimizer/LimitPushdownOptimizer.java | 67 +-
.../hive/ql/optimizer/MapJoinProcessor.java | 1 +
.../hadoop/hive/ql/optimizer/Optimizer.java | 5 +-
.../ql/optimizer/ReduceSinkMapJoinProc.java | 3 +-
...edundantDynamicPruningConditionsRemoval.java | 24 +-
...tedDynPartitionTimeGranularityOptimizer.java | 372 +
.../SparkRemoveDynamicPruningBySize.java | 12 +-
.../hive/ql/optimizer/StatsOptimizer.java | 45 +-
.../calcite/CalciteSemanticException.java | 8 +-
.../CalciteSubquerySemanticException.java | 52 +
.../optimizer/calcite/HivePlannerContext.java | 12 +-
.../ql/optimizer/calcite/HiveRelFactories.java | 4 +-
.../ql/optimizer/calcite/HiveRelShuttle.java | 40 +
.../optimizer/calcite/HiveRelShuttleImpl.java | 145 +
.../optimizer/calcite/HiveRexExecutorImpl.java | 10 +-
.../calcite/HiveSubQRemoveRelBuilder.java | 1680 ++++
.../ql/optimizer/calcite/RelOptHiveTable.java | 21 +
.../calcite/reloperators/HiveAggregate.java | 7 -
.../calcite/reloperators/HiveFilter.java | 80 +-
.../calcite/reloperators/HiveJoin.java | 42 +-
.../calcite/reloperators/HiveMultiJoin.java | 2 +-
.../calcite/reloperators/HiveProject.java | 18 +-
.../calcite/reloperators/HiveSemiJoin.java | 8 -
.../calcite/reloperators/HiveSortLimit.java | 10 +
.../calcite/reloperators/HiveTableScan.java | 6 -
.../rules/HiveExpandDistinctAggregatesRule.java | 29 +-
.../rules/HiveReduceExpressionsRule.java | 8 +
.../calcite/rules/HiveRelDecorrelator.java | 3011 ++++++
.../calcite/rules/HiveRelFieldTrimmer.java | 72 +-
.../calcite/rules/HiveSemiJoinRule.java | 110 +
.../calcite/rules/HiveSubQueryRemoveRule.java | 432 +
.../HiveMaterializedViewFilterScanRule.java | 91 +
.../MaterializedViewSubstitutionVisitor.java | 292 +
.../rules/views/SubstitutionVisitor.java | 2458 +++++
.../stats/HiveRelMdDistinctRowCount.java | 3 +-
.../calcite/stats/HiveRelMdSelectivity.java | 17 +-
.../optimizer/calcite/stats/HiveRelMdSize.java | 25 +-
.../calcite/translator/ExprNodeConverter.java | 33 +-
.../calcite/translator/HiveOpConverter.java | 49 +-
.../translator/PlanModifierForASTConv.java | 5 +-
.../calcite/translator/RexNodeConverter.java | 111 +-
.../translator/SqlFunctionConverter.java | 22 +-
.../calcite/translator/TypeConverter.java | 26 +-
.../QueryPlanTreeTransformation.java | 2 +-
.../RewriteQueryUsingAggregateIndexCtx.java | 3 +-
.../ListBucketingPrunerUtils.java | 2 +-
.../annotation/OpTraitsRulesProcFactory.java | 38 +-
.../hive/ql/optimizer/physical/LlapDecider.java | 17 +-
.../physical/NullScanTaskDispatcher.java | 30 +-
.../hive/ql/optimizer/physical/Vectorizer.java | 39 +-
.../hive/ql/optimizer/ppr/PartitionPruner.java | 18 +-
.../spark/CombineEquivalentWorkResolver.java | 25 +
.../spark/SetSparkReducerParallelism.java | 56 +-
.../optimizer/spark/SparkMapJoinOptimizer.java | 2 +-
.../stats/annotation/StatsRulesProcFactory.java | 64 +-
.../apache/hadoop/hive/ql/parse/ASTNode.java | 9 -
.../hive/ql/parse/BaseSemanticAnalyzer.java | 35 +-
.../hadoop/hive/ql/parse/CalcitePlanner.java | 744 +-
.../ql/parse/ColumnStatsSemanticAnalyzer.java | 38 +-
.../hive/ql/parse/DDLSemanticAnalyzer.java | 79 +-
.../apache/hadoop/hive/ql/parse/EximUtil.java | 96 +-
.../hive/ql/parse/ExportSemanticAnalyzer.java | 5 +-
.../hadoop/hive/ql/parse/FromClauseParser.g | 77 +-
.../hadoop/hive/ql/parse/GenTezUtils.java | 180 +-
.../apache/hadoop/hive/ql/parse/GenTezWork.java | 6 +-
.../apache/hadoop/hive/ql/parse/HiveParser.g | 23 +-
.../hadoop/hive/ql/parse/IdentifiersParser.g | 91 +-
.../hive/ql/parse/ImportSemanticAnalyzer.java | 64 +-
.../hadoop/hive/ql/parse/PTFTranslator.java | 66 +-
.../hadoop/hive/ql/parse/ParseContext.java | 21 +
.../hadoop/hive/ql/parse/QBParseInfo.java | 21 +-
.../apache/hadoop/hive/ql/parse/QBSubQuery.java | 200 +-
.../ql/parse/ReplicationSemanticAnalyzer.java | 1113 +-
.../hadoop/hive/ql/parse/ReplicationSpec.java | 41 +
.../hadoop/hive/ql/parse/RuntimeValuesInfo.java | 62 +
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 350 +-
.../hadoop/hive/ql/parse/StorageFormat.java | 4 +-
.../hadoop/hive/ql/parse/SubQueryUtils.java | 15 +-
.../hadoop/hive/ql/parse/TaskCompiler.java | 5 +-
.../hadoop/hive/ql/parse/TezCompiler.java | 412 +-
.../hadoop/hive/ql/parse/TypeCheckCtx.java | 49 +-
.../hive/ql/parse/TypeCheckProcFactory.java | 178 +-
.../ql/parse/UpdateDeleteSemanticAnalyzer.java | 302 +-
.../hadoop/hive/ql/parse/WindowingSpec.java | 253 +-
.../hive/ql/parse/spark/GenSparkUtils.java | 19 +
.../hive/ql/parse/spark/SparkCompiler.java | 112 +
.../hive/ql/plan/AbstractOperatorDesc.java | 11 +
.../hadoop/hive/ql/plan/AddPartitionDesc.java | 22 +
.../hadoop/hive/ql/plan/AggregationDesc.java | 7 +
.../apache/hadoop/hive/ql/plan/BaseWork.java | 15 +
.../hadoop/hive/ql/plan/CreateTableDesc.java | 21 +
.../hadoop/hive/ql/plan/CreateViewDesc.java | 16 +-
.../org/apache/hadoop/hive/ql/plan/DDLWork.java | 17 +
.../hadoop/hive/ql/plan/DynamicValue.java | 137 +
.../hadoop/hive/ql/plan/ExprNodeColumnDesc.java | 50 +-
.../hadoop/hive/ql/plan/ExprNodeDescUtils.java | 69 +
.../hive/ql/plan/ExprNodeDynamicValueDesc.java | 76 +
.../hive/ql/plan/ExprNodeSubQueryDesc.java | 102 +
.../apache/hadoop/hive/ql/plan/FetchWork.java | 2 +-
.../hadoop/hive/ql/plan/InsertTableDesc.java | 40 +
.../apache/hadoop/hive/ql/plan/JoinDesc.java | 33 +
.../apache/hadoop/hive/ql/plan/LoadDesc.java | 4 +-
.../hadoop/hive/ql/plan/LoadFileDesc.java | 10 +
.../hadoop/hive/ql/plan/LoadTableDesc.java | 14 +-
.../apache/hadoop/hive/ql/plan/MoveWork.java | 10 +
.../apache/hadoop/hive/ql/plan/OpTraits.java | 21 +-
.../hadoop/hive/ql/plan/OperatorDesc.java | 2 +
.../hadoop/hive/ql/plan/PTFDeserializer.java | 12 +-
.../hadoop/hive/ql/plan/PartitionDesc.java | 68 +
.../apache/hadoop/hive/ql/plan/PlanUtils.java | 97 +-
.../hive/ql/plan/ShowCompactionsDesc.java | 2 +-
.../apache/hadoop/hive/ql/plan/TableDesc.java | 22 +-
.../hadoop/hive/ql/plan/TableScanDesc.java | 11 +
.../hive/ql/plan/VectorPartitionDesc.java | 42 +-
.../hadoop/hive/ql/plan/ptf/BoundaryDef.java | 56 +-
.../hadoop/hive/ql/plan/ptf/CurrentRowDef.java | 48 -
.../hive/ql/plan/ptf/RangeBoundaryDef.java | 72 -
.../hive/ql/plan/ptf/ValueBoundaryDef.java | 82 -
.../hadoop/hive/ql/plan/ptf/WindowFrameDef.java | 22 +-
.../hive/ql/ppd/ExprWalkerProcFactory.java | 9 +-
.../hadoop/hive/ql/ppd/OpProcFactory.java | 4 +-
.../ql/processors/CommandProcessorFactory.java | 5 +
.../hadoop/hive/ql/processors/HiveCommand.java | 7 +-
.../plugin/SettableConfigUpdater.java | 2 +-
.../plugin/sqlstd/Operation2Privilege.java | 7 +-
.../hadoop/hive/ql/session/LineageState.java | 19 +-
.../hadoop/hive/ql/session/SessionState.java | 12 +-
.../apache/hadoop/hive/ql/stats/StatsUtils.java | 47 +-
.../hive/ql/txn/compactor/CompactorMR.java | 19 +-
.../hadoop/hive/ql/txn/compactor/Initiator.java | 6 +-
.../hadoop/hive/ql/txn/compactor/Worker.java | 4 +-
.../org/apache/hadoop/hive/ql/udf/UDFLog.java | 4 +-
.../org/apache/hadoop/hive/ql/udf/UDFMath.java | 2 +-
.../org/apache/hadoop/hive/ql/udf/UDFSign.java | 6 +-
.../apache/hadoop/hive/ql/udf/UDFToBoolean.java | 4 +-
.../apache/hadoop/hive/ql/udf/UDFToByte.java | 4 +-
.../apache/hadoop/hive/ql/udf/UDFToDouble.java | 4 +-
.../apache/hadoop/hive/ql/udf/UDFToFloat.java | 4 +-
.../apache/hadoop/hive/ql/udf/UDFToInteger.java | 4 +-
.../apache/hadoop/hive/ql/udf/UDFToLong.java | 4 +-
.../apache/hadoop/hive/ql/udf/UDFToShort.java | 4 +-
.../hive/ql/udf/generic/GenericUDAFAverage.java | 37 +-
.../ql/udf/generic/GenericUDAFBloomFilter.java | 271 +
.../ql/udf/generic/GenericUDAFEvaluator.java | 51 +
.../hive/ql/udf/generic/GenericUDAFSum.java | 83 +-
.../hadoop/hive/ql/udf/generic/GenericUDF.java | 16 +
.../hive/ql/udf/generic/GenericUDFAbs.java | 3 +-
.../hive/ql/udf/generic/GenericUDFBRound.java | 7 +-
.../ql/udf/generic/GenericUDFBaseNumeric.java | 29 +
.../generic/GenericUDFCardinalityViolation.java | 64 +
.../hive/ql/udf/generic/GenericUDFCeil.java | 4 +-
.../hive/ql/udf/generic/GenericUDFDateDiff.java | 14 +-
.../hive/ql/udf/generic/GenericUDFFloor.java | 4 +-
.../hive/ql/udf/generic/GenericUDFGrouping.java | 91 +
.../ql/udf/generic/GenericUDFInBloomFilter.java | 174 +
.../ql/udf/generic/GenericUDFMonthsBetween.java | 23 +-
.../hive/ql/udf/generic/GenericUDFOPDivide.java | 26 +-
.../ql/udf/generic/GenericUDFOPEqualNS.java | 5 +
.../hive/ql/udf/generic/GenericUDFOPMod.java | 8 +-
.../ql/udf/generic/GenericUDFOPMultiply.java | 10 +-
.../ql/udf/generic/GenericUDFOPNegative.java | 4 +-
.../ql/udf/generic/GenericUDFOPNotEqualNS.java | 45 +
.../udf/generic/GenericUDFOPNumericMinus.java | 15 +-
.../ql/udf/generic/GenericUDFOPNumericPlus.java | 17 +-
.../hive/ql/udf/generic/GenericUDFRound.java | 16 +-
.../ql/udf/generic/GenericUDFSQCountCheck.java | 99 +
.../ql/udf/generic/GenericUDFStringToMap.java | 2 +-
.../hive/ql/udf/generic/GenericUDFTrunc.java | 325 +-
.../hive/ql/udf/ptf/BasePartitionEvaluator.java | 503 +
.../hive/ql/udf/ptf/TableFunctionEvaluator.java | 2 +-
.../hive/ql/udf/ptf/ValueBoundaryScanner.java | 729 ++
.../hive/ql/udf/ptf/WindowingTableFunction.java | 914 +-
.../hive/metastore/txn/TestTxnHandler.java | 88 +-
.../apache/hadoop/hive/ql/TestTxnCommands.java | 240 +-
.../apache/hadoop/hive/ql/TestTxnCommands2.java | 113 +-
.../ql/TestTxnCommands2WithSplitUpdate.java | 6 -
.../hive/ql/exec/InputEstimatorTestClass.java | 106 +
.../hive/ql/exec/TestFunctionRegistry.java | 2 +
.../hadoop/hive/ql/exec/TestUtilities.java | 215 +-
.../exec/vector/TestVectorGroupByOperator.java | 12 +-
.../hive/ql/exec/vector/TestVectorSerDeRow.java | 226 +-
.../ql/exec/vector/VectorRandomRowSource.java | 26 +-
.../vector/expressions/TestDecimalUtil.java | 1 -
.../TestVectorFilterExpressions.java | 12 +
.../TestVectorGenericDateExpressions.java | 2 +-
.../vector/expressions/TestVectorTypeCasts.java | 28 +-
.../mapjoin/fast/CheckFastRowHashMap.java | 27 +-
.../exec/vector/mapjoin/fast/VerifyFastRow.java | 5 +-
.../vector/util/VectorizedRowGroupGenUtil.java | 6 +-
.../hive/ql/io/orc/TestInputOutputFormat.java | 227 +-
.../io/parquet/TestVectorizedColumnReader.java | 418 +-
...ectorizedDictionaryEncodingColumnReader.java | 85 +
.../parquet/VectorizedColumnReaderTestBase.java | 694 ++
.../read/TestDataWritableReadSupport.java | 16 +-
.../ql/io/sarg/TestConvertAstToSearchArg.java | 39 +-
.../hive/ql/io/sarg/TestSearchArgumentImpl.java | 2 +-
.../hive/ql/lockmgr/TestDbTxnManager.java | 78 +-
.../hive/ql/lockmgr/TestDbTxnManager2.java | 254 +-
.../hive/ql/lockmgr/TestDummyTxnManager.java | 24 +-
.../hadoop/hive/ql/metadata/TestHive.java | 4 +
.../hive/ql/metadata/TestHiveCopyFiles.java | 223 +
.../ql/optimizer/TestColumnPrunerProcCtx.java | 91 +-
...TestGenMapRedUtilsCreateConditionalTask.java | 290 +
.../calcite/TestCBORuleFiredOnlyOnce.java | 2 +-
.../ql/optimizer/physical/TestVectorizer.java | 57 +-
.../hadoop/hive/ql/parse/TestGenTezWork.java | 5 +
.../apache/hadoop/hive/ql/parse/TestIUD.java | 4 +-
.../hive/ql/parse/TestMergeStatement.java | 17 +
.../hadoop/hive/ql/parse/TestQBSubQuery.java | 2 +-
.../apache/hadoop/hive/ql/plan/TestMapWork.java | 17 +
.../hadoop/hive/ql/plan/TestViewEntity.java | 37 +
.../TestSQLStdHiveAccessControllerHS2.java | 1 +
.../hadoop/hive/ql/udaf/TestStreamingSum.java | 13 +-
.../generic/TestGenericUDFMonthsBetween.java | 59 +-
.../ql/udf/generic/TestGenericUDFOPDivide.java | 62 +-
.../udf/generic/TestGenericUDFOPMultiply.java | 6 +
.../queries/clientnegative/authorization_msck.q | 20 +
ql/src/test/queries/clientnegative/druid_case.q | 6 +
.../queries/clientnegative/druid_external.q | 5 -
.../queries/clientnegative/fs_default_name1.q | 2 +-
.../queries/clientnegative/fs_default_name2.q | 2 +-
ql/src/test/queries/clientnegative/join45.q | 13 -
.../queries/clientnegative/subquery_corr_from.q | 3 +
.../clientnegative/subquery_corr_grandparent.q | 5 +
.../clientnegative/subquery_corr_select.q | 2 +
.../subquery_exists_implicit_gby.q | 2 +-
.../clientnegative/subquery_in_implicit_gby.q | 11 +
.../queries/clientnegative/subquery_in_on.q | 3 +
.../clientnegative/subquery_nested_subquery.q | 4 -
.../subquery_notexists_implicit_gby.q | 2 +-
.../subquery_notin_implicit_gby.q | 11 +
.../subquery_scalar_implicit_gby.q | 1 +
.../subquery_scalar_multi_columns.q | 2 +
.../clientnegative/subquery_scalar_multi_rows.q | 2 +
.../clientnegative/subquery_shared_alias.q | 6 -
.../subquery_subquery_chain_exists.q | 4 +
.../clientnegative/subquery_with_or_cond.q | 2 +-
.../queries/clientnegative/udf_trunc_error3.q | 1 +
.../test/queries/clientpositive/acid_subquery.q | 18 +
.../clientpositive/alter_table_stats_status.q | 48 +
.../queries/clientpositive/analyze_tbl_date.q | 14 +
.../queries/clientpositive/analyze_tbl_part.q | 4 +-
.../clientpositive/annotate_stats_join_pkfk.q | 41 +
.../queries/clientpositive/avrocountemptytbl.q | 2 +
.../test/queries/clientpositive/avrotblsjoin.q | 28 +
.../queries/clientpositive/cast_on_constant.q | 1 +
.../queries/clientpositive/cbo_rp_auto_join1.q | 1 +
.../queries/clientpositive/cbo_rp_windowing_2.q | 38 +-
.../queries/clientpositive/cbo_subq_not_in.q | 9 -
.../clientpositive/comma_in_column_name.q | 14 +
ql/src/test/queries/clientpositive/constGby.q | 21 +
.../clientpositive/ctas_uses_table_location.q | 1 +
ql/src/test/queries/clientpositive/date_udf.q | 15 +-
.../queries/clientpositive/dbtxnmgr_showlocks.q | 6 +
.../clientpositive/dynamic_semijoin_reduction.q | 80 +
ql/src/test/queries/clientpositive/equal_ns.q | 6 +
ql/src/test/queries/clientpositive/escape2.q | 30 +-
.../queries/clientpositive/explainanalyze_1.q | 1 +
.../queries/clientpositive/explainanalyze_2.q | 2 +
.../queries/clientpositive/explainanalyze_3.q | 2 +
.../queries/clientpositive/explainanalyze_4.q | 2 +
.../queries/clientpositive/explainanalyze_5.q | 2 +
.../test/queries/clientpositive/explainuser_3.q | 1 +
.../test/queries/clientpositive/explainuser_4.q | 6 +
.../filter_cond_pushdown_HIVE_15647.q | 24 +
.../groupby_grouping_sets_grouping.q | 89 +
.../clientpositive/index_auto_mult_tables.q | 2 +-
.../index_auto_mult_tables_compact.q | 2 +-
ql/src/test/queries/clientpositive/input19.q | 2 +-
.../clientpositive/insert_overwrite_directory.q | 6 +-
ql/src/test/queries/clientpositive/join31.q | 1 +
ql/src/test/queries/clientpositive/join46.q | 275 +
.../queries/clientpositive/join_emit_interval.q | 31 +
.../limit_partition_metadataonly.q | 1 +
.../queries/clientpositive/limit_pushdown2.q | 18 +
.../queries/clientpositive/limit_pushdown3.q | 3 +-
ql/src/test/queries/clientpositive/llap_stats.q | 26 +
ql/src/test/queries/clientpositive/llap_text.q | 91 +
ql/src/test/queries/clientpositive/mapjoin3.q | 55 +
ql/src/test/queries/clientpositive/mapjoin46.q | 264 +
.../clientpositive/mapjoin_emit_interval.q | 32 +
.../materialized_view_create_rewrite.q | 59 +
.../materialized_view_create_rewrite_multi_db.q | 40 +
.../clientpositive/metadata_empty_table.q | 22 +
.../test/queries/clientpositive/metadataonly1.q | 1 +
.../test/queries/clientpositive/multiMapJoin2.q | 1 +
.../clientpositive/multi_count_distinct_null.q | 45 +
.../queries/clientpositive/multi_insert_gby4.q | 26 +
.../clientpositive/multi_insert_with_join2.q | 29 +-
.../clientpositive/nested_column_pruning.q | 191 +
.../clientpositive/offset_limit_ppd_optimizer.q | 4 +-
.../test/queries/clientpositive/orc_ppd_basic.q | 21 +-
.../clientpositive/orc_ppd_schema_evol_1a.q | 4 +-
.../clientpositive/orc_ppd_schema_evol_1b.q | 2 +
.../clientpositive/orc_ppd_schema_evol_2a.q | 4 +-
.../clientpositive/orc_ppd_schema_evol_2b.q | 2 +
.../clientpositive/orc_ppd_schema_evol_3a.q | 12 +-
ql/src/test/queries/clientpositive/partInit.q | 5 +
.../clientpositive/partial_column_stats.q | 9 +
.../queries/clientpositive/partition_date2.q | 2 +
.../clientpositive/partition_timestamp2.q | 1 +
.../test/queries/clientpositive/perf/query1.q | 24 +
.../test/queries/clientpositive/perf/query12.q | 12 +-
.../test/queries/clientpositive/perf/query14.q | 104 +
.../test/queries/clientpositive/perf/query16.q | 30 +
.../test/queries/clientpositive/perf/query21.q | 15 +-
.../test/queries/clientpositive/perf/query22.q | 22 +-
.../test/queries/clientpositive/perf/query23.q | 51 +
.../test/queries/clientpositive/perf/query27.q | 23 +-
.../test/queries/clientpositive/perf/query30.q | 30 +
.../test/queries/clientpositive/perf/query33.q | 73 +
.../test/queries/clientpositive/perf/query36.q | 29 +
.../test/queries/clientpositive/perf/query37.q | 16 +
.../test/queries/clientpositive/perf/query38.q | 22 +
.../test/queries/clientpositive/perf/query40.q | 28 +-
.../test/queries/clientpositive/perf/query45.q | 1 -
.../test/queries/clientpositive/perf/query5.q | 127 +
.../test/queries/clientpositive/perf/query56.q | 65 +
.../test/queries/clientpositive/perf/query6.q | 25 +
.../test/queries/clientpositive/perf/query60.q | 77 +
.../test/queries/clientpositive/perf/query67.q | 14 +-
.../test/queries/clientpositive/perf/query69.q | 46 +
.../test/queries/clientpositive/perf/query70.q | 39 +-
.../test/queries/clientpositive/perf/query72.q | 31 +-
.../test/queries/clientpositive/perf/query8.q | 107 +
.../test/queries/clientpositive/perf/query80.q | 96 +-
.../test/queries/clientpositive/perf/query81.q | 30 +
.../test/queries/clientpositive/perf/query82.q | 17 +-
.../test/queries/clientpositive/perf/query83.q | 65 +
.../test/queries/clientpositive/perf/query86.q | 25 +
.../test/queries/clientpositive/perf/query87.q | 23 +-
.../test/queries/clientpositive/perf/query98.q | 7 +-
ql/src/test/queries/clientpositive/ptf.q | 40 +-
.../clientpositive/rename_table_location.q | 2 +
ql/src/test/queries/clientpositive/row__id.q | 22 +
ql/src/test/queries/clientpositive/sample2.q | 3 +-
ql/src/test/queries/clientpositive/sample4.q | 3 +-
ql/src/test/queries/clientpositive/sample5.q | 6 +-
ql/src/test/queries/clientpositive/sample6.q | 3 +-
ql/src/test/queries/clientpositive/sample7.q | 3 +-
ql/src/test/queries/clientpositive/sample9.q | 3 +-
.../test/queries/clientpositive/serde_opencsv.q | 6 +-
ql/src/test/queries/clientpositive/setop_subq.q | 12 +
.../clientpositive/show_create_table_db_table.q | 12 +-
.../queries/clientpositive/smb_mapjoin_46.q | 240 +
.../spark_combine_equivalent_work.q | 33 +
.../spark_dynamic_partition_pruning.q | 100 +-
...spark_vectorized_dynamic_partition_pruning.q | 1 +
.../test/queries/clientpositive/specialChar.q | 30 +
ql/src/test/queries/clientpositive/sqlmerge.q | 12 +
.../clientpositive/stats_based_fetch_decision.q | 7 +-
.../clientpositive/stats_missing_warning.q | 55 +
.../queries/clientpositive/subquery_exists.q | 27 +
.../test/queries/clientpositive/subquery_in.q | 165 +-
.../queries/clientpositive/subquery_in_having.q | 47 +-
.../queries/clientpositive/subquery_multi.q | 111 +
.../clientpositive/subquery_nested_subquery.q | 4 +
.../queries/clientpositive/subquery_notexists.q | 27 +-
.../queries/clientpositive/subquery_notin.q | 167 +-
.../clientpositive/subquery_notin_having.q | 16 +
.../queries/clientpositive/subquery_null_agg.q | 22 +
.../queries/clientpositive/subquery_scalar.q | 177 +
.../clientpositive/subquery_shared_alias.q | 6 +
.../clientpositive/subquery_unqualcolumnrefs.q | 29 -
.../queries/clientpositive/temp_table_gb1.q | 2 +
.../test/queries/clientpositive/tez_nway_join.q | 29 +
ql/src/test/queries/clientpositive/tez_smb_1.q | 20 +
.../clientpositive/timestamp_date_only.q | 3 +
.../queries/clientpositive/udf_trunc_number.q | 72 +
.../queries/clientpositive/union_top_level.q | 8 +-
.../queries/clientpositive/vector_between_in.q | 24 +-
.../queries/clientpositive/vector_coalesce_3.q | 19 +
.../test/queries/clientpositive/vector_udf1.q | 57 +-
.../clientpositive/vectorized_date_funcs.q | 67 +-
.../vectorized_dynamic_semijoin_reduction.q | 43 +
.../queries/clientpositive/vectorized_join46.q | 225 +
.../clientpositive/vectorized_math_funcs.q | 16 +-
.../queries/clientpositive/vectorized_ptf.q | 36 +-
ql/src/test/queries/clientpositive/windowing.q | 38 +-
.../add_partition_with_whitelist.q.out | 8 +-
.../alter_partition_change_col_dup_col.q.out | 3 +-
.../alter_partition_change_col_nonexist.q.out | 3 +-
.../alter_partition_coltype_2columns.q.out | 12 +-
...alter_partition_coltype_invalidcolname.q.out | 12 +-
.../alter_partition_coltype_invalidtype.q.out | 12 +-
.../alter_partition_with_whitelist.q.out | 8 +-
.../alter_view_as_select_with_partition.q.out | 2 +
.../clientnegative/alter_view_failure.q.out | 2 +
.../clientnegative/alter_view_failure2.q.out | 1 +
.../clientnegative/alter_view_failure4.q.out | 1 +
.../clientnegative/alter_view_failure5.q.out | 1 +
.../clientnegative/alter_view_failure6.q.out | 1 +
.../clientnegative/alter_view_failure7.q.out | 1 +
.../clientnegative/alter_view_failure8.q.out | 6 +-
.../clientnegative/alter_view_failure9.q.out | 2 +
.../results/clientnegative/analyze_view.q.out | 2 +
.../test/results/clientnegative/archive1.q.out | 10 +-
.../test/results/clientnegative/archive2.q.out | 10 +-
.../clientnegative/archive_insert1.q.out | 10 +-
.../clientnegative/archive_insert2.q.out | 10 +-
.../clientnegative/archive_insert3.q.out | 10 +-
.../clientnegative/archive_insert4.q.out | 10 +-
.../results/clientnegative/archive_multi1.q.out | 10 +-
.../results/clientnegative/archive_multi2.q.out | 10 +-
.../results/clientnegative/archive_multi3.q.out | 10 +-
.../results/clientnegative/archive_multi4.q.out | 10 +-
.../results/clientnegative/archive_multi5.q.out | 10 +-
.../results/clientnegative/archive_multi6.q.out | 10 +-
.../results/clientnegative/archive_multi7.q.out | 10 +-
.../clientnegative/archive_partspec1.q.out | 10 +-
.../clientnegative/archive_partspec2.q.out | 10 +-
.../clientnegative/archive_partspec3.q.out | 10 +-
.../clientnegative/archive_partspec4.q.out | 10 +-
.../clientnegative/archive_partspec5.q.out | 10 +-
.../authorization_addpartition.q.out | 6 +-
.../authorization_alter_db_owner.q.out | 8 +-
.../authorization_alter_drop_ptn.q.out | 6 +-
...on_alter_table_exchange_partition_fail.q.out | 36 +-
...n_alter_table_exchange_partition_fail2.q.out | 44 +-
.../authorization_create_role_no_admin.q.out | 3 +-
.../authorization_createview.q.out | 6 +-
.../clientnegative/authorization_ctas.q.out | 6 +-
.../clientnegative/authorization_ctas2.q.out | 6 +-
.../authorization_delete_nodeletepriv.q.out | 6 +-
.../authorization_desc_table_nosel.q.out | 6 +-
.../authorization_drop_db_cascade.q.out | 12 +-
.../authorization_drop_db_empty.q.out | 12 +-
.../authorization_droppartition.q.out | 6 +-
.../authorization_export_ptn.q.out | 6 +-
.../clientnegative/authorization_fail_3.q.out | 8 +-
.../clientnegative/authorization_fail_4.q.out | 8 +-
.../clientnegative/authorization_fail_5.q.out | 8 +-
.../clientnegative/authorization_fail_6.q.out | 8 +-
.../clientnegative/authorization_fail_7.q.out | 8 +-
.../clientnegative/authorization_fail_8.q.out | 9 +-
.../authorization_grant_group.q.out | 11 +-
.../authorization_grant_table_allpriv.q.out | 17 +-
.../authorization_grant_table_dup.q.out | 18 +-
.../authorization_grant_table_fail1.q.out | 11 +-
...authorization_grant_table_fail_nogrant.q.out | 17 +-
.../clientnegative/authorization_import.q.out | 2 +-
.../authorization_import_ptn.q.out | 6 +-
.../authorization_insert_noinspriv.q.out | 6 +-
.../authorization_insert_noselectpriv.q.out | 6 +-
.../authorization_insertoverwrite_nodel.q.out | 6 +-
.../authorization_insertpart_noinspriv.q.out | 8 +-
.../clientnegative/authorization_msck.q.out | 27 +
...thorization_not_owner_alter_tab_rename.q.out | 6 +-
...rization_not_owner_alter_tab_serdeprop.q.out | 6 +-
.../authorization_not_owner_drop_tab.q.out | 6 +-
.../authorization_not_owner_drop_tab2.q.out | 6 +-
.../authorization_not_owner_drop_view.q.out | 7 +-
.../clientnegative/authorization_part.q.out | 16 +-
.../authorization_priv_current_role_neg.q.out | 29 +-
.../authorization_revoke_table_fail1.q.out | 17 +-
.../authorization_revoke_table_fail2.q.out | 23 +-
.../authorization_role_case.q.out | 3 +-
.../authorization_role_cycles1.q.out | 9 +-
.../authorization_role_cycles2.q.out | 11 +-
.../authorization_role_grant.q.out | 14 +-
.../authorization_role_grant2.q.out | 17 +-
.../authorization_role_grant_nosuchrole.q.out | 12 +-
.../authorization_role_grant_otherrole.q.out | 3 +-
.../authorization_role_grant_otheruser.q.out | 3 +-
.../authorization_rolehierarchy_privs.q.out | 22 +-
.../authorization_sba_drop_table.q.out | 3 +-
.../clientnegative/authorization_select.q.out | 6 +-
.../authorization_select_view.q.out | 7 +-
.../authorization_set_invalidconf.q.out | 6 +-
.../authorization_set_nonexistent_conf.q.out | 6 +-
.../authorization_set_role_neg1.q.out | 4 +-
.../authorization_set_role_neg2.q.out | 8 +-
.../authorization_show_columns.q.out | 6 +-
.../authorization_show_parts_nosel.q.out | 6 +-
...rization_show_role_principals_no_admin.q.out | 3 +-
.../authorization_show_roles_no_admin.q.out | 3 +-
.../authorization_table_grant_nosuchrole.q.out | 10 +-
.../clientnegative/authorization_truncate.q.out | 6 +-
.../authorization_truncate_2.q.out | 6 +-
.../authorization_update_noupdatepriv.q.out | 6 +-
.../clientnegative/authorization_view_1.q.out | 10 +-
.../clientnegative/authorization_view_2.q.out | 10 +-
.../clientnegative/authorization_view_3.q.out | 10 +-
.../clientnegative/authorization_view_4.q.out | 14 +-
.../clientnegative/authorization_view_5.q.out | 4 +
.../clientnegative/authorization_view_6.q.out | 12 +-
.../clientnegative/authorization_view_7.q.out | 12 +-
.../authorization_view_disable_cbo_1.q.out | 10 +-
.../authorization_view_disable_cbo_2.q.out | 10 +-
.../authorization_view_disable_cbo_3.q.out | 10 +-
.../authorization_view_disable_cbo_4.q.out | 14 +-
.../authorization_view_disable_cbo_5.q.out | 4 +
.../authorization_view_disable_cbo_6.q.out | 12 +-
.../authorization_view_disable_cbo_7.q.out | 12 +-
.../avro_non_nullable_union.q.out | 8 +-
.../bucket_mapjoin_mismatch1.q.out | 14 +-
.../bucket_mapjoin_wrong_table_metadata_1.q.out | 8 +-
.../bucket_mapjoin_wrong_table_metadata_2.q.out | 8 +-
.../clientnegative/char_pad_convert_fail2.q.out | 2 +-
.../cluster_tasklog_retrieval.q.out | 8 +-
.../columnstats_tbllvl_complex_type.q.out | 2 +-
.../clientnegative/compute_stats_long.q.out | 9 +-
.../create_or_replace_view1.q.out | 10 +-
.../create_or_replace_view2.q.out | 10 +-
.../create_or_replace_view4.q.out | 10 +-
.../create_or_replace_view5.q.out | 10 +-
.../create_or_replace_view6.q.out | 10 +-
.../create_or_replace_view7.q.out | 14 +-
.../create_or_replace_view8.q.out | 10 +-
.../clientnegative/create_view_failure1.q.out | 6 +-
.../clientnegative/create_view_failure10.q.out | 6 +-
.../clientnegative/create_view_failure2.q.out | 7 +-
.../clientnegative/create_view_failure4.q.out | 3 +-
.../results/clientnegative/ctasnullcol.q.out | 2 +-
.../database_create_already_exists.q.out | 6 +-
.../database_create_invalid_name.q.out | 3 +-
.../database_drop_not_empty.q.out | 6 +-
.../database_drop_not_empty_restrict.q.out | 6 +-
.../disallow_incompatible_type_change_on1.q.out | 6 +-
.../clientnegative/drop_database_cascade.q.out | 10 +-
.../clientnegative/drop_table_failure2.q.out | 4 +-
.../clientnegative/drop_view_failure1.q.out | 3 +-
.../results/clientnegative/druid_case.q.out | 7 +
.../results/clientnegative/druid_external.q.out | 7 -
.../results/clientnegative/dyn_part_max.q.out | 10 +-
.../clientnegative/dyn_part_max_per_node.q.out | 8 +-
.../dynamic_partitions_with_whitelist.q.out | 6 +-
...nge_partition_neg_incomplete_partition.q.out | 2 +-
.../exim_00_unsupported_schema.q.out | 2 +-
.../clientnegative/fs_default_name1.q.out | 2 +-
.../clientnegative/fs_default_name2.q.out | 2 +-
.../clientnegative/illegal_partition_type.q.out | 6 +-
.../insert_into_with_schema.q.out | 6 +-
.../insert_into_with_schema1.q.out | 6 +-
.../insert_into_with_schema2.q.out | 6 +-
.../insert_into_with_schema3.q.out | 6 +-
.../insert_into_with_schema4.q.out | 6 +-
.../clientnegative/insert_view_failure.q.out | 2 +
.../clientnegative/invalid_select_column.q.out | 6 +-
.../invalid_select_column_with_subquery.q.out | 6 +-
.../invalid_select_column_with_tablename.q.out | 6 +-
.../invalid_select_expression.q.out | 2 +-
.../clientnegative/invalidate_view1.q.out | 14 +-
ql/src/test/results/clientnegative/join45.q.out | 13 -
.../clientnegative/load_stored_as_dirs.q.out | 6 +-
.../clientnegative/load_view_failure.q.out | 2 +
.../clientnegative/load_wrong_fileformat.q.out | 12 +-
.../load_wrong_fileformat_rc_seq.q.out | 12 +-
.../load_wrong_fileformat_txt_seq.q.out | 12 +-
...zed_view_authorization_create_no_grant.q.out | 2 -
...ew_authorization_create_no_select_perm.q.out | 2 -
...rialized_view_authorization_drop_other.q.out | 2 -
...ized_view_authorization_no_select_perm.q.out | 2 -
.../clientnegative/materialized_view_drop.q.out | 2 -
.../materialized_view_drop2.q.out | 2 -
.../materialized_view_replace_with_view.q.out | 2 -
.../clientnegative/minimr_broken_pipe.q.out | 3 +-
.../results/clientnegative/msck_repair_1.q.out | 3 +
.../results/clientnegative/msck_repair_2.q.out | 3 +
.../results/clientnegative/msck_repair_3.q.out | 3 +
.../clientnegative/orc_replace_columns2.q.out | 8 +-
.../orc_replace_columns2_acid.q.out | 8 +-
.../clientnegative/orc_replace_columns3.q.out | 8 +-
.../orc_replace_columns3_acid.q.out | 8 +-
.../clientnegative/orc_type_promotion1.q.out | 8 +-
.../orc_type_promotion1_acid.q.out | 8 +-
.../clientnegative/orc_type_promotion2.q.out | 8 +-
.../orc_type_promotion2_acid.q.out | 8 +-
.../clientnegative/orc_type_promotion3.q.out | 8 +-
.../orc_type_promotion3_acid.q.out | 8 +-
...names_with_leading_and_trailing_spaces.q.out | 2 -
.../ptf_negative_DistributeByOrderBy.q.out | 3 +-
.../ptf_negative_PartitionBySortBy.q.out | 3 +-
.../clientnegative/ptf_window_boundaries.q.out | 2 +-
.../clientnegative/ptf_window_boundaries2.q.out | 2 +-
.../results/clientnegative/recursive_view.q.out | 12 +-
.../clientnegative/right_side_join.q.out | 3 +-
.../clientnegative/script_broken_pipe2.q.out | 3 +-
.../clientnegative/script_broken_pipe3.q.out | 3 +-
.../selectDistinctStarNeg_1.q.out | 8 +-
.../results/clientnegative/serde_regex.q.out | 3 +-
.../results/clientnegative/serde_regex2.q.out | 9 +-
.../results/clientnegative/serde_regex3.q.out | 3 +-
.../set_hiveconf_internal_variable0.q.out | 6 +-
.../set_hiveconf_internal_variable1.q.out | 6 +-
.../set_hiveconf_validation0.q.out | 6 +-
.../set_hiveconf_validation1.q.out | 6 +-
.../set_hiveconf_validation2.q.out | 6 +-
.../sortmerge_mapjoin_mismatch_1.q.out | 18 +-
.../special_character_in_tabnames_1.q.out | 7 +-
.../stats_aggregator_error_1.q.out | 16 +-
.../stats_aggregator_error_2.q.out | 14 +-
.../stats_partialscan_autogether.q.out | 10 +-
.../stats_partscan_norcfile.q.out | 8 +-
.../stats_publisher_error_1.q.out | 16 +-
.../stats_publisher_error_2.q.out | 14 +-
.../clientnegative/subquery_corr_from.q.out | 1 +
.../subquery_corr_grandparent.q.out | 1 +
.../clientnegative/subquery_corr_select.q.out | 1 +
.../subquery_exists_implicit_gby.q.out | 2 +-
.../clientnegative/subquery_in_groupby.q.out | 2 +-
.../subquery_in_implicit_gby.q.out | 38 +
.../results/clientnegative/subquery_in_on.q.out | 1 +
.../clientnegative/subquery_in_select.q.out | 2 +-
.../subquery_multiple_cols_in_select.q.out | 2 +-
.../subquery_nested_subquery.q.out | 1 -
.../subquery_notexists_implicit_gby.q.out | 2 +-
.../subquery_notin_implicit_gby.q.out | 38 +
.../subquery_scalar_implicit_gby.q.out | 1 +
.../subquery_scalar_multi_columns.q.out | 1 +
.../subquery_scalar_multi_rows.q.out | 7 +
.../subquery_subquery_chain_exists.q.out | 1 +
.../subquery_windowing_corr.q.out | 2 +-
.../clientnegative/subquery_with_or_cond.q.out | 2 +-
.../table_nonprintable_negative.q.out | 1 +
.../truncate_bucketed_column.q.out | 8 +-
.../truncate_column_indexed_table.q.out | 8 +-
.../truncate_column_list_bucketing.q.out | 8 +-
.../truncate_column_seqfile.q.out | 8 +-
.../truncate_nonexistant_column.q.out | 8 +-
.../truncate_partition_column.q.out | 8 +-
.../truncate_partition_column2.q.out | 8 +-
.../udf_sort_array_by_wrong3.q.out | 8 +-
.../clientnegative/udf_trunc_error1.q.out | 2 +-
.../clientnegative/udf_trunc_error2.q.out | 2 +-
.../clientnegative/udf_trunc_error3.q.out | 1 +
.../results/clientnegative/uniquejoin.q.out | 2 +-
.../clientnegative/unset_table_property.q.out | 1 +
.../clientnegative/unset_view_property.q.out | 1 +
.../results/clientnegative/view_delete.q.out | 3 +
.../results/clientnegative/view_update.q.out | 3 +
.../test/results/clientpositive/acid_join.q.out | 10 +-
.../results/clientpositive/acid_mapjoin.q.out | 4 -
.../results/clientpositive/acid_subquery.q.out | 100 +
.../clientpositive/acid_table_stats.q.out | 6 +-
.../clientpositive/acid_vectorization.q.out | 4 -
.../results/clientpositive/add_part_exist.q.out | 6 +-
.../clientpositive/add_part_multiple.q.out | 8 +-
.../add_partition_no_whitelist.q.out | 8 +-
.../add_partition_with_whitelist.q.out | 8 +-
.../clientpositive/alias_casted_column.q.out | 12 +-
.../clientpositive/allcolref_in_udf.q.out | 20 +-
ql/src/test/results/clientpositive/alter1.q.out | 14 +-
ql/src/test/results/clientpositive/alter2.q.out | 14 +-
ql/src/test/results/clientpositive/alter3.q.out | 14 +-
ql/src/test/results/clientpositive/alter4.q.out | 14 +-
ql/src/test/results/clientpositive/alter5.q.out | 38 +-
.../results/clientpositive/alter_char1.q.out | 50 +-
.../results/clientpositive/alter_char2.q.out | 6 +-
.../clientpositive/alter_file_format.q.out | 12 +-
...lter_numbuckets_partitioned_table2_h23.q.out | 58 +-
...alter_numbuckets_partitioned_table_h23.q.out | 54 +-
.../alter_partition_change_col.q.out | 56 +-
.../alter_partition_clusterby_sortby.q.out | 32 +-
.../alter_partition_coltype.q.out | 82 +-
.../alter_partition_format_loc.q.out | 6 +-
.../alter_partition_with_whitelist.q.out | 8 +-
.../clientpositive/alter_rename_partition.q.out | 20 +-
.../alter_rename_partition_authorization.q.out | 14 +-
.../clientpositive/alter_skewed_table.q.out | 3 +
.../alter_table_add_partition.q.out | 2 -
.../clientpositive/alter_table_cascade.q.out | 88 +-
.../clientpositive/alter_table_not_sorted.q.out | 1 +
.../alter_table_partition_drop.q.out | 2 -
.../clientpositive/alter_table_serde.q.out | 20 +-
.../clientpositive/alter_table_serde2.q.out | 18 +-
.../alter_table_stats_status.q.out | 572 ++
.../alter_table_update_status.q.out | 88 +-
.../results/clientpositive/alter_varchar1.q.out | 50 +-
.../results/clientpositive/alter_varchar2.q.out | 6 +-
.../clientpositive/alter_view_as_select.q.out | 7 +
.../clientpositive/alter_view_rename.q.out | 3 +
.../results/clientpositive/ambiguitycheck.q.out | 12 +-
.../results/clientpositive/ambiguous_col.q.out | 18 +-
.../analyze_table_null_partition.q.out | 20 +-
.../clientpositive/analyze_tbl_date.q.out | 101 +
.../clientpositive/analyze_tbl_part.q.out | 8 +-
.../clientpositive/annotate_stats_filter.q.out | 166 +-
.../clientpositive/annotate_stats_groupby.q.out | 414 +-
.../annotate_stats_groupby2.q.out | 142 +-
.../clientpositive/annotate_stats_join.q.out | 98 +-
.../annotate_stats_join_pkfk.q.out | 179 +-
.../clientpositive/annotate_stats_limit.q.out | 26 +-
.../clientpositive/annotate_stats_part.q.out | 130 +-
.../clientpositive/annotate_stats_select.q.out | 226 +-
.../clientpositive/annotate_stats_table.q.out | 78 +-
.../clientpositive/annotate_stats_union.q.out | 36 +-
.../clientpositive/ansi_sql_arithmetic.q.out | 16 +-
.../results/clientpositive/archive_multi.q.out | 8 +-
.../clientpositive/authorization_1.q.out | 68 +-
.../authorization_1_sql_std.q.out | 36 +-
.../clientpositive/authorization_3.q.out | 8 +-
.../clientpositive/authorization_4.q.out | 8 +-
.../clientpositive/authorization_5.q.out | 8 +-
.../clientpositive/authorization_6.q.out | 14 +-
.../clientpositive/authorization_8.q.out | 3 +
.../clientpositive/authorization_9.q.out | 8 +-
.../authorization_admin_almighty1.q.out | 8 +-
.../authorization_admin_almighty2.q.out | 6 +-
...ization_alter_table_exchange_partition.q.out | 44 +-
.../authorization_cli_createtab.q.out | 11 +-
...authorization_cli_createtab_noauthzapi.q.out | 9 +-
.../authorization_cli_nonsql.q.out | 8 +-
.../authorization_cli_stdconfigauth.q.out | 10 +-
.../authorization_create_func1.q.out | 6 +-
.../authorization_create_macro1.q.out | 6 +-
...authorization_create_table_owner_privs.q.out | 8 +-
...ation_default_create_table_owner_privs.q.out | 6 +-
.../clientpositive/authorization_delete.q.out | 14 +-
.../authorization_grant_option_role.q.out | 26 +-
.../authorization_grant_public_role.q.out | 22 +-
.../authorization_grant_table_priv.q.out | 56 +-
.../clientpositive/authorization_insert.q.out | 14 +-
.../clientpositive/authorization_load.q.out | 14 +-
.../authorization_owner_actions.q.out | 7 +-
.../authorization_owner_actions_db.q.out | 20 +-
.../clientpositive/authorization_parts.q.out | 6 +-
.../authorization_revoke_table_priv.q.out | 84 +-
.../authorization_role_grant1.q.out | 46 +-
.../authorization_role_grant2.q.out | 44 +-
.../authorization_show_grant.q.out | 26 +-
.../clientpositive/authorization_update.q.out | 14 +-
.../clientpositive/authorization_view_1.q.out | 22 +-
.../clientpositive/authorization_view_2.q.out | 12 +-
.../clientpositive/authorization_view_3.q.out | 12 +-
.../clientpositive/authorization_view_4.q.out | 12 +-
.../authorization_view_disable_cbo_1.q.out | 30 +-
.../authorization_view_disable_cbo_2.q.out | 12 +-
.../authorization_view_disable_cbo_3.q.out | 12 +-
.../authorization_view_disable_cbo_4.q.out | 12 +-
.../clientpositive/autoColumnStats_5.q.out | 30 +-
.../clientpositive/autoColumnStats_7.q.out | 6 +-
.../clientpositive/autoColumnStats_8.q.out | 23 +-
.../clientpositive/autoColumnStats_9.q.out | 8 +-
.../results/clientpositive/auto_join0.q.out | 8 +-
.../results/clientpositive/auto_join1.q.out | 8 +-
.../results/clientpositive/auto_join14.q.out | 8 +-
.../results/clientpositive/auto_join21.q.out | 8 +-
.../results/clientpositive/auto_join23.q.out | 8 +-
.../results/clientpositive/auto_join25.q.out | 6 +-
.../results/clientpositive/auto_join26.q.out | 8 +-
.../results/clientpositive/auto_join29.q.out | 8 +-
.../results/clientpositive/auto_join32.q.out | 18 +-
.../results/clientpositive/auto_join33.q.out | 8 +-
.../auto_join_reordering_values.q.out | 25 +-
.../clientpositive/auto_join_stats.q.out | 10 +-
.../clientpositive/auto_join_stats2.q.out | 10 +-
.../auto_join_without_localtask.q.out | 6 +-
.../clientpositive/auto_sortmerge_join_1.q.out | 44 +-
.../clientpositive/auto_sortmerge_join_10.q.out | 12 +-
.../clientpositive/auto_sortmerge_join_11.q.out | 64 +-
.../clientpositive/auto_sortmerge_join_12.q.out | 22 +-
.../clientpositive/auto_sortmerge_join_13.q.out | 83 +-
.../clientpositive/auto_sortmerge_join_14.q.out | 12 +-
.../clientpositive/auto_sortmerge_join_2.q.out | 44 +-
.../clientpositive/auto_sortmerge_join_3.q.out | 36 +-
.../clientpositive/auto_sortmerge_join_4.q.out | 36 +-
.../clientpositive/auto_sortmerge_join_5.q.out | 32 +-
.../clientpositive/auto_sortmerge_join_7.q.out | 48 +-
.../clientpositive/autogen_colalias.q.out | 38 +-
.../clientpositive/avro_add_column.q.out | 10 +-
.../clientpositive/avro_add_column2.q.out | 10 +-
.../clientpositive/avro_add_column3.q.out | 10 +-
.../clientpositive/avro_change_schema.q.out | 6 +-
.../results/clientpositive/avro_comments.q.out | 6 +-
.../avro_compression_enabled.q.out | 8 +-
.../avro_compression_enabled_native.q.out | 8 +-
.../avro_deserialize_map_null.q.out | 18 +-
.../clientpositive/avro_evolved_schemas.q.out | 10 +-
.../results/clientpositive/avro_joins.q.out | 12 +-
.../clientpositive/avro_joins_native.q.out | 12 +-
.../results/clientpositive/avro_native.q.out | 10 +-
.../clientpositive/avro_nullable_fields.q.out | 10 +-
.../clientpositive/avro_nullable_union.q.out | 16 +-
.../clientpositive/avro_partitioned.q.out | 62 +-
.../avro_partitioned_native.q.out | 26 +-
.../clientpositive/avro_sanity_test.q.out | 10 +-
.../avro_schema_evolution_native.q.out | 26 +-
.../results/clientpositive/avro_timestamp.q.out | 10 +-
.../clientpositive/avro_type_evolution.q.out | 10 +-
.../results/clientpositive/avrotblsjoin.q.out | 82 +
.../test/results/clientpositive/ba_table1.q.out | 16 +-
.../test/results/clientpositive/ba_table2.q.out | 16 +-
.../test/results/clientpositive/ba_table3.q.out | 8 +-
.../results/clientpositive/ba_table_udfs.q.out | 22 +-
.../results/clientpositive/ba_table_union.q.out | 6 +-
.../clientpositive/binary_output_format.q.out | 28 +-
.../binary_table_bincolserde.q.out | 8 +-
.../clientpositive/binary_table_colserde.q.out | 8 +-
.../test/results/clientpositive/bucket1.q.out | 12 +-
.../test/results/clientpositive/bucket2.q.out | 12 +-
.../test/results/clientpositive/bucket3.q.out | 12 +-
.../clientpositive/bucket_map_join_1.q.out | 14 +-
.../clientpositive/bucket_map_join_2.q.out | 14 +-
.../clientpositive/bucket_map_join_spark1.q.out | 16 +
.../clientpositive/bucket_map_join_spark2.q.out | 16 +
.../clientpositive/bucket_map_join_spark3.q.out | 16 +
.../clientpositive/bucket_map_join_spark4.q.out | 20 +-
.../clientpositive/bucket_num_reducers.q.out | 10 +-
.../clientpositive/bucket_num_reducers2.q.out | 10 +-
.../clientpositive/bucketcontext_1.q.out | 16 +-
.../clientpositive/bucketcontext_2.q.out | 16 +-
.../clientpositive/bucketcontext_3.q.out | 14 +-
.../clientpositive/bucketcontext_4.q.out | 14 +-
.../clientpositive/bucketcontext_5.q.out | 10 +-
.../clientpositive/bucketcontext_6.q.out | 14 +-
.../clientpositive/bucketcontext_7.q.out | 18 +-
.../clientpositive/bucketcontext_8.q.out | 18 +-
.../clientpositive/bucketmapjoin10.q.out | 16 +-
.../clientpositive/bucketmapjoin11.q.out | 26 +-
.../clientpositive/bucketmapjoin12.q.out | 24 +-
.../clientpositive/bucketmapjoin13.q.out | 70 +-
.../results/clientpositive/bucketmapjoin5.q.out | 24 +
.../results/clientpositive/bucketmapjoin8.q.out | 24 +-
.../results/clientpositive/bucketmapjoin9.q.out | 24 +-
.../clientpositive/bucketmapjoin_negative.q.out | 12 +
.../bucketmapjoin_negative2.q.out | 14 +
.../bucketmapjoin_negative3.q.out | 30 +-
.../bucketsortoptimize_insert_1.q.out | 32 +-
.../bucketsortoptimize_insert_3.q.out | 24 +-
.../bucketsortoptimize_insert_4.q.out | 22 +-
.../bucketsortoptimize_insert_5.q.out | 20 +-
.../bucketsortoptimize_insert_8.q.out | 22 +-
.../clientpositive/cast_on_constant.q.out | 36 +
.../results/clientpositive/cast_to_int.q.out | 6 +-
.../test/results/clientpositive/cbo_const.q.out | 2 +
.../results/clientpositive/cbo_gby_empty.q.out | 6 +-
.../cbo_rp_annotate_stats_groupby.q.out | 222 +-
.../clientpositive/cbo_rp_auto_join1.q.out | 155 +-
.../cbo_rp_cross_product_check_2.q.out | 8 +-
.../cbo_rp_gby2_map_multi_distinct.q.out | 16 +-
.../clientpositive/cbo_rp_gby_empty.q.out | 6 +-
.../results/clientpositive/cbo_rp_insert.q.out | 14 +-
.../results/clientpositive/cbo_rp_join0.q.out | 14 +-
.../clientpositive/cbo_rp_lineage2.q.out | 2 -
.../clientpositive/cbo_rp_outer_join_ppr.q.out | 24 +-
.../clientpositive/cbo_rp_simple_select.q.out | 36 +-
.../results/clientpositive/cbo_rp_stats.q.out | 6 +-
.../clientpositive/cbo_rp_subq_exists.q.out | 34 +-
.../cbo_rp_udaf_percentile_approx_23.q.out | 34 +-
.../clientpositive/cbo_rp_udf_percentile.q.out | 28 +-
.../clientpositive/cbo_rp_udf_percentile2.q.out | 10 +-
.../results/clientpositive/cbo_rp_union.q.out | 10 +-
.../clientpositive/cbo_rp_windowing.q.out | 10 +-
.../clientpositive/cbo_rp_windowing_2.q.out | 357 +-
.../clientpositive/cbo_simple_select.q.out | 36 +-
.../test/results/clientpositive/cbo_stats.q.out | 6 +-
.../clientpositive/cbo_subq_exists.q.out | 36 +-
.../results/clientpositive/cbo_udf_max.q.out | 2 +
.../test/results/clientpositive/cbo_union.q.out | 10 +-
.../results/clientpositive/cbo_union_view.q.out | 2 +
.../results/clientpositive/cbo_windowing.q.out | 10 +-
ql/src/test/results/clientpositive/char_1.q.out | 38 +-
ql/src/test/results/clientpositive/char_2.q.out | 12 +-
.../test/results/clientpositive/char_cast.q.out | 18 +-
.../clientpositive/char_comparison.q.out | 30 +-
.../results/clientpositive/char_join1.q.out | 26 +-
.../clientpositive/char_nested_types.q.out | 30 +-
.../clientpositive/char_pad_convert.q.out | 22 +-
.../results/clientpositive/char_serde.q.out | 60 +-
.../test/results/clientpositive/char_udf1.q.out | 28 +-
.../results/clientpositive/char_union1.q.out | 18 +-
.../columnStatsUpdateForStatsOptimizer_1.q.out | 8 -
.../columnStatsUpdateForStatsOptimizer_2.q.out | 79 +-
...names_with_leading_and_trailing_spaces.q.out | 4 -
.../columnarserde_create_shortcut.q.out | 8 +-
.../clientpositive/columnstats_partlvl.q.out | 4 +
.../clientpositive/columnstats_partlvl_dp.q.out | 30 +-
.../clientpositive/columnstats_tbllvl.q.out | 4 +
.../test/results/clientpositive/combine1.q.out | 8 +-
.../test/results/clientpositive/combine2.q.out | 34 +-
.../clientpositive/comma_in_column_name.q.out | 56 +
.../results/clientpositive/compustat_avro.q.out | 8 +-
.../clientpositive/compute_stats_binary.q.out | 12 +-
.../clientpositive/compute_stats_boolean.q.out | 12 +-
.../clientpositive/compute_stats_date.q.out | 18 +-
.../clientpositive/compute_stats_decimal.q.out | 12 +-
.../clientpositive/compute_stats_double.q.out | 12 +-
.../compute_stats_empty_table.q.out | 6 +-
.../clientpositive/compute_stats_long.q.out | 12 +-
.../clientpositive/compute_stats_string.q.out | 12 +-
.../test/results/clientpositive/concat_op.q.out | 27 +-
.../test/results/clientpositive/constGby.q.out | 176 +
.../clientpositive/constantPropWhen.q.out | 2 -
.../constantPropagateForSubQuery.q.out | 12 +-
.../clientpositive/constant_prop_3.q.out | 131 +-
.../clientpositive/constantfolding.q.out | 28 +-
.../clientpositive/constprog_partitioner.q.out | 134 +-
.../clientpositive/constprog_semijoin.q.out | 6 -
.../clientpositive/convert_enum_to_string.q.out | 8 +-
.../clientpositive/correlationoptimizer10.q.out | 54 +-
.../clientpositive/correlationoptimizer11.q.out | 34 +-
.../clientpositive/correlationoptimizer12.q.out | 6 +-
.../clientpositive/correlationoptimizer13.q.out | 12 +-
.../clientpositive/correlationoptimizer14.q.out | 64 +-
.../clientpositive/correlationoptimizer15.q.out | 14 +-
.../clientpositive/correlationoptimizer5.q.out | 24 +-
.../clientpositive/correlationoptimizer7.q.out | 24 +-
.../clientpositive/correlationoptimizer8.q.out | 56 +-
.../clientpositive/correlationoptimizer9.q.out | 14 +-
.../create_alter_list_bucketing_table1.q.out | 59 +-
.../clientpositive/create_big_view.q.out | 243 +-
.../results/clientpositive/create_func1.q.out | 34 +-
.../results/clientpositive/create_like.q.out | 1 +
.../results/clientpositive/create_like2.q.out | 10 +-
.../clientpositive/create_like_tbl_props.q.out | 42 +-
.../clientpositive/create_like_view.q.out | 18 +-
.../clientpositive/create_or_replace_view.q.out | 35 +-
.../results/clientpositive/create_udaf.q.out | 6 +-
.../results/clientpositive/create_view.q.out | 218 +-
.../create_view_defaultformats.q.out | 6 +
.../create_view_partitioned.q.out | 58 +-
.../clientpositive/create_view_translate.q.out | 16 +-
.../results/clientpositive/cross_join.q.out | 18 +-
.../clientpositive/cross_join_merge.q.out | 6 +-
.../clientpositive/cross_product_check_1.q.out | 8 +-
.../clientpositive/cross_product_check_2.q.out | 8 +-
ql/src/test/results/clientpositive/ctas.q.out | 10 +-
.../test/results/clientpositive/ctas_char.q.out | 14 +-
.../results/clientpositive/ctas_colname.q.out | 40 +-
.../test/results/clientpositive/ctas_date.q.out | 22 +-
.../ctas_uses_database_location.q.out | 12 +-
.../ctas_uses_table_location.q.out | 12 +
.../results/clientpositive/ctas_varchar.q.out | 14 +-
.../test/results/clientpositive/cteViews.q.out | 13 +-
ql/src/test/results/clientpositive/cte_1.q.out | 18 +-
ql/src/test/results/clientpositive/cte_2.q.out | 42 +-
ql/src/test/results/clientpositive/cte_3.q.out | 12 +-
ql/src/test/results/clientpositive/cte_4.q.out | 38 +-
ql/src/test/results/clientpositive/cte_5.q.out | 2 -
ql/src/test/results/clientpositive/cte_6.q.out | 8 +-
ql/src/test/results/clientpositive/cte_7.q.out | 2 -
.../test/results/clientpositive/cte_mat_4.q.out | 2 -
.../test/results/clientpositive/cte_mat_5.q.out | 2 -
.../custom_input_output_format.q.out | 8 +-
.../results/clientpositive/database_drop.q.out | 64 +-
ql/src/test/results/clientpositive/date_1.q.out | 18 +-
ql/src/test/results/clientpositive/date_4.q.out | 6 +-
.../clientpositive/date_comparison.q.out | 12 +-
.../results/clientpositive/date_join1.q.out | 14 +-
.../results/clientpositive/date_serde.q.out | 60 +-
.../test/results/clientpositive/date_udf.q.out | 58 +-
.../results/clientpositive/dbtxnmgr_ddl1.q.out | 1 +
.../clientpositive/dbtxnmgr_query5.q.out | 1 +
.../clientpositive/dbtxnmgr_showlocks.q.out | 34 +-
.../test/results/clientpositive/decimal_2.q.out | 4 +-
.../results/clientpositive/decimal_join.q.out | 10 +-
.../clientpositive/decimal_precision.q.out | 256 +-
.../results/clientpositive/decimal_udf.q.out | 376 +-
.../results/clientpositive/deleteAnalyze.q.out | 2 -
.../describe_comment_indent.q.out | 8 +-
.../describe_comment_nonascii.q.out | 9 +-
.../describe_formatted_view_partitioned.q.out | 1 +
...scribe_formatted_view_partitioned_json.q.out | 1 +
.../clientpositive/describe_pretty.q.out | 40 +-
.../clientpositive/describe_syntax.q.out | 42 +-
.../results/clientpositive/describe_xpath.q.out | 36 +-
.../diff_part_input_formats.q.out | 10 +-
.../disallow_incompatible_type_change_off.q.out | 6 +-
.../display_colstats_tbllvl.q.out | 2 +
.../clientpositive/distinct_windowing.q.out | 8 +-
.../distinct_windowing_no_cbo.q.out | 8 +-
.../results/clientpositive/driverhook.q.out | 16 +-
.../drop_database_removes_partition_dirs.q.out | 10 +-
.../drop_index_removes_partition_dirs.q.out | 10 +-
.../drop_table_removes_partition_dirs.q.out | 10 +-
.../clientpositive/drop_table_with_stats.q.out | 8 +-
.../results/clientpositive/druid_basic1.q.out | 6 +-
.../results/clientpositive/druid_basic2.q.out | 38 +-
.../clientpositive/druid_intervals.q.out | 48 +-
.../clientpositive/druid_timeseries.q.out | 78 +-
.../results/clientpositive/druid_topn.q.out | 48 +-
.../dynamic_partition_skip_default.q.out | 8 +
.../clientpositive/dynamic_rdd_cache.q.out | 24 +-
.../dynpart_sort_opt_bucketing.q.out | 6 +-
.../dynpart_sort_optimization_acid.q.out | 10 -
.../encrypted/encryption_ctas.q.out | 4 +-
.../encrypted/encryption_drop_partition.q.out | 2 -
.../encrypted/encryption_drop_view.q.out | 2 +
.../encryption_insert_partition_dynamic.q.out | 36 +-
.../encryption_insert_partition_static.q.out | 36 +-
.../encrypted/encryption_insert_values.q.out | 16 +-
.../encryption_join_unencrypted_tbl.q.out | 12 +-
...cryption_load_data_to_encrypted_tables.q.out | 6 +-
.../encrypted/encryption_move_tbl.q.out | 28 +-
...ryption_select_read_only_encrypted_tbl.q.out | 8 +-
...ption_select_read_only_unencrypted_tbl.q.out | 8 +-
...on_unencrypted_nonhdfs_external_tables.q.out | 10 +-
.../test/results/clientpositive/equal_ns.q.out | 29 +
.../test/results/clientpositive/escape3.q.out | 18 +-
.../clientpositive/escape_clusterby1.q.out | 6 +-
.../clientpositive/escape_comments.q.out | 7 +-
.../results/clientpositive/escape_crlf.q.out | 18 +-
.../clientpositive/escape_distributeby1.q.out | 6 +-
.../clientpositive/escape_orderby1.q.out | 6 +-
.../results/clientpositive/escape_sortby1.q.out | 6 +-
.../results/clientpositive/except_all.q.out | 8 -
.../clientpositive/exchange_partition3.q.out | 6 +-
...t_parentpath_has_inaccessible_children.q.out | 10 +-
.../results/clientpositive/explain_ddl.q.out | 13 +-
.../clientpositive/explain_dependency.q.out | 44 +-
.../clientpositive/explain_dependency2.q.out | 60 +-
.../clientpositive/explain_logical.q.out | 44 +-
.../clientpositive/explain_rearrange.q.out | 40 +-
.../results/clientpositive/expr_cached.q.out | 6 +-
.../test/results/clientpositive/extract.q.out | 6 +-
.../extrapolate_part_stats_date.q.out | 16 +-
.../extrapolate_part_stats_full.q.out | 38 +-
.../extrapolate_part_stats_partial.q.out | 90 +-
.../filter_cond_pushdown_HIVE_15647.q.out | 372 +
.../clientpositive/filter_join_breaktask.q.out | 15 +-
.../clientpositive/filter_join_breaktask2.q.out | 8 +-
.../results/clientpositive/filter_numeric.q.out | 8 +-
.../results/clientpositive/floor_time.q.out | 6 +-
.../clientpositive/folder_predicate.q.out | 2 -
.../clientpositive/fouter_join_ppr.q.out | 40 +-
.../test/results/clientpositive/groupby1.q.out | 8 +-
.../test/results/clientpositive/groupby10.q.out | 16 +-
.../test/results/clientpositive/groupby11.q.out | 8 +-
.../results/clientpositive/groupby1_limit.q.out | 8 +-
.../results/clientpositive/groupby1_map.q.out | 8 +-
.../clientpositive/groupby1_map_nomap.q.out | 8 +-
.../clientpositive/groupby1_map_skew.q.out | 8 +-
.../clientpositive/groupby1_noskew.q.out | 8 +-
.../results/clientpositive/groupby2_map.q.out | 8 +-
.../groupby2_map_multi_distinct.q.out | 16 +-
.../clientpositive/groupby2_noskew.q.out | 8 +-
.../groupby2_noskew_multi_distinct.q.out | 8 +-
.../test/results/clientpositive/groupby4.q.out | 8 +-
.../clientpositive/groupby4_noskew.q.out | 8 +-
.../test/results/clientpositive/groupby5.q.out | 8 +-
.../clientpositive/groupby5_noskew.q.out | 8 +-
.../test/results/clientpositive/groupby6.q.out | 8 +-
.../results/clientpositive/groupby6_map.q.out | 8 +-
.../clientpositive/groupby6_map_skew.q.out | 8 +-
.../clientpositive/groupby6_noskew.q.out | 8 +-
.../test/results/clientpositive/groupby7.q.out | 8 +-
.../results/clientpositive/groupby7_map.q.out | 8 +-
.../groupby7_map_multi_single_reducer.q.out | 8 +-
.../clientpositive/groupby7_map_skew.q.out | 8 +-
.../clientpositive/groupby7_noskew.q.out | 8 +-
.../groupby7_noskew_multi_single_reducer.q.out | 8 +-
.../test/results/clientpositive/groupby8.q.out | 8 +-
.../results/clientpositive/groupby8_map.q.out | 8 +-
.../clientpositive/groupby8_map_skew.q.out | 8 +-
.../clientpositive/groupby8_noskew.q.out | 8 +-
.../test/results/clientpositive/groupby9.q.out | 8 +-
.../clientpositive/groupby_complex_types.q.out | 8 +-
...pby_complex_types_multi_single_reducer.q.out | 8 +-
.../results/clientpositive/groupby_cube1.q.out | 82 +-
.../clientpositive/groupby_cube_multi_gby.q.out | 18 +-
.../groupby_distinct_samekey.q.out | 16 +-
.../clientpositive/groupby_grouping_id3.q.out | 8 +-
.../clientpositive/groupby_grouping_sets2.q.out | 38 +-
.../clientpositive/groupby_grouping_sets3.q.out | 54 +-
.../clientpositive/groupby_grouping_sets4.q.out | 74 +-
.../clientpositive/groupby_grouping_sets5.q.out | 44 +-
.../clientpositive/groupby_grouping_sets6.q.out | 28 +-
.../groupby_grouping_sets_grouping.q.out | 767 ++
.../groupby_grouping_sets_limit.q.out | 48 +-
.../groupby_grouping_window.q.out | 8 +-
.../clientpositive/groupby_map_ppr.q.out | 14 +-
.../groupby_map_ppr_multi_distinct.q.out | 14 +-
.../groupby_multi_insert_common_distinct.q.out | 8 +-
.../groupby_multi_single_reducer.q.out | 8 +-
.../groupby_multi_single_reducer2.q.out | 8 +-
.../groupby_multi_single_reducer3.q.out | 12 +-
.../clientpositive/groupby_nullvalues.q.out | 2 -
.../clientpositive/groupby_position.q.out | 16 +-
.../results/clientpositive/groupby_ppd.q.out | 6 +-
.../results/clientpositive/groupby_ppr.q.out | 14 +-
.../groupby_ppr_multi_distinct.q.out | 20 +-
.../clientpositive/groupby_rollup1.q.out | 64 +-
.../clientpositive/groupby_sort_10.q.out | 34 +-
.../clientpositive/groupby_sort_11.q.out | 42 +-
.../clientpositive/groupby_sort_1_23.q.out | 284 +-
.../results/clientpositive/groupby_sort_2.q.out | 22 +-
.../results/clientpositive/groupby_sort_3.q.out | 26 +-
.../results/clientpositive/groupby_sort_4.q.out | 30 +-
.../results/clientpositive/groupby_sort_5.q.out | 58 +-
.../results/clientpositive/groupby_sort_6.q.out | 36 +-
.../results/clientpositive/groupby_sort_7.q.out | 24 +-
.../results/clientpositive/groupby_sort_8.q.out | 16 +-
.../results/clientpositive/groupby_sort_9.q.out | 14 +-
.../clientpositive/groupby_sort_skew_1_23.q.out | 305 +-
.../clientpositive/groupby_sort_test_1.q.out | 14 +-
ql/src/test/results/clientpositive/having.q.out | 6 +-
.../clientpositive/implicit_decimal.q.out | 2 -
.../results/clientpositive/index_auto.q.out | 21 +-
.../clientpositive/index_auto_empty.q.out | 26 +-
.../clientpositive/index_auto_file_format.q.out | 8 +-
.../clientpositive/index_auto_mult_tables.q.out | 20 +-
.../index_auto_mult_tables_compact.q.out | 26 +-
.../clientpositive/index_auto_multiple.q.out | 10 +-
.../clientpositive/index_auto_partitioned.q.out | 8 +-
.../clientpositive/index_auto_self_join.q.out | 10 +-
.../clientpositive/index_auto_unused.q.out | 40 +-
.../clientpositive/index_auto_update.q.out | 28 +-
.../results/clientpositive/index_bitmap.q.out | 8 +-
.../results/clientpositive/index_bitmap1.q.out | 8 +-
.../results/clientpositive/index_bitmap2.q.out | 8 +-
.../results/clientpositive/index_bitmap3.q.out | 8 +-
.../clientpositive/index_bitmap_auto.q.out | 24 +-
.../index_bitmap_auto_partitioned.q.out | 10 +-
.../index_bitmap_compression.q.out | 14 +-
.../clientpositive/index_bitmap_rc.q.out | 8 +-
.../results/clientpositive/index_compact.q.out | 8 +-
.../clientpositive/index_compact_1.q.out | 8 +-
.../clientpositive/index_compact_2.q.out | 8 +-
.../clientpositive/index_compact_3.q.out | 8 +-
.../clientpositive/index_compression.q.out | 14 +-
.../results/clientpositive/index_in_db.q.out | 10 +-
.../results/clientpositive/index_serde.q.out | 16 +-
.../clientpositive/index_skewtable.q.out | 22 +-
.../results/clientpositive/index_stale.q.out | 26 +-
.../index_stale_partitioned.q.out | 28 +-
.../clientpositive/infer_bucket_sort.q.out | 164 +-
.../infer_bucket_sort_convert_join.q.out | 28 +-
.../infer_bucket_sort_dyn_part.q.out | 52 +-
.../infer_bucket_sort_grouping_operators.q.out | 78 +-
.../infer_bucket_sort_list_bucket.q.out | 34 +-
.../infer_bucket_sort_map_operators.q.out | 36 +-
.../infer_bucket_sort_merge.q.out | 24 +-
.../infer_bucket_sort_multi_insert.q.out | 44 +-
.../infer_bucket_sort_num_buckets.q.out | 30 +-
.../infer_bucket_sort_reducers_power_two.q.out | 50 +-
.../clientpositive/infer_const_type.q.out | 16 +-
.../clientpositive/infer_join_preds.q.out | 8 +-
.../test/results/clientpositive/init_file.q.out | 10 +-
.../test/results/clientpositive/innerjoin.q.out | 16 +-
.../results/clientpositive/input11_limit.q.out | 8 +-
.../test/results/clientpositive/input12.q.out | 8 +-
.../test/results/clientpositive/input14.q.out | 8 +-
.../test/results/clientpositive/input16.q.out | 6 +-
.../test/results/clientpositive/input17.q.out | 8 +-
.../test/results/clientpositive/input18.q.out | 8 +-
.../test/results/clientpositive/input19.q.out | 4 +-
.../results/clientpositive/input1_limit.q.out | 8 +-
.../test/results/clientpositive/input23.q.out | 2 +
.../test/results/clientpositive/input39.q.out | 10 +-
.../test/results/clientpositive/input40.q.out | 8 +-
.../test/results/clientpositive/input42.q.out | 20 +-
.../clientpositive/input_lazyserde.q.out | 8 +-
.../results/clientpositive/input_part1.q.out | 10 +
.../results/clientpositive/input_part10.q.out | 10 +-
.../results/clientpositive/input_part2.q.out | 28 +-
.../results/clientpositive/input_part7.q.out | 4 +
.../results/clientpositive/input_part9.q.out | 12 +-
.../test/results/clientpositive/inputddl4.q.out | 8 +-
.../test/results/clientpositive/inputddl5.q.out | 8 +-
.../test/results/clientpositive/inputddl6.q.out | 10 +-
.../test/results/clientpositive/inputddl7.q.out | 12 +-
.../test/results/clientpositive/insert1.q.out | 20 +-
.../test/results/clientpositive/insert2.q.out | 8 +-
.../results/clientpositive/insert_into1.q.out | 10 +-
.../results/clientpositive/insert_into2.q.out | 2 -
.../results/clientpositive/insert_into4.q.out | 8 +-
.../insert_into_with_schema.q.out | 12 -
.../insert_into_with_schema2.q.out | 20 +-
.../insert_nonacid_from_acid.q.out | 12 +-
.../insert_overwrite_directory.q.out | 8 +-
.../insert_values_acid_not_bucketed.q.out | 2 -
.../insert_values_dynamic_partitioned.q.out | 2 -
.../insert_values_non_partitioned.q.out | 2 -
.../clientpositive/insert_values_nonascii.q.out | 2 -
.../insert_values_orig_table.q.out | 2 -
.../insert_values_orig_table_use_metadata.q.out | 8 -
.../insert_values_partitioned.q.out | 2 -
.../insert_values_tmp_table.q.out | 2 -
.../clientpositive/insertoverwrite_bucket.q.out | 6 -
.../clientpositive/insertvalues_espchars.q.out | 2 -
.../results/clientpositive/interval_1.q.out | 12 +-
.../results/clientpositive/interval_2.q.out | 20 +-
.../results/clientpositive/interval_3.q.out | 12 +-
.../results/clientpositive/interval_alt.q.out | 8 +-
.../clientpositive/interval_arithmetic.q.out | 12 +-
.../clientpositive/interval_comparison.q.out | 24 +-
ql/src/test/results/clientpositive/join0.q.out | 8 +-
ql/src/test/results/clientpositive/join10.q.out | 8 +-
ql/src/test/results/clientpositive/join11.q.out | 8 +-
ql/src/test/results/clientpositive/join12.q.out | 8 +-
ql/src/test/results/clientpositive/join13.q.out | 8 +-
ql/src/test/results/clientpositive/join14.q.out | 10 +-
ql/src/test/results/clientpositive/join15.q.out | 8 +-
ql/src/test/results/clientpositive/join17.q.out | 12 +-
ql/src/test/results/clientpositive/join18.q.out | 8 +-
.../clientpositive/join18_multi_distinct.q.out | 8 +-
ql/src/test/results/clientpositive/join19.q.out | 8 +-
ql/src/test/results/clientpositive/join2.q.out | 8 +-
ql/src/test/results/clientpositive/join20.q.out | 8 +-
ql/src/test/results/clientpositive/join21.q.out | 8 +-
ql/src/test/results/clientpositive/join23.q.out | 8 +-
ql/src/test/results/clientpositive/join25.q.out | 8 +-
ql/src/test/results/clientpositive/join26.q.out | 18 +-
ql/src/test/results/clientpositive/join27.q.out | 8 +-
ql/src/test/results/clientpositive/join28.q.out | 16 +-
ql/src/test/results/clientpositive/join29.q.out | 16 +-
ql/src/test/results/clientpositive/join3.q.out | 8 +-
ql/src/test/results/clientpositive/join30.q.out | 8 +-
ql/src/test/results/clientpositive/join31.q.out | 204 +-
ql/src/test/results/clientpositive/join32.q.out | 24 +-
ql/src/test/results/clientpositive/join33.q.out | 24 +-
ql/src/test/results/clientpositive/join34.q.out | 23 +-
ql/src/test/results/clientpositive/join35.q.out | 31 +-
ql/src/test/results/clientpositive/join36.q.out | 8 +-
ql/src/test/results/clientpositive/join37.q.out | 8 +-
ql/src/test/results/clientpositive/join39.q.out | 8 +-
ql/src/test/results/clientpositive/join4.q.out | 8 +-
ql/src/test/results/clientpositive/join40.q.out | 8 +-
ql/src/test/results/clientpositive/join41.q.out | 6 +-
ql/src/test/results/clientpositive/join42.q.out | 10 +-
ql/src/test/results/clientpositive/join43.q.out | 32 -
ql/src/test/results/clientpositive/join44.q.out | 8 +-
ql/src/test/results/clientpositive/join45.q.out | 84 +-
ql/src/test/results/clientpositive/join46.q.out | 2004 ++++
ql/src/test/results/clientpositive/join5.q.out | 8 +-
ql/src/test/results/clientpositive/join6.q.out | 8 +-
ql/src/test/results/clientpositive/join7.q.out | 8 +-
ql/src/test/results/clientpositive/join8.q.out | 8 +-
ql/src/test/results/clientpositive/join9.q.out | 14 +-
.../test/results/clientpositive/join_1to1.q.out | 8 +-
.../clientpositive/join_acid_non_acid.q.out | 4 -
.../results/clientpositive/join_array.q.out | 8 +-
.../clientpositive/join_casesensitive.q.out | 8 +-
.../join_cond_pushdown_unqual5.q.out | 10 +-
.../clientpositive/join_emit_interval.q.out | 223 +
.../clientpositive/join_filters_overlap.q.out | 50 +-
.../results/clientpositive/join_literals.q.out | 8 +-
.../results/clientpositive/join_map_ppr.q.out | 28 +-
.../join_merge_multi_expressions.q.out | 6 +-
.../clientpositive/join_on_varchar.q.out | 8 +-
.../test/results/clientpositive/join_rc.q.out | 8 +-
.../results/clientpositive/join_reorder.q.out | 8 +-
.../results/clientpositive/join_thrift.q.out | 8 +-
.../test/results/clientpositive/join_vc.q.out | 12 +-
.../test/results/clientpositive/join_view.q.out | 11 +-
.../test/results/clientpositive/keyword_1.q.out | 8 +-
.../clientpositive/lateral_view_cp.q.out | 12 +-
.../clientpositive/lateral_view_noalias.q.out | 14 +-
.../clientpositive/lateral_view_onview.q.out | 28 +-
.../clientpositive/lateral_view_outer.q.out | 12 +-
.../clientpositive/lateral_view_ppd.q.out | 6 +-
.../results/clientpositive/lb_fs_stats.q.out | 12 +-
.../test/results/clientpositive/leadlag.q.out | 72 +-
.../clientpositive/leadlag_queries.q.out | 30 +-
.../results/clientpositive/leftsemijoin.q.out | 8 +-
.../limit_partition_metadataonly.q.out | 8 +-
.../clientpositive/limit_pushdown2.q.out | 260 +-
.../limit_pushdown_negative.q.out | 24 +-
.../test/results/clientpositive/lineage2.q.out | 2 -
.../clientpositive/list_bucket_dml_1.q.out | 40 +-
.../clientpositive/list_bucket_dml_11.q.out | 36 +-
.../clientpositive/list_bucket_dml_12.q.out | 36 +-
.../clientpositive/list_bucket_dml_13.q.out | 34 +-
.../clientpositive/list_bucket_dml_14.q.out | 38 +-
.../clientpositive/list_bucket_dml_2.q.out | 74 +-
.../clientpositive/list_bucket_dml_3.q.out | 40 +-
.../clientpositive/list_bucket_dml_4.q.out | 90 +-
.../clientpositive/list_bucket_dml_5.q.out | 44 +-
.../clientpositive/list_bucket_dml_6.q.out | 138 +-
.../clientpositive/list_bucket_dml_7.q.out | 86 +-
.../clientpositive/list_bucket_dml_8.q.out | 124 +-
.../clientpositive/list_bucket_dml_9.q.out | 90 +-
.../list_bucket_query_multiskew_1.q.out | 96 +-
.../list_bucket_query_multiskew_2.q.out | 86 +-
.../list_bucket_query_multiskew_3.q.out | 76 +-
.../list_bucket_query_oneskew_1.q.out | 89 +-
.../list_bucket_query_oneskew_2.q.out | 121 +-
.../list_bucket_query_oneskew_3.q.out | 79 +-
.../llap/acid_bucket_pruning.q.out | 36 +-
.../clientpositive/llap/acid_globallimit.q.out | 6 +-
.../llap/acid_vectorization.q.out | 2 -
.../clientpositive/llap/authorization_2.q.out | 34 +-
.../clientpositive/llap/auto_join0.q.out | 10 +-
.../clientpositive/llap/auto_join1.q.out | 8 +-
.../clientpositive/llap/auto_join21.q.out | 8 +-
.../clientpositive/llap/auto_join29.q.out | 8 +-
.../clientpositive/llap/auto_join30.q.out | 16 +-
.../llap/auto_smb_mapjoin_14.q.out | 246 +-
.../llap/auto_sortmerge_join_1.q.out | 38 +-
.../llap/auto_sortmerge_join_10.q.out | 16 +-
.../llap/auto_sortmerge_join_11.q.out | 68 +-
.../llap/auto_sortmerge_join_12.q.out | 20 +-
.../llap/auto_sortmerge_join_13.q.out | 140 +-
.../llap/auto_sortmerge_join_14.q.out | 16 +-
.../llap/auto_sortmerge_join_15.q.out | 4 +-
.../llap/auto_sortmerge_join_16.q.out | 8 +-
.../llap/auto_sortmerge_join_2.q.out | 34 +-
.../llap/auto_sortmerge_join_3.q.out | 36 +-
.../llap/auto_sortmerge_join_4.q.out | 36 +-
.../llap/auto_sortmerge_join_5.q.out | 36 +-
.../llap/auto_sortmerge_join_6.q.out | 100 +-
.../llap/auto_sortmerge_join_7.q.out | 42 +-
.../llap/auto_sortmerge_join_8.q.out | 48 +-
.../llap/auto_sortmerge_join_9.q.out | 242 +-
.../results/clientpositive/llap/bucket2.q.out | 14 +-
.../results/clientpositive/llap/bucket3.q.out | 14 +-
.../results/clientpositive/llap/bucket4.q.out | 4 +
.../results/clientpositive/llap/bucket5.q.out | 34 +-
.../clientpositive/llap/bucket_groupby.q.out | 42 +-
.../clientpositive/llap/bucket_many.q.out | 10 +-
.../llap/bucket_map_join_tez1.q.out | 36 +-
.../llap/bucketizedhiveinputformat.q.out | 24 +-
.../clientpositive/llap/bucketmapjoin1.q.out | 18 +-
.../clientpositive/llap/bucketmapjoin2.q.out | 26 +-
.../clientpositive/llap/bucketmapjoin3.q.out | 12 +
.../clientpositive/llap/bucketmapjoin4.q.out | 12 +
.../clientpositive/llap/bucketmapjoin6.q.out | 8 +-
.../clientpositive/llap/bucketmapjoin7.q.out | 12 +-
.../clientpositive/llap/bucketpruning1.q.out | 46 +-
.../llap/bucketsortoptimize_insert_2.q.out | 48 +-
.../llap/bucketsortoptimize_insert_6.q.out | 62 +-
.../llap/bucketsortoptimize_insert_7.q.out | 26 +-
.../results/clientpositive/llap/cbo_gby.q.out | 10 +-
.../clientpositive/llap/cbo_gby_empty.q.out | 6 +-
.../results/clientpositive/llap/cbo_join.q.out | 14 +-
.../results/clientpositive/llap/cbo_limit.q.out | 6 +-
.../clientpositive/llap/cbo_rp_gby.q.out | 10 +-
.../clientpositive/llap/cbo_rp_join.q.out | 14 +-
.../clientpositive/llap/cbo_rp_limit.q.out | 6 +-
.../clientpositive/llap/cbo_rp_lineage2.q.out | 2 -
.../clientpositive/llap/cbo_rp_semijoin.q.out | 6 +-
.../clientpositive/llap/cbo_rp_subq_in.q.out | 48 +-
.../llap/cbo_rp_subq_not_in.q.out | 48 +-
.../clientpositive/llap/cbo_rp_udf_udaf.q.out | 10 +-
.../llap/cbo_rp_udf_udaf_stats_opt.q.out | 10 +-
.../llap/cbo_rp_unionDistinct_2.q.out | 20 +-
.../clientpositive/llap/cbo_rp_views.q.out | 15 +-
.../llap/cbo_rp_windowing_2.q.out | 640 +-
.../clientpositive/llap/cbo_semijoin.q.out | 6 +-
.../clientpositive/llap/cbo_simple_select.q.out | 36 +-
.../results/clientpositive/llap/cbo_stats.q.out | 6 +-
.../clientpositive/llap/cbo_subq_exists.q.out | 36 +-
.../clientpositive/llap/cbo_subq_in.q.out | 48 +-
.../clientpositive/llap/cbo_subq_not_in.q.out | 82 +-
.../clientpositive/llap/cbo_udf_udaf.q.out | 10 +-
.../results/clientpositive/llap/cbo_union.q.out | 10 +-
.../results/clientpositive/llap/cbo_views.q.out | 15 +-
.../clientpositive/llap/cbo_windowing.q.out | 10 +-
.../columnStatsUpdateForStatsOptimizer_1.q.out | 20 +-
.../llap/column_access_stats.q.out | 32 +-
...names_with_leading_and_trailing_spaces.q.out | 4 -
.../llap/columnstats_part_coltype.q.out | 24 +-
.../clientpositive/llap/constprog_dpp.q.out | 4 +-
.../llap/constprog_semijoin.q.out | 6 -
.../llap/correlationoptimizer1.q.out | 148 +-
.../llap/correlationoptimizer2.q.out | 80 +-
.../llap/correlationoptimizer3.q.out | 42 +-
.../llap/correlationoptimizer4.q.out | 84 +-
.../llap/correlationoptimizer6.q.out | 102 +-
.../results/clientpositive/llap/count.q.out | 30 +-
.../clientpositive/llap/cross_join.q.out | 22 +-
.../llap/cross_product_check_1.q.out | 20 +-
.../llap/cross_product_check_2.q.out | 8 +-
.../test/results/clientpositive/llap/ctas.q.out | 10 +-
.../results/clientpositive/llap/cte_1.q.out | 18 +-
.../results/clientpositive/llap/cte_2.q.out | 42 +-
.../results/clientpositive/llap/cte_3.q.out | 12 +-
.../results/clientpositive/llap/cte_4.q.out | 38 +-
.../results/clientpositive/llap/cte_5.q.out | 12 +-
.../results/clientpositive/llap/cte_mat_1.q.out | 10 +-
.../results/clientpositive/llap/cte_mat_2.q.out | 10 +-
.../results/clientpositive/llap/cte_mat_4.q.out | 2 -
.../results/clientpositive/llap/cte_mat_5.q.out | 2 -
.../llap/current_date_timestamp.q.out | 48 +-
.../llap/custom_input_output_format.q.out | 8 +-
.../results/clientpositive/llap/database.q.out | 242 +-
.../clientpositive/llap/deleteAnalyze.q.out | 2 -
.../llap/disable_merge_for_bucketing.q.out | 6 +-
.../llap/drop_partition_with_stats.q.out | 8 +-
.../llap/dynamic_partition_pruning.q.out | 682 +-
.../llap/dynamic_partition_pruning_2.q.out | 10 +-
.../llap/dynamic_semijoin_reduction.q.out | 1809 ++++
.../llap/dynpart_sort_opt_vectorization.q.out | 54 +-
.../llap/dynpart_sort_optimization.q.out | 56 +-
.../llap/dynpart_sort_optimization2.q.out | 28 +-
.../llap/dynpart_sort_optimization_acid.q.out | 58 +-
.../results/clientpositive/llap/escape1.q.out | Bin 54831 -> 44317 bytes
.../results/clientpositive/llap/escape2.q.out | Bin 78516 -> 60186 bytes
.../clientpositive/llap/except_distinct.q.out | 8 -
.../clientpositive/llap/explainuser_1.q.out | 1400 ++-
.../clientpositive/llap/explainuser_2.q.out | 1347 +--
.../clientpositive/llap/explainuser_4.q.out | 61 +-
.../extrapolate_part_stats_partial_ndv.q.out | 38 +
.../llap/filter_join_breaktask.q.out | 14 +-
.../llap/filter_join_breaktask2.q.out | 8 +-
.../clientpositive/llap/global_limit.q.out | 48 +-
.../results/clientpositive/llap/groupby1.q.out | 8 +-
.../results/clientpositive/llap/groupby2.q.out | 8 +-
.../results/clientpositive/llap/groupby3.q.out | 2 +-
.../llap/groupby_grouping_id2.q.out | 8 +-
.../llap/groupby_resolution.q.out | 30 +-
.../results/clientpositive/llap/having.q.out | 6 +-
.../llap/hybridgrace_hashjoin_1.q.out | 116 +-
.../llap/hybridgrace_hashjoin_2.q.out | 52 +-
.../llap/infer_bucket_sort_bucketed_table.q.out | 24 +-
.../clientpositive/llap/input16_cc.q.out | 10 +-
.../results/clientpositive/llap/insert1.q.out | 20 +-
.../clientpositive/llap/insert_dir_distcp.q.out | 5 -
.../clientpositive/llap/insert_into1.q.out | 12 +-
.../clientpositive/llap/insert_into2.q.out | 4 +-
.../llap/insert_into_with_schema.q.out | 114 +-
.../llap/insert_values_acid_not_bucketed.q.out | 2 -
.../insert_values_dynamic_partitioned.q.out | 2 -
.../llap/insert_values_non_partitioned.q.out | 2 -
.../llap/insert_values_orig_table.q.out | 2 -
.../llap/insert_values_partitioned.q.out | 2 -
.../llap/insert_values_tmp_table.q.out | 2 -
.../clientpositive/llap/intersect_all.q.out | 4 -
.../llap/intersect_distinct.q.out | 4 -
.../clientpositive/llap/intersect_merge.q.out | 4 -
.../results/clientpositive/llap/join0.q.out | 10 +-
.../results/clientpositive/llap/join1.q.out | 8 +-
.../clientpositive/llap/join32_lessSize.q.out | 52 +-
.../results/clientpositive/llap/join43.q.out | 32 -
.../results/clientpositive/llap/join46.q.out | 2260 +++++
.../llap/join_acid_non_acid.q.out | 4 -
.../llap/join_emit_interval.q.out | 251 +
.../clientpositive/llap/join_filters.q.out | 8 +-
.../clientpositive/llap/join_nulls.q.out | 8 +-
.../clientpositive/llap/join_nullsafe.q.out | 44 +-
.../clientpositive/llap/lateral_view.q.out | 24 +-
.../clientpositive/llap/leftsemijoin.q.out | 8 +-
.../clientpositive/llap/leftsemijoin_mr.q.out | 8 +-
.../llap/limit_join_transpose.q.out | 16 +-
.../clientpositive/llap/limit_pushdown.q.out | 68 +-
.../clientpositive/llap/limit_pushdown3.q.out | 54 +-
.../results/clientpositive/llap/lineage2.q.out | 28 +-
.../results/clientpositive/llap/lineage3.q.out | 24 +-
.../llap/list_bucket_dml_10.q.out | 48 +-
.../clientpositive/llap/llap_nullscan.q.out | 8 +-
.../clientpositive/llap/llap_partitioned.q.out | 2 +-
.../clientpositive/llap/llap_stats.q.out | 192 +
.../results/clientpositive/llap/llap_udf.q.out | 26 +-
.../clientpositive/llap/llapdecider.q.out | 14 +-
.../clientpositive/llap/load_dyn_part1.q.out | 8 +-
.../clientpositive/llap/load_dyn_part2.q.out | 10 +-
.../clientpositive/llap/load_dyn_part3.q.out | 8 +-
.../results/clientpositive/llap/load_fs2.q.out | 10 +-
.../clientpositive/llap/lvj_mapjoin.q.out | 8 +-
.../results/clientpositive/llap/mapjoin2.q.out | 4 -
.../results/clientpositive/llap/mapjoin3.q.out | 200 +
.../results/clientpositive/llap/mapjoin46.q.out | 2061 ++++
.../clientpositive/llap/mapjoin_decimal.q.out | 8 +-
.../llap/mapjoin_emit_interval.q.out | 239 +
.../clientpositive/llap/mapjoin_mapjoin.q.out | 24 +-
.../clientpositive/llap/mapreduce2.q.out | 2 +-
.../results/clientpositive/llap/merge1.q.out | 8 +-
.../results/clientpositive/llap/merge2.q.out | 8 +-
.../results/clientpositive/llap/mergejoin.q.out | 551 +-
.../llap/metadata_only_queries.q.out | 10 +-
.../clientpositive/llap/metadataonly1.q.out | 92 +-
.../test/results/clientpositive/llap/mrr.q.out | 34 +-
.../clientpositive/llap/multiMapJoin1.q.out | 66 +-
.../clientpositive/llap/multiMapJoin2.q.out | 324 +-
.../clientpositive/llap/multi_column_in.q.out | 5 +-
.../llap/multi_column_in_single.q.out | 5 +-
.../llap/multi_count_distinct_null.q.out | 312 +
.../clientpositive/llap/multi_insert.q.out | 8 +-
.../llap/multi_insert_lateral_view.q.out | 74 +-
.../llap/nonmr_fetch_threshold.q.out | 24 +-
.../llap/offset_limit_ppd_optimizer.q.out | 73 +-
.../clientpositive/llap/optimize_nullscan.q.out | 66 +-
.../clientpositive/llap/orc_analyze.q.out | 52 +-
.../clientpositive/llap/orc_create.q.out | 38 +-
.../results/clientpositive/llap/orc_llap.q.out | 138 +-
.../clientpositive/llap/orc_llap_counters.q.out | 250 +-
.../llap/orc_llap_counters1.q.out | 21 +-
.../clientpositive/llap/orc_merge1.q.out | 32 +-
.../clientpositive/llap/orc_merge10.q.out | 44 +-
.../clientpositive/llap/orc_merge11.q.out | 6 +-
.../clientpositive/llap/orc_merge5.q.out | 38 +-
.../clientpositive/llap/orc_merge6.q.out | 40 +-
.../clientpositive/llap/orc_merge7.q.out | 42 +-
.../clientpositive/llap/orc_merge9.q.out | 8 +-
.../clientpositive/llap/orc_merge_diff_fs.q.out | 32 +-
.../llap/orc_merge_incompat1.q.out | 26 +-
.../llap/orc_merge_incompat2.q.out | 12 +-
.../clientpositive/llap/orc_ppd_basic.q.out | 474 +-
.../clientpositive/llap/orc_ppd_date.q.out | 6 +-
.../clientpositive/llap/orc_ppd_decimal.q.out | 6 +-
.../llap/orc_ppd_schema_evol_3a.q.out | 302 +-
.../clientpositive/llap/orc_ppd_timestamp.q.out | 6 +-
.../clientpositive/llap/orc_ppd_varchar.q.out | 6 +-
.../llap/orc_predicate_pushdown.q.out | 148 +-
.../llap/orc_split_elimination.q.out | 256 +-
.../clientpositive/llap/order_null.q.out | 12 -
.../results/clientpositive/llap/parallel.q.out | 8 +-
.../llap/parquet_predicate_pushdown.q.out | 30 +-
.../clientpositive/llap/parquet_types.q.out | 8 +-
.../llap/partition_multilevels.q.out | 72 +-
.../clientpositive/llap/ppd_union_view.q.out | 16 +-
.../test/results/clientpositive/llap/ptf.q.out | 429 +-
.../clientpositive/llap/ptf_matchpath.q.out | 22 +-
.../clientpositive/llap/ptf_streaming.q.out | 96 +-
.../llap/reduce_deduplicate.q.out | 6 +
.../llap/reduce_deduplicate_extended.q.out | 68 +-
.../results/clientpositive/llap/sample1.q.out | 10 +-
.../results/clientpositive/llap/sample10.q.out | 16 +-
.../schema_evol_orc_acid_mapwork_part.q.out | 122 -
.../schema_evol_orc_acid_mapwork_table.q.out | 122 -
.../llap/schema_evol_orc_acid_part.q.out | 272 +-
.../llap/schema_evol_orc_acid_part_update.q.out | 110 +-
.../llap/schema_evol_orc_acid_table.q.out | 274 +-
.../schema_evol_orc_acid_table_update.q.out | 96 +-
.../schema_evol_orc_acidvec_mapwork_part.q.out | 122 -
.../schema_evol_orc_acidvec_mapwork_table.q.out | 122 -
.../llap/schema_evol_orc_acidvec_part.q.out | 272 +-
.../schema_evol_orc_acidvec_part_update.q.out | 96 +-
.../llap/schema_evol_orc_acidvec_table.q.out | 274 +-
.../schema_evol_orc_acidvec_table_update.q.out | 96 +-
.../schema_evol_orc_nonvec_fetchwork_part.q.out | 104 -
...schema_evol_orc_nonvec_fetchwork_table.q.out | 104 -
.../schema_evol_orc_nonvec_mapwork_part.q.out | 104 -
...ol_orc_nonvec_mapwork_part_all_complex.q.out | 2 -
..._orc_nonvec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_orc_nonvec_mapwork_table.q.out | 104 -
.../llap/schema_evol_orc_nonvec_part.q.out | 268 +-
...chema_evol_orc_nonvec_part_all_complex.q.out | 66 +-
...ema_evol_orc_nonvec_part_all_primitive.q.out | 122 +-
.../llap/schema_evol_orc_nonvec_table.q.out | 290 +-
.../llap/schema_evol_orc_vec_mapwork_part.q.out | 104 -
..._evol_orc_vec_mapwork_part_all_complex.q.out | 2 -
...vol_orc_vec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_orc_vec_mapwork_table.q.out | 104 -
.../llap/schema_evol_orc_vec_part.q.out | 268 +-
.../schema_evol_orc_vec_part_all_complex.q.out | 66 +-
...schema_evol_orc_vec_part_all_primitive.q.out | 122 +-
.../llap/schema_evol_orc_vec_table.q.out | 290 +-
.../clientpositive/llap/schema_evol_stats.q.out | 20 +-
.../schema_evol_text_nonvec_mapwork_part.q.out | 104 -
...l_text_nonvec_mapwork_part_all_complex.q.out | 2 -
...text_nonvec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_text_nonvec_mapwork_table.q.out | 104 -
.../llap/schema_evol_text_nonvec_part.q.out | 268 +-
...hema_evol_text_nonvec_part_all_complex.q.out | 66 +-
...ma_evol_text_nonvec_part_all_primitive.q.out | 126 +-
.../llap/schema_evol_text_nonvec_table.q.out | 290 +-
.../schema_evol_text_vec_mapwork_part.q.out | 104 -
...evol_text_vec_mapwork_part_all_complex.q.out | 2 -
...ol_text_vec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_text_vec_mapwork_table.q.out | 104 -
.../llap/schema_evol_text_vec_part.q.out | 282 +-
.../schema_evol_text_vec_part_all_complex.q.out | 70 +-
...chema_evol_text_vec_part_all_primitive.q.out | 140 +-
.../llap/schema_evol_text_vec_table.q.out | 304 +-
.../schema_evol_text_vecrow_mapwork_part.q.out | 104 -
...l_text_vecrow_mapwork_part_all_complex.q.out | 2 -
...text_vecrow_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_text_vecrow_mapwork_table.q.out | 104 -
.../llap/schema_evol_text_vecrow_part.q.out | 282 +-
...hema_evol_text_vecrow_part_all_complex.q.out | 72 +-
...ma_evol_text_vecrow_part_all_primitive.q.out | 140 +-
.../llap/schema_evol_text_vecrow_table.q.out | 304 +-
.../clientpositive/llap/script_env_var1.q.out | 8 +-
.../clientpositive/llap/script_env_var2.q.out | 6 +-
.../clientpositive/llap/script_pipe.q.out | 12 +-
.../llap/selectDistinctStar.q.out | 24 +-
.../llap/select_dummy_source.q.out | 18 +-
.../results/clientpositive/llap/semijoin.q.out | 8 +-
.../results/clientpositive/llap/skewjoin.q.out | 18 +-
.../clientpositive/llap/skewjoinopt15.q.out | 42 +-
.../clientpositive/llap/skiphf_aggr.q.out | 12 -
.../clientpositive/llap/smb_mapjoin_14.q.out | 116 +-
.../clientpositive/llap/smb_mapjoin_15.q.out | 62 +-
.../clientpositive/llap/smb_mapjoin_17.q.out | 32 +-
.../clientpositive/llap/smb_mapjoin_18.q.out | 24 +-
.../clientpositive/llap/smb_mapjoin_19.q.out | 14 +-
.../clientpositive/llap/smb_mapjoin_4.q.out | 8 +-
.../clientpositive/llap/smb_mapjoin_5.q.out | 8 +-
.../llap/special_character_in_tabnames_1.q.out | 371 +-
.../results/clientpositive/llap/sqlmerge.q.out | 268 +
.../results/clientpositive/llap/stats11.q.out | 12 +
.../llap/stats_based_fetch_decision.q.out | 44 +-
.../clientpositive/llap/stats_noscan_1.q.out | 28 +-
.../clientpositive/llap/stats_only_null.q.out | 4 +-
.../clientpositive/llap/subquery_exists.q.out | 1017 +-
.../clientpositive/llap/subquery_in.q.out | 6621 +++++++++++-
.../clientpositive/llap/subquery_multi.q.out | 5623 +++++++++++
.../llap/subquery_nested_subquery.q.out | 38 +
.../clientpositive/llap/subquery_notin.q.out | 9482 +++++++++++++++++-
.../clientpositive/llap/subquery_null_agg.q.out | 200 +
.../clientpositive/llap/subquery_scalar.q.out | 7304 ++++++++++++++
.../llap/subquery_shared_alias.q.out | 23 +
.../clientpositive/llap/subquery_views.q.out | 666 +-
.../llap/table_access_keys_stats.q.out | 71 +-
.../llap/table_nonprintable.q.out | 2 +
.../llap/temp_table_external.q.out | 6 +-
.../results/clientpositive/llap/tez_dml.q.out | 34 +-
.../llap/tez_dynpart_hashjoin_1.q.out | 16 +-
.../llap/tez_dynpart_hashjoin_2.q.out | 22 +-
.../llap/tez_dynpart_hashjoin_3.q.out | 4 +-
.../clientpositive/llap/tez_join_hash.q.out | 10 +-
.../llap/tez_join_result_complex.q.out | 24 +-
.../clientpositive/llap/tez_join_tests.q.out | 8 +-
.../clientpositive/llap/tez_joins_explain.q.out | 6 +-
.../clientpositive/llap/tez_multi_union.q.out | 6 +-
.../clientpositive/llap/tez_nway_join.q.out | 501 +
.../llap/tez_schema_evolution.q.out | 8 +-
.../clientpositive/llap/tez_self_join.q.out | 6 +-
.../results/clientpositive/llap/tez_smb_1.q.out | 169 +-
.../clientpositive/llap/tez_smb_empty.q.out | 18 +-
.../clientpositive/llap/tez_smb_main.q.out | 20 +-
.../results/clientpositive/llap/tez_union.q.out | 4 +-
.../llap/tez_union_dynamic_partition.q.out | 2 -
.../llap/tez_union_multiinsert.q.out | 236 +-
.../llap/tez_vector_dynpart_hashjoin_1.q.out | 16 +-
.../llap/tez_vector_dynpart_hashjoin_2.q.out | 22 +-
.../clientpositive/llap/transform2.q.out | 6 +-
.../clientpositive/llap/transform_ppr1.q.out | 8 +-
.../clientpositive/llap/transform_ppr2.q.out | 8 +-
.../clientpositive/llap/uber_reduce.q.out | 10 +-
.../llap/udaf_collect_set_2.q.out | 128 +-
.../results/clientpositive/llap/union2.q.out | 12 +-
.../results/clientpositive/llap/union3.q.out | 16 +-
.../results/clientpositive/llap/union4.q.out | 18 +-
.../results/clientpositive/llap/union5.q.out | 14 +-
.../results/clientpositive/llap/union6.q.out | 14 +-
.../results/clientpositive/llap/union7.q.out | 12 +-
.../results/clientpositive/llap/union8.q.out | 10 +-
.../results/clientpositive/llap/union9.q.out | 12 +-
.../clientpositive/llap/unionDistinct_1.q.out | 624 +-
.../clientpositive/llap/unionDistinct_2.q.out | 20 +-
.../clientpositive/llap/union_remove_26.q.out | 44 +-
.../clientpositive/llap/union_stats.q.out | 4 +
.../clientpositive/llap/union_top_level.q.out | 107 +-
.../llap/update_after_multiple_inserts.q.out | 12 +-
.../clientpositive/llap/update_all_types.q.out | 8 +-
.../clientpositive/llap/varchar_udf1.q.out | 18 +-
.../clientpositive/llap/vector_acid3.q.out | 2 -
.../llap/vector_adaptor_usage_mode.q.out | 10 +-
.../llap/vector_aggregate_9.q.out | 10 +-
.../llap/vector_aggregate_without_gby.q.out | 8 +-
.../llap/vector_auto_smb_mapjoin_14.q.out | 248 +-
.../llap/vector_between_columns.q.out | 12 +-
.../clientpositive/llap/vector_between_in.q.out | 110 +-
.../llap/vector_binary_join_groupby.q.out | 20 +-
.../clientpositive/llap/vector_bround.q.out | 2 -
.../clientpositive/llap/vector_bucket.q.out | 4 +-
.../llap/vector_cast_constant.q.out | 6 +-
.../clientpositive/llap/vector_char_2.q.out | 12 +-
.../clientpositive/llap/vector_char_cast.q.out | 2 -
.../llap/vector_char_mapjoin1.q.out | 42 +-
.../llap/vector_char_simple.q.out | 24 +-
.../clientpositive/llap/vector_coalesce.q.out | 12 +-
.../clientpositive/llap/vector_coalesce_2.q.out | 2 -
.../clientpositive/llap/vector_coalesce_3.q.out | 123 +
.../llap/vector_complex_all.q.out | 8 +-
.../llap/vector_complex_join.q.out | 14 +-
.../clientpositive/llap/vector_count.q.out | 8 +-
.../llap/vector_count_distinct.q.out | 18 +-
.../clientpositive/llap/vector_data_types.q.out | 6 +-
.../clientpositive/llap/vector_date_1.q.out | 30 +-
.../clientpositive/llap/vector_decimal_2.q.out | 26 +-
.../llap/vector_decimal_aggregate.q.out | 16 +-
.../llap/vector_decimal_expressions.q.out | 34 +-
.../llap/vector_decimal_mapjoin.q.out | 8 +-
.../llap/vector_decimal_math_funcs.q.out | 24 +-
.../llap/vector_decimal_precision.q.out | 250 +-
.../llap/vector_decimal_round.q.out | 6 -
.../llap/vector_decimal_round_2.q.out | 30 +-
.../llap/vector_decimal_udf.q.out | 384 +-
.../clientpositive/llap/vector_distinct_2.q.out | 8 +-
.../clientpositive/llap/vector_groupby4.q.out | 8 +-
.../clientpositive/llap/vector_groupby6.q.out | 8 +-
.../clientpositive/llap/vector_groupby_3.q.out | 8 +-
.../llap/vector_groupby_mapjoin.q.out | 76 +-
.../llap/vector_grouping_sets.q.out | 36 +-
.../llap/vector_include_no_sel.q.out | 24 +-
.../clientpositive/llap/vector_inner_join.q.out | 8 -
.../clientpositive/llap/vector_interval_1.q.out | 46 +-
.../clientpositive/llap/vector_interval_2.q.out | 20 +-
.../llap/vector_interval_arithmetic.q.out | 26 +-
.../clientpositive/llap/vector_join30.q.out | 32 +-
.../llap/vector_join_filters.q.out | 8 +-
.../clientpositive/llap/vector_join_nulls.q.out | 8 +-
.../llap/vector_join_part_col_char.q.out | 2 -
.../llap/vector_left_outer_join.q.out | 2 +-
.../llap/vector_left_outer_join2.q.out | 8 +-
.../llap/vector_leftsemi_mapjoin.q.out | 8 +-
.../llap/vector_mapjoin_reduce.q.out | 347 +-
.../llap/vector_mr_diff_schema_alias.q.out | 10 +-
.../llap/vector_null_projection.q.out | 18 +-
.../llap/vector_nullsafe_join.q.out | 62 +-
.../llap/vector_number_compare_projection.q.out | 172 +-
.../llap/vector_outer_join0.q.out | 20 +-
.../llap/vector_outer_join1.q.out | 32 +-
.../llap/vector_outer_join2.q.out | 16 +-
.../llap/vector_outer_join3.q.out | 36 +-
.../llap/vector_outer_join4.q.out | 32 +-
.../llap/vector_outer_join5.q.out | 28 +-
.../llap/vector_outer_join6.q.out | 8 +-
.../llap/vector_partition_diff_num_cols.q.out | 46 +-
.../llap/vector_partitioned_date_time.q.out | 16 +-
.../clientpositive/llap/vector_reduce1.q.out | 8 +-
.../clientpositive/llap/vector_reduce2.q.out | 8 +-
.../clientpositive/llap/vector_reduce3.q.out | 8 +-
.../llap/vector_string_concat.q.out | 14 +-
.../clientpositive/llap/vector_struct_in.q.out | 36 +-
.../clientpositive/llap/vector_udf1.q.out | 494 +-
.../llap/vector_varchar_mapjoin1.q.out | 18 +-
.../llap/vector_varchar_simple.q.out | 24 +-
.../llap/vector_when_case_null.q.out | 10 +-
.../clientpositive/llap/vectorization_0.q.out | 52 +-
.../clientpositive/llap/vectorization_1.q.out | 8 +-
.../clientpositive/llap/vectorization_10.q.out | 8 +-
.../clientpositive/llap/vectorization_11.q.out | 8 +-
.../clientpositive/llap/vectorization_12.q.out | 8 +-
.../clientpositive/llap/vectorization_13.q.out | 14 +-
.../clientpositive/llap/vectorization_14.q.out | 8 +-
.../clientpositive/llap/vectorization_15.q.out | 8 +-
.../clientpositive/llap/vectorization_16.q.out | 1054 +-
.../clientpositive/llap/vectorization_17.q.out | 8 +-
.../clientpositive/llap/vectorization_2.q.out | 8 +-
.../clientpositive/llap/vectorization_3.q.out | 8 +-
.../clientpositive/llap/vectorization_4.q.out | 8 +-
.../clientpositive/llap/vectorization_5.q.out | 8 +-
.../clientpositive/llap/vectorization_6.q.out | 8 +-
.../clientpositive/llap/vectorization_7.q.out | 14 +-
.../clientpositive/llap/vectorization_8.q.out | 14 +-
.../clientpositive/llap/vectorization_9.q.out | 1054 +-
.../llap/vectorization_pushdown.q.out | 2 +-
.../llap/vectorization_short_regress.q.out | 664 +-
.../llap/vectorized_bucketmapjoin1.q.out | 14 +-
.../clientpositive/llap/vectorized_casts.q.out | 74 +-
.../llap/vectorized_date_funcs.q.out | 1005 +-
.../llap/vectorized_distinct_gby.q.out | 4 +-
.../vectorized_dynamic_partition_pruning.q.out | 664 +-
.../vectorized_dynamic_semijoin_reduction.q.out | 932 ++
.../clientpositive/llap/vectorized_join46.q.out | 1829 ++++
.../llap/vectorized_mapjoin.q.out | 10 +-
.../llap/vectorized_math_funcs.q.out | 56 +-
.../llap/vectorized_nested_mapjoin.q.out | 10 +-
.../llap/vectorized_parquet_types.q.out | 12 +-
.../clientpositive/llap/vectorized_ptf.q.out | 533 +-
.../llap/vectorized_rcfile_columnar.q.out | 10 +-
.../llap/vectorized_shufflejoin.q.out | 10 +-
.../llap/vectorized_string_funcs.q.out | 24 +-
.../llap/vectorized_timestamp.q.out | 14 +-
.../llap/vectorized_timestamp_funcs.q.out | 38 +-
.../llap/vectorized_timestamp_ints_casts.q.out | 32 +-
.../results/clientpositive/llap/windowing.q.out | 640 +-
.../llap/windowing_windowspec2.q.out | 42 +-
.../test/results/clientpositive/llap_acid.q.out | 2 -
.../test/results/clientpositive/llap_text.q.out | 1082 ++
.../clientpositive/load_binary_data.q.out | Bin 2604 -> 2262 bytes
.../results/clientpositive/load_dyn_part1.q.out | 8 +-
.../clientpositive/load_dyn_part10.q.out | 8 +-
.../clientpositive/load_dyn_part14.q.out | 14 +-
.../results/clientpositive/load_dyn_part2.q.out | 8 +-
.../results/clientpositive/load_dyn_part3.q.out | 8 +-
.../results/clientpositive/load_dyn_part4.q.out | 8 +-
.../results/clientpositive/load_dyn_part8.q.out | 20 +-
.../results/clientpositive/load_dyn_part9.q.out | 8 +-
.../load_file_with_space_in_the_name.q.out | 10 +-
.../clientpositive/load_fs_overwrite.q.out | 8 +-
.../clientpositive/louter_join_ppr.q.out | 36 +-
.../test/results/clientpositive/macro_1.q.out | 2 -
.../clientpositive/macro_duplicate.q.out | 4 -
.../test/results/clientpositive/mapjoin1.q.out | 18 +-
.../test/results/clientpositive/mapjoin2.q.out | 4 -
.../test/results/clientpositive/mapjoin3.q.out | 196 +
.../test/results/clientpositive/mapjoin46.q.out | 1962 ++++
.../mapjoin_filter_on_outerjoin.q.out | 12 +-
.../clientpositive/mapjoin_mapjoin.q.out | 24 +-
.../clientpositive/mapjoin_memcheck.q.out | 8 +-
.../clientpositive/mapjoin_subquery.q.out | 10 +-
.../clientpositive/mapjoin_subquery2.q.out | 8 +-
.../clientpositive/mapjoin_test_outer.q.out | 12 +-
.../test/results/clientpositive/masking_2.q.out | 2 +
.../test/results/clientpositive/masking_3.q.out | 1042 +-
.../test/results/clientpositive/masking_4.q.out | 167 +-
.../test/results/clientpositive/masking_6.q.out | 15 +
.../test/results/clientpositive/masking_7.q.out | 17 +
.../test/results/clientpositive/masking_8.q.out | 50 +-
.../clientpositive/masking_disablecbo_2.q.out | 2 +
.../clientpositive/masking_disablecbo_4.q.out | 24 +-
...materialized_view_authorization_sqlstd.q.out | 2 -
.../materialized_view_create.q.out | 6 +-
.../materialized_view_create_rewrite.q.out | 322 +
...erialized_view_create_rewrite_multi_db.q.out | 157 +
.../materialized_view_describe.q.out | 22 +-
ql/src/test/results/clientpositive/merge1.q.out | 8 +-
ql/src/test/results/clientpositive/merge2.q.out | 8 +-
ql/src/test/results/clientpositive/merge3.q.out | 34 +-
ql/src/test/results/clientpositive/merge4.q.out | 8 +-
.../merge_dynamic_partition.q.out | 8 +-
.../merge_dynamic_partition3.q.out | 8 +-
.../merge_dynamic_partition4.q.out | 10 +-
.../merge_dynamic_partition5.q.out | 8 +-
.../test/results/clientpositive/mergejoin.q.out | 8 +-
.../results/clientpositive/mergejoins.q.out | 6 +-
.../clientpositive/mergejoins_mixed.q.out | 32 +-
.../clientpositive/metadata_empty_table.q.out | 81 +
ql/src/test/results/clientpositive/mi.q.out | 8 +-
.../results/clientpositive/msck_repair_0.q.out | 8 +
.../results/clientpositive/msck_repair_1.q.out | 8 +
.../results/clientpositive/msck_repair_2.q.out | 8 +
.../results/clientpositive/msck_repair_3.q.out | 8 +
.../clientpositive/msck_repair_batchsize.q.out | 8 +
.../clientpositive/multi_column_in.q.out | 2 -
.../clientpositive/multi_column_in_single.q.out | 2 -
.../clientpositive/multi_insert_gby.q.out | 10 +-
.../clientpositive/multi_insert_gby2.q.out | 6 +-
.../clientpositive/multi_insert_gby3.q.out | 6 +-
.../clientpositive/multi_insert_gby4.q.out | 275 +
.../clientpositive/multi_insert_mixed.q.out | 10 +-
...i_insert_move_tasks_share_dependencies.q.out | 8 +-
.../clientpositive/multi_insert_union_src.q.out | 4 +-
.../clientpositive/multi_insert_with_join.q.out | 4 -
.../multi_insert_with_join2.q.out | 523 +-
.../clientpositive/multi_join_union.q.out | 8 +-
.../clientpositive/nested_column_pruning.q.out | 1584 +++
.../test/results/clientpositive/newline.q.out | 8 +-
.../nomore_ambiguous_table_col.q.out | 8 +-
.../nonblock_op_deduplicate.q.out | 24 +-
.../results/clientpositive/nonmr_fetch.q.out | 114 +-
.../clientpositive/nonmr_fetch_threshold.q.out | 24 +-
.../results/clientpositive/nullformat.q.out | 24 +-
.../results/clientpositive/nullformatCTAS.q.out | 18 +-
.../results/clientpositive/nullformatdir.q.out | 12 +-
.../offset_limit_global_optimizer.q.out | 52 +
.../orc_dictionary_threshold.q.out | 46 +-
.../clientpositive/orc_diff_part_cols.q.out | 20 +-
.../clientpositive/orc_diff_part_cols2.q.out | 14 +-
.../clientpositive/orc_empty_files.q.out | 14 +-
.../clientpositive/orc_empty_strings.q.out | 24 +-
.../clientpositive/orc_ends_with_nulls.q.out | 12 +-
.../results/clientpositive/orc_merge1.q.out | 32 +-
.../results/clientpositive/orc_merge10.q.out | 44 +-
.../results/clientpositive/orc_merge11.q.out | 6 +-
.../results/clientpositive/orc_merge5.q.out | 38 +-
.../results/clientpositive/orc_merge6.q.out | 40 +-
.../results/clientpositive/orc_merge9.q.out | 8 +-
.../clientpositive/orc_merge_diff_fs.q.out | 32 +-
.../clientpositive/orc_merge_incompat1.q.out | 26 +-
.../clientpositive/orc_merge_incompat2.q.out | 12 +-
.../clientpositive/orc_ppd_boolean.q.out | 6 +-
.../results/clientpositive/orc_ppd_char.q.out | 6 +-
.../clientpositive/orc_ppd_exception.q.out | 2 -
.../clientpositive/orc_ppd_str_conversion.q.out | 2 -
.../clientpositive/orc_remove_cols.q.out | 6 +-
.../clientpositive/orc_schema_evolution.q.out | 12 +-
.../orc_schema_evolution_float.q.out | 4 -
.../clientpositive/orc_vectorization_ppd.q.out | 80 +-
.../results/clientpositive/order_null.q.out | 12 -
.../results/clientpositive/outer_join_ppr.q.out | 24 +-
.../test/results/clientpositive/parallel.q.out | 8 +-
.../results/clientpositive/parallel_join0.q.out | 8 +-
.../results/clientpositive/parallel_join1.q.out | 8 +-
.../clientpositive/parallel_orderby.q.out | 8 +-
.../clientpositive/parquet_analyze.q.out | 18 +-
.../parquet_array_of_multi_field_struct.q.out | 18 +-
.../parquet_array_of_optional_elements.q.out | 8 +-
.../parquet_array_of_required_elements.q.out | 8 +-
.../parquet_array_of_single_field_struct.q.out | 12 +-
.../parquet_array_of_structs.q.out | 8 +-
.../parquet_array_of_unannotated_groups.q.out | 10 +-
...arquet_array_of_unannotated_primitives.q.out | 10 +-
.../parquet_avro_array_of_primitives.q.out | 8 +-
...quet_avro_array_of_single_field_struct.q.out | 10 +-
.../results/clientpositive/parquet_ctas.q.out | 12 +-
.../results/clientpositive/parquet_join.q.out | 38 +-
.../results/clientpositive/parquet_join2.q.out | 6 -
.../clientpositive/parquet_map_null.q.out | 8 +-
.../parquet_map_of_arrays_of_ints.q.out | 10 +-
.../clientpositive/parquet_map_of_maps.q.out | 8 +-
.../parquet_mixed_partition_formats.q.out | 14 +-
.../clientpositive/parquet_nested_complex.q.out | 16 +-
.../clientpositive/parquet_partitioned.q.out | 8 +-
.../clientpositive/parquet_ppd_char.q.out | 6 +-
.../clientpositive/parquet_ppd_date.q.out | 6 +-
.../clientpositive/parquet_ppd_decimal.q.out | 6 +-
.../clientpositive/parquet_ppd_partition.q.out | 8 +-
.../clientpositive/parquet_ppd_timestamp.q.out | 6 +-
.../clientpositive/parquet_ppd_varchar.q.out | 6 +-
...parquet_read_backward_compatible_files.q.out | 10 +-
.../parquet_schema_evolution.q.out | 38 +-
.../results/clientpositive/parquet_serde.q.out | 16 +-
.../parquet_table_with_subschema.q.out | 18 +-
.../parquet_thrift_array_of_primitives.q.out | 8 +-
...et_thrift_array_of_single_field_struct.q.out | 10 +-
.../clientpositive/parquet_type_promotion.q.out | 26 +-
..._non_dictionary_encoding_vectorization.q.out | 8 +-
.../parquet_types_vectorization.q.out | 8 +-
...arquet_write_correct_definition_levels.q.out | 12 +-
.../test/results/clientpositive/partInit.q.out | 13 +-
.../clientpositive/part_inherit_tbl_props.q.out | 8 +-
.../part_inherit_tbl_props_with_star.q.out | 8 +-
.../clientpositive/partial_column_stats.q.out | 74 +
.../clientpositive/partition_boolexpr.q.out | 12 +-
.../partition_coltype_literals.q.out | 82 +-
.../results/clientpositive/partition_date.q.out | 98 +-
.../clientpositive/partition_date2.q.out | 64 +-
.../clientpositive/partition_timestamp.q.out | 106 +-
.../clientpositive/partition_timestamp2.q.out | 67 +-
.../clientpositive/partition_type_check.q.out | 18 +-
.../clientpositive/partition_type_in_plan.q.out | 20 +-
.../clientpositive/partition_varchar1.q.out | 70 +-
.../partition_wise_fileformat10.q.out | 6 +-
.../partition_wise_fileformat11.q.out | 6 +-
.../partition_wise_fileformat12.q.out | 6 +-
.../partition_wise_fileformat13.q.out | 6 +-
.../partition_wise_fileformat14.q.out | 34 +-
.../partition_wise_fileformat15.q.out | 6 +-
.../partition_wise_fileformat16.q.out | 6 +-
.../partition_wise_fileformat17.q.out | 42 +-
.../partition_wise_fileformat18.q.out | 32 +-
.../partition_wise_fileformat2.q.out | 8 +-
.../partition_wise_fileformat8.q.out | 8 +-
.../partition_wise_fileformat9.q.out | 8 +-
ql/src/test/results/clientpositive/pcr.q.out | 152 +-
ql/src/test/results/clientpositive/pcs.q.out | 38 +
.../results/clientpositive/perf/query1.q.out | 249 +
.../results/clientpositive/perf/query12.q.out | 26 +-
.../results/clientpositive/perf/query13.q.out | 6 +-
.../results/clientpositive/perf/query14.q.out | 1568 +++
.../results/clientpositive/perf/query16.q.out | 276 +
.../results/clientpositive/perf/query18.q.out | 2 +-
.../results/clientpositive/perf/query21.q.out | 30 +-
.../results/clientpositive/perf/query22.q.out | 46 +-
.../results/clientpositive/perf/query23.q.out | 657 ++
.../results/clientpositive/perf/query27.q.out | 198 +-
.../results/clientpositive/perf/query28.q.out | 26 +-
.../results/clientpositive/perf/query30.q.out | 308 +
.../results/clientpositive/perf/query32.q.out | 6 +-
.../results/clientpositive/perf/query33.q.out | 435 +
.../results/clientpositive/perf/query36.q.out | 149 +
.../results/clientpositive/perf/query37.q.out | 103 +
.../results/clientpositive/perf/query38.q.out | 232 +
.../results/clientpositive/perf/query40.q.out | 56 +-
.../results/clientpositive/perf/query45.q.out | 120 +-
.../results/clientpositive/perf/query48.q.out | 6 +-
.../results/clientpositive/perf/query5.q.out | 489 +
.../results/clientpositive/perf/query56.q.out | 421 +
.../results/clientpositive/perf/query6.q.out | 332 +
.../results/clientpositive/perf/query60.q.out | 441 +
.../results/clientpositive/perf/query67.q.out | 28 +-
.../results/clientpositive/perf/query69.q.out | 495 +
.../results/clientpositive/perf/query70.q.out | 222 +-
.../results/clientpositive/perf/query72.q.out | 60 +-
.../results/clientpositive/perf/query8.q.out | 360 +
.../results/clientpositive/perf/query80.q.out | 202 +-
.../results/clientpositive/perf/query81.q.out | 308 +
.../results/clientpositive/perf/query82.q.out | 34 +-
.../results/clientpositive/perf/query83.q.out | 438 +
.../results/clientpositive/perf/query86.q.out | 126 +
.../results/clientpositive/perf/query87.q.out | 414 +-
.../results/clientpositive/perf/query88.q.out | 82 +-
.../results/clientpositive/perf/query90.q.out | 22 +-
.../results/clientpositive/perf/query92.q.out | 6 +-
.../results/clientpositive/perf/query96.q.out | 6 +-
.../results/clientpositive/perf/query97.q.out | 6 +-
.../results/clientpositive/perf/query98.q.out | 16 +-
.../test/results/clientpositive/plan_json.q.out | 10 +-
.../results/clientpositive/pointlookup2.q.out | 36 +
.../results/clientpositive/pointlookup3.q.out | 27 +
.../results/clientpositive/pointlookup4.q.out | 8 +
.../clientpositive/ppd_constant_where.q.out | 8 +-
.../clientpositive/ppd_field_garbage.q.out | 15 +-
.../results/clientpositive/ppd_gby_join.q.out | 8 +-
.../test/results/clientpositive/ppd_join.q.out | 8 +-
.../test/results/clientpositive/ppd_join2.q.out | 8 +-
.../test/results/clientpositive/ppd_join3.q.out | 8 +-
.../clientpositive/ppd_join_filter.q.out | 28 +
.../clientpositive/ppd_multi_insert.q.out | 8 +-
.../clientpositive/ppd_outer_join1.q.out | 8 +-
.../clientpositive/ppd_outer_join2.q.out | 8 +-
.../clientpositive/ppd_outer_join3.q.out | 8 +-
.../clientpositive/ppd_outer_join4.q.out | 8 +-
.../clientpositive/ppd_repeated_alias.q.out | 24 +-
.../results/clientpositive/ppd_transform.q.out | 16 +-
ql/src/test/results/clientpositive/ppd_vc.q.out | 29 +-
.../results/clientpositive/ppd_windowing1.q.out | 42 +-
.../results/clientpositive/ppd_windowing2.q.out | 46 +-
.../clientpositive/ppr_allchildsarenull.q.out | 12 +
.../results/clientpositive/print_header.q.out | 2 +-
ql/src/test/results/clientpositive/ptf.q.out | 286 +-
.../results/clientpositive/ptf_decimal.q.out | 36 +-
.../clientpositive/ptf_general_queries.q.out | 22 +-
.../results/clientpositive/ptf_matchpath.q.out | 22 +-
.../results/clientpositive/ptf_rcfile.q.out | 10 +-
.../clientpositive/ptf_register_tblfn.q.out | 10 +-
.../results/clientpositive/ptf_seqfile.q.out | 10 +-
.../results/clientpositive/ptf_streaming.q.out | 20 +-
.../results/clientpositive/ptfgroupbyjoin.q.out | 6 -
.../test/results/clientpositive/push_or.q.out | 4 +
.../clientpositive/query_with_semi.q.out | 4 +-
.../results/clientpositive/quotedid_alter.q.out | 6 +-
.../results/clientpositive/quotedid_basic.q.out | 26 +-
.../results/clientpositive/quotedid_skew.q.out | 10 +-
.../clientpositive/rand_partitionpruner1.q.out | 8 +-
.../clientpositive/rand_partitionpruner2.q.out | 20 +-
.../clientpositive/rand_partitionpruner3.q.out | 18 +-
.../results/clientpositive/recursive_dir.q.out | 8 +-
.../reduce_deduplicate_extended2.q.out | 36 +-
.../results/clientpositive/regexp_extract.q.out | 4 +
.../clientpositive/remove_exprs_stats.q.out | 96 +-
.../results/clientpositive/rename_column.q.out | 6 +-
.../rename_partition_location.q.out | 10 +-
.../clientpositive/rename_table_location.q.out | 15 +-
ql/src/test/results/clientpositive/repair.q.out | 8 +
.../results/clientpositive/repl_1_drop.q.out | 56 +-
.../clientpositive/repl_2_exim_basic.q.out | 32 +-
.../clientpositive/repl_3_exim_metadata.q.out | 6 +-
.../clientpositive/router_join_ppr.q.out | 36 +-
.../test/results/clientpositive/row__id.q.out | 156 +
.../runtime_skewjoin_mapjoin_spark.q.out | 8 +-
.../test/results/clientpositive/sample1.q.out | 16 +-
.../test/results/clientpositive/sample2.q.out | 924 +-
.../test/results/clientpositive/sample3.q.out | 10 +-
.../test/results/clientpositive/sample4.q.out | 924 +-
.../test/results/clientpositive/sample5.q.out | 28 +-
.../test/results/clientpositive/sample6.q.out | 466 +-
.../test/results/clientpositive/sample7.q.out | 356 +-
.../test/results/clientpositive/sample8.q.out | 18 +-
.../test/results/clientpositive/sample9.q.out | 908 +-
.../sample_islocalmode_hook.q.out | 25 +-
.../sample_islocalmode_hook_use_metadata.q.out | 20 +-
.../schema_evol_orc_acid_mapwork_part.q.out | 122 -
.../schema_evol_orc_acid_mapwork_table.q.out | 122 -
.../schema_evol_orc_acidvec_mapwork_part.q.out | 122 -
.../schema_evol_orc_acidvec_mapwork_table.q.out | 122 -
.../schema_evol_orc_nonvec_fetchwork_part.q.out | 104 -
...schema_evol_orc_nonvec_fetchwork_table.q.out | 104 -
.../schema_evol_orc_nonvec_mapwork_part.q.out | 104 -
...ol_orc_nonvec_mapwork_part_all_complex.q.out | 2 -
..._orc_nonvec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_orc_nonvec_mapwork_table.q.out | 104 -
.../schema_evol_orc_vec_mapwork_part.q.out | 104 -
..._evol_orc_vec_mapwork_part_all_complex.q.out | 2 -
...vol_orc_vec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_orc_vec_mapwork_table.q.out | 104 -
.../clientpositive/schema_evol_stats.q.out | 8 -
.../schema_evol_text_nonvec_mapwork_part.q.out | 104 -
...l_text_nonvec_mapwork_part_all_complex.q.out | 2 -
...text_nonvec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_text_nonvec_mapwork_table.q.out | 104 -
.../schema_evol_text_vec_mapwork_part.q.out | 104 -
...evol_text_vec_mapwork_part_all_complex.q.out | 2 -
...ol_text_vec_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_text_vec_mapwork_table.q.out | 104 -
.../schema_evol_text_vecrow_mapwork_part.q.out | 104 -
...l_text_vecrow_mapwork_part_all_complex.q.out | 2 -
...text_vecrow_mapwork_part_all_primitive.q.out | 90 -
.../schema_evol_text_vecrow_mapwork_table.q.out | 104 -
.../clientpositive/script_env_var1.q.out | 8 +-
.../clientpositive/script_env_var2.q.out | 6 +-
.../results/clientpositive/script_pipe.q.out | 12 +-
.../results/clientpositive/scriptfile1.q.out | 16 +-
.../clientpositive/select_dummy_source.q.out | 18 +-
.../clientpositive/select_same_col.q.out | 8 +-
.../results/clientpositive/selectindate.q.out | 8 -
.../test/results/clientpositive/semicolon.q.out | 10 +-
.../test/results/clientpositive/semijoin4.q.out | 140 +-
.../test/results/clientpositive/semijoin5.q.out | 261 +-
.../results/clientpositive/serde_opencsv.q.out | 8 +-
.../clientpositive/serde_user_properties.q.out | 14 +-
.../clientpositive/setop_no_distinct.q.out | 8 -
.../results/clientpositive/setop_subq.q.out | 569 ++
.../results/clientpositive/show_columns.q.out | 18 +-
.../show_create_table_alter.q.out | 32 +-
.../show_create_table_db_table.q.out | 113 +-
.../show_create_table_delimited.q.out | 8 +-
.../show_create_table_partitioned.q.out | 8 +-
.../show_create_table_serde.q.out | 26 +-
.../clientpositive/show_create_table_view.q.out | 10 +-
.../results/clientpositive/show_functions.q.out | 6 +
.../clientpositive/show_partitions.q.out | 18 +-
.../results/clientpositive/show_tables.q.out | 24 +-
.../clientpositive/show_tblproperties.q.out | 23 +-
.../results/clientpositive/show_views.q.out | 28 +-
.../test/results/clientpositive/skewjoin.q.out | 8 +-
.../clientpositive/skewjoin_mapjoin1.q.out | 30 +-
.../clientpositive/skewjoin_mapjoin10.q.out | 42 +-
.../clientpositive/skewjoin_mapjoin11.q.out | 18 +-
.../clientpositive/skewjoin_mapjoin2.q.out | 26 +-
.../clientpositive/skewjoin_mapjoin3.q.out | 18 +-
.../clientpositive/skewjoin_mapjoin4.q.out | 18 +-
.../clientpositive/skewjoin_mapjoin5.q.out | 22 +-
.../clientpositive/skewjoin_mapjoin6.q.out | 14 +-
.../clientpositive/skewjoin_mapjoin7.q.out | 18 +-
.../clientpositive/skewjoin_mapjoin8.q.out | 22 +-
.../clientpositive/skewjoin_mapjoin9.q.out | 24 +-
.../clientpositive/skewjoin_onesideskew.q.out | 10 -
.../skewjoin_union_remove_1.q.out | 36 +-
.../skewjoin_union_remove_2.q.out | 20 +-
.../results/clientpositive/skewjoinopt1.q.out | 26 +-
.../results/clientpositive/skewjoinopt10.q.out | 10 +-
.../results/clientpositive/skewjoinopt11.q.out | 14 +-
.../results/clientpositive/skewjoinopt12.q.out | 12 +-
.../results/clientpositive/skewjoinopt13.q.out | 18 +-
.../results/clientpositive/skewjoinopt14.q.out | 20 +-
.../results/clientpositive/skewjoinopt16.q.out | 12 +-
.../results/clientpositive/skewjoinopt17.q.out | 28 +-
.../results/clientpositive/skewjoinopt18.q.out | 30 +-
.../results/clientpositive/skewjoinopt19.q.out | 14 +-
.../results/clientpositive/skewjoinopt2.q.out | 40 +-
.../results/clientpositive/skewjoinopt20.q.out | 14 +-
.../results/clientpositive/skewjoinopt21.q.out | 10 +-
.../results/clientpositive/skewjoinopt3.q.out | 22 +-
.../results/clientpositive/skewjoinopt4.q.out | 18 +-
.../results/clientpositive/skewjoinopt5.q.out | 12 +-
.../results/clientpositive/skewjoinopt6.q.out | 14 +-
.../results/clientpositive/skewjoinopt7.q.out | 14 +-
.../results/clientpositive/skewjoinopt8.q.out | 14 +-
.../results/clientpositive/skewjoinopt9.q.out | 18 +-
.../results/clientpositive/skiphf_aggr.q.out | 12 -
.../clientpositive/smb_join_partition_key.q.out | 4 -
.../results/clientpositive/smb_mapjoin9.q.out | 6 +-
.../results/clientpositive/smb_mapjoin_1.q.out | 8 +-
.../results/clientpositive/smb_mapjoin_10.q.out | 8 +-
.../results/clientpositive/smb_mapjoin_11.q.out | 36 +-
.../results/clientpositive/smb_mapjoin_12.q.out | 42 +-
.../results/clientpositive/smb_mapjoin_13.q.out | 30 +-
.../results/clientpositive/smb_mapjoin_16.q.out | 12 +-
.../results/clientpositive/smb_mapjoin_2.q.out | 8 +-
.../results/clientpositive/smb_mapjoin_20.q.out | 30 +-
.../results/clientpositive/smb_mapjoin_21.q.out | 54 +-
.../results/clientpositive/smb_mapjoin_22.q.out | 22 +-
.../results/clientpositive/smb_mapjoin_25.q.out | 14 +-
.../results/clientpositive/smb_mapjoin_3.q.out | 12 +-
.../results/clientpositive/smb_mapjoin_46.q.out | 1657 +++
ql/src/test/results/clientpositive/sort.q.out | 8 +-
.../clientpositive/sort_merge_join_desc_1.q.out | 10 +-
.../clientpositive/sort_merge_join_desc_2.q.out | 12 +-
.../clientpositive/sort_merge_join_desc_3.q.out | 12 +-
.../clientpositive/sort_merge_join_desc_4.q.out | 10 +-
.../clientpositive/sort_merge_join_desc_5.q.out | 10 +-
.../clientpositive/sort_merge_join_desc_6.q.out | 12 +-
.../clientpositive/sort_merge_join_desc_7.q.out | 16 +-
.../clientpositive/sort_merge_join_desc_8.q.out | 16 +-
.../spark/add_part_multiple.q.out | 8 +-
.../spark/annotate_stats_join.q.out | 98 +-
.../clientpositive/spark/auto_join0.q.out | 8 +-
.../clientpositive/spark/auto_join1.q.out | 8 +-
.../clientpositive/spark/auto_join14.q.out | 8 +-
.../clientpositive/spark/auto_join21.q.out | 8 +-
.../clientpositive/spark/auto_join23.q.out | 8 +-
.../clientpositive/spark/auto_join26.q.out | 8 +-
.../clientpositive/spark/auto_join29.q.out | 8 +-
.../spark/auto_join_reordering_values.q.out | 18 +-
.../clientpositive/spark/auto_join_stats.q.out | 10 +-
.../clientpositive/spark/auto_join_stats2.q.out | 10 +-
.../spark/auto_join_without_localtask.q.out | 6 +-
.../spark/auto_smb_mapjoin_14.q.out | 218 +-
.../spark/auto_sortmerge_join_1.q.out | 28 +-
.../spark/auto_sortmerge_join_10.q.out | 12 +-
.../spark/auto_sortmerge_join_12.q.out | 18 +-
.../spark/auto_sortmerge_join_13.q.out | 102 +-
.../spark/auto_sortmerge_join_14.q.out | 12 +-
.../spark/auto_sortmerge_join_16.q.out | 8 +-
.../spark/auto_sortmerge_join_3.q.out | 22 +-
.../spark/auto_sortmerge_join_4.q.out | 22 +-
.../spark/auto_sortmerge_join_5.q.out | 26 +-
.../spark/auto_sortmerge_join_6.q.out | 80 +-
.../spark/auto_sortmerge_join_7.q.out | 28 +-
.../spark/auto_sortmerge_join_8.q.out | 34 +-
.../spark/auto_sortmerge_join_9.q.out | 200 +-
.../spark/avro_compression_enabled_native.q.out | 8 +-
.../clientpositive/spark/avro_joins.q.out | 12 +-
.../spark/avro_joins_native.q.out | 12 +-
.../results/clientpositive/spark/bucket2.q.out | 12 +-
.../results/clientpositive/spark/bucket3.q.out | 12 +-
.../results/clientpositive/spark/bucket4.q.out | 4 +
.../results/clientpositive/spark/bucket5.q.out | 30 +-
.../spark/bucket_map_join_1.q.out | 16 +-
.../spark/bucket_map_join_2.q.out | 16 +-
.../spark/bucket_map_join_spark1.q.out | 12 +
.../spark/bucket_map_join_spark2.q.out | 12 +
.../spark/bucket_map_join_spark3.q.out | 12 +
.../spark/bucket_map_join_spark4.q.out | 20 +-
.../spark/bucket_map_join_tez1.q.out | 26 +-
.../spark/bucketizedhiveinputformat.q.out | 24 +-
.../clientpositive/spark/bucketmapjoin1.q.out | 18 +-
.../clientpositive/spark/bucketmapjoin10.q.out | 16 +-
.../clientpositive/spark/bucketmapjoin11.q.out | 26 +-
.../clientpositive/spark/bucketmapjoin12.q.out | 24 +-
.../clientpositive/spark/bucketmapjoin13.q.out | 70 +-
.../clientpositive/spark/bucketmapjoin2.q.out | 26 +-
.../clientpositive/spark/bucketmapjoin3.q.out | 12 +
.../clientpositive/spark/bucketmapjoin4.q.out | 12 +
.../clientpositive/spark/bucketmapjoin5.q.out | 16 +
.../clientpositive/spark/bucketmapjoin6.q.out | 8 +-
.../clientpositive/spark/bucketmapjoin7.q.out | 12 +-
.../clientpositive/spark/bucketmapjoin8.q.out | 24 +-
.../clientpositive/spark/bucketmapjoin9.q.out | 24 +-
.../spark/bucketmapjoin_negative.q.out | 6 +
.../spark/bucketmapjoin_negative2.q.out | 8 +
.../spark/bucketmapjoin_negative3.q.out | 48 +-
.../spark/bucketsortoptimize_insert_2.q.out | 48 +-
.../spark/bucketsortoptimize_insert_4.q.out | 22 +-
.../spark/bucketsortoptimize_insert_6.q.out | 62 +-
.../spark/bucketsortoptimize_insert_7.q.out | 26 +-
.../spark/bucketsortoptimize_insert_8.q.out | 22 +-
.../results/clientpositive/spark/cbo_gby.q.out | 10 +-
.../clientpositive/spark/cbo_gby_empty.q.out | 6 +-
.../clientpositive/spark/cbo_limit.q.out | 6 +-
.../clientpositive/spark/cbo_semijoin.q.out | 6 +-
.../spark/cbo_simple_select.q.out | 36 +-
.../clientpositive/spark/cbo_stats.q.out | 6 +-
.../clientpositive/spark/cbo_subq_in.q.out | 48 +-
.../clientpositive/spark/cbo_subq_not_in.q.out | 82 +-
.../clientpositive/spark/cbo_udf_udaf.q.out | 10 +-
.../clientpositive/spark/cbo_union.q.out | 10 +-
.../spark/column_access_stats.q.out | 32 +-
.../spark/constprog_partitioner.q.out | 96 +-
.../spark/constprog_semijoin.q.out | 6 -
.../results/clientpositive/spark/count.q.out | 30 +-
.../clientpositive/spark/cross_join.q.out | 18 +-
.../spark/cross_product_check_1.q.out | 8 +-
.../spark/cross_product_check_2.q.out | 8 +-
.../results/clientpositive/spark/ctas.q.out | 10 +-
.../spark/custom_input_output_format.q.out | 8 +-
.../clientpositive/spark/date_join1.q.out | 14 +-
.../results/clientpositive/spark/date_udf.q.out | 58 +-
.../clientpositive/spark/decimal_join.q.out | 10 +-
.../spark/disable_merge_for_bucketing.q.out | 4 +
.../spark/dynamic_rdd_cache.q.out | 24 +-
.../spark/escape_clusterby1.q.out | 6 +-
.../spark/escape_distributeby1.q.out | 6 +-
.../clientpositive/spark/escape_orderby1.q.out | 6 +-
.../clientpositive/spark/escape_sortby1.q.out | 6 +-
.../spark/filter_join_breaktask.q.out | 14 +-
.../spark/filter_join_breaktask2.q.out | 8 +-
.../results/clientpositive/spark/groupby1.q.out | 8 +-
.../clientpositive/spark/groupby10.q.out | 16 +-
.../clientpositive/spark/groupby11.q.out | 8 +-
.../clientpositive/spark/groupby1_map.q.out | 8 +-
.../spark/groupby1_map_nomap.q.out | 8 +-
.../spark/groupby1_map_skew.q.out | 8 +-
.../clientpositive/spark/groupby1_noskew.q.out | 8 +-
.../results/clientpositive/spark/groupby2.q.out | 8 +-
.../clientpositive/spark/groupby2_map.q.out | 8 +-
.../spark/groupby2_map_multi_distinct.q.out | 16 +-
.../clientpositive/spark/groupby2_noskew.q.out | 8 +-
.../spark/groupby2_noskew_multi_distinct.q.out | 8 +-
.../results/clientpositive/spark/groupby4.q.out | 8 +-
.../clientpositive/spark/groupby4_noskew.q.out | 8 +-
.../results/clientpositive/spark/groupby5.q.out | 8 +-
.../clientpositive/spark/groupby5_noskew.q.out | 8 +-
.../results/clientpositive/spark/groupby6.q.out | 8 +-
.../clientpositive/spark/groupby6_map.q.out | 8 +-
.../spark/groupby6_map_skew.q.out | 8 +-
.../clientpositive/spark/groupby6_noskew.q.out | 8 +-
.../results/clientpositive/spark/groupby7.q.out | 8 +-
.../clientpositive/spark/groupby7_map.q.out | 8 +-
.../groupby7_map_multi_single_reducer.q.out | 8 +-
.../spark/groupby7_map_skew.q.out | 8 +-
.../clientpositive/spark/groupby7_noskew.q.out | 8 +-
.../groupby7_noskew_multi_single_reducer.q.out | 8 +-
.../results/clientpositive/spark/groupby8.q.out | 8 +-
.../clientpositive/spark/groupby8_map.q.out | 8 +-
.../spark/groupby8_map_skew.q.out | 8 +-
.../clientpositive/spark/groupby8_noskew.q.out | 8 +-
.../results/clientpositive/spark/groupby9.q.out | 8 +-
.../spark/groupby_complex_types.q.out | 8 +-
...pby_complex_types_multi_single_reducer.q.out | 8 +-
.../clientpositive/spark/groupby_cube1.q.out | 82 +-
.../spark/groupby_grouping_id2.q.out | 8 +-
.../clientpositive/spark/groupby_map_ppr.q.out | 14 +-
.../spark/groupby_map_ppr_multi_distinct.q.out | 14 +-
.../groupby_multi_insert_common_distinct.q.out | 8 +-
.../spark/groupby_multi_single_reducer.q.out | 8 +-
.../spark/groupby_multi_single_reducer2.q.out | 8 +-
.../spark/groupby_multi_single_reducer3.q.out | 12 +-
.../clientpositive/spark/groupby_position.q.out | 16 +-
.../clientpositive/spark/groupby_ppr.q.out | 14 +-
.../spark/groupby_ppr_multi_distinct.q.out | 20 +-
.../spark/groupby_resolution.q.out | 30 +-
.../clientpositive/spark/groupby_rollup1.q.out | 64 +-
.../spark/groupby_sort_1_23.q.out | 222 +-
.../spark/groupby_sort_skew_1_23.q.out | 222 +-
.../results/clientpositive/spark/having.q.out | 6 +-
.../spark/index_auto_self_join.q.out | 10 +-
.../clientpositive/spark/index_bitmap3.q.out | 8 +-
.../spark/index_bitmap_auto.q.out | 24 +-
.../infer_bucket_sort_bucketed_table.q.out | 24 +-
.../spark/infer_bucket_sort_map_operators.q.out | 36 +-
.../spark/infer_bucket_sort_merge.q.out | 24 +-
.../spark/infer_bucket_sort_num_buckets.q.out | 30 +-
.../infer_bucket_sort_reducers_power_two.q.out | 50 +-
.../clientpositive/spark/innerjoin.q.out | 16 +-
.../results/clientpositive/spark/input12.q.out | 8 +-
.../results/clientpositive/spark/input14.q.out | 8 +-
.../clientpositive/spark/input16_cc.q.out | 10 +-
.../results/clientpositive/spark/input17.q.out | 8 +-
.../results/clientpositive/spark/input18.q.out | 8 +-
.../clientpositive/spark/input1_limit.q.out | 8 +-
.../clientpositive/spark/input_part2.q.out | 16 +-
.../clientpositive/spark/insert_into1.q.out | 10 +-
.../clientpositive/spark/insert_into2.q.out | 2 -
.../results/clientpositive/spark/join0.q.out | 8 +-
.../results/clientpositive/spark/join1.q.out | 8 +-
.../results/clientpositive/spark/join10.q.out | 8 +-
.../results/clientpositive/spark/join11.q.out | 8 +-
.../results/clientpositive/spark/join12.q.out | 8 +-
.../results/clientpositive/spark/join13.q.out | 8 +-
.../results/clientpositive/spark/join14.q.out | 10 +-
.../results/clientpositive/spark/join15.q.out | 8 +-
.../results/clientpositive/spark/join17.q.out | 14 +-
.../results/clientpositive/spark/join18.q.out | 8 +-
.../spark/join18_multi_distinct.q.out | 8 +-
.../results/clientpositive/spark/join19.q.out | 8 +-
.../results/clientpositive/spark/join2.q.out | 8 +-
.../results/clientpositive/spark/join20.q.out | 8 +-
.../results/clientpositive/spark/join21.q.out | 8 +-
.../results/clientpositive/spark/join23.q.out | 8 +-
.../results/clientpositive/spark/join25.q.out | 8 +-
.../results/clientpositive/spark/join26.q.out | 16 +-
.../results/clientpositive/spark/join27.q.out | 8 +-
.../results/clientpositive/spark/join28.q.out | 16 +-
.../results/clientpositive/spark/join29.q.out | 16 +-
.../results/clientpositive/spark/join3.q.out | 8 +-
.../results/clientpositive/spark/join30.q.out | 8 +-
.../results/clientpositive/spark/join31.q.out | 96 +-
.../results/clientpositive/spark/join32.q.out | 24 +-
.../clientpositive/spark/join32_lessSize.q.out | 50 +-
.../results/clientpositive/spark/join33.q.out | 24 +-
.../results/clientpositive/spark/join34.q.out | 24 +-
.../results/clientpositive/spark/join35.q.out | 24 +-
.../results/clientpositive/spark/join36.q.out | 8 +-
.../results/clientpositive/spark/join37.q.out | 8 +-
.../results/clientpositive/spark/join39.q.out | 8 +-
.../results/clientpositive/spark/join4.q.out | 8 +-
.../results/clientpositive/spark/join41.q.out | 6 +-
.../results/clientpositive/spark/join5.q.out | 8 +-
.../results/clientpositive/spark/join6.q.out | 8 +-
.../results/clientpositive/spark/join7.q.out | 8 +-
.../results/clientpositive/spark/join8.q.out | 8 +-
.../results/clientpositive/spark/join9.q.out | 14 +-
.../clientpositive/spark/join_1to1.q.out | 8 +-
.../clientpositive/spark/join_array.q.out | 8 +-
.../spark/join_casesensitive.q.out | 8 +-
.../spark/join_filters_overlap.q.out | 74 +-
.../clientpositive/spark/join_literals.q.out | 8 +-
.../clientpositive/spark/join_map_ppr.q.out | 24 +-
.../spark/join_merge_multi_expressions.q.out | 6 +-
.../clientpositive/spark/join_nullsafe.q.out | 44 +-
.../results/clientpositive/spark/join_rc.q.out | 8 +-
.../clientpositive/spark/join_reorder.q.out | 8 +-
.../clientpositive/spark/join_thrift.q.out | 8 +-
.../results/clientpositive/spark/join_vc.q.out | 12 +-
.../clientpositive/spark/join_view.q.out | 11 +-
.../spark/lateral_view_explode2.q.out | 2 +-
.../clientpositive/spark/leftsemijoin.q.out | 8 +-
.../clientpositive/spark/leftsemijoin_mr.q.out | 8 +-
.../spark/limit_partition_metadataonly.q.out | 8 +-
.../clientpositive/spark/limit_pushdown.q.out | 66 +-
.../clientpositive/spark/limit_pushdown2.q.out | 1137 +++
.../spark/list_bucket_dml_10.q.out | 48 +-
.../spark/list_bucket_dml_2.q.out | 74 +-
.../clientpositive/spark/load_dyn_part1.q.out | 8 +-
.../clientpositive/spark/load_dyn_part10.q.out | 8 +-
.../clientpositive/spark/load_dyn_part14.q.out | 14 +-
.../clientpositive/spark/load_dyn_part2.q.out | 8 +-
.../clientpositive/spark/load_dyn_part3.q.out | 8 +-
.../clientpositive/spark/load_dyn_part4.q.out | 8 +-
.../clientpositive/spark/load_dyn_part8.q.out | 20 +-
.../clientpositive/spark/load_dyn_part9.q.out | 8 +-
.../results/clientpositive/spark/load_fs2.q.out | 10 +-
.../clientpositive/spark/louter_join_ppr.q.out | 36 +-
.../results/clientpositive/spark/mapjoin1.q.out | 18 +-
.../clientpositive/spark/mapjoin_decimal.q.out | 8 +-
.../spark/mapjoin_filter_on_outerjoin.q.out | 12 +-
.../clientpositive/spark/mapjoin_mapjoin.q.out | 24 +-
.../clientpositive/spark/mapjoin_memcheck.q.out | 8 +-
.../clientpositive/spark/mapjoin_subquery.q.out | 10 +-
.../spark/mapjoin_subquery2.q.out | 8 +-
.../spark/mapjoin_test_outer.q.out | 12 +-
.../results/clientpositive/spark/merge1.q.out | 8 +-
.../results/clientpositive/spark/merge2.q.out | 8 +-
.../clientpositive/spark/mergejoins.q.out | 6 +-
.../clientpositive/spark/mergejoins_mixed.q.out | 32 +-
.../clientpositive/spark/multi_insert.q.out | 8 +-
.../clientpositive/spark/multi_insert_gby.q.out | 10 +-
.../spark/multi_insert_gby2.q.out | 6 +-
.../spark/multi_insert_gby3.q.out | 6 +-
.../spark/multi_insert_lateral_view.q.out | 74 +-
.../spark/multi_insert_mixed.q.out | 10 +-
...i_insert_move_tasks_share_dependencies.q.out | 8 +-
.../spark/multi_insert_with_join.q.out | 4 -
.../spark/multi_insert_with_join2.q.out | 1006 ++
.../clientpositive/spark/multi_join_union.q.out | 8 +-
.../spark/optimize_nullscan.q.out | 54 +-
.../clientpositive/spark/orc_merge1.q.out | 32 +-
.../clientpositive/spark/orc_merge5.q.out | 38 +-
.../clientpositive/spark/orc_merge6.q.out | 40 +-
.../clientpositive/spark/orc_merge7.q.out | 42 +-
.../clientpositive/spark/orc_merge9.q.out | 8 +-
.../spark/orc_merge_diff_fs.q.out | 32 +-
.../spark/orc_merge_incompat1.q.out | 26 +-
.../spark/orc_merge_incompat2.q.out | 12 +-
.../clientpositive/spark/outer_join_ppr.q.out | 24 +-
.../results/clientpositive/spark/parallel.q.out | 8 +-
.../clientpositive/spark/parallel_join0.q.out | 8 +-
.../clientpositive/spark/parallel_join1.q.out | 8 +-
.../clientpositive/spark/parallel_orderby.q.out | 8 +-
.../clientpositive/spark/parquet_join.q.out | 38 +-
.../test/results/clientpositive/spark/pcr.q.out | 124 +-
.../clientpositive/spark/ppd_gby_join.q.out | 8 +-
.../results/clientpositive/spark/ppd_join.q.out | 8 +-
.../clientpositive/spark/ppd_join2.q.out | 8 +-
.../clientpositive/spark/ppd_join3.q.out | 8 +-
.../clientpositive/spark/ppd_join_filter.q.out | 16 +
.../clientpositive/spark/ppd_multi_insert.q.out | 8 +-
.../clientpositive/spark/ppd_outer_join1.q.out | 8 +-
.../clientpositive/spark/ppd_outer_join2.q.out | 8 +-
.../clientpositive/spark/ppd_outer_join3.q.out | 8 +-
.../clientpositive/spark/ppd_outer_join4.q.out | 8 +-
.../clientpositive/spark/ppd_transform.q.out | 16 +-
.../test/results/clientpositive/spark/ptf.q.out | 429 +-
.../clientpositive/spark/ptf_decimal.q.out | 36 +-
.../spark/ptf_general_queries.q.out | 22 +-
.../clientpositive/spark/ptf_matchpath.q.out | 22 +-
.../clientpositive/spark/ptf_rcfile.q.out | 10 +-
.../spark/ptf_register_tblfn.q.out | 10 +-
.../clientpositive/spark/ptf_seqfile.q.out | 10 +-
.../clientpositive/spark/ptf_streaming.q.out | 96 +-
.../spark/reduce_deduplicate.q.out | 6 +
.../clientpositive/spark/router_join_ppr.q.out | 36 +-
.../spark/runtime_skewjoin_mapjoin_spark.q.out | 8 +-
.../results/clientpositive/spark/sample1.q.out | 10 +-
.../results/clientpositive/spark/sample10.q.out | 16 +-
.../results/clientpositive/spark/sample2.q.out | 914 +-
.../results/clientpositive/spark/sample3.q.out | 10 +-
.../results/clientpositive/spark/sample4.q.out | 914 +-
.../results/clientpositive/spark/sample5.q.out | 22 +-
.../results/clientpositive/spark/sample6.q.out | 462 +-
.../results/clientpositive/spark/sample7.q.out | 354 +-
.../results/clientpositive/spark/sample8.q.out | 20 +-
.../results/clientpositive/spark/sample9.q.out | 902 +-
.../clientpositive/spark/script_env_var1.q.out | 8 +-
.../clientpositive/spark/script_env_var2.q.out | 6 +-
.../clientpositive/spark/script_pipe.q.out | 12 +-
.../clientpositive/spark/scriptfile1.q.out | 16 +-
.../results/clientpositive/spark/semijoin.q.out | 8 +-
.../results/clientpositive/spark/skewjoin.q.out | 8 +-
.../spark/skewjoin_union_remove_1.q.out | 36 +-
.../spark/skewjoin_union_remove_2.q.out | 20 +-
.../clientpositive/spark/skewjoinopt1.q.out | 26 +-
.../clientpositive/spark/skewjoinopt10.q.out | 10 +-
.../clientpositive/spark/skewjoinopt11.q.out | 14 +-
.../clientpositive/spark/skewjoinopt12.q.out | 12 +-
.../clientpositive/spark/skewjoinopt13.q.out | 18 +-
.../clientpositive/spark/skewjoinopt14.q.out | 20 +-
.../clientpositive/spark/skewjoinopt15.q.out | 38 +-
.../clientpositive/spark/skewjoinopt16.q.out | 12 +-
.../clientpositive/spark/skewjoinopt17.q.out | 28 +-
.../clientpositive/spark/skewjoinopt18.q.out | 30 +-
.../clientpositive/spark/skewjoinopt19.q.out | 14 +-
.../clientpositive/spark/skewjoinopt2.q.out | 40 +-
.../clientpositive/spark/skewjoinopt20.q.out | 14 +-
.../clientpositive/spark/skewjoinopt3.q.out | 22 +-
.../clientpositive/spark/skewjoinopt4.q.out | 18 +-
.../clientpositive/spark/skewjoinopt5.q.out | 12 +-
.../clientpositive/spark/skewjoinopt6.q.out | 14 +-
.../clientpositive/spark/skewjoinopt7.q.out | 14 +-
.../clientpositive/spark/skewjoinopt8.q.out | 14 +-
.../clientpositive/spark/skewjoinopt9.q.out | 18 +-
.../clientpositive/spark/smb_mapjoin_1.q.out | 8 +-
.../clientpositive/spark/smb_mapjoin_10.q.out | 8 +-
.../clientpositive/spark/smb_mapjoin_11.q.out | 36 +-
.../clientpositive/spark/smb_mapjoin_12.q.out | 42 +-
.../clientpositive/spark/smb_mapjoin_13.q.out | 32 +-
.../clientpositive/spark/smb_mapjoin_14.q.out | 94 +-
.../clientpositive/spark/smb_mapjoin_15.q.out | 56 +-
.../clientpositive/spark/smb_mapjoin_16.q.out | 12 +-
.../clientpositive/spark/smb_mapjoin_17.q.out | 26 +-
.../clientpositive/spark/smb_mapjoin_18.q.out | 24 +-
.../clientpositive/spark/smb_mapjoin_19.q.out | 14 +-
.../clientpositive/spark/smb_mapjoin_2.q.out | 8 +-
.../clientpositive/spark/smb_mapjoin_20.q.out | 30 +-
.../clientpositive/spark/smb_mapjoin_21.q.out | 54 +-
.../clientpositive/spark/smb_mapjoin_22.q.out | 22 +-
.../clientpositive/spark/smb_mapjoin_25.q.out | 14 +-
.../clientpositive/spark/smb_mapjoin_3.q.out | 12 +-
.../clientpositive/spark/smb_mapjoin_4.q.out | 8 +-
.../clientpositive/spark/smb_mapjoin_5.q.out | 8 +-
.../clientpositive/spark/smb_mapjoin_8.q.out | 8 +-
.../results/clientpositive/spark/sort.q.out | 8 +-
.../spark/spark_combine_equivalent_work.q.out | 113 +
.../spark/spark_dynamic_partition_pruning.q.out | 1650 ++-
.../spark_dynamic_partition_pruning_2.q.out | 506 +-
...k_vectorized_dynamic_partition_pruning.q.out | 1507 ++-
.../results/clientpositive/spark/stats0.q.out | 8 +
.../results/clientpositive/spark/stats1.q.out | 18 +-
.../results/clientpositive/spark/stats12.q.out | 4 +
.../results/clientpositive/spark/stats13.q.out | 2 +
.../results/clientpositive/spark/stats18.q.out | 10 +-
.../results/clientpositive/spark/stats3.q.out | 1 +
.../clientpositive/spark/stats_noscan_1.q.out | 28 +-
.../clientpositive/spark/stats_noscan_2.q.out | 20 +-
.../spark/stats_partscan_1_23.q.out | 32 +-
.../results/clientpositive/spark/statsfs.q.out | 42 +-
.../clientpositive/spark/subquery_exists.q.out | 997 +-
.../clientpositive/spark/subquery_in.q.out | 6133 ++++++++++-
.../spark/subquery_multiinsert.q.out | 8 +-
.../spark/table_access_keys_stats.q.out | 71 +-
.../spark/temp_table_external.q.out | 6 +-
.../clientpositive/spark/temp_table_gb1.q.out | 18 +-
.../clientpositive/spark/temp_table_join1.q.out | 26 +-
.../clientpositive/spark/tez_join_tests.q.out | 8 +-
.../spark/tez_joins_explain.q.out | 6 +-
.../clientpositive/spark/timestamp_udf.q.out | 12 +-
.../clientpositive/spark/transform2.q.out | 6 +-
.../clientpositive/spark/transform_ppr1.q.out | 16 +-
.../clientpositive/spark/transform_ppr2.q.out | 12 +-
.../spark/truncate_column_buckets.q.out | 28 +-
.../clientpositive/spark/uber_reduce.q.out | 10 +-
.../clientpositive/spark/udaf_collect_set.q.out | 4 +
.../results/clientpositive/spark/udf_max.q.out | 2 +
.../results/clientpositive/spark/udf_min.q.out | 2 +
.../clientpositive/spark/udf_percentile.q.out | 28 +-
.../results/clientpositive/spark/union.q.out | 10 +-
.../results/clientpositive/spark/union10.q.out | 12 +-
.../results/clientpositive/spark/union11.q.out | 10 +-
.../results/clientpositive/spark/union12.q.out | 12 +-
.../results/clientpositive/spark/union13.q.out | 10 +-
.../results/clientpositive/spark/union14.q.out | 26 +-
.../results/clientpositive/spark/union15.q.out | 10 +-
.../results/clientpositive/spark/union16.q.out | 6 +-
.../results/clientpositive/spark/union17.q.out | 16 +-
.../results/clientpositive/spark/union18.q.out | 18 +-
.../results/clientpositive/spark/union19.q.out | 22 +-
.../results/clientpositive/spark/union2.q.out | 10 +-
.../results/clientpositive/spark/union20.q.out | 10 +-
.../results/clientpositive/spark/union21.q.out | 10 +-
.../results/clientpositive/spark/union22.q.out | 25 +-
.../results/clientpositive/spark/union24.q.out | 32 +-
.../results/clientpositive/spark/union26.q.out | 8 +-
.../results/clientpositive/spark/union27.q.out | 6 +-
.../results/clientpositive/spark/union3.q.out | 8 +-
.../results/clientpositive/spark/union31.q.out | 20 +-
.../results/clientpositive/spark/union32.q.out | 44 +-
.../results/clientpositive/spark/union33.q.out | 12 +-
.../results/clientpositive/spark/union34.q.out | 26 +-
.../results/clientpositive/spark/union4.q.out | 14 +-
.../results/clientpositive/spark/union5.q.out | 10 +-
.../results/clientpositive/spark/union6.q.out | 12 +-
.../results/clientpositive/spark/union7.q.out | 24 +-
.../results/clientpositive/spark/union8.q.out | 10 +-
.../results/clientpositive/spark/union9.q.out | 10 +-
.../clientpositive/spark/union_date.q.out | 8 +-
.../clientpositive/spark/union_date_trim.q.out | 6 +-
.../clientpositive/spark/union_null.q.out | 26 +-
.../clientpositive/spark/union_ppr.q.out | 16 +-
.../clientpositive/spark/union_remove_1.q.out | 26 +-
.../clientpositive/spark/union_remove_10.q.out | 34 +-
.../clientpositive/spark/union_remove_11.q.out | 34 +-
.../clientpositive/spark/union_remove_12.q.out | 32 +-
.../clientpositive/spark/union_remove_13.q.out | 32 +-
.../clientpositive/spark/union_remove_14.q.out | 34 +-
.../clientpositive/spark/union_remove_15.q.out | 32 +-
.../clientpositive/spark/union_remove_16.q.out | 30 +-
.../clientpositive/spark/union_remove_17.q.out | 26 +-
.../clientpositive/spark/union_remove_18.q.out | 30 +-
.../clientpositive/spark/union_remove_19.q.out | 42 +-
.../clientpositive/spark/union_remove_2.q.out | 28 +-
.../clientpositive/spark/union_remove_20.q.out | 28 +-
.../clientpositive/spark/union_remove_21.q.out | 28 +-
.../clientpositive/spark/union_remove_22.q.out | 28 +-
.../clientpositive/spark/union_remove_23.q.out | 28 +-
.../clientpositive/spark/union_remove_24.q.out | 24 +-
.../clientpositive/spark/union_remove_25.q.out | 28 +-
.../clientpositive/spark/union_remove_3.q.out | 28 +-
.../clientpositive/spark/union_remove_4.q.out | 26 +-
.../clientpositive/spark/union_remove_5.q.out | 30 +-
.../clientpositive/spark/union_remove_6.q.out | 24 +-
.../spark/union_remove_6_subq.q.out | 34 +-
.../clientpositive/spark/union_remove_7.q.out | 30 +-
.../clientpositive/spark/union_remove_8.q.out | 32 +-
.../clientpositive/spark/union_remove_9.q.out | 30 +-
.../clientpositive/spark/union_script.q.out | 6 +-
.../clientpositive/spark/union_top_level.q.out | 93 +-
.../clientpositive/spark/uniquejoin.q.out | 8 +-
.../clientpositive/spark/varchar_join1.q.out | 18 +-
.../spark/vector_between_in.q.out | 104 +-
.../spark/vector_cast_constant.q.out | 6 +-
.../spark/vector_count_distinct.q.out | 16 +-
.../spark/vector_data_types.q.out | 6 +-
.../spark/vector_decimal_aggregate.q.out | 16 +-
.../spark/vector_decimal_mapjoin.q.out | 8 +-
.../spark/vector_distinct_2.q.out | 8 +-
.../clientpositive/spark/vector_groupby_3.q.out | 8 +-
.../spark/vector_inner_join.q.out | 8 -
.../spark/vector_mapjoin_reduce.q.out | 407 +-
.../spark/vector_outer_join0.q.out | 20 +-
.../spark/vector_outer_join1.q.out | 30 +-
.../spark/vector_outer_join2.q.out | 14 +-
.../spark/vector_outer_join3.q.out | 30 +-
.../spark/vector_outer_join4.q.out | 30 +-
.../spark/vector_outer_join5.q.out | 48 +-
.../spark/vector_string_concat.q.out | 14 +-
.../clientpositive/spark/vectorization_0.q.out | 30 +-
.../clientpositive/spark/vectorization_1.q.out | 8 +-
.../clientpositive/spark/vectorization_10.q.out | 8 +-
.../clientpositive/spark/vectorization_11.q.out | 8 +-
.../clientpositive/spark/vectorization_12.q.out | 8 +-
.../clientpositive/spark/vectorization_13.q.out | 14 +-
.../clientpositive/spark/vectorization_14.q.out | 8 +-
.../clientpositive/spark/vectorization_15.q.out | 8 +-
.../clientpositive/spark/vectorization_16.q.out | 1054 +-
.../clientpositive/spark/vectorization_17.q.out | 8 +-
.../clientpositive/spark/vectorization_2.q.out | 8 +-
.../clientpositive/spark/vectorization_3.q.out | 8 +-
.../clientpositive/spark/vectorization_4.q.out | 8 +-
.../clientpositive/spark/vectorization_5.q.out | 8 +-
.../clientpositive/spark/vectorization_6.q.out | 8 +-
.../clientpositive/spark/vectorization_9.q.out | 1054 +-
.../spark/vectorization_div0.q.out | 24 +-
.../spark/vectorization_short_regress.q.out | 640 +-
.../spark/vectorized_mapjoin.q.out | 8 +-
.../spark/vectorized_math_funcs.q.out | 56 +-
.../spark/vectorized_nested_mapjoin.q.out | 8 +-
.../clientpositive/spark/vectorized_ptf.q.out | 533 +-
.../spark/vectorized_rcfile_columnar.q.out | 10 +-
.../spark/vectorized_shufflejoin.q.out | 8 +-
.../spark/vectorized_string_funcs.q.out | 24 +-
.../spark/vectorized_timestamp_funcs.q.out | 32 +-
.../clientpositive/spark/windowing.q.out | 640 +-
.../results/clientpositive/specialChar.q.out | 96 +
.../special_character_in_tabnames_1.q.out | 4 -
.../special_character_in_tabnames_2.q.out | 25 +-
ql/src/test/results/clientpositive/stats0.q.out | 14 +
ql/src/test/results/clientpositive/stats1.q.out | 18 +-
.../test/results/clientpositive/stats12.q.out | 4 +
.../test/results/clientpositive/stats13.q.out | 2 +
.../test/results/clientpositive/stats18.q.out | 10 +-
ql/src/test/results/clientpositive/stats3.q.out | 1 +
ql/src/test/results/clientpositive/stats4.q.out | 8 +-
.../stats_aggregator_error_1.q.out | 16 +-
.../clientpositive/stats_empty_dyn_part.q.out | 12 +-
.../clientpositive/stats_empty_partition.q.out | 10 +-
.../clientpositive/stats_invalidation.q.out | 1 +
.../clientpositive/stats_list_bucket.q.out | 28 +-
.../clientpositive/stats_missing_warning.q.out | 159 +
.../results/clientpositive/stats_noscan_1.q.out | 28 +-
.../results/clientpositive/stats_noscan_2.q.out | 20 +-
.../clientpositive/stats_partial_size.q.out | 2 -
.../clientpositive/stats_partscan_1_23.q.out | 32 +-
.../results/clientpositive/stats_ppr_all.q.out | 6 -
.../stats_publisher_error_1.q.out | 16 +-
.../test/results/clientpositive/statsfs.q.out | 42 +-
.../results/clientpositive/str_to_map.q.out | 4 +-
.../results/clientpositive/struct_in_view.q.out | 6 +
.../subq_where_serialization.q.out | 98 +-
.../clientpositive/subquery_exists.q.out | 1057 +-
.../subquery_exists_explain_rewrite.q.out | 12 +-
.../clientpositive/subquery_exists_having.q.out | 287 +-
.../subquery_in_explain_rewrite.q.out | 48 +-
.../clientpositive/subquery_in_having.q.out | 3038 ++++--
.../clientpositive/subquery_multiinsert.q.out | 8 +-
.../clientpositive/subquery_notexists.q.out | 1407 ++-
.../subquery_notexists_having.q.out | 292 +-
.../clientpositive/subquery_notin_having.q.out | 1674 +++-
.../subquery_unqualcolumnrefs.q.out | 1186 ++-
.../results/clientpositive/subquery_views.q.out | 6 +-
.../temp_table_display_colstats_tbllvl.q.out | 14 +-
.../results/clientpositive/temp_table_gb1.q.out | 6 +-
.../clientpositive/temp_table_join1.q.out | 26 +-
.../clientpositive/temp_table_names.q.out | 6 +-
.../clientpositive/temp_table_options1.q.out | 70 +-
.../clientpositive/temp_table_precedence.q.out | 36 +-
.../clientpositive/temp_table_subquery1.q.out | 12 +-
.../temp_table_windowing_expressions.q.out | 6 +-
.../clientpositive/tez/explainanalyze_1.q.out | 128 +-
.../clientpositive/tez/explainanalyze_2.q.out | 1966 ++--
.../clientpositive/tez/explainanalyze_3.q.out | 149 +-
.../clientpositive/tez/explainanalyze_4.q.out | 228 +-
.../clientpositive/tez/explainanalyze_5.q.out | 108 +-
.../clientpositive/tez/explainuser_3.q.out | 148 +-
.../tez/hybridgrace_hashjoin_1.q.out | 116 +-
.../tez/hybridgrace_hashjoin_2.q.out | 52 +-
.../tez/multi_count_distinct.q.out | 18 +-
.../tez/orc_vectorization_ppd.q.out | 80 +-
.../clientpositive/tez/tez_union_with_udf.q.out | 6 +-
.../clientpositive/tez/unionDistinct_2.q.out | 20 +-
.../clientpositive/tez/update_orig_table.q.out | 8 +-
.../tez/vector_join_part_col_char.q.out | 2 -
.../clientpositive/tez/vectorization_div0.q.out | 24 +-
.../tez/vectorization_limit.q.out | 32 +-
.../results/clientpositive/tez_join_hash.q.out | 8 +-
.../test/results/clientpositive/timestamp.q.out | 8 +-
.../clientpositive/timestamp_comparison2.q.out | 12 +-
.../clientpositive/timestamp_date_only.q.out | 27 +
.../clientpositive/timestamp_formats.q.out | 12 +-
.../clientpositive/timestamp_ints_casts.q.out | 32 +-
.../results/clientpositive/timestamp_udf.q.out | 12 +-
.../results/clientpositive/transform2.q.out | 6 +-
.../results/clientpositive/transform_acid.q.out | 8 +-
.../results/clientpositive/transform_ppr1.q.out | 16 +-
.../results/clientpositive/transform_ppr2.q.out | 12 +-
.../clientpositive/truncate_column.q.out | 86 +-
.../truncate_column_buckets.q.out | 28 +-
.../truncate_column_list_bucket.q.out | 26 +-
.../clientpositive/truncate_column_merge.q.out | 26 +-
.../results/clientpositive/truncate_table.q.out | 24 +-
.../clientpositive/type_conversions_1.q.out | 12 +-
.../results/clientpositive/type_widening.q.out | 6 +-
.../clientpositive/udaf_collect_set.q.out | 4 +
.../test/results/clientpositive/udaf_corr.q.out | 2 +
.../results/clientpositive/udaf_covar_pop.q.out | 2 +
.../clientpositive/udaf_covar_samp.q.out | 2 +
.../udaf_percentile_approx_23.q.out | 34 +-
.../results/clientpositive/udaf_sum_list.q.out | 10 +-
ql/src/test/results/clientpositive/udf_E.q.out | 4 +
ql/src/test/results/clientpositive/udf_PI.q.out | 4 +
.../test/results/clientpositive/udf_abs.q.out | 2 +
.../test/results/clientpositive/udf_acos.q.out | 2 +
.../test/results/clientpositive/udf_add.q.out | 2 +
.../results/clientpositive/udf_add_months.q.out | 2 +
.../clientpositive/udf_aes_decrypt.q.out | 8 +-
.../clientpositive/udf_aes_encrypt.q.out | 8 +-
.../test/results/clientpositive/udf_array.q.out | 2 +
.../clientpositive/udf_array_contains.q.out | 14 +-
.../test/results/clientpositive/udf_ascii.q.out | 2 +
.../test/results/clientpositive/udf_asin.q.out | 2 +
.../test/results/clientpositive/udf_atan.q.out | 4 +
.../test/results/clientpositive/udf_avg.q.out | 2 +
.../results/clientpositive/udf_between.q.out | 2 +
.../results/clientpositive/udf_bigint.q.out | 2 +
.../test/results/clientpositive/udf_bin.q.out | 8 +-
.../clientpositive/udf_bitwise_and.q.out | 2 +
.../clientpositive/udf_bitwise_not.q.out | 2 +
.../results/clientpositive/udf_bitwise_or.q.out | 2 +
.../clientpositive/udf_bitwise_shiftleft.q.out | 2 +
.../clientpositive/udf_bitwise_shiftright.q.out | 2 +
.../udf_bitwise_shiftrightunsigned.q.out | 2 +
.../clientpositive/udf_bitwise_xor.q.out | 2 +
.../results/clientpositive/udf_boolean.q.out | 2 +
.../results/clientpositive/udf_bround.q.out | 2 +
.../test/results/clientpositive/udf_case.q.out | 16 +-
.../test/results/clientpositive/udf_cbrt.q.out | 2 +
.../test/results/clientpositive/udf_ceil.q.out | 2 +
.../results/clientpositive/udf_ceiling.q.out | 2 +
.../test/results/clientpositive/udf_chr.q.out | Bin 1476 -> 1550 bytes
.../clientpositive/udf_classloader.q.out | 8 +-
...ssloader_dynamic_dependency_resolution.q.out | 8 +-
.../results/clientpositive/udf_coalesce.q.out | 2 +
.../results/clientpositive/udf_concat.q.out | 8 +-
.../results/clientpositive/udf_concat_ws.q.out | 8 +-
.../test/results/clientpositive/udf_conv.q.out | 54 +-
.../test/results/clientpositive/udf_cos.q.out | 2 +
.../test/results/clientpositive/udf_count.q.out | 2 +
.../test/results/clientpositive/udf_crc32.q.out | 2 +
.../clientpositive/udf_current_user.q.out | 2 +
.../results/clientpositive/udf_date_add.q.out | 8 +-
.../clientpositive/udf_date_format.q.out | 32 +-
.../results/clientpositive/udf_date_sub.q.out | 8 +-
.../results/clientpositive/udf_datediff.q.out | 2 +
.../test/results/clientpositive/udf_day.q.out | 2 +
.../results/clientpositive/udf_dayofmonth.q.out | 2 +
.../results/clientpositive/udf_decode.q.out | 2 +
.../results/clientpositive/udf_degrees.q.out | 4 +
.../test/results/clientpositive/udf_div.q.out | 2 +
.../results/clientpositive/udf_divide.q.out | 2 +
.../results/clientpositive/udf_double.q.out | 2 +
.../test/results/clientpositive/udf_elt.q.out | 2 +
.../test/results/clientpositive/udf_equal.q.out | 6 +
.../test/results/clientpositive/udf_exp.q.out | 2 +
.../results/clientpositive/udf_explode.q.out | 6 +
.../results/clientpositive/udf_factorial.q.out | 2 +
.../test/results/clientpositive/udf_field.q.out | 2 +
.../clientpositive/udf_find_in_set.q.out | 2 +
.../test/results/clientpositive/udf_float.q.out | 2 +
.../test/results/clientpositive/udf_floor.q.out | 2 +
.../clientpositive/udf_folder_constants.q.out | 4 -
.../clientpositive/udf_format_number.q.out | 74 +-
.../clientpositive/udf_from_unixtime.q.out | 2 +
.../clientpositive/udf_from_utc_timestamp.q.out | 2 +
.../clientpositive/udf_get_json_object.q.out | 22 +-
.../clientpositive/udf_greaterthan.q.out | 2 +
.../clientpositive/udf_greaterthanorequal.q.out | 2 +
.../results/clientpositive/udf_greatest.q.out | 2 +
.../test/results/clientpositive/udf_hash.q.out | 2 +
.../test/results/clientpositive/udf_hex.q.out | 22 +-
.../test/results/clientpositive/udf_hour.q.out | 2 +
ql/src/test/results/clientpositive/udf_if.q.out | 8 +-
.../results/clientpositive/udf_initcap.q.out | 2 +
.../results/clientpositive/udf_inline.q.out | 6 +-
.../test/results/clientpositive/udf_instr.q.out | 2 +
.../test/results/clientpositive/udf_int.q.out | 2 +
.../results/clientpositive/udf_isnotnull.q.out | 2 +
.../results/clientpositive/udf_isnull.q.out | 2 +
.../clientpositive/udf_isnull_isnotnull.q.out | 4 +
.../clientpositive/udf_java_method.q.out | 10 +-
.../results/clientpositive/udf_last_day.q.out | 2 +
.../test/results/clientpositive/udf_lcase.q.out | 2 +
.../test/results/clientpositive/udf_least.q.out | 2 +
.../results/clientpositive/udf_length.q.out | 8 +-
.../results/clientpositive/udf_lessthan.q.out | 2 +
.../clientpositive/udf_lessthanorequal.q.out | 2 +
.../clientpositive/udf_levenshtein.q.out | 2 +
.../test/results/clientpositive/udf_like.q.out | 2 +
ql/src/test/results/clientpositive/udf_ln.q.out | 2 +
.../results/clientpositive/udf_locate.q.out | 2 +
.../test/results/clientpositive/udf_log.q.out | 2 +
.../test/results/clientpositive/udf_log10.q.out | 2 +
.../test/results/clientpositive/udf_log2.q.out | 2 +
.../clientpositive/udf_logged_in_user.q.out | 2 +
.../test/results/clientpositive/udf_lower.q.out | 2 +
.../test/results/clientpositive/udf_lpad.q.out | 2 +
.../test/results/clientpositive/udf_ltrim.q.out | 2 +
.../test/results/clientpositive/udf_map.q.out | 2 +
.../results/clientpositive/udf_map_keys.q.out | 22 +-
.../results/clientpositive/udf_map_values.q.out | 22 +-
.../test/results/clientpositive/udf_mask.q.out | 2 +
.../clientpositive/udf_mask_first_n.q.out | 2 +
.../results/clientpositive/udf_mask_hash.q.out | 2 +
.../clientpositive/udf_mask_last_n.q.out | 2 +
.../clientpositive/udf_mask_show_first_n.q.out | 2 +
.../clientpositive/udf_mask_show_last_n.q.out | 2 +
.../test/results/clientpositive/udf_max.q.out | 2 +
.../test/results/clientpositive/udf_md5.q.out | 2 +
.../test/results/clientpositive/udf_min.q.out | 2 +
.../results/clientpositive/udf_minute.q.out | 2 +
.../results/clientpositive/udf_modulo.q.out | 2 +
.../test/results/clientpositive/udf_month.q.out | 2 +
.../clientpositive/udf_months_between.q.out | 32 +-
.../clientpositive/udf_named_struct.q.out | 2 +
.../results/clientpositive/udf_negative.q.out | 10 +-
.../results/clientpositive/udf_next_day.q.out | 2 +
.../test/results/clientpositive/udf_not.q.out | 10 +-
.../results/clientpositive/udf_notequal.q.out | 4 +
.../results/clientpositive/udf_nullif.q.out | 2 +
.../test/results/clientpositive/udf_nvl.q.out | 2 +
ql/src/test/results/clientpositive/udf_or.q.out | 2 +
.../results/clientpositive/udf_parse_url.q.out | 2 +
.../results/clientpositive/udf_percentile.q.out | 28 +-
.../test/results/clientpositive/udf_pmod.q.out | 2 +
.../results/clientpositive/udf_positive.q.out | 10 +-
.../test/results/clientpositive/udf_pow.q.out | 2 +
.../test/results/clientpositive/udf_power.q.out | 2 +
.../results/clientpositive/udf_printf.q.out | 34 +-
.../results/clientpositive/udf_quarter.q.out | 66 +-
.../results/clientpositive/udf_radians.q.out | 4 +
.../test/results/clientpositive/udf_rand.q.out | 2 +
.../results/clientpositive/udf_reflect.q.out | 2 +
.../results/clientpositive/udf_reflect2.q.out | 2 +
.../results/clientpositive/udf_regexp.q.out | 2 +
.../clientpositive/udf_regexp_extract.q.out | 2 +
.../clientpositive/udf_regexp_replace.q.out | 2 +
.../results/clientpositive/udf_repeat.q.out | 2 +
.../results/clientpositive/udf_replace.q.out | 2 +
.../results/clientpositive/udf_reverse.q.out | 12 +-
.../test/results/clientpositive/udf_rlike.q.out | 2 +
.../test/results/clientpositive/udf_round.q.out | 2 +
.../results/clientpositive/udf_round_2.q.out | 12 +-
.../results/clientpositive/udf_round_3.q.out | 30 +-
.../test/results/clientpositive/udf_rpad.q.out | 2 +
.../test/results/clientpositive/udf_rtrim.q.out | 2 +
.../results/clientpositive/udf_second.q.out | 2 +
.../results/clientpositive/udf_sentences.q.out | 4 +-
.../test/results/clientpositive/udf_sha1.q.out | 2 +
.../test/results/clientpositive/udf_sha2.q.out | 8 +-
.../test/results/clientpositive/udf_sign.q.out | 4 +
.../test/results/clientpositive/udf_sin.q.out | 2 +
.../test/results/clientpositive/udf_size.q.out | 2 +
.../results/clientpositive/udf_smallint.q.out | 2 +
.../results/clientpositive/udf_sort_array.q.out | 52 +-
.../clientpositive/udf_sort_array_by.q.out | 88 +-
.../results/clientpositive/udf_soundex.q.out | 2 +
.../test/results/clientpositive/udf_space.q.out | 2 +
.../test/results/clientpositive/udf_split.q.out | 2 +
.../test/results/clientpositive/udf_sqrt.q.out | 2 +
.../test/results/clientpositive/udf_std.q.out | 2 +
.../results/clientpositive/udf_stddev.q.out | 2 +
.../clientpositive/udf_stddev_samp.q.out | 4 +
.../results/clientpositive/udf_string.q.out | 2 +
.../results/clientpositive/udf_struct.q.out | 2 +
.../results/clientpositive/udf_substr.q.out | 20 +-
.../results/clientpositive/udf_substring.q.out | 8 +-
.../clientpositive/udf_substring_index.q.out | 28 +-
.../results/clientpositive/udf_subtract.q.out | 2 +
.../test/results/clientpositive/udf_sum.q.out | 4 +
.../test/results/clientpositive/udf_tan.q.out | 4 +
.../results/clientpositive/udf_tinyint.q.out | 2 +
.../results/clientpositive/udf_to_boolean.q.out | 22 +-
.../results/clientpositive/udf_to_byte.q.out | 6 +-
.../results/clientpositive/udf_to_date.q.out | 2 +
.../results/clientpositive/udf_to_double.q.out | 6 +-
.../results/clientpositive/udf_to_float.q.out | 6 +-
.../results/clientpositive/udf_to_long.q.out | 6 +-
.../results/clientpositive/udf_to_short.q.out | 6 +-
.../results/clientpositive/udf_to_string.q.out | 6 +-
.../clientpositive/udf_to_unix_timestamp.q.out | 8 +-
.../clientpositive/udf_to_utc_timestamp.q.out | 2 +
.../results/clientpositive/udf_translate.q.out | 56 +-
.../test/results/clientpositive/udf_trim.q.out | 2 +
.../test/results/clientpositive/udf_trunc.q.out | 66 +-
.../clientpositive/udf_trunc_number.q.out | 350 +
.../test/results/clientpositive/udf_ucase.q.out | 2 +
.../test/results/clientpositive/udf_unhex.q.out | 16 +-
.../test/results/clientpositive/udf_union.q.out | 2 +
.../clientpositive/udf_unix_timestamp.q.out | 2 +
.../test/results/clientpositive/udf_upper.q.out | 2 +
.../results/clientpositive/udf_var_pop.q.out | 2 +
.../results/clientpositive/udf_var_samp.q.out | 4 +
.../results/clientpositive/udf_variance.q.out | 8 +
.../results/clientpositive/udf_version.q.out | 6 +-
.../results/clientpositive/udf_weekofyear.q.out | 2 +
.../test/results/clientpositive/udf_when.q.out | 8 +-
.../test/results/clientpositive/udf_xpath.q.out | 2 +
.../clientpositive/udf_xpath_boolean.q.out | 2 +
.../clientpositive/udf_xpath_double.q.out | 4 +
.../clientpositive/udf_xpath_float.q.out | 2 +
.../results/clientpositive/udf_xpath_int.q.out | 2 +
.../results/clientpositive/udf_xpath_long.q.out | 2 +
.../clientpositive/udf_xpath_short.q.out | 2 +
.../clientpositive/udf_xpath_string.q.out | 2 +
.../results/clientpositive/udtf_explode.q.out | 18 +-
.../clientpositive/udtf_json_tuple.q.out | 8 +-
.../clientpositive/udtf_nofetchtask.q.out | 12 +-
.../clientpositive/udtf_parse_url_tuple.q.out | 8 +-
.../clientpositive/udtf_replicate_rows.q.out | 4 +-
.../clientpositive/unicode_comments.q.out | 2 +
.../clientpositive/unicode_notation.q.out | 8 +-
ql/src/test/results/clientpositive/union.q.out | 10 +-
.../test/results/clientpositive/union10.q.out | 12 +-
.../test/results/clientpositive/union11.q.out | 10 +-
.../test/results/clientpositive/union12.q.out | 12 +-
.../test/results/clientpositive/union13.q.out | 10 +-
.../test/results/clientpositive/union14.q.out | 10 +-
.../test/results/clientpositive/union15.q.out | 10 +-
.../test/results/clientpositive/union16.q.out | 6 +-
.../test/results/clientpositive/union17.q.out | 16 +-
.../test/results/clientpositive/union18.q.out | 18 +-
.../test/results/clientpositive/union19.q.out | 22 +-
ql/src/test/results/clientpositive/union2.q.out | 10 +-
.../test/results/clientpositive/union20.q.out | 10 +-
.../test/results/clientpositive/union21.q.out | 10 +-
.../test/results/clientpositive/union22.q.out | 35 +-
.../test/results/clientpositive/union24.q.out | 44 +-
.../test/results/clientpositive/union26.q.out | 8 +-
.../test/results/clientpositive/union27.q.out | 6 +-
ql/src/test/results/clientpositive/union3.q.out | 8 +-
.../test/results/clientpositive/union31.q.out | 20 +-
.../test/results/clientpositive/union32.q.out | 44 +-
.../test/results/clientpositive/union33.q.out | 12 +-
.../test/results/clientpositive/union34.q.out | 26 +-
.../test/results/clientpositive/union36.q.out | 6 +-
.../test/results/clientpositive/union37.q.out | 4 -
ql/src/test/results/clientpositive/union4.q.out | 14 +-
ql/src/test/results/clientpositive/union5.q.out | 10 +-
ql/src/test/results/clientpositive/union6.q.out | 12 +-
ql/src/test/results/clientpositive/union7.q.out | 10 +-
ql/src/test/results/clientpositive/union8.q.out | 10 +-
ql/src/test/results/clientpositive/union9.q.out | 10 +-
.../results/clientpositive/union_date.q.out | 8 +-
.../clientpositive/union_date_trim.q.out | 6 +-
.../results/clientpositive/union_null.q.out | 16 +-
.../results/clientpositive/union_paren.q.out | 14 +-
.../test/results/clientpositive/union_ppr.q.out | 12 +-
.../results/clientpositive/union_remove_1.q.out | 26 +-
.../clientpositive/union_remove_10.q.out | 34 +-
.../clientpositive/union_remove_11.q.out | 34 +-
.../clientpositive/union_remove_12.q.out | 32 +-
.../clientpositive/union_remove_13.q.out | 32 +-
.../clientpositive/union_remove_14.q.out | 34 +-
.../clientpositive/union_remove_15.q.out | 32 +-
.../clientpositive/union_remove_16.q.out | 30 +-
.../clientpositive/union_remove_17.q.out | 26 +-
.../clientpositive/union_remove_18.q.out | 30 +-
.../clientpositive/union_remove_19.q.out | 42 +-
.../results/clientpositive/union_remove_2.q.out | 28 +-
.../clientpositive/union_remove_20.q.out | 28 +-
.../clientpositive/union_remove_21.q.out | 28 +-
.../clientpositive/union_remove_22.q.out | 28 +-
.../clientpositive/union_remove_23.q.out | 28 +-
.../clientpositive/union_remove_24.q.out | 24 +-
.../clientpositive/union_remove_25.q.out | 26 +-
.../results/clientpositive/union_remove_3.q.out | 28 +-
.../results/clientpositive/union_remove_4.q.out | 26 +-
.../results/clientpositive/union_remove_5.q.out | 30 +-
.../results/clientpositive/union_remove_6.q.out | 28 +-
.../clientpositive/union_remove_6_subq.q.out | 38 +-
.../results/clientpositive/union_remove_7.q.out | 30 +-
.../results/clientpositive/union_remove_8.q.out | 32 +-
.../results/clientpositive/union_remove_9.q.out | 30 +-
.../results/clientpositive/union_script.q.out | 6 +-
.../results/clientpositive/union_stats.q.out | 2 +
.../unionall_join_nullconstant.q.out | 2 +
.../clientpositive/unionall_unbalancedppd.q.out | 18 +-
.../results/clientpositive/uniquejoin.q.out | 8 +-
.../unset_table_view_property.q.out | 81 +-
.../clientpositive/updateBasicStats.q.out | 2 -
.../update_after_multiple_inserts.q.out | 12 +-
...er_multiple_inserts_special_characters.q.out | 12 +-
.../clientpositive/update_all_types.q.out | 8 +-
.../clientpositive/update_orig_table.q.out | 8 +-
.../test/results/clientpositive/varchar_1.q.out | 30 +-
.../test/results/clientpositive/varchar_2.q.out | 12 +-
.../results/clientpositive/varchar_cast.q.out | 18 +-
.../clientpositive/varchar_comparison.q.out | 30 +-
.../results/clientpositive/varchar_join1.q.out | 18 +-
.../clientpositive/varchar_nested_types.q.out | 30 +-
.../results/clientpositive/varchar_serde.q.out | 60 +-
.../results/clientpositive/varchar_union1.q.out | 18 +-
.../results/clientpositive/vector_acid3.q.out | 2 -
.../vector_adaptor_usage_mode.q.out | 2 -
.../clientpositive/vector_aggregate_9.q.out | 8 +-
.../vector_aggregate_without_gby.q.out | 2 -
.../clientpositive/vector_between_columns.q.out | 12 +-
.../vector_binary_join_groupby.q.out | 15 +-
.../results/clientpositive/vector_bround.q.out | 2 -
.../results/clientpositive/vector_bucket.q.out | 2 -
.../clientpositive/vector_cast_constant.q.out | 6 +-
.../results/clientpositive/vector_char_2.q.out | 12 +-
.../clientpositive/vector_char_cast.q.out | 2 -
.../clientpositive/vector_char_mapjoin1.q.out | 42 +-
.../clientpositive/vector_char_simple.q.out | 18 +-
.../clientpositive/vector_coalesce.q.out | 8 +-
.../clientpositive/vector_coalesce_2.q.out | 2 -
.../clientpositive/vector_coalesce_3.q.out | 120 +
.../clientpositive/vector_complex_all.q.out | 8 +-
.../clientpositive/vector_complex_join.q.out | 14 +-
.../results/clientpositive/vector_const.q.out | 2 -
.../results/clientpositive/vector_count.q.out | 8 +-
.../vector_custom_udf_configure.q.out | 2 -
.../clientpositive/vector_data_types.q.out | 6 +-
.../results/clientpositive/vector_date_1.q.out | 28 +-
.../vector_decimal_aggregate.q.out | 16 +-
.../vector_decimal_expressions.q.out | 34 +-
.../clientpositive/vector_decimal_mapjoin.q.out | 8 +-
.../vector_decimal_math_funcs.q.out | 24 +-
.../vector_decimal_precision.q.out | 248 +-
.../clientpositive/vector_decimal_round.q.out | 6 -
.../clientpositive/vector_decimal_round_2.q.out | 30 +-
.../clientpositive/vector_distinct_2.q.out | 8 +-
.../clientpositive/vector_empty_where.q.out | 6 +-
.../clientpositive/vector_groupby4.q.out | 8 +-
.../clientpositive/vector_groupby6.q.out | 8 +-
.../clientpositive/vector_groupby_3.q.out | 8 +-
.../clientpositive/vector_groupby_mapjoin.q.out | 255 +-
.../clientpositive/vector_grouping_sets.q.out | 36 +-
.../clientpositive/vector_include_no_sel.q.out | 22 +-
.../clientpositive/vector_inner_join.q.out | 8 -
.../clientpositive/vector_interval_1.q.out | 46 +-
.../vector_interval_arithmetic.q.out | 26 +-
.../vector_join_part_col_char.q.out | 2 -
.../vector_left_outer_join2.q.out | 8 +-
.../clientpositive/vector_mapjoin_reduce.q.out | 476 +-
.../vector_mr_diff_schema_alias.q.out | 10 +-
.../clientpositive/vector_null_projection.q.out | 18 +-
.../vector_number_compare_projection.q.out | 2 -
.../clientpositive/vector_outer_join0.q.out | 20 +-
.../clientpositive/vector_outer_join1.q.out | 30 +-
.../clientpositive/vector_outer_join2.q.out | 14 +-
.../clientpositive/vector_outer_join3.q.out | 30 +-
.../clientpositive/vector_outer_join4.q.out | 30 +-
.../clientpositive/vector_outer_join6.q.out | 8 +-
.../results/clientpositive/vector_reduce1.q.out | 8 +-
.../results/clientpositive/vector_reduce2.q.out | 8 +-
.../results/clientpositive/vector_reduce3.q.out | 8 +-
.../clientpositive/vector_string_concat.q.out | 14 +-
.../clientpositive/vector_string_decimal.q.out | 2 -
.../clientpositive/vector_struct_in.q.out | 36 +-
.../vector_tablesample_rows.q.out | 8 +-
.../results/clientpositive/vector_udf2.q.out | 4 -
.../vector_varchar_mapjoin1.q.out | 18 +-
.../clientpositive/vector_varchar_simple.q.out | 18 +-
.../clientpositive/vector_when_case_null.q.out | 10 +-
.../clientpositive/vectorization_1.q.out | 8 +-
.../clientpositive/vectorization_10.q.out | 8 +-
.../clientpositive/vectorization_11.q.out | 8 +-
.../clientpositive/vectorization_12.q.out | 8 +-
.../clientpositive/vectorization_13.q.out | 14 +-
.../clientpositive/vectorization_14.q.out | 8 +-
.../clientpositive/vectorization_15.q.out | 8 +-
.../clientpositive/vectorization_16.q.out | 1054 +-
.../clientpositive/vectorization_17.q.out | 8 +-
.../clientpositive/vectorization_2.q.out | 8 +-
.../clientpositive/vectorization_3.q.out | 8 +-
.../clientpositive/vectorization_4.q.out | 8 +-
.../clientpositive/vectorization_5.q.out | 8 +-
.../clientpositive/vectorization_6.q.out | 8 +-
.../clientpositive/vectorization_7.q.out | 14 +-
.../clientpositive/vectorization_8.q.out | 14 +-
.../clientpositive/vectorization_9.q.out | 1054 +-
.../clientpositive/vectorization_div0.q.out | 24 +-
.../clientpositive/vectorization_limit.q.out | 32 +-
.../vectorized_bucketmapjoin1.q.out | 14 +-
.../clientpositive/vectorized_casts.q.out | 70 +-
.../clientpositive/vectorized_date_funcs.q.out | 1003 +-
.../clientpositive/vectorized_mapjoin.q.out | 8 +-
.../clientpositive/vectorized_mapjoin2.q.out | 4 -
.../clientpositive/vectorized_math_funcs.q.out | 56 +-
.../vectorized_parquet_types.q.out | 12 +-
.../results/clientpositive/vectorized_ptf.q.out | 286 +-
.../vectorized_rcfile_columnar.q.out | 10 +-
.../clientpositive/vectorized_shufflejoin.q.out | 8 +-
.../vectorized_string_funcs.q.out | 24 +-
.../clientpositive/vectorized_timestamp.q.out | 2 -
.../vectorized_timestamp_funcs.q.out | 32 +-
.../vectorized_timestamp_ints_casts.q.out | 32 +-
ql/src/test/results/clientpositive/view.q.out | 64 +-
.../results/clientpositive/view_alias.q.out | 25 +
.../view_authorization_sqlstd.q.out | 51 +-
.../test/results/clientpositive/view_cast.q.out | 16 +
.../results/clientpositive/view_inputs.q.out | 12 +-
.../test/results/clientpositive/windowing.q.out | 461 +-
.../windowing_columnPruning.q.out | 18 +-
.../clientpositive/windowing_distinct.q.out | 18 +-
.../clientpositive/windowing_expressions.q.out | 6 +-
.../results/clientpositive/windowing_gby2.q.out | 2 +-
.../results/clientpositive/windowing_rank.q.out | 8 +-
.../clientpositive/windowing_streaming.q.out | 12 +-
.../clientpositive/windowing_udaf2.q.out | 6 +-
.../clientpositive/windowing_windowspec.q.out | 6 +-
.../clientpositive/windowing_windowspec3.q.out | 38 +-
.../clientpositive/windowing_windowspec4.q.out | 10 +-
serde/if/serde.thrift | 1 +
.../src/gen/thrift/gen-cpp/serde_constants.cpp | 2 +
serde/src/gen/thrift/gen-cpp/serde_constants.h | 1 +
.../hadoop/hive/serde/serdeConstants.java | 2 +
.../org/apache/hadoop/hive/serde/Types.php | 5 +
.../org_apache_hadoop_hive_serde/constants.py | 1 +
serde/src/gen/thrift/gen-rb/serde_constants.rb | 2 +
.../hive/serde2/ColumnProjectionUtils.java | 18 +-
.../serde2/MetadataTypedColumnsetSerDe.java | 4 +-
.../apache/hadoop/hive/serde2/RegexSerDe.java | 5 +-
.../apache/hadoop/hive/serde2/SerDeUtils.java | 4 +-
.../hadoop/hive/serde2/avro/AvroSerDe.java | 7 +-
.../hadoop/hive/serde2/avro/AvroSerdeUtils.java | 10 +-
.../binarysortable/BinarySortableSerDe.java | 143 +-
.../fast/BinarySortableDeserializeRead.java | 35 +-
.../fast/BinarySortableSerializeWrite.java | 26 +-
.../hadoop/hive/serde2/fast/SerializeWrite.java | 5 +
.../hive/serde2/lazy/LazyHiveDecimal.java | 72 +-
.../hive/serde2/lazy/LazySerDeParameters.java | 6 +-
.../lazy/fast/LazySimpleDeserializeRead.java | 27 +-
.../lazy/fast/LazySimpleSerializeWrite.java | 26 +-
.../LazyHiveDecimalObjectInspector.java | 9 +-
.../lazybinary/LazyBinaryHiveDecimal.java | 6 +-
.../hive/serde2/lazybinary/LazyBinarySerDe.java | 79 +-
.../hive/serde2/lazybinary/LazyBinaryUtils.java | 4 +-
.../fast/LazyBinaryDeserializeRead.java | 28 +-
.../fast/LazyBinarySerializeWrite.java | 84 +-
.../objectinspector/ObjectInspectorUtils.java | 2 +
.../PrimitiveObjectInspectorUtils.java | 61 +-
...tableConstantHiveDecimalObjectInspector.java | 17 +-
.../hadoop/hive/serde2/thrift/ColumnBuffer.java | 47 +-
.../serde2/thrift/ThriftJDBCBinarySerDe.java | 5 +-
.../hive/serde2/typeinfo/HiveDecimalUtils.java | 5 +-
.../hive/serde2/SerdeRandomRowSource.java | 28 +-
.../apache/hadoop/hive/serde2/VerifyFast.java | 2 +-
.../hive/serde2/avro/TestAvroSerializer.java | 8 +-
.../binarysortable/MyTestPrimitiveClass.java | 16 +-
.../binarysortable/TestBinarySortableFast.java | 43 +-
.../hive/serde2/io/TestHiveDecimalWritable.java | 250 -
.../TestPrimitiveObjectInspectorUtils.java | 6 +
.../hive/serde2/thrift/TestColumnBuffer.java | 271 +
.../apache/hive/service/AbstractService.java | 2 +-
.../hive/service/auth/ldap/DirSearch.java | 17 +
.../service/auth/ldap/GroupFilterFactory.java | 76 +-
.../hive/service/auth/ldap/LdapSearch.java | 17 +
.../apache/hive/service/auth/ldap/Query.java | 11 +
.../hive/service/auth/ldap/QueryFactory.java | 42 +-
.../org/apache/hive/service/cli/CLIService.java | 1 -
.../apache/hive/service/cli/ColumnBasedSet.java | 2 +-
.../cli/operation/GetColumnsOperation.java | 14 +-
.../service/cli/operation/SQLOperation.java | 15 +-
.../service/cli/session/HiveSessionImpl.java | 6 -
.../cli/session/HiveSessionImplwithUGI.java | 5 -
.../apache/hive/service/server/HiveServer2.java | 11 +
.../hive-webapps/hiveserver2/hiveserver2.jsp | 2 +-
.../auth/TestLdapAtnProviderWithMiniDS.java | 147 +-
.../TestLdapAuthenticationProviderImpl.java | 74 +-
.../auth/ldap/LdapAuthenticationTestCase.java | 10 +-
.../hive/service/auth/ldap/TestGroupFilter.java | 68 +-
.../hive/service/auth/ldap/TestLdapSearch.java | 84 +
.../service/auth/ldap/TestQueryFactory.java | 24 +
.../apache/hive/service/cli/CLIServiceTest.java | 5 +-
.../org/apache/hive/service/cli/TestColumn.java | 131 -
.../session/TestPluggableHiveSessionImpl.java | 106 +-
.../hive/service/server/TestHS2HttpServer.java | 24 +-
.../src/test/resources/ldap/ad.example.com.ldif | 133 +
.../test/resources/ldap/microsoft.schema.ldif | 45 +
.../apache/hadoop/hive/shims/Jetty23Shims.java | 56 -
shims/common/pom.xml | 6 +
.../apache/hadoop/fs/ProxyLocalFileSystem.java | 119 +-
.../org/apache/hadoop/hive/io/HdfsUtils.java | 123 +-
.../hadoop/hive/shims/HadoopShimsSecure.java | 6 +-
.../apache/hadoop/hive/shims/ShimLoader.java | 22 -
.../apache/hadoop/hive/io/TestHdfsUtils.java | 184 +
.../org/apache/hive/spark/client/JobHandle.java | 5 +
.../apache/hive/spark/client/JobHandleImpl.java | 5 +
.../hive/spark/client/SparkClientImpl.java | 48 +-
.../hive/spark/client/SparkClientUtilities.java | 29 +
.../hive/spark/client/TestSparkClient.java | 1 -
storage-api/pom.xml | 82 +-
.../org/apache/hadoop/hive/common/Pool.java | 8 +-
.../apache/hadoop/hive/common/io/Allocator.java | 16 +-
.../apache/hadoop/hive/common/io/DataCache.java | 7 +-
.../hadoop/hive/common/io/DiskRangeList.java | 29 +-
.../common/io/encoded/EncodedColumnBatch.java | 17 +
.../hive/common/io/encoded/MemoryBuffer.java | 6 +-
.../hive/common/type/FastHiveDecimal.java | 741 ++
.../hive/common/type/FastHiveDecimalImpl.java | 9388 +++++++++++++++++
.../hadoop/hive/common/type/HiveDecimal.java | 1491 ++-
.../hadoop/hive/common/type/HiveDecimalV1.java | 386 +
.../hive/common/type/HiveDecimalVersionV1.java | 33 +
.../hive/common/type/HiveDecimalVersionV2.java | 33 +
.../hadoop/hive/common/type/RandomTypeUtil.java | 27 +-
.../hive/ql/exec/vector/BytesColumnVector.java | 2 +-
.../hive/ql/exec/vector/ColumnVector.java | 6 +-
.../ql/exec/vector/DecimalColumnVector.java | 35 +-
.../ql/exec/vector/TimestampColumnVector.java | 2 +-
.../hive/ql/exec/vector/VectorizedRowBatch.java | 6 +-
.../hadoop/hive/ql/io/sarg/LiteralDelegate.java | 31 +
.../hive/ql/io/sarg/SearchArgumentFactory.java | 9 +-
.../hive/ql/io/sarg/SearchArgumentImpl.java | 65 +-
.../hadoop/hive/ql/util/TimestampUtils.java | 83 +-
.../hive/serde2/io/HiveDecimalWritable.java | 956 +-
.../hive/serde2/io/HiveDecimalWritableV1.java | 191 +
.../serde2/io/HiveDecimalWritableVersionV1.java | 33 +
.../serde2/io/HiveDecimalWritableVersionV2.java | 33 +
.../apache/hive/common/util/BloomFilter.java | 87 +
.../org/apache/hadoop/hive/VersionTestBase.java | 322 +
.../hive/common/type/HiveDecimalTestBase.java | 558 ++
.../hive/common/type/TestHiveDecimal.java | 3404 +++++++
.../common/type/TestHiveDecimalVersion.java | 67 +
.../ql/exec/vector/TestStructColumnVector.java | 36 +
.../hive/serde2/io/TestHiveDecimalWritable.java | 52 +
.../io/TestHiveDecimalWritableVersion.java | 71 +
.../hive/common/util/TestBloomFilter.java | 589 ++
testutils/metastore/dataload.properties | 6 +
testutils/metastore/dbs/derby/validate.sh | 81 +
testutils/metastore/dbs/mysql/validate.sh | 76 +
testutils/metastore/dbs/postgres/validate.sh | 75 +
testutils/metastore/metastore-upgrade-test.sh | 31 +
.../metastore/metastore-validation-test.sh | 1442 +++
testutils/ptest2/pom.xml | 29 +-
...tScripts.testAlternativeTestJVM.approved.txt | 4 +-
.../TestScripts.testBatch.approved.txt | 4 +-
.../TestScripts.testPrepGit.approved.txt | 2 +-
.../TestScripts.testPrepHadoop1.approved.txt | 2 +-
.../TestScripts.testPrepNone.approved.txt | 2 +-
.../TestScripts.testPrepSvn.approved.txt | 2 +-
3880 files changed, 214501 insertions(+), 86785 deletions(-)
----------------------------------------------------------------------
[02/50] [abbrv] hive git commit: HIVE-15669: LLAP: Improve aging in
shortest job first scheduler (Prasanth Jayachandran reviewed by Rajesh
Balamohan)
Posted by se...@apache.org.
HIVE-15669: LLAP: Improve aging in shortest job first scheduler (Prasanth Jayachandran reviewed by Rajesh Balamohan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/1be08d13
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/1be08d13
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/1be08d13
Branch: refs/heads/hive-14535
Commit: 1be08d13a0198696466f1405a2dd2b95692f75ab
Parents: 16ed90a
Author: Prasanth Jayachandran <pr...@apache.org>
Authored: Fri Jan 27 00:43:43 2017 -0800
Committer: Prasanth Jayachandran <pr...@apache.org>
Committed: Fri Jan 27 00:43:43 2017 -0800
----------------------------------------------------------------------
.../comparator/ShortestJobFirstComparator.java | 17 +--
.../daemon/impl/TaskExecutorTestHelpers.java | 21 ++--
.../daemon/impl/TestTaskExecutorService.java | 26 ++---
.../TestShortestJobFirstComparator.java | 107 ++++++++++++-------
4 files changed, 106 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/1be08d13/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/comparator/ShortestJobFirstComparator.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/comparator/ShortestJobFirstComparator.java b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/comparator/ShortestJobFirstComparator.java
index 238ae9e..9b6c894 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/comparator/ShortestJobFirstComparator.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/comparator/ShortestJobFirstComparator.java
@@ -54,17 +54,22 @@ public class ShortestJobFirstComparator implements Comparator<TaskWrapper> {
// it's parent hierarchy. selfAndUpstreamComplete indicates how many of these have completed.
int knownPending1 = fri1.getNumSelfAndUpstreamTasks() - fri1.getNumSelfAndUpstreamCompletedTasks();
int knownPending2 = fri2.getNumSelfAndUpstreamTasks() - fri2.getNumSelfAndUpstreamCompletedTasks();
- if (knownPending1 < knownPending2) {
- return -1;
- } else if (knownPending1 > knownPending2) {
- return 1;
+ // longer the wait time for an attempt wrt to its start time, higher the priority it gets
+ long waitTime1 = fri1.getCurrentAttemptStartTime() - fri1.getFirstAttemptStartTime();
+ long waitTime2 = fri2.getCurrentAttemptStartTime() - fri2.getFirstAttemptStartTime();
+
+ if (waitTime1 == 0 || waitTime2 == 0) {
+ return knownPending1 - knownPending2;
}
- if (fri1.getFirstAttemptStartTime() < fri2.getFirstAttemptStartTime()) {
+ double ratio1 = (double) knownPending1 / (double) waitTime1;
+ double ratio2 = (double) knownPending2 / (double) waitTime2;
+ if (ratio1 < ratio2) {
return -1;
- } else if (fri1.getFirstAttemptStartTime() > fri2.getFirstAttemptStartTime()) {
+ } else if (ratio1 > ratio2) {
return 1;
}
+
return 0;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/1be08d13/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorTestHelpers.java
----------------------------------------------------------------------
diff --git a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorTestHelpers.java b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorTestHelpers.java
index 73bb68e..2cd6542 100644
--- a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorTestHelpers.java
+++ b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorTestHelpers.java
@@ -47,10 +47,10 @@ public class TaskExecutorTestHelpers {
private static final Logger LOG = LoggerFactory.getLogger(TestTaskExecutorService.class);
- public static MockRequest createMockRequest(int fragmentNum, int parallelism, long startTime,
- boolean canFinish, long workTime) {
+ public static MockRequest createMockRequest(int fragmentNum, int parallelism, long firstAttemptStartTime,
+ long currentAttemptStartTime, boolean canFinish, long workTime) {
SubmitWorkRequestProto
- request = createSubmitWorkRequestProto(fragmentNum, parallelism, startTime);
+ request = createSubmitWorkRequestProto(fragmentNum, parallelism, firstAttemptStartTime, currentAttemptStartTime);
return createMockRequest(canFinish, workTime, request);
}
@@ -83,16 +83,16 @@ public class TaskExecutorTestHelpers {
}
public static SubmitWorkRequestProto createSubmitWorkRequestProto(
- int fragmentNumber, int selfAndUpstreamParallelism,
- long attemptStartTime) {
- return createSubmitWorkRequestProto(fragmentNumber, selfAndUpstreamParallelism, 0,
- attemptStartTime, 1);
+ int fragmentNumber, int selfAndUpstreamParallelism, long firstAttemptStartTime,
+ long currentAttemptStartTime) {
+ return createSubmitWorkRequestProto(fragmentNumber, selfAndUpstreamParallelism, 0, firstAttemptStartTime,
+ currentAttemptStartTime, 1);
}
public static SubmitWorkRequestProto createSubmitWorkRequestProto(
int fragmentNumber, int selfAndUpstreamParallelism,
- int selfAndUpstreamComplete,
- long attemptStartTime, int withinDagPriority) {
+ int selfAndUpstreamComplete, long firstAttemptStartTime,
+ long currentAttemptStartTime, int withinDagPriority) {
ApplicationId appId = ApplicationId.newInstance(9999, 72);
TezDAGID dagId = TezDAGID.getInstance(appId, 1);
TezVertexID vId = TezVertexID.getInstance(dagId, 35);
@@ -124,7 +124,8 @@ public class TaskExecutorTestHelpers {
.setFragmentRuntimeInfo(LlapDaemonProtocolProtos
.FragmentRuntimeInfo
.newBuilder()
- .setFirstAttemptStartTime(attemptStartTime)
+ .setFirstAttemptStartTime(firstAttemptStartTime)
+ .setCurrentAttemptStartTime(currentAttemptStartTime)
.setNumSelfAndUpstreamTasks(selfAndUpstreamParallelism)
.setNumSelfAndUpstreamCompletedTasks(selfAndUpstreamComplete)
.setWithinDagPriority(withinDagPriority)
http://git-wip-us.apache.org/repos/asf/hive/blob/1be08d13/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java
----------------------------------------------------------------------
diff --git a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java
index ac4e5f1..de7f2fc 100644
--- a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java
+++ b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java
@@ -49,10 +49,10 @@ public class TestTaskExecutorService {
@Test(timeout = 5000)
public void testPreemptionQueueComparator() throws InterruptedException {
- TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100), false, 100000);
- TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200), false, 100000);
- TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300), false, 1000000);
- TaskWrapper r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400), false, 1000000);
+ TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100, 200), false, 100000);
+ TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200, 300), false, 100000);
+ TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300, 400), false, 1000000);
+ TaskWrapper r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400, 500), false, 1000000);
BlockingQueue<TaskWrapper> queue = new PriorityBlockingQueue<>(4,
new TaskExecutorService.PreemptionQueueComparator());
@@ -71,8 +71,8 @@ public class TestTaskExecutorService {
@Test(timeout = 10000)
public void testFinishablePreeptsNonFinishable() throws InterruptedException {
- MockRequest r1 = createMockRequest(1, 1, 100, false, 5000l);
- MockRequest r2 = createMockRequest(2, 1, 100, true, 1000l);
+ MockRequest r1 = createMockRequest(1, 1, 100, 200, false, 5000l);
+ MockRequest r2 = createMockRequest(2, 1, 100, 200, true, 1000l);
TaskExecutorServiceForTest taskExecutorService = new TaskExecutorServiceForTest(1, 2,
ShortestJobFirstComparator.class.getName(), true);
taskExecutorService.init(new Configuration());
@@ -110,7 +110,7 @@ public class TestTaskExecutorService {
@Test(timeout = 10000)
public void testPreemptionStateOnTaskMoveToFinishableState() throws InterruptedException {
- MockRequest r1 = createMockRequest(1, 1, 100, false, 20000l);
+ MockRequest r1 = createMockRequest(1, 1, 100, 200, false, 20000l);
TaskExecutorServiceForTest taskExecutorService =
new TaskExecutorServiceForTest(1, 2, ShortestJobFirstComparator.class.getName(), true);
@@ -142,7 +142,7 @@ public class TestTaskExecutorService {
@Test(timeout = 10000)
public void testPreemptionStateOnTaskMoveToNonFinishableState() throws InterruptedException {
- MockRequest r1 = createMockRequest(1, 1, 100, true, 20000l);
+ MockRequest r1 = createMockRequest(1, 1, 100, 200, true, 20000l);
TaskExecutorServiceForTest taskExecutorService =
new TaskExecutorServiceForTest(1, 2, ShortestJobFirstComparator.class.getName(), true);
@@ -176,11 +176,11 @@ public class TestTaskExecutorService {
@Test(timeout = 10000)
public void testWaitQueuePreemption() throws InterruptedException {
- MockRequest r1 = createMockRequest(1, 1, 100, true, 20000l);
- MockRequest r2 = createMockRequest(2, 1, 200, false, 20000l);
- MockRequest r3 = createMockRequest(3, 1, 300, false, 20000l);
- MockRequest r4 = createMockRequest(4, 1, 400, false, 20000l);
- MockRequest r5 = createMockRequest(5, 1, 500, true, 20000l);
+ MockRequest r1 = createMockRequest(1, 1, 100, 200, true, 20000l);
+ MockRequest r2 = createMockRequest(2, 1, 200, 330, false, 20000l);
+ MockRequest r3 = createMockRequest(3, 1, 300, 420, false, 20000l);
+ MockRequest r4 = createMockRequest(4, 1, 400, 510, false, 20000l);
+ MockRequest r5 = createMockRequest(5, 1, 500, 610, true, 20000l);
TaskExecutorServiceForTest taskExecutorService =
new TaskExecutorServiceForTest(1, 2, ShortestJobFirstComparator.class.getName(), true);
http://git-wip-us.apache.org/repos/asf/hive/blob/1be08d13/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/comparator/TestShortestJobFirstComparator.java
----------------------------------------------------------------------
diff --git a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/comparator/TestShortestJobFirstComparator.java b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/comparator/TestShortestJobFirstComparator.java
index f50c657..e82f756 100644
--- a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/comparator/TestShortestJobFirstComparator.java
+++ b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/comparator/TestShortestJobFirstComparator.java
@@ -28,11 +28,11 @@ public class TestShortestJobFirstComparator {
@Test(timeout = 60000)
public void testWaitQueueComparator() throws InterruptedException {
- TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100), false, 100000);
- TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200), false, 100000);
- TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300), false, 1000000);
- TaskWrapper r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400), false, 1000000);
- TaskWrapper r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500), false, 1000000);
+ TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100, 200), false, 100000);
+ TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200, 300), false, 100000);
+ TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300, 400), false, 1000000);
+ TaskWrapper r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400, 500), false, 1000000);
+ TaskWrapper r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500, 600), false, 1000000);
EvictingPriorityBlockingQueue<TaskWrapper> queue = new EvictingPriorityBlockingQueue<>(
new ShortestJobFirstComparator(), 4);
assertNull(queue.offer(r1));
@@ -50,11 +50,11 @@ public class TestShortestJobFirstComparator {
assertEquals(r3, queue.take());
assertEquals(r4, queue.take());
- r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100), true, 100000);
- r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200), true, 100000);
- r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300), true, 1000000);
- r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400), true, 1000000);
- r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500), true, 1000000);
+ r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100, 200), true, 100000);
+ r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200, 300), true, 100000);
+ r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300, 400), true, 1000000);
+ r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400, 500), true, 1000000);
+ r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500, 600), true, 1000000);
queue = new EvictingPriorityBlockingQueue(
new ShortestJobFirstComparator(), 4);
assertNull(queue.offer(r1));
@@ -72,11 +72,11 @@ public class TestShortestJobFirstComparator {
assertEquals(r3, queue.take());
assertEquals(r4, queue.take());
- r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 1, 100), true, 100000);
- r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 1, 200), false, 100000);
- r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 1, 300), true, 1000000);
- r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 1, 400), false, 1000000);
- r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500), true, 1000000);
+ r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 1, 100, 1000), true, 100000);
+ r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 1, 200, 900), false, 100000);
+ r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 1, 300, 800), true, 1000000);
+ r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 1, 400, 700), false, 1000000);
+ r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500, 600), true, 1000000);
queue = new EvictingPriorityBlockingQueue(
new ShortestJobFirstComparator(), 4);
assertNull(queue.offer(r1));
@@ -94,11 +94,11 @@ public class TestShortestJobFirstComparator {
assertEquals(r5, queue.take());
assertEquals(r2, queue.take());
- r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100), true, 100000);
- r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200), false, 100000);
- r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300), true, 1000000);
- r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400), false, 1000000);
- r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500), true, 1000000);
+ r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100, 200), true, 100000);
+ r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200, 300), false, 100000);
+ r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300, 400), true, 1000000);
+ r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400, 500), false, 1000000);
+ r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500, 600), true, 1000000);
queue = new EvictingPriorityBlockingQueue(
new ShortestJobFirstComparator(), 4);
assertNull(queue.offer(r1));
@@ -116,11 +116,11 @@ public class TestShortestJobFirstComparator {
assertEquals(r5, queue.take());
assertEquals(r2, queue.take());
- r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100), true, 100000);
- r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200), false, 100000);
- r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300), false, 1000000);
- r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400), false, 1000000);
- r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500), true, 1000000);
+ r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100, 200), true, 100000);
+ r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200, 300), false, 100000);
+ r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300, 400), false, 1000000);
+ r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400, 500), false, 1000000);
+ r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500, 600), true, 1000000);
queue = new EvictingPriorityBlockingQueue(
new ShortestJobFirstComparator(), 4);
assertNull(queue.offer(r1));
@@ -138,11 +138,11 @@ public class TestShortestJobFirstComparator {
assertEquals(r2, queue.take());
assertEquals(r3, queue.take());
- r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100), false, 100000);
- r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200), true, 100000);
- r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300), true, 1000000);
- r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400), true, 1000000);
- r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500), true, 1000000);
+ r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 2, 100, 200), false, 100000);
+ r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 4, 200, 300), true, 100000);
+ r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 6, 300, 400), true, 1000000);
+ r4 = createTaskWrapper(createSubmitWorkRequestProto(4, 8, 400, 500), true, 1000000);
+ r5 = createTaskWrapper(createSubmitWorkRequestProto(5, 10, 500, 600), true, 1000000);
queue = new EvictingPriorityBlockingQueue(
new ShortestJobFirstComparator(), 4);
assertNull(queue.offer(r1));
@@ -163,9 +163,9 @@ public class TestShortestJobFirstComparator {
@Test(timeout = 60000)
public void testWaitQueueComparatorWithinDagPriority() throws InterruptedException {
- TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 1, 0, 100, 10), false, 100000);
- TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 1, 0, 100, 1), false, 100000);
- TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 1, 0, 100, 5), false, 100000);
+ TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 1, 0, 10, 100, 10), false, 100000);
+ TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 1, 0, 10, 100, 1), false, 100000);
+ TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 1, 0, 10, 100, 5), false, 100000);
EvictingPriorityBlockingQueue<TaskWrapper> queue = new EvictingPriorityBlockingQueue<>(
new ShortestJobFirstComparator(), 4);
@@ -181,9 +181,9 @@ public class TestShortestJobFirstComparator {
@Test(timeout = 60000)
public void testWaitQueueComparatorParallelism() throws InterruptedException {
- TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 10, 3, 100, 1), false, 100000); // 7 pending
- TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 10, 7, 100, 1), false, 100000); // 3 pending
- TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 10, 5, 100, 1), false, 100000); // 5 pending
+ TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 10, 3, 10, 100, 1), false, 100000); // 7 pending
+ TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 10, 7, 10, 100, 1), false, 100000); // 3 pending
+ TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 10, 5, 10, 100, 1), false, 100000); // 5 pending
EvictingPriorityBlockingQueue<TaskWrapper> queue = new EvictingPriorityBlockingQueue<>(
new ShortestJobFirstComparator(), 4);
@@ -196,4 +196,39 @@ public class TestShortestJobFirstComparator {
assertEquals(r3, queue.take());
assertEquals(r1, queue.take());
}
+
+ @Test(timeout = 60000)
+ public void testWaitQueueComparatorAging() throws InterruptedException {
+ TaskWrapper r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 10, 100, 200), true, 100000);
+ TaskWrapper r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 20, 100, 200), true, 100000);
+ TaskWrapper r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 30, 100, 200), true, 100000);
+
+ EvictingPriorityBlockingQueue<TaskWrapper> queue = new EvictingPriorityBlockingQueue<>(
+ new ShortestJobFirstComparator(), 4);
+
+ assertNull(queue.offer(r1));
+ assertNull(queue.offer(r2));
+ assertNull(queue.offer(r3));
+
+ assertEquals(r1, queue.take());
+ assertEquals(r2, queue.take());
+ assertEquals(r3, queue.take());
+
+ // priority = 10 / (200 - 100) = 0.01
+ r1 = createTaskWrapper(createSubmitWorkRequestProto(1, 10, 100, 200), true, 100000);
+ // priority = 20 / (3000 - 100) = 0.0069
+ r2 = createTaskWrapper(createSubmitWorkRequestProto(2, 20, 100, 3000), true, 100000);
+ // priority = 30 / (4000 - 100) = 0.0076
+ r3 = createTaskWrapper(createSubmitWorkRequestProto(3, 30, 100, 4000), true, 100000);
+
+ queue = new EvictingPriorityBlockingQueue<>(new ShortestJobFirstComparator(), 4);
+
+ assertNull(queue.offer(r1));
+ assertNull(queue.offer(r2));
+ assertNull(queue.offer(r3));
+
+ assertEquals(r2, queue.take());
+ assertEquals(r3, queue.take());
+ assertEquals(r1, queue.take());
+ }
}
[35/50] [abbrv] hive git commit: HIVE-15723 : Hive should report a
warning about missing table/column statistics to user. (Addendum)
Posted by se...@apache.org.
HIVE-15723 : Hive should report a warning about missing table/column statistics to user. (Addendum)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/4a03fb1d
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4a03fb1d
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4a03fb1d
Branch: refs/heads/hive-14535
Commit: 4a03fb1da90a15998c254754a0fc5f139dbc10ad
Parents: 43e0497
Author: Ashutosh Chauhan <ha...@apache.org>
Authored: Wed Feb 1 13:01:29 2017 -0800
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Wed Feb 1 13:01:29 2017 -0800
----------------------------------------------------------------------
common/src/java/org/apache/hadoop/hive/conf/HiveConf.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/4a03fb1d/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index a2ec1f0..29de605 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -1079,7 +1079,7 @@ public class HiveConf extends Configuration {
+ " expressed as multiple of Local FS write cost"),
HIVE_CBO_COST_MODEL_HDFS_READ("hive.cbo.costmodel.hdfs.read", "1.5", "Default cost of reading a byte from HDFS;"
+ " expressed as multiple of Local FS read cost"),
- HIVE_CBO_SHOW_WARNINGS("hive.cbo.show.warnings", false,
+ HIVE_CBO_SHOW_WARNINGS("hive.cbo.show.warnings", true,
"Toggle display of CBO warnings like missing column stats"),
AGGR_JOIN_TRANSPOSE("hive.transpose.aggr.join", false, "push aggregates through join"),
SEMIJOIN_CONVERSION("hive.enable.semijoin.conversion", true, "convert group by followed by inner equi join into semijoin"),
[41/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
index 0609c11,2f1c3cf..9ce6f16
--- a/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
+++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
@@@ -3136,8 -3133,7 +3136,9 @@@ class Table
- tableType
- privileges
- temporary
+ - rewriteEnabled
+ - mmNextWriteId
+ - mmWatermarkWriteId
"""
thrift_spec = (
@@@ -3156,11 -3152,10 +3157,12 @@@
(12, TType.STRING, 'tableType', None, None, ), # 12
(13, TType.STRUCT, 'privileges', (PrincipalPrivilegeSet, PrincipalPrivilegeSet.thrift_spec), None, ), # 13
(14, TType.BOOL, 'temporary', None, False, ), # 14
- (15, TType.I64, 'mmNextWriteId', None, None, ), # 15
- (16, TType.I64, 'mmWatermarkWriteId', None, None, ), # 16
+ (15, TType.BOOL, 'rewriteEnabled', None, None, ), # 15
++ (16, TType.I64, 'mmNextWriteId', None, None, ), # 16
++ (17, TType.I64, 'mmWatermarkWriteId', None, None, ), # 17
)
- def __init__(self, tableName=None, dbName=None, owner=None, createTime=None, lastAccessTime=None, retention=None, sd=None, partitionKeys=None, parameters=None, viewOriginalText=None, viewExpandedText=None, tableType=None, privileges=None, temporary=thrift_spec[14][4], mmNextWriteId=None, mmWatermarkWriteId=None,):
- def __init__(self, tableName=None, dbName=None, owner=None, createTime=None, lastAccessTime=None, retention=None, sd=None, partitionKeys=None, parameters=None, viewOriginalText=None, viewExpandedText=None, tableType=None, privileges=None, temporary=thrift_spec[14][4], rewriteEnabled=None,):
++ def __init__(self, tableName=None, dbName=None, owner=None, createTime=None, lastAccessTime=None, retention=None, sd=None, partitionKeys=None, parameters=None, viewOriginalText=None, viewExpandedText=None, tableType=None, privileges=None, temporary=thrift_spec[14][4], rewriteEnabled=None, mmNextWriteId=None, mmWatermarkWriteId=None,):
self.tableName = tableName
self.dbName = dbName
self.owner = owner
@@@ -3175,8 -3170,7 +3177,9 @@@
self.tableType = tableType
self.privileges = privileges
self.temporary = temporary
+ self.rewriteEnabled = rewriteEnabled
+ self.mmNextWriteId = mmNextWriteId
+ self.mmWatermarkWriteId = mmWatermarkWriteId
def read(self, iprot):
if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@@ -3272,15 -3266,10 +3275,20 @@@
else:
iprot.skip(ftype)
elif fid == 15:
+ if ftype == TType.BOOL:
+ self.rewriteEnabled = iprot.readBool()
+ else:
+ iprot.skip(ftype)
++ elif fid == 16:
+ if ftype == TType.I64:
+ self.mmNextWriteId = iprot.readI64()
+ else:
+ iprot.skip(ftype)
- elif fid == 16:
++ elif fid == 17:
+ if ftype == TType.I64:
+ self.mmWatermarkWriteId = iprot.readI64()
+ else:
+ iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
@@@ -3354,14 -3343,10 +3362,18 @@@
oprot.writeFieldBegin('temporary', TType.BOOL, 14)
oprot.writeBool(self.temporary)
oprot.writeFieldEnd()
+ if self.rewriteEnabled is not None:
+ oprot.writeFieldBegin('rewriteEnabled', TType.BOOL, 15)
+ oprot.writeBool(self.rewriteEnabled)
+ oprot.writeFieldEnd()
+ if self.mmNextWriteId is not None:
- oprot.writeFieldBegin('mmNextWriteId', TType.I64, 15)
++ oprot.writeFieldBegin('mmNextWriteId', TType.I64, 16)
+ oprot.writeI64(self.mmNextWriteId)
+ oprot.writeFieldEnd()
+ if self.mmWatermarkWriteId is not None:
- oprot.writeFieldBegin('mmWatermarkWriteId', TType.I64, 16)
++ oprot.writeFieldBegin('mmWatermarkWriteId', TType.I64, 17)
+ oprot.writeI64(self.mmWatermarkWriteId)
+ oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
@@@ -3385,8 -3370,7 +3397,9 @@@
value = (value * 31) ^ hash(self.tableType)
value = (value * 31) ^ hash(self.privileges)
value = (value * 31) ^ hash(self.temporary)
+ value = (value * 31) ^ hash(self.rewriteEnabled)
+ value = (value * 31) ^ hash(self.mmNextWriteId)
+ value = (value * 31) ^ hash(self.mmWatermarkWriteId)
return value
def __repr__(self):
@@@ -12747,623 -12824,13 +12891,623 @@@ class GetValidWriteIdsRequest
if ftype == TType.STOP:
break
if fid == 1:
- if ftype == TType.LIST:
- self.tables = []
- (_etype590, _size587) = iprot.readListBegin()
- for _i591 in xrange(_size587):
- _elem592 = Table()
- _elem592.read(iprot)
- self.tables.append(_elem592)
+ if ftype == TType.STRING:
+ self.dbName = iprot.readString()
+ else:
+ iprot.skip(ftype)
+ elif fid == 2:
+ if ftype == TType.STRING:
+ self.tblName = iprot.readString()
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('GetValidWriteIdsRequest')
+ if self.dbName is not None:
+ oprot.writeFieldBegin('dbName', TType.STRING, 1)
+ oprot.writeString(self.dbName)
+ oprot.writeFieldEnd()
+ if self.tblName is not None:
+ oprot.writeFieldBegin('tblName', TType.STRING, 2)
+ oprot.writeString(self.tblName)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ if self.dbName is None:
+ raise TProtocol.TProtocolException(message='Required field dbName is unset!')
+ if self.tblName is None:
+ raise TProtocol.TProtocolException(message='Required field tblName is unset!')
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.dbName)
+ value = (value * 31) ^ hash(self.tblName)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+class GetValidWriteIdsResult:
+ """
+ Attributes:
+ - lowWatermarkId
+ - highWatermarkId
+ - areIdsValid
+ - ids
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.I64, 'lowWatermarkId', None, None, ), # 1
+ (2, TType.I64, 'highWatermarkId', None, None, ), # 2
+ (3, TType.BOOL, 'areIdsValid', None, None, ), # 3
+ (4, TType.LIST, 'ids', (TType.I64,None), None, ), # 4
+ )
+
+ def __init__(self, lowWatermarkId=None, highWatermarkId=None, areIdsValid=None, ids=None,):
+ self.lowWatermarkId = lowWatermarkId
+ self.highWatermarkId = highWatermarkId
+ self.areIdsValid = areIdsValid
+ self.ids = ids
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.I64:
+ self.lowWatermarkId = iprot.readI64()
+ else:
+ iprot.skip(ftype)
+ elif fid == 2:
+ if ftype == TType.I64:
+ self.highWatermarkId = iprot.readI64()
+ else:
+ iprot.skip(ftype)
+ elif fid == 3:
+ if ftype == TType.BOOL:
+ self.areIdsValid = iprot.readBool()
+ else:
+ iprot.skip(ftype)
+ elif fid == 4:
+ if ftype == TType.LIST:
+ self.ids = []
- (_etype562, _size559) = iprot.readListBegin()
- for _i563 in xrange(_size559):
- _elem564 = iprot.readI64()
- self.ids.append(_elem564)
++ (_etype569, _size566) = iprot.readListBegin()
++ for _i570 in xrange(_size566):
++ _elem571 = iprot.readI64()
++ self.ids.append(_elem571)
+ iprot.readListEnd()
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('GetValidWriteIdsResult')
+ if self.lowWatermarkId is not None:
+ oprot.writeFieldBegin('lowWatermarkId', TType.I64, 1)
+ oprot.writeI64(self.lowWatermarkId)
+ oprot.writeFieldEnd()
+ if self.highWatermarkId is not None:
+ oprot.writeFieldBegin('highWatermarkId', TType.I64, 2)
+ oprot.writeI64(self.highWatermarkId)
+ oprot.writeFieldEnd()
+ if self.areIdsValid is not None:
+ oprot.writeFieldBegin('areIdsValid', TType.BOOL, 3)
+ oprot.writeBool(self.areIdsValid)
+ oprot.writeFieldEnd()
+ if self.ids is not None:
+ oprot.writeFieldBegin('ids', TType.LIST, 4)
+ oprot.writeListBegin(TType.I64, len(self.ids))
- for iter565 in self.ids:
- oprot.writeI64(iter565)
++ for iter572 in self.ids:
++ oprot.writeI64(iter572)
+ oprot.writeListEnd()
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ if self.lowWatermarkId is None:
+ raise TProtocol.TProtocolException(message='Required field lowWatermarkId is unset!')
+ if self.highWatermarkId is None:
+ raise TProtocol.TProtocolException(message='Required field highWatermarkId is unset!')
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.lowWatermarkId)
+ value = (value * 31) ^ hash(self.highWatermarkId)
+ value = (value * 31) ^ hash(self.areIdsValid)
+ value = (value * 31) ^ hash(self.ids)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+class GetAllFunctionsResponse:
+ """
+ Attributes:
+ - functions
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.LIST, 'functions', (TType.STRUCT,(Function, Function.thrift_spec)), None, ), # 1
+ )
+
+ def __init__(self, functions=None,):
+ self.functions = functions
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.LIST:
+ self.functions = []
- (_etype569, _size566) = iprot.readListBegin()
- for _i570 in xrange(_size566):
- _elem571 = Function()
- _elem571.read(iprot)
- self.functions.append(_elem571)
++ (_etype576, _size573) = iprot.readListBegin()
++ for _i577 in xrange(_size573):
++ _elem578 = Function()
++ _elem578.read(iprot)
++ self.functions.append(_elem578)
+ iprot.readListEnd()
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('GetAllFunctionsResponse')
+ if self.functions is not None:
+ oprot.writeFieldBegin('functions', TType.LIST, 1)
+ oprot.writeListBegin(TType.STRUCT, len(self.functions))
- for iter572 in self.functions:
- iter572.write(oprot)
++ for iter579 in self.functions:
++ iter579.write(oprot)
+ oprot.writeListEnd()
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.functions)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+class ClientCapabilities:
+ """
+ Attributes:
+ - values
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.LIST, 'values', (TType.I32,None), None, ), # 1
+ )
+
+ def __init__(self, values=None,):
+ self.values = values
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.LIST:
+ self.values = []
- (_etype576, _size573) = iprot.readListBegin()
- for _i577 in xrange(_size573):
- _elem578 = iprot.readI32()
- self.values.append(_elem578)
++ (_etype583, _size580) = iprot.readListBegin()
++ for _i584 in xrange(_size580):
++ _elem585 = iprot.readI32()
++ self.values.append(_elem585)
+ iprot.readListEnd()
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('ClientCapabilities')
+ if self.values is not None:
+ oprot.writeFieldBegin('values', TType.LIST, 1)
+ oprot.writeListBegin(TType.I32, len(self.values))
- for iter579 in self.values:
- oprot.writeI32(iter579)
++ for iter586 in self.values:
++ oprot.writeI32(iter586)
+ oprot.writeListEnd()
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ if self.values is None:
+ raise TProtocol.TProtocolException(message='Required field values is unset!')
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.values)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+class GetTableRequest:
+ """
+ Attributes:
+ - dbName
+ - tblName
+ - capabilities
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.STRING, 'dbName', None, None, ), # 1
+ (2, TType.STRING, 'tblName', None, None, ), # 2
+ (3, TType.STRUCT, 'capabilities', (ClientCapabilities, ClientCapabilities.thrift_spec), None, ), # 3
+ )
+
+ def __init__(self, dbName=None, tblName=None, capabilities=None,):
+ self.dbName = dbName
+ self.tblName = tblName
+ self.capabilities = capabilities
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.STRING:
+ self.dbName = iprot.readString()
+ else:
+ iprot.skip(ftype)
+ elif fid == 2:
+ if ftype == TType.STRING:
+ self.tblName = iprot.readString()
+ else:
+ iprot.skip(ftype)
+ elif fid == 3:
+ if ftype == TType.STRUCT:
+ self.capabilities = ClientCapabilities()
+ self.capabilities.read(iprot)
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('GetTableRequest')
+ if self.dbName is not None:
+ oprot.writeFieldBegin('dbName', TType.STRING, 1)
+ oprot.writeString(self.dbName)
+ oprot.writeFieldEnd()
+ if self.tblName is not None:
+ oprot.writeFieldBegin('tblName', TType.STRING, 2)
+ oprot.writeString(self.tblName)
+ oprot.writeFieldEnd()
+ if self.capabilities is not None:
+ oprot.writeFieldBegin('capabilities', TType.STRUCT, 3)
+ self.capabilities.write(oprot)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ if self.dbName is None:
+ raise TProtocol.TProtocolException(message='Required field dbName is unset!')
+ if self.tblName is None:
+ raise TProtocol.TProtocolException(message='Required field tblName is unset!')
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.dbName)
+ value = (value * 31) ^ hash(self.tblName)
+ value = (value * 31) ^ hash(self.capabilities)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+class GetTableResult:
+ """
+ Attributes:
+ - table
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.STRUCT, 'table', (Table, Table.thrift_spec), None, ), # 1
+ )
+
+ def __init__(self, table=None,):
+ self.table = table
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.STRUCT:
+ self.table = Table()
+ self.table.read(iprot)
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('GetTableResult')
+ if self.table is not None:
+ oprot.writeFieldBegin('table', TType.STRUCT, 1)
+ self.table.write(oprot)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ if self.table is None:
+ raise TProtocol.TProtocolException(message='Required field table is unset!')
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.table)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+class GetTablesRequest:
+ """
+ Attributes:
+ - dbName
+ - tblNames
+ - capabilities
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.STRING, 'dbName', None, None, ), # 1
+ (2, TType.LIST, 'tblNames', (TType.STRING,None), None, ), # 2
+ (3, TType.STRUCT, 'capabilities', (ClientCapabilities, ClientCapabilities.thrift_spec), None, ), # 3
+ )
+
+ def __init__(self, dbName=None, tblNames=None, capabilities=None,):
+ self.dbName = dbName
+ self.tblNames = tblNames
+ self.capabilities = capabilities
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.STRING:
+ self.dbName = iprot.readString()
+ else:
+ iprot.skip(ftype)
+ elif fid == 2:
+ if ftype == TType.LIST:
+ self.tblNames = []
- (_etype583, _size580) = iprot.readListBegin()
- for _i584 in xrange(_size580):
- _elem585 = iprot.readString()
- self.tblNames.append(_elem585)
++ (_etype590, _size587) = iprot.readListBegin()
++ for _i591 in xrange(_size587):
++ _elem592 = iprot.readString()
++ self.tblNames.append(_elem592)
+ iprot.readListEnd()
+ else:
+ iprot.skip(ftype)
+ elif fid == 3:
+ if ftype == TType.STRUCT:
+ self.capabilities = ClientCapabilities()
+ self.capabilities.read(iprot)
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('GetTablesRequest')
+ if self.dbName is not None:
+ oprot.writeFieldBegin('dbName', TType.STRING, 1)
+ oprot.writeString(self.dbName)
+ oprot.writeFieldEnd()
+ if self.tblNames is not None:
+ oprot.writeFieldBegin('tblNames', TType.LIST, 2)
+ oprot.writeListBegin(TType.STRING, len(self.tblNames))
- for iter586 in self.tblNames:
- oprot.writeString(iter586)
++ for iter593 in self.tblNames:
++ oprot.writeString(iter593)
+ oprot.writeListEnd()
+ oprot.writeFieldEnd()
+ if self.capabilities is not None:
+ oprot.writeFieldBegin('capabilities', TType.STRUCT, 3)
+ self.capabilities.write(oprot)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ if self.dbName is None:
+ raise TProtocol.TProtocolException(message='Required field dbName is unset!')
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.dbName)
+ value = (value * 31) ^ hash(self.tblNames)
+ value = (value * 31) ^ hash(self.capabilities)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+class GetTablesResult:
+ """
+ Attributes:
+ - tables
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.LIST, 'tables', (TType.STRUCT,(Table, Table.thrift_spec)), None, ), # 1
+ )
+
+ def __init__(self, tables=None,):
+ self.tables = tables
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.LIST:
+ self.tables = []
- (_etype590, _size587) = iprot.readListBegin()
- for _i591 in xrange(_size587):
- _elem592 = Table()
- _elem592.read(iprot)
- self.tables.append(_elem592)
++ (_etype597, _size594) = iprot.readListBegin()
++ for _i598 in xrange(_size594):
++ _elem599 = Table()
++ _elem599.read(iprot)
++ self.tables.append(_elem599)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -13380,8 -12847,8 +13524,8 @@@
if self.tables is not None:
oprot.writeFieldBegin('tables', TType.LIST, 1)
oprot.writeListBegin(TType.STRUCT, len(self.tables))
-- for iter593 in self.tables:
-- iter593.write(oprot)
++ for iter600 in self.tables:
++ iter600.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
index d6b7666,b6050c6..c671678
--- a/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
+++ b/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
@@@ -735,8 -734,7 +735,9 @@@ class Tabl
TABLETYPE = 12
PRIVILEGES = 13
TEMPORARY = 14
- MMNEXTWRITEID = 15
- MMWATERMARKWRITEID = 16
+ REWRITEENABLED = 15
++ MMNEXTWRITEID = 16
++ MMWATERMARKWRITEID = 17
FIELDS = {
TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
@@@ -753,8 -751,7 +754,9 @@@
TABLETYPE => {:type => ::Thrift::Types::STRING, :name => 'tableType'},
PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', :class => ::PrincipalPrivilegeSet, :optional => true},
TEMPORARY => {:type => ::Thrift::Types::BOOL, :name => 'temporary', :default => false, :optional => true},
- REWRITEENABLED => {:type => ::Thrift::Types::BOOL, :name => 'rewriteEnabled', :optional => true}
++ REWRITEENABLED => {:type => ::Thrift::Types::BOOL, :name => 'rewriteEnabled', :optional => true},
+ MMNEXTWRITEID => {:type => ::Thrift::Types::I64, :name => 'mmNextWriteId', :optional => true},
+ MMWATERMARKWRITEID => {:type => ::Thrift::Types::I64, :name => 'mmWatermarkWriteId', :optional => true}
}
def struct_fields; FIELDS; end
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
----------------------------------------------------------------------
diff --cc metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index 7ef810f,13d0aab..d8606b4
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@@ -18,24 -18,44 +18,45 @@@
package org.apache.hadoop.hive.metastore;
- import org.apache.hadoop.hive.metastore.api.ClientCapabilities;
- import org.apache.hadoop.hive.metastore.api.ClientCapability;
- import org.apache.hadoop.hive.metastore.api.GetTableRequest;
- import org.apache.hadoop.hive.metastore.api.GetTableResult;
- import org.apache.hadoop.hive.metastore.api.GetTablesRequest;
- import org.apache.hadoop.hive.metastore.api.GetTablesResult;
- import org.apache.hadoop.hive.metastore.api.MetaException;
+ import static org.apache.commons.lang.StringUtils.join;
+ import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_COMMENT;
+ import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_NAME;
+ import static org.apache.hadoop.hive.metastore.MetaStoreUtils.validateName;
- import com.facebook.fb303.FacebookBase;
- import com.facebook.fb303.fb_status;
- import com.google.common.annotations.VisibleForTesting;
- import com.google.common.base.Preconditions;
- import com.google.common.base.Splitter;
- import com.google.common.collect.ImmutableList;
- import com.google.common.collect.ImmutableListMultimap;
- import com.google.common.collect.Lists;
- import com.google.common.collect.Multimaps;
- import com.google.common.util.concurrent.ThreadFactoryBuilder;
+ import java.io.IOException;
+ import java.nio.ByteBuffer;
+ import java.security.PrivilegedExceptionAction;
+ import java.text.DateFormat;
+ import java.text.SimpleDateFormat;
+ import java.util.AbstractMap;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.Collections;
+ import java.util.Formatter;
+ import java.util.HashMap;
+ import java.util.HashSet;
+ import java.util.Iterator;
+ import java.util.LinkedHashMap;
+ import java.util.LinkedList;
+ import java.util.List;
+ import java.util.Map;
+ import java.util.Properties;
++import java.util.Random;
+ import java.util.Set;
+ import java.util.Timer;
+ import java.util.concurrent.Callable;
+ import java.util.concurrent.ExecutionException;
+ import java.util.concurrent.ExecutorService;
+ import java.util.concurrent.Executors;
+ import java.util.concurrent.Future;
+ import java.util.concurrent.TimeUnit;
+ import java.util.concurrent.atomic.AtomicBoolean;
+ import java.util.concurrent.locks.Condition;
+ import java.util.concurrent.locks.Lock;
+ import java.util.concurrent.locks.ReentrantLock;
+ import java.util.regex.Pattern;
+
+ import javax.jdo.JDOException;
import org.apache.commons.cli.OptionBuilder;
import org.apache.hadoop.conf.Configuration;
@@@ -127,45 -145,16 +148,21 @@@ import org.apache.thrift.transport.TTra
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
- import javax.jdo.JDOException;
- import java.io.IOException;
- import java.nio.ByteBuffer;
- import java.sql.SQLException;
- import java.security.PrivilegedExceptionAction;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.AbstractMap;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Formatter;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.LinkedHashMap;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import java.util.Properties;
- import java.util.Random;
- import java.util.Set;
- import java.util.Timer;
- import java.util.concurrent.Callable;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Future;
- import java.util.concurrent.TimeUnit;
- import java.util.concurrent.atomic.AtomicBoolean;
- import java.util.concurrent.locks.Condition;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- import java.util.regex.Pattern;
+
+import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_COMMENT;
+import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_NAME;
+import static org.apache.hadoop.hive.metastore.MetaStoreUtils.validateName;
+ import com.facebook.fb303.FacebookBase;
+ import com.facebook.fb303.fb_status;
+ import com.google.common.annotations.VisibleForTesting;
+ import com.google.common.base.Preconditions;
+ import com.google.common.base.Splitter;
+ import com.google.common.collect.ImmutableList;
+ import com.google.common.collect.ImmutableListMultimap;
+ import com.google.common.collect.Lists;
+ import com.google.common.collect.Multimaps;
+ import com.google.common.util.concurrent.ThreadFactoryBuilder;
/**
* TODO:pc remove application logic to a separate interface.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
----------------------------------------------------------------------
diff --cc metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
index 013c656,b5d007d..09815db
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
@@@ -31,8 -59,6 +59,7 @@@ import org.apache.hadoop.hive.conf.Hive
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
import org.apache.hadoop.hive.conf.HiveConfUtil;
import org.apache.hadoop.hive.metastore.api.*;
+import org.apache.hadoop.hive.metastore.TableType;
- import org.apache.hadoop.hive.metastore.api.*;
import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy;
import org.apache.hadoop.hive.metastore.txn.TxnUtils;
import org.apache.hadoop.hive.shims.ShimLoader;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
----------------------------------------------------------------------
diff --cc metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index 8ad7059,778615d..76c9e2f
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@@ -56,10 -54,8 +56,9 @@@ import javax.jdo.PersistenceManagerFact
import javax.jdo.Query;
import javax.jdo.Transaction;
import javax.jdo.datastore.DataStoreCache;
+import javax.jdo.datastore.JDOConnection;
import javax.jdo.identity.IntIdentity;
- import com.google.common.collect.Maps;
import org.apache.commons.lang.ArrayUtils;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
@@@ -1575,14 -1489,13 +1575,15 @@@ public class ObjectStore implements Raw
tableType = TableType.MANAGED_TABLE.toString();
}
}
- Table t = new Table(mtbl.getTableName(), mtbl.getDatabase().getName(), mtbl
- final Table table = new Table(mtbl.getTableName(), mtbl.getDatabase().getName(), mtbl
- .getOwner(), mtbl.getCreateTime(), mtbl.getLastAccessTime(), mtbl
- .getRetention(), convertToStorageDescriptor(mtbl.getSd()),
- convertToFieldSchemas(mtbl.getPartitionKeys()), convertMap(mtbl.getParameters()),
- mtbl.getViewOriginalText(), mtbl.getViewExpandedText(), tableType);
- table.setRewriteEnabled(mtbl.isRewriteEnabled());
- return table;
++ final Table t = new Table(mtbl.getTableName(), mtbl.getDatabase().getName(), mtbl
+ .getOwner(), mtbl.getCreateTime(), mtbl.getLastAccessTime(), mtbl
+ .getRetention(), convertToStorageDescriptor(mtbl.getSd()),
+ convertToFieldSchemas(mtbl.getPartitionKeys()), convertMap(mtbl.getParameters()),
+ mtbl.getViewOriginalText(), mtbl.getViewExpandedText(), tableType);
++ t.setRewriteEnabled(mtbl.isRewriteEnabled());
+ t.setMmNextWriteId(mtbl.getMmNextWriteId());
+ t.setMmWatermarkWriteId(mtbl.getMmWatermarkWriteId());
+ return t;
}
private MTable convertToMTable(Table tbl) throws InvalidObjectException,
@@@ -1619,9 -1532,8 +1620,9 @@@
convertToMStorageDescriptor(tbl.getSd()), tbl.getOwner(), tbl
.getCreateTime(), tbl.getLastAccessTime(), tbl.getRetention(),
convertToMFieldSchemas(tbl.getPartitionKeys()), tbl.getParameters(),
- tbl.getViewOriginalText(), tbl.getViewExpandedText(),
+ tbl.getViewOriginalText(), tbl.getViewExpandedText(), tbl.isRewriteEnabled(),
- tableType);
+ tableType, tbl.isSetMmNextWriteId() ? tbl.getMmNextWriteId() : 0,
+ tbl.isSetMmWatermarkWriteId() ? tbl.getMmWatermarkWriteId() : -1);
}
private List<MFieldSchema> convertToMFieldSchemas(List<FieldSchema> keys) {
@@@ -3386,8 -3299,7 +3387,9 @@@
oldt.setLastAccessTime(newt.getLastAccessTime());
oldt.setViewOriginalText(newt.getViewOriginalText());
oldt.setViewExpandedText(newt.getViewExpandedText());
+ oldt.setMmNextWriteId(newt.getMmNextWriteId());
+ oldt.setMmWatermarkWriteId(newt.getMmWatermarkWriteId());
+ oldt.setRewriteEnabled(newt.isRewriteEnabled());
// commit the changes
success = commitTransaction();
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/Warehouse.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
----------------------------------------------------------------------
diff --cc metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
index e5b469b,6593fa6..1340645
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
@@@ -2740,61 -2812,22 +2828,75 @@@ public class HBaseStore implements RawS
}
@Override
- public void addForeignKeys(List<SQLForeignKey> fks)
- throws InvalidObjectException, MetaException {
- // TODO: WTF?
+ public void addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException, MetaException {
+ boolean commit = false;
+ openTransaction();
+ try {
+ // Fetch the existing keys (if any) and add in these new ones
+ List<SQLForeignKey> existing =
+ getHBase().getForeignKeys(fks.get(0).getFktable_db(), fks.get(0).getFktable_name());
+ if (existing == null) existing = new ArrayList<>(fks.size());
+ existing.addAll(fks);
+ getHBase().putForeignKeys(existing);
+ commit = true;
+ } catch (IOException e) {
+ LOG.error("Error writing foreign keys", e);
+ throw new MetaException("Error writing foreign keys: " + e.getMessage());
+ } finally {
+ commitOrRoleBack(commit);
+ }
}
+
+ @Override
+ public void createTableWrite(Table tbl, long writeId, char state, long heartbeat) {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void updateTableWrite(MTableWrite tw) {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public MTableWrite getTableWrite(String dbName, String tblName, long writeId) {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
+
+
+ @Override
+ public List<Long> getTableWriteIds(
+ String dbName, String tblName, long watermarkId, long nextWriteId, char state) {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public List<FullTableName> getAllMmTablesForCleanup() throws MetaException {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public List<MTableWrite> getTableWrites(String dbName, String tblName,
+ long from, long to) throws MetaException {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Collection<String> getAllPartitionLocations(String dbName,
+ String tblName) {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void deleteTableWrites(String dbName, String tblName, long from,
+ long to) throws MetaException {
+ // TODO: Auto-generated method stub
+ throw new UnsupportedOperationException();
+ }
}
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/model/org/apache/hadoop/hive/metastore/model/MTable.java
----------------------------------------------------------------------
diff --cc metastore/src/model/org/apache/hadoop/hive/metastore/model/MTable.java
index 51c62e3,6cc7157..18e9cb3
--- a/metastore/src/model/org/apache/hadoop/hive/metastore/model/MTable.java
+++ b/metastore/src/model/org/apache/hadoop/hive/metastore/model/MTable.java
@@@ -34,9 -34,8 +34,10 @@@ public class MTable
private Map<String, String> parameters;
private String viewOriginalText;
private String viewExpandedText;
+ private boolean rewriteEnabled;
private String tableType;
+ private long mmNextWriteId;
+ private long mmWatermarkWriteId;
public MTable() {}
@@@ -56,9 -55,8 +57,9 @@@
*/
public MTable(String tableName, MDatabase database, MStorageDescriptor sd, String owner,
int createTime, int lastAccessTime, int retention, List<MFieldSchema> partitionKeys,
- Map<String, String> parameters, String viewOriginalText, String viewExpandedText,
- boolean rewriteEnabled, String tableType) {
+ Map<String, String> parameters,
- String viewOriginalText, String viewExpandedText, String tableType, long mmNextWriteId,
++ String viewOriginalText, String viewExpandedText, boolean rewriteEnabled, String tableType, long mmNextWriteId,
+ long mmWatermarkWriteId) {
this.tableName = tableName;
this.database = database;
this.sd = sd;
@@@ -70,9 -68,8 +71,10 @@@
this.parameters = parameters;
this.viewOriginalText = viewOriginalText;
this.viewExpandedText = viewExpandedText;
+ this.rewriteEnabled = rewriteEnabled;
this.tableType = tableType;
+ this.mmWatermarkWriteId = mmWatermarkWriteId;
+ this.mmNextWriteId = mmNextWriteId;
}
/**
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/model/package.jdo
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
----------------------------------------------------------------------
diff --cc metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
index aa9fa61,1f87eeb..aaa03fb
--- a/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
@@@ -17,13 -17,12 +17,15 @@@
*/
package org.apache.hadoop.hive.metastore;
+import static org.junit.Assert.*;
+
import java.util.Arrays;
import java.util.HashMap;
+ import java.util.HashSet;
import java.util.List;
+ import java.util.Set;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.common.metrics.common.MetricsConstant;
import org.apache.hadoop.hive.common.metrics.common.MetricsFactory;
import org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics;
@@@ -161,10 -146,10 +165,10 @@@ public class TestObjectStore
public void testTableOps() throws MetaException, InvalidObjectException, NoSuchObjectException, InvalidInputException {
Database db1 = new Database(DB1, "description", "locationurl", null);
objectStore.createDatabase(db1);
- StorageDescriptor sd = new StorageDescriptor(null, "location", null, null, false, 0, new SerDeInfo("SerDeName", "serializationLib", null), null, null, null);
+ StorageDescriptor sd = createFakeSd("location");
HashMap<String,String> params = new HashMap<String,String>();
params.put("EXTERNAL", "false");
- Table tbl1 = new Table(TABLE1, DB1, "owner", 1, 2, 3, sd, null, params, "viewOriginalText", "viewExpandedText", "MANAGED_TABLE");
+ Table tbl1 = new Table(TABLE1, DB1, "owner", 1, 2, 3, sd, null, params, null, null, "MANAGED_TABLE");
objectStore.createTable(tbl1);
List<String> tables = objectStore.getAllTables(DB1);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/Context.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
index be65f49,ad701f6..85bc04b
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
@@@ -164,11 -165,10 +167,12 @@@ import org.apache.hadoop.hive.ql.plan.D
import org.apache.hadoop.hive.ql.plan.FileMergeDesc;
import org.apache.hadoop.hive.ql.plan.GrantDesc;
import org.apache.hadoop.hive.ql.plan.GrantRevokeRoleDDL;
+ import org.apache.hadoop.hive.ql.plan.InsertTableDesc;
import org.apache.hadoop.hive.ql.plan.ListBucketingCtx;
+import org.apache.hadoop.hive.ql.plan.LoadMultiFilesDesc;
import org.apache.hadoop.hive.ql.plan.LockDatabaseDesc;
import org.apache.hadoop.hive.ql.plan.LockTableDesc;
+import org.apache.hadoop.hive.ql.plan.MoveWork;
import org.apache.hadoop.hive.ql.plan.MsckDesc;
import org.apache.hadoop.hive.ql.plan.OperatorDesc;
import org.apache.hadoop.hive.ql.plan.OrcFileMergeDesc;
@@@ -3452,8 -3510,18 +3525,18 @@@ public class DDLTask extends Task<DDLWo
return false;
}
- private int alterTableOrSinglePartition(AlterTableDesc alterTbl, Table tbl, Partition part)
- throws HiveException {
+ private List<Task<?>> alterTableOrSinglePartition(
+ AlterTableDesc alterTbl, Table tbl, Partition part) throws HiveException {
+ EnvironmentContext environmentContext = alterTbl.getEnvironmentContext();
+ if (environmentContext == null) {
+ environmentContext = new EnvironmentContext();
+ alterTbl.setEnvironmentContext(environmentContext);
+ }
+ // do not need update stats in alter table/partition operations
+ if (environmentContext.getProperties() == null ||
+ environmentContext.getProperties().get(StatsSetupConst.DO_NOT_UPDATE_STATS) == null) {
+ environmentContext.putToProperties(StatsSetupConst.DO_NOT_UPDATE_STATS, StatsSetupConst.TRUE);
+ }
if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.RENAME) {
tbl.setDbName(Utilities.getDatabaseName(alterTbl.getNewName()));
@@@ -3591,9 -3659,29 +3674,9 @@@
}
sd.setCols(alterTbl.getNewCols());
} else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDPROPS) {
- return alterTableAddProps(alterTbl, tbl, part);
- if (StatsSetupConst.USER.equals(environmentContext.getProperties()
- .get(StatsSetupConst.STATS_GENERATED))) {
- environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
- }
- if (part != null) {
- part.getTPartition().getParameters().putAll(alterTbl.getProps());
- } else {
- tbl.getTTable().getParameters().putAll(alterTbl.getProps());
- }
++ return alterTableAddProps(alterTbl, tbl, part, environmentContext);
} else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.DROPPROPS) {
- return alterTableDropProps(alterTbl, tbl, part);
- Iterator<String> keyItr = alterTbl.getProps().keySet().iterator();
- if (StatsSetupConst.USER.equals(environmentContext.getProperties()
- .get(StatsSetupConst.STATS_GENERATED))) {
- // drop a stats parameter, which triggers recompute stats update automatically
- environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
- }
- while (keyItr.hasNext()) {
- if (part != null) {
- part.getTPartition().getParameters().remove(keyItr.next());
- } else {
- tbl.getTTable().getParameters().remove(keyItr.next());
- }
- }
++ return alterTableDropProps(alterTbl, tbl, part, environmentContext);
} else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDSERDEPROPS) {
StorageDescriptor sd = (part == null ? tbl.getTTable().getSd() : part.getTPartition().getSd());
sd.getSerdeInfo().getParameters().putAll(alterTbl.getProps());
@@@ -3741,184 -3833,7 +3828,194 @@@
throw new HiveException(ErrorMsg.UNSUPPORTED_ALTER_TBL_OP, alterTbl.getOp().toString());
}
- return 0;
+ return null;
+ }
+
- private List<Task<?>> alterTableDropProps(
- AlterTableDesc alterTbl, Table tbl, Partition part) throws HiveException {
++ private List<Task<?>> alterTableDropProps(AlterTableDesc alterTbl, Table tbl,
++ Partition part, EnvironmentContext environmentContext) throws HiveException {
++ if (StatsSetupConst.USER.equals(environmentContext.getProperties()
++ .get(StatsSetupConst.STATS_GENERATED))) {
++ // drop a stats parameter, which triggers recompute stats update automatically
++ environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
++ }
++
+ List<Task<?>> result = null;
+ if (part == null) {
+ Set<String> removedSet = alterTbl.getProps().keySet();
+ boolean isFromMmTable = MetaStoreUtils.isInsertOnlyTable(tbl.getParameters()),
+ isRemoved = MetaStoreUtils.isRemovedInsertOnlyTable(removedSet);
+ if (isFromMmTable && isRemoved) {
+ result = generateRemoveMmTasks(tbl);
+ }
+ }
+ Iterator<String> keyItr = alterTbl.getProps().keySet().iterator();
+ while (keyItr.hasNext()) {
+ if (part != null) {
+ part.getTPartition().getParameters().remove(keyItr.next());
+ } else {
+ tbl.getTTable().getParameters().remove(keyItr.next());
+ }
+ }
+ return result;
+ }
+
+ private List<Task<?>> generateRemoveMmTasks(Table tbl) throws HiveException {
+ // To avoid confusion from nested MM directories when table is converted back and forth,
+ // we will do the following - we will rename mm_ dirs to remove the prefix; we will also
+ // delete any directories that are not committed. Note that this relies on locks.
+ // Note also that we only do the renames AFTER the metastore operation commits.
+ // Deleting uncommitted things is safe, but moving stuff before we convert is data loss.
+ List<Path> allMmDirs = new ArrayList<>();
+ if (tbl.isStoredAsSubDirectories()) {
+ // TODO: support this?
+ throw new HiveException("Converting list bucketed tables stored as subdirectories "
+ + " to and from MM is not supported");
+ }
+ Hive db = getHive();
+ ValidWriteIds ids = db.getValidWriteIdsForTable(tbl.getDbName(), tbl.getTableName());
+ if (tbl.getPartitionKeys().size() > 0) {
+ PartitionIterable parts = new PartitionIterable(db, tbl, null,
+ HiveConf.getIntVar(conf, ConfVars.METASTORE_BATCH_RETRIEVE_MAX));
+ Iterator<Partition> partIter = parts.iterator();
+ while (partIter.hasNext()) {
+ Partition part = partIter.next();
+ checkMmLb(part);
+ handleRemoveMm(part.getDataLocation(), ids, allMmDirs);
+ }
+ } else {
+ checkMmLb(tbl);
+ handleRemoveMm(tbl.getDataLocation(), ids, allMmDirs);
+ }
+ List<Path> targetPaths = new ArrayList<>(allMmDirs.size());
+ int prefixLen = ValidWriteIds.MM_PREFIX.length();
+ for (int i = 0; i < allMmDirs.size(); ++i) {
+ Path src = allMmDirs.get(i);
+ Path tgt = new Path(src.getParent(), src.getName().substring(prefixLen + 1));
+ Utilities.LOG14535.info("Will move " + src + " to " + tgt);
+ targetPaths.add(tgt);
+ }
+ // Don't set inputs and outputs - the locks have already been taken so it's pointless.
+ MoveWork mw = new MoveWork(null, null, null, null, false);
+ mw.setMultiFilesDesc(new LoadMultiFilesDesc(allMmDirs, targetPaths, true, null, null));
+ return Lists.<Task<?>>newArrayList(TaskFactory.get(mw, conf));
+ }
+
+ private void checkMmLb(Table tbl) throws HiveException {
+ if (!tbl.isStoredAsSubDirectories()) return;
+ // TODO: support this?
+ throw new HiveException("Converting list bucketed tables stored as subdirectories "
+ + " to and from MM is not supported");
+ }
+
+ private void checkMmLb(Partition part) throws HiveException {
+ if (!part.isStoredAsSubDirectories()) return;
+ // TODO: support this?
+ throw new HiveException("Converting list bucketed tables stored as subdirectories "
+ + " to and from MM is not supported. Please create a table in the desired format.");
+ }
+
+ private void handleRemoveMm(
+ Path path, ValidWriteIds ids, List<Path> result) throws HiveException {
+ // Note: doesn't take LB into account; that is not presently supported here (throws above).
+ try {
+ FileSystem fs = path.getFileSystem(conf);
+ for (FileStatus file : fs.listStatus(path)) {
+ Path childPath = file.getPath();
+ if (!file.isDirectory()) {
+ ensureDelete(fs, childPath, "a non-directory file");
+ continue;
+ }
+ Long writeId = ValidWriteIds.extractWriteId(childPath);
+ if (writeId == null) {
+ ensureDelete(fs, childPath, "an unknown directory");
+ } else if (!ids.isValid(writeId)) {
+ // Assume no concurrent active writes - we rely on locks here. We could check and fail.
+ ensureDelete(fs, childPath, "an uncommitted directory");
+ } else {
+ result.add(childPath);
+ }
+ }
+ } catch (IOException ex) {
+ throw new HiveException(ex);
+ }
+ }
+
+ private static void ensureDelete(FileSystem fs, Path path, String what) throws IOException {
+ Utilities.LOG14535.info("Deleting " + what + " " + path);
+ try {
+ if (!fs.delete(path, true)) throw new IOException("delete returned false");
+ } catch (Exception ex) {
+ String error = "Couldn't delete " + path + "; cannot remove MM setting from the table";
+ LOG.error(error, ex);
+ throw (ex instanceof IOException) ? (IOException)ex : new IOException(ex);
+ }
+ }
+
+ private List<Task<?>> generateAddMmTasks(Table tbl) throws HiveException {
+ // We will move all the files in the table/partition directories into the first MM
+ // directory, then commit the first write ID.
+ List<Path> srcs = new ArrayList<>(), tgts = new ArrayList<>();
+ Hive db = getHive();
+ long mmWriteId = db.getNextTableWriteId(tbl.getDbName(), tbl.getTableName());
+ String mmDir = ValidWriteIds.getMmFilePrefix(mmWriteId);
+ if (tbl.getPartitionKeys().size() > 0) {
+ PartitionIterable parts = new PartitionIterable(db, tbl, null,
+ HiveConf.getIntVar(conf, ConfVars.METASTORE_BATCH_RETRIEVE_MAX));
+ Iterator<Partition> partIter = parts.iterator();
+ while (partIter.hasNext()) {
+ Partition part = partIter.next();
+ checkMmLb(part);
+ Path src = part.getDataLocation(), tgt = new Path(src, mmDir);
+ srcs.add(src);
+ tgts.add(tgt);
+ Utilities.LOG14535.info("Will move " + src + " to " + tgt);
+ }
+ } else {
+ checkMmLb(tbl);
+ Path src = tbl.getDataLocation(), tgt = new Path(src, mmDir);
+ srcs.add(src);
+ tgts.add(tgt);
+ Utilities.LOG14535.info("Will move " + src + " to " + tgt);
+ }
+ // Don't set inputs and outputs - the locks have already been taken so it's pointless.
+ MoveWork mw = new MoveWork(null, null, null, null, false);
+ mw.setMultiFilesDesc(new LoadMultiFilesDesc(srcs, tgts, true, null, null));
+ ImportCommitWork icw = new ImportCommitWork(tbl.getDbName(), tbl.getTableName(), mmWriteId);
+ // TODO# this is hacky and will be gone with ACID. The problem is getting the write ID above
+ // modifies the table, but the table object above is preserved and modified without
+ // getting this change, so saving it will overwrite write ID. Ideally, when we save
+ // only specific fields, and not overwrite write ID every time we alter table.
+ // There's probably some way in DN to achieve that, but for now let's just update the
+ // original object here. This is safe due to DDL lock and the fact that converting
+ // the table to MM here from non-MM should mean no concurrent write ID updates.
+ tbl.setMmNextWriteId(mmWriteId + 1);
+ Task<?> mv = TaskFactory.get(mw, conf), ic = TaskFactory.get(icw, conf);
+ mv.addDependentTask(ic);
+ return Lists.<Task<?>>newArrayList(mv);
+ }
+
+ private List<Task<?>> alterTableAddProps(AlterTableDesc alterTbl, Table tbl,
- Partition part) throws HiveException {
++ Partition part, EnvironmentContext environmentContext) throws HiveException {
++ if (StatsSetupConst.USER.equals(environmentContext.getProperties()
++ .get(StatsSetupConst.STATS_GENERATED))) {
++ environmentContext.getProperties().remove(StatsSetupConst.DO_NOT_UPDATE_STATS);
++ }
+ List<Task<?>> result = null;
+ if (part != null) {
+ part.getTPartition().getParameters().putAll(alterTbl.getProps());
+ } else {
+ boolean isFromMmTable = MetaStoreUtils.isInsertOnlyTable(tbl.getParameters());
+ Boolean isToMmTable = MetaStoreUtils.isToInsertOnlyTable(alterTbl.getProps());
+ if (isToMmTable != null) {
+ if (!isFromMmTable && isToMmTable) {
+ result = generateAddMmTasks(tbl);
+ } else if (isFromMmTable && !isToMmTable) {
+ result = generateRemoveMmTasks(tbl);
+ }
+ }
+ tbl.getTTable().getParameters().putAll(alterTbl.getProps());
+ }
+ return result;
}
private int dropConstraint(Hive db, AlterTableDesc alterTbl)
@@@ -4257,8 -4173,24 +4355,24 @@@
LOG.info("creating table " + tbl.getDbName() + "." + tbl.getTableName() + " on " +
tbl.getDataLocation());
+ if (crtTbl.getReplicationSpec().isInReplicationScope() && (!crtTbl.getReplaceMode())){
+ // if this is a replication spec, then replace-mode semantics might apply.
+ // if we're already asking for a table replacement, then we can skip this check.
+ // however, otherwise, if in replication scope, and we've not been explicitly asked
+ // to replace, we should check if the object we're looking at exists, and if so,
+ // trigger replace-mode semantics.
+ Table existingTable = db.getTable(tbl.getDbName(), tbl.getTableName(), false);
+ if (existingTable != null){
+ if (!crtTbl.getReplicationSpec().allowEventReplacementInto(existingTable)){
+ return 0; // no replacement, the existing table state is newer than our update.
+ } else {
+ crtTbl.setReplaceMode(true); // we replace existing table.
+ }
+ }
+ }
+
// create the table
- if (crtTbl.getReplaceMode()){
+ if (crtTbl.getReplaceMode()) {
// replace-mode creates are really alters using CreateTableDesc.
try {
db.alterTable(tbl.getDbName()+"."+tbl.getTableName(),tbl,null);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java
index 8e9e605,3bbe92d..530b364
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java
@@@ -18,23 -18,8 +18,23 @@@
package org.apache.hadoop.hive.ql.exec;
+import static org.apache.hadoop.hive.conf.HiveConf.ConfVars.HIVE_TEMPORARY_TABLE_STORAGE;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
-
+ import com.google.common.collect.Lists;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FSDataInputStream;
+import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@@@ -459,9 -356,8 +472,9 @@@ public class FileSinkOperator extends T
parent = Utilities.toTempPath(conf.getDirName());
statsFromRecordWriter = new boolean[numFiles];
serializer = (Serializer) conf.getTableInfo().getDeserializerClass().newInstance();
- serializer.initialize(hconf, conf.getTableInfo().getProperties());
+ serializer.initialize(unsetNestedColumnPaths(hconf), conf.getTableInfo().getProperties());
outputClass = serializer.getSerializedClass();
+ inheritPerms = HiveConf.getBoolVar(hconf, ConfVars.HIVE_WAREHOUSE_SUBDIR_INHERIT_PERMS);
if (isLogInfoEnabled) {
LOG.info("Using serializer : " + serializer + " and formatter : " + hiveOutputFormat +
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/JoinOperator.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java
index 01915f9,1802f37..b3e6f4e
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java
@@@ -393,231 -550,6 +389,232 @@@ public class MoveTask extends Task<Move
return (1);
}
}
+
+ private DataContainer handleStaticParts(Hive db, Table table, LoadTableDesc tbd,
+ TaskInformation ti) throws HiveException, IOException, InvalidOperationException {
+ List<String> partVals = MetaStoreUtils.getPvals(table.getPartCols(), tbd.getPartitionSpec());
+ db.validatePartitionNameCharacters(partVals);
+ Utilities.LOG14535.info("loadPartition called from " + tbd.getSourcePath()
+ + " into " + tbd.getTable().getTableName());
+ boolean isCommitMmWrite = tbd.isCommitMmWrite();
+ db.loadSinglePartition(tbd.getSourcePath(), tbd.getTable().getTableName(),
+ tbd.getPartitionSpec(), tbd.getReplace(),
+ tbd.getInheritTableSpecs(), isSkewedStoredAsDirs(tbd), work.isSrcLocal(),
+ (work.getLoadTableWork().getWriteType() != AcidUtils.Operation.NOT_ACID &&
+ work.getLoadTableWork().getWriteType() != AcidUtils.Operation.INSERT_ONLY),
+ hasFollowingStatsTask(), tbd.getMmWriteId(), isCommitMmWrite);
+ Partition partn = db.getPartition(table, tbd.getPartitionSpec(), false);
+
+ if (ti.bucketCols != null || ti.sortCols != null) {
+ updatePartitionBucketSortColumns(db, table, partn, ti.bucketCols,
+ ti.numBuckets, ti.sortCols);
+ }
+
+ DataContainer dc = new DataContainer(table.getTTable(), partn.getTPartition());
+ // add this partition to post-execution hook
+ if (work.getOutputs() != null) {
+ DDLTask.addIfAbsentByName(new WriteEntity(partn,
+ getWriteType(tbd, work.getLoadTableWork().getWriteType())), work.getOutputs());
+ }
+ return dc;
+ }
+
+ private DataContainer handleDynParts(Hive db, Table table, LoadTableDesc tbd,
+ TaskInformation ti, DynamicPartitionCtx dpCtx) throws HiveException,
+ IOException, InvalidOperationException {
+ DataContainer dc;
+ List<LinkedHashMap<String, String>> dps = Utilities.getFullDPSpecs(conf, dpCtx);
+
- // publish DP columns to its subscribers
- if (dps != null && dps.size() > 0) {
- pushFeed(FeedType.DYNAMIC_PARTITIONS, dps);
- }
+ console.printInfo(System.getProperty("line.separator"));
+ long startTime = System.currentTimeMillis();
+ // load the list of DP partitions and return the list of partition specs
+ // TODO: In a follow-up to HIVE-1361, we should refactor loadDynamicPartitions
+ // to use Utilities.getFullDPSpecs() to get the list of full partSpecs.
+ // After that check the number of DPs created to not exceed the limit and
+ // iterate over it and call loadPartition() here.
+ // The reason we don't do inside HIVE-1361 is the latter is large and we
+ // want to isolate any potential issue it may introduce.
+ if (tbd.isMmTable() && !tbd.isCommitMmWrite()) {
+ throw new HiveException("Only single-partition LoadTableDesc can skip commiting write ID");
+ }
+ Map<Map<String, String>, Partition> dp =
+ db.loadDynamicPartitions(
+ tbd.getSourcePath(),
+ tbd.getTable().getTableName(),
+ tbd.getPartitionSpec(),
+ tbd.getReplace(),
+ dpCtx.getNumDPCols(),
+ (tbd.getLbCtx() == null) ? 0 : tbd.getLbCtx().calculateListBucketingLevel(),
+ work.getLoadTableWork().getWriteType() != AcidUtils.Operation.NOT_ACID &&
+ work.getLoadTableWork().getWriteType() != AcidUtils.Operation.INSERT_ONLY,
+ SessionState.get().getTxnMgr().getCurrentTxnId(), hasFollowingStatsTask(),
+ work.getLoadTableWork().getWriteType(),
+ tbd.getMmWriteId());
+
++ // publish DP columns to its subscribers
++ if (dps != null && dps.size() > 0) {
++ pushFeed(FeedType.DYNAMIC_PARTITIONS, dps);
++ }
++
+ String loadTime = "\t Time taken to load dynamic partitions: " +
+ (System.currentTimeMillis() - startTime)/1000.0 + " seconds";
+ console.printInfo(loadTime);
+ LOG.info(loadTime);
+
+ if (dp.size() == 0 && conf.getBoolVar(HiveConf.ConfVars.HIVE_ERROR_ON_EMPTY_PARTITION)) {
+ throw new HiveException("This query creates no partitions." +
+ " To turn off this error, set hive.error.on.empty.partition=false.");
+ }
+
+ startTime = System.currentTimeMillis();
+ // for each partition spec, get the partition
+ // and put it to WriteEntity for post-exec hook
+ for(Map.Entry<Map<String, String>, Partition> entry : dp.entrySet()) {
+ Partition partn = entry.getValue();
+
+ if (ti.bucketCols != null || ti.sortCols != null) {
+ updatePartitionBucketSortColumns(
+ db, table, partn, ti.bucketCols, ti.numBuckets, ti.sortCols);
+ }
+
+ WriteEntity enty = new WriteEntity(partn,
+ getWriteType(tbd, work.getLoadTableWork().getWriteType()));
+ if (work.getOutputs() != null) {
+ DDLTask.addIfAbsentByName(enty, work.getOutputs());
+ }
+ // Need to update the queryPlan's output as well so that post-exec hook get executed.
+ // This is only needed for dynamic partitioning since for SP the the WriteEntity is
+ // constructed at compile time and the queryPlan already contains that.
+ // For DP, WriteEntity creation is deferred at this stage so we need to update
+ // queryPlan here.
+ if (queryPlan.getOutputs() == null) {
+ queryPlan.setOutputs(new LinkedHashSet<WriteEntity>());
+ }
+ queryPlan.getOutputs().add(enty);
+
+ // update columnar lineage for each partition
+ dc = new DataContainer(table.getTTable(), partn.getTPartition());
+
+ // Don't set lineage on delete as we don't have all the columns
+ if (SessionState.get() != null &&
+ work.getLoadTableWork().getWriteType() != AcidUtils.Operation.DELETE &&
+ work.getLoadTableWork().getWriteType() != AcidUtils.Operation.UPDATE) {
+ SessionState.get().getLineageState().setLineage(tbd.getSourcePath(), dc,
+ table.getCols());
+ }
+ LOG.info("\tLoading partition " + entry.getKey());
+ }
+ console.printInfo("\t Time taken for adding to write entity : " +
+ (System.currentTimeMillis() - startTime)/1000.0 + " seconds");
+ dc = null; // reset data container to prevent it being added again.
+ return dc;
+ }
+
+ private void inferTaskInformation(TaskInformation ti) {
+ // Find the first ancestor of this MoveTask which is some form of map reduce task
+ // (Either standard, local, or a merge)
+ while (ti.task.getParentTasks() != null && ti.task.getParentTasks().size() == 1) {
+ ti.task = (Task)ti.task.getParentTasks().get(0);
+ // If it was a merge task or a local map reduce task, nothing can be inferred
+ if (ti.task instanceof MergeFileTask || ti.task instanceof MapredLocalTask) {
+ break;
+ }
+
+ // If it's a standard map reduce task, check what, if anything, it inferred about
+ // the directory this move task is moving
+ if (ti.task instanceof MapRedTask) {
+ MapredWork work = (MapredWork)ti.task.getWork();
+ MapWork mapWork = work.getMapWork();
+ ti.bucketCols = mapWork.getBucketedColsByDirectory().get(ti.path);
+ ti.sortCols = mapWork.getSortedColsByDirectory().get(ti.path);
+ if (work.getReduceWork() != null) {
+ ti.numBuckets = work.getReduceWork().getNumReduceTasks();
+ }
+
+ if (ti.bucketCols != null || ti.sortCols != null) {
+ // This must be a final map reduce task (the task containing the file sink
+ // operator that writes the final output)
+ assert work.isFinalMapRed();
+ }
+ break;
+ }
+
+ // If it's a move task, get the path the files were moved from, this is what any
+ // preceding map reduce task inferred information about, and moving does not invalidate
+ // those assumptions
+ // This can happen when a conditional merge is added before the final MoveTask, but the
+ // condition for merging is not met, see GenMRFileSink1.
+ if (ti.task instanceof MoveTask) {
+ MoveTask mt = (MoveTask)ti.task;
+ if (mt.getWork().getLoadFileWork() != null) {
+ ti.path = mt.getWork().getLoadFileWork().getSourcePath().toUri().toString();
+ }
+ }
+ }
+ }
+
+ private void checkFileFormats(Hive db, LoadTableDesc tbd, Table table)
+ throws HiveException {
+ if (work.getCheckFileFormat()) {
+ // Get all files from the src directory
+ FileStatus[] dirs;
+ ArrayList<FileStatus> files;
+ FileSystem srcFs; // source filesystem
+ try {
+ srcFs = tbd.getSourcePath().getFileSystem(conf);
+ dirs = srcFs.globStatus(tbd.getSourcePath());
+ files = new ArrayList<FileStatus>();
+ for (int i = 0; (dirs != null && i < dirs.length); i++) {
+ files.addAll(Arrays.asList(srcFs.listStatus(dirs[i].getPath(), FileUtils.HIDDEN_FILES_PATH_FILTER)));
+ // We only check one file, so exit the loop when we have at least
+ // one.
+ if (files.size() > 0) {
+ break;
+ }
+ }
+ } catch (IOException e) {
+ throw new HiveException(
+ "addFiles: filesystem error in check phase", e);
+ }
+
+ // handle file format check for table level
+ if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVECHECKFILEFORMAT)) {
+ boolean flag = true;
+ // work.checkFileFormat is set to true only for Load Task, so assumption here is
+ // dynamic partition context is null
+ if (tbd.getDPCtx() == null) {
+ if (tbd.getPartitionSpec() == null || tbd.getPartitionSpec().isEmpty()) {
+ // Check if the file format of the file matches that of the table.
+ flag = HiveFileFormatUtils.checkInputFormat(
+ srcFs, conf, tbd.getTable().getInputFileFormatClass(), files);
+ } else {
+ // Check if the file format of the file matches that of the partition
+ Partition oldPart = db.getPartition(table, tbd.getPartitionSpec(), false);
+ if (oldPart == null) {
+ // this means we have just created a table and are specifying partition in the
+ // load statement (without pre-creating the partition), in which case lets use
+ // table input format class. inheritTableSpecs defaults to true so when a new
+ // partition is created later it will automatically inherit input format
+ // from table object
+ flag = HiveFileFormatUtils.checkInputFormat(
+ srcFs, conf, tbd.getTable().getInputFileFormatClass(), files);
+ } else {
+ flag = HiveFileFormatUtils.checkInputFormat(
+ srcFs, conf, oldPart.getInputFormatClass(), files);
+ }
+ }
+ if (!flag) {
+ throw new HiveException(
+ "Wrong file format. Please check the file's format.");
+ }
+ } else {
+ LOG.warn("Skipping file format check as dpCtx is not null");
+ }
+ }
+ }
+ }
+
+
/**
* so to make sure we crate WriteEntity with the right WriteType. This is (at this point) only
* for consistency since LockManager (which is the only thing that pays attention to WriteType)
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/ReplCopyTask.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/StatsTask.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
index a93c7e1,12a03d0..80ca28d
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
@@@ -18,61 -18,12 +18,64 @@@
package org.apache.hadoop.hive.ql.exec;
+ import com.esotericsoftware.kryo.Kryo;
+ import com.google.common.annotations.VisibleForTesting;
+ import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
+import java.beans.DefaultPersistenceDelegate;
+import java.beans.Encoder;
+import java.beans.Expression;
+import java.beans.Statement;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInput;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Serializable;
+import java.net.URI;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLDecoder;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.sql.SQLTransientException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Random;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.zip.Deflater;
+import java.util.zip.DeflaterOutputStream;
+import java.util.zip.InflaterInputStream;
-
+ import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.WordUtils;
@@@ -204,10 -147,59 +207,63 @@@ import org.apache.hive.common.util.Refl
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.esotericsoftware.kryo.Kryo;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
+ import java.beans.DefaultPersistenceDelegate;
+ import java.beans.Encoder;
+ import java.beans.Expression;
+ import java.beans.Statement;
+ import java.io.ByteArrayInputStream;
+ import java.io.ByteArrayOutputStream;
+ import java.io.DataInput;
+ import java.io.EOFException;
+ import java.io.File;
+ import java.io.FileNotFoundException;
+ import java.io.IOException;
+ import java.io.InputStream;
+ import java.io.OutputStream;
+ import java.io.Serializable;
+ import java.net.URI;
+ import java.net.URL;
+ import java.net.URLClassLoader;
+ import java.net.URLDecoder;
+ import java.sql.Connection;
+ import java.sql.DriverManager;
+ import java.sql.PreparedStatement;
+ import java.sql.SQLException;
+ import java.sql.SQLFeatureNotSupportedException;
+ import java.sql.SQLTransientException;
+ import java.text.SimpleDateFormat;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.Calendar;
+ import java.util.Collection;
+ import java.util.Enumeration;
+ import java.util.HashMap;
+ import java.util.HashSet;
+ import java.util.Iterator;
+ import java.util.LinkedHashMap;
+ import java.util.LinkedList;
+ import java.util.List;
+ import java.util.Map;
+ import java.util.Properties;
+ import java.util.Random;
+ import java.util.Set;
+ import java.util.UUID;
+ import java.util.concurrent.Callable;
+ import java.util.concurrent.ConcurrentHashMap;
+ import java.util.concurrent.ExecutionException;
+ import java.util.concurrent.ExecutorService;
+ import java.util.concurrent.Executors;
+ import java.util.concurrent.Future;
+ import java.util.regex.Matcher;
+ import java.util.regex.Pattern;
+ import java.util.zip.Deflater;
+ import java.util.zip.DeflaterOutputStream;
+ import java.util.zip.InflaterInputStream;
+
+
/**
* Utilities.
*
@@@ -3064,18 -3013,18 +3161,25 @@@ public final class Utilities
LOG.info("Processing alias " + alias);
// The alias may not have any path
+ Collection<Map.Entry<Path, ArrayList<String>>> pathToAliases =
+ work.getPathToAliases().entrySet();
+ if (!skipDummy) {
+ // ConcurrentModification otherwise if adding dummy.
+ pathToAliases = new ArrayList<>(pathToAliases);
+ }
+ boolean isEmptyTable = true;
+ boolean hasLogged = false;
- // Note: this copies the list because createDummyFileForEmptyPartition may modify the map.
- for (Path file : new LinkedList<Path>(work.getPathToAliases().keySet())) {
- List<String> aliases = work.getPathToAliases().get(file);
+ Path path = null;
+ for (Map.Entry<Path, ArrayList<String>> e : pathToAliases) {
+ Path file = e.getKey();
+ List<String> aliases = e.getValue();
if (aliases.contains(alias)) {
- path = file;
+ if (file != null) {
+ isEmptyTable = false;
+ } else {
+ LOG.warn("Found a null path for alias " + alias);
+ continue;
+ }
// Multiple aliases can point to the same path - it should be
// processed only once
@@@ -3083,13 -3032,16 +3187,16 @@@
continue;
}
- pathsProcessed.add(file);
-
+ pathsProcessed.add(path);
-
- LOG.info("Adding input file " + path);
- if (!skipDummy && isEmptyPath(job, path, ctx)) {
- path = createDummyFileForEmptyPartition(path, job, work, hiveScratchDir);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Adding input file " + file);
+ } else if (!hasLogged) {
+ hasLogged = true;
+ LOG.info("Adding " + work.getPathToAliases().size()
+ + " inputs; the first input is " + file);
}
- pathsToAdd.add(path);
++
+ pathsToAdd.add(file);
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
index d6a212fd,51530ac..5ea3cec
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
@@@ -24,11 -23,11 +24,13 @@@ import java.io.FileNotFoundException
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.HashMap;
+ import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map.Entry;
@@@ -218,9 -221,29 +227,29 @@@ public class HiveInputFormat<K extends
isVectorized = HiveConf.getBoolVar(conf, ConfVars.LLAP_IO_NONVECTOR_WRAPPER_ENABLED)
&& (Utilities.getPlanPath(conf) != null);
}
+ boolean isSerdeBased = false;
+ if (isVectorized && !isSupported
+ && HiveConf.getBoolVar(conf, ConfVars.LLAP_IO_ENCODE_ENABLED)) {
+ // See if we can use re-encoding to read the format thru IO elevator.
+ String formatList = HiveConf.getVar(conf, ConfVars.LLAP_IO_ENCODE_FORMATS);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Checking " + ifName + " against " + formatList);
+ }
- String[] formats = StringUtils.getStrings(formatList);
++ String[] formats = org.apache.hadoop.util.StringUtils.getStrings(formatList);
+ if (formats != null) {
+ for (String format : formats) {
+ // TODO: should we check isAssignableFrom?
+ if (ifName.equals(format)) {
+ LOG.info("Using SerDe-based LLAP reader for " + ifName);
+ isSupported = isSerdeBased = true;
+ break;
+ }
+ }
+ }
+ }
if (!isSupported || !isVectorized) {
- LOG.info("Not using llap for " + inputFormat + ": supported = " + isSupported
- + ", vectorized = " + isVectorized);
+ LOG.info("Not using llap for " + ifName + ": supported = "
+ + isSupported + ", vectorized = " + isVectorized);
return inputFormat;
}
if (LOG.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/stats/PartialScanTask.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index 7514ec4,c5b3517..c812003
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@@ -32,7 -33,7 +33,8 @@@ import java.io.IOException
import java.io.PrintStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
+import java.util.Arrays;
+ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@@ -2982,23 -2916,12 +3082,15 @@@ private void constructOneLBLocationMap(
// If we do a rename for a non-local file, we will be transfering the original
// file permissions from source to the destination. Else, in case of mvFile() where we
// copy from source to destination, we will inherit the destination's parent group ownership.
- final String srcGroup = renameNonLocal ? srcFile.getGroup() :
+ final String srcGroup = isRenameAllowed ? srcFile.getGroup() :
fullDestStatus.getFileStatus().getGroup();
if (null == pool) {
- Path destPath = new Path(destf, srcP.getName());
try {
-
- if (renameNonLocal) {
- for (int counter = 1; !destFs.rename(srcP,destPath); counter++) {
- destPath = new Path(destf, name + ("_copy_" + counter) + filetype);
- }
- } else {
- destPath = mvFile(conf, srcP, destPath, isSrcLocal, srcFs, destFs, name, filetype);
- }
+ Path destPath = mvFile(conf, srcFs, srcP, destFs, destf, isSrcLocal, isRenameAllowed);
+ if (inheritPerms) {
+ HdfsUtils.setFullFileStatus(conf, fullDestStatus, srcGroup, destFs, destPath, false);
+ }
if (null != newFiles) {
newFiles.add(destPath);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
----------------------------------------------------------------------
[06/50] [abbrv] hive git commit: HIVE-15698: Vectorization support
for min/max/bloomfilter runtime filtering (Jason Dere,
reviewed by Matt McCline)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/storage-api/src/test/org/apache/hive/common/util/TestBloomFilter.java
----------------------------------------------------------------------
diff --git a/storage-api/src/test/org/apache/hive/common/util/TestBloomFilter.java b/storage-api/src/test/org/apache/hive/common/util/TestBloomFilter.java
index 63c7050..e4ee93a 100644
--- a/storage-api/src/test/org/apache/hive/common/util/TestBloomFilter.java
+++ b/storage-api/src/test/org/apache/hive/common/util/TestBloomFilter.java
@@ -20,8 +20,12 @@ package org.apache.hive.common.util;
import static org.junit.Assert.assertEquals;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
import java.util.Random;
+import org.junit.Assert;
import org.junit.Test;
/**
@@ -461,4 +465,125 @@ public class TestBloomFilter {
assertEquals(true, bf.testString(v2));
assertEquals(true, bf.testString(v3));
}
+
+ @Test
+ public void testSerialize() throws Exception {
+ BloomFilter bf1 = new BloomFilter(10000);
+ String[] inputs = {
+ "bloo",
+ "bloom fil",
+ "bloom filter",
+ "cuckoo filter",
+ };
+
+ for (String val : inputs) {
+ bf1.addString(val);
+ }
+
+ // Serialize/deserialize
+ ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+ BloomFilter.serialize(bytesOut, bf1);
+ ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytesOut.toByteArray());
+ BloomFilter bf2 = BloomFilter.deserialize(bytesIn);
+
+ for (String val : inputs) {
+ assertEquals("Testing bf1 with " + val, true, bf1.testString(val));
+ assertEquals("Testing bf2 with " + val, true, bf2.testString(val));
+ }
+ }
+
+ @Test
+ public void testMergeBloomFilterBytes() throws Exception {
+ BloomFilter bf1 = new BloomFilter(10000);
+ BloomFilter bf2 = new BloomFilter(10000);
+
+ String[] inputs1 = {
+ "bloo",
+ "bloom fil",
+ "bloom filter",
+ "cuckoo filter",
+ };
+
+ String[] inputs2 = {
+ "2_bloo",
+ "2_bloom fil",
+ "2_bloom filter",
+ "2_cuckoo filter",
+ };
+
+ for (String val : inputs1) {
+ bf1.addString(val);
+ }
+ for (String val : inputs2) {
+ bf2.addString(val);
+ }
+
+ ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+ BloomFilter.serialize(bytesOut, bf1);
+ byte[] bf1Bytes = bytesOut.toByteArray();
+ bytesOut.reset();
+ BloomFilter.serialize(bytesOut, bf1);
+ byte[] bf2Bytes = bytesOut.toByteArray();
+
+ // Merge bytes
+ BloomFilter.mergeBloomFilterBytes(
+ bf1Bytes, 0, bf1Bytes.length,
+ bf2Bytes, 0, bf2Bytes.length);
+
+ // Deserialize and test
+ ByteArrayInputStream bytesIn = new ByteArrayInputStream(bf1Bytes, 0, bf1Bytes.length);
+ BloomFilter bfMerged = BloomFilter.deserialize(bytesIn);
+ // All values should pass test
+ for (String val : inputs1) {
+ bfMerged.addString(val);
+ }
+ for (String val : inputs2) {
+ bfMerged.addString(val);
+ }
+ }
+
+ @Test
+ public void testMergeBloomFilterBytesFailureCases() throws Exception {
+ BloomFilter bf1 = new BloomFilter(1000);
+ BloomFilter bf2 = new BloomFilter(200);
+ // Create bloom filter with same number of bits, but different # hash functions
+ ArrayList<Long> bits = new ArrayList<Long>();
+ for (int idx = 0; idx < bf1.getBitSet().length; ++idx) {
+ bits.add(0L);
+ }
+ BloomFilter bf3 = new BloomFilter(bits, bf1.getBitSize(), bf1.getNumHashFunctions() + 1);
+
+ // Serialize to bytes
+ ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+ BloomFilter.serialize(bytesOut, bf1);
+ byte[] bf1Bytes = bytesOut.toByteArray();
+
+ bytesOut.reset();
+ BloomFilter.serialize(bytesOut, bf2);
+ byte[] bf2Bytes = bytesOut.toByteArray();
+
+ bytesOut.reset();
+ BloomFilter.serialize(bytesOut, bf3);
+ byte[] bf3Bytes = bytesOut.toByteArray();
+
+ try {
+ // this should fail
+ BloomFilter.mergeBloomFilterBytes(
+ bf1Bytes, 0, bf1Bytes.length,
+ bf2Bytes, 0, bf2Bytes.length);
+ Assert.fail("Expected exception not encountered");
+ } catch (IllegalArgumentException err) {
+ // expected
+ }
+
+ try {
+ // this should fail
+ BloomFilter.mergeBloomFilterBytes(
+ bf1Bytes, 0, bf1Bytes.length,
+ bf3Bytes, 0, bf3Bytes.length);
+ Assert.fail("Expected exception not encountered");
+ } catch (IllegalArgumentException err) {
+ // expected
+ }
+ }
}
[48/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
index 3bf3504,42de24e..df49615
--- a/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
+++ b/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
@@@ -1240,14 -1240,14 +1240,14 @@@ uint32_t ThriftHiveMetastore_get_databa
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size832;
- ::apache::thrift::protocol::TType _etype835;
- xfer += iprot->readListBegin(_etype835, _size832);
- this->success.resize(_size832);
- uint32_t _i836;
- for (_i836 = 0; _i836 < _size832; ++_i836)
- uint32_t _size818;
- ::apache::thrift::protocol::TType _etype821;
- xfer += iprot->readListBegin(_etype821, _size818);
- this->success.resize(_size818);
- uint32_t _i822;
- for (_i822 = 0; _i822 < _size818; ++_i822)
++ uint32_t _size840;
++ ::apache::thrift::protocol::TType _etype843;
++ xfer += iprot->readListBegin(_etype843, _size840);
++ this->success.resize(_size840);
++ uint32_t _i844;
++ for (_i844 = 0; _i844 < _size840; ++_i844)
{
- xfer += iprot->readString(this->success[_i836]);
- xfer += iprot->readString(this->success[_i822]);
++ xfer += iprot->readString(this->success[_i844]);
}
xfer += iprot->readListEnd();
}
@@@ -1286,10 -1286,10 +1286,10 @@@ uint32_t ThriftHiveMetastore_get_databa
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
- std::vector<std::string> ::const_iterator _iter837;
- for (_iter837 = this->success.begin(); _iter837 != this->success.end(); ++_iter837)
- std::vector<std::string> ::const_iterator _iter823;
- for (_iter823 = this->success.begin(); _iter823 != this->success.end(); ++_iter823)
++ std::vector<std::string> ::const_iterator _iter845;
++ for (_iter845 = this->success.begin(); _iter845 != this->success.end(); ++_iter845)
{
- xfer += oprot->writeString((*_iter837));
- xfer += oprot->writeString((*_iter823));
++ xfer += oprot->writeString((*_iter845));
}
xfer += oprot->writeListEnd();
}
@@@ -1334,14 -1334,14 +1334,14 @@@ uint32_t ThriftHiveMetastore_get_databa
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size838;
- ::apache::thrift::protocol::TType _etype841;
- xfer += iprot->readListBegin(_etype841, _size838);
- (*(this->success)).resize(_size838);
- uint32_t _i842;
- for (_i842 = 0; _i842 < _size838; ++_i842)
- uint32_t _size824;
- ::apache::thrift::protocol::TType _etype827;
- xfer += iprot->readListBegin(_etype827, _size824);
- (*(this->success)).resize(_size824);
- uint32_t _i828;
- for (_i828 = 0; _i828 < _size824; ++_i828)
++ uint32_t _size846;
++ ::apache::thrift::protocol::TType _etype849;
++ xfer += iprot->readListBegin(_etype849, _size846);
++ (*(this->success)).resize(_size846);
++ uint32_t _i850;
++ for (_i850 = 0; _i850 < _size846; ++_i850)
{
- xfer += iprot->readString((*(this->success))[_i842]);
- xfer += iprot->readString((*(this->success))[_i828]);
++ xfer += iprot->readString((*(this->success))[_i850]);
}
xfer += iprot->readListEnd();
}
@@@ -1458,14 -1458,14 +1458,14 @@@ uint32_t ThriftHiveMetastore_get_all_da
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size843;
- ::apache::thrift::protocol::TType _etype846;
- xfer += iprot->readListBegin(_etype846, _size843);
- this->success.resize(_size843);
- uint32_t _i847;
- for (_i847 = 0; _i847 < _size843; ++_i847)
- uint32_t _size829;
- ::apache::thrift::protocol::TType _etype832;
- xfer += iprot->readListBegin(_etype832, _size829);
- this->success.resize(_size829);
- uint32_t _i833;
- for (_i833 = 0; _i833 < _size829; ++_i833)
++ uint32_t _size851;
++ ::apache::thrift::protocol::TType _etype854;
++ xfer += iprot->readListBegin(_etype854, _size851);
++ this->success.resize(_size851);
++ uint32_t _i855;
++ for (_i855 = 0; _i855 < _size851; ++_i855)
{
- xfer += iprot->readString(this->success[_i847]);
- xfer += iprot->readString(this->success[_i833]);
++ xfer += iprot->readString(this->success[_i855]);
}
xfer += iprot->readListEnd();
}
@@@ -1504,10 -1504,10 +1504,10 @@@ uint32_t ThriftHiveMetastore_get_all_da
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
- std::vector<std::string> ::const_iterator _iter848;
- for (_iter848 = this->success.begin(); _iter848 != this->success.end(); ++_iter848)
- std::vector<std::string> ::const_iterator _iter834;
- for (_iter834 = this->success.begin(); _iter834 != this->success.end(); ++_iter834)
++ std::vector<std::string> ::const_iterator _iter856;
++ for (_iter856 = this->success.begin(); _iter856 != this->success.end(); ++_iter856)
{
- xfer += oprot->writeString((*_iter848));
- xfer += oprot->writeString((*_iter834));
++ xfer += oprot->writeString((*_iter856));
}
xfer += oprot->writeListEnd();
}
@@@ -1552,14 -1552,14 +1552,14 @@@ uint32_t ThriftHiveMetastore_get_all_da
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size849;
- ::apache::thrift::protocol::TType _etype852;
- xfer += iprot->readListBegin(_etype852, _size849);
- (*(this->success)).resize(_size849);
- uint32_t _i853;
- for (_i853 = 0; _i853 < _size849; ++_i853)
- uint32_t _size835;
- ::apache::thrift::protocol::TType _etype838;
- xfer += iprot->readListBegin(_etype838, _size835);
- (*(this->success)).resize(_size835);
- uint32_t _i839;
- for (_i839 = 0; _i839 < _size835; ++_i839)
++ uint32_t _size857;
++ ::apache::thrift::protocol::TType _etype860;
++ xfer += iprot->readListBegin(_etype860, _size857);
++ (*(this->success)).resize(_size857);
++ uint32_t _i861;
++ for (_i861 = 0; _i861 < _size857; ++_i861)
{
- xfer += iprot->readString((*(this->success))[_i853]);
- xfer += iprot->readString((*(this->success))[_i839]);
++ xfer += iprot->readString((*(this->success))[_i861]);
}
xfer += iprot->readListEnd();
}
@@@ -2621,17 -2621,17 +2621,17 @@@ uint32_t ThriftHiveMetastore_get_type_a
if (ftype == ::apache::thrift::protocol::T_MAP) {
{
this->success.clear();
- uint32_t _size854;
- ::apache::thrift::protocol::TType _ktype855;
- ::apache::thrift::protocol::TType _vtype856;
- xfer += iprot->readMapBegin(_ktype855, _vtype856, _size854);
- uint32_t _i858;
- for (_i858 = 0; _i858 < _size854; ++_i858)
- uint32_t _size840;
- ::apache::thrift::protocol::TType _ktype841;
- ::apache::thrift::protocol::TType _vtype842;
- xfer += iprot->readMapBegin(_ktype841, _vtype842, _size840);
- uint32_t _i844;
- for (_i844 = 0; _i844 < _size840; ++_i844)
++ uint32_t _size862;
++ ::apache::thrift::protocol::TType _ktype863;
++ ::apache::thrift::protocol::TType _vtype864;
++ xfer += iprot->readMapBegin(_ktype863, _vtype864, _size862);
++ uint32_t _i866;
++ for (_i866 = 0; _i866 < _size862; ++_i866)
{
- std::string _key859;
- xfer += iprot->readString(_key859);
- Type& _val860 = this->success[_key859];
- xfer += _val860.read(iprot);
- std::string _key845;
- xfer += iprot->readString(_key845);
- Type& _val846 = this->success[_key845];
- xfer += _val846.read(iprot);
++ std::string _key867;
++ xfer += iprot->readString(_key867);
++ Type& _val868 = this->success[_key867];
++ xfer += _val868.read(iprot);
}
xfer += iprot->readMapEnd();
}
@@@ -2670,11 -2670,11 +2670,11 @@@ uint32_t ThriftHiveMetastore_get_type_a
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_MAP, 0);
{
xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
- std::map<std::string, Type> ::const_iterator _iter861;
- for (_iter861 = this->success.begin(); _iter861 != this->success.end(); ++_iter861)
- std::map<std::string, Type> ::const_iterator _iter847;
- for (_iter847 = this->success.begin(); _iter847 != this->success.end(); ++_iter847)
++ std::map<std::string, Type> ::const_iterator _iter869;
++ for (_iter869 = this->success.begin(); _iter869 != this->success.end(); ++_iter869)
{
- xfer += oprot->writeString(_iter861->first);
- xfer += _iter861->second.write(oprot);
- xfer += oprot->writeString(_iter847->first);
- xfer += _iter847->second.write(oprot);
++ xfer += oprot->writeString(_iter869->first);
++ xfer += _iter869->second.write(oprot);
}
xfer += oprot->writeMapEnd();
}
@@@ -2719,17 -2719,17 +2719,17 @@@ uint32_t ThriftHiveMetastore_get_type_a
if (ftype == ::apache::thrift::protocol::T_MAP) {
{
(*(this->success)).clear();
- uint32_t _size862;
- ::apache::thrift::protocol::TType _ktype863;
- ::apache::thrift::protocol::TType _vtype864;
- xfer += iprot->readMapBegin(_ktype863, _vtype864, _size862);
- uint32_t _i866;
- for (_i866 = 0; _i866 < _size862; ++_i866)
- uint32_t _size848;
- ::apache::thrift::protocol::TType _ktype849;
- ::apache::thrift::protocol::TType _vtype850;
- xfer += iprot->readMapBegin(_ktype849, _vtype850, _size848);
- uint32_t _i852;
- for (_i852 = 0; _i852 < _size848; ++_i852)
++ uint32_t _size870;
++ ::apache::thrift::protocol::TType _ktype871;
++ ::apache::thrift::protocol::TType _vtype872;
++ xfer += iprot->readMapBegin(_ktype871, _vtype872, _size870);
++ uint32_t _i874;
++ for (_i874 = 0; _i874 < _size870; ++_i874)
{
- std::string _key867;
- xfer += iprot->readString(_key867);
- Type& _val868 = (*(this->success))[_key867];
- xfer += _val868.read(iprot);
- std::string _key853;
- xfer += iprot->readString(_key853);
- Type& _val854 = (*(this->success))[_key853];
- xfer += _val854.read(iprot);
++ std::string _key875;
++ xfer += iprot->readString(_key875);
++ Type& _val876 = (*(this->success))[_key875];
++ xfer += _val876.read(iprot);
}
xfer += iprot->readMapEnd();
}
@@@ -2883,14 -2883,14 +2883,14 @@@ uint32_t ThriftHiveMetastore_get_fields
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size869;
- ::apache::thrift::protocol::TType _etype872;
- xfer += iprot->readListBegin(_etype872, _size869);
- this->success.resize(_size869);
- uint32_t _i873;
- for (_i873 = 0; _i873 < _size869; ++_i873)
- uint32_t _size855;
- ::apache::thrift::protocol::TType _etype858;
- xfer += iprot->readListBegin(_etype858, _size855);
- this->success.resize(_size855);
- uint32_t _i859;
- for (_i859 = 0; _i859 < _size855; ++_i859)
++ uint32_t _size877;
++ ::apache::thrift::protocol::TType _etype880;
++ xfer += iprot->readListBegin(_etype880, _size877);
++ this->success.resize(_size877);
++ uint32_t _i881;
++ for (_i881 = 0; _i881 < _size877; ++_i881)
{
- xfer += this->success[_i873].read(iprot);
- xfer += this->success[_i859].read(iprot);
++ xfer += this->success[_i881].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -2945,10 -2945,10 +2945,10 @@@ uint32_t ThriftHiveMetastore_get_fields
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
- std::vector<FieldSchema> ::const_iterator _iter874;
- for (_iter874 = this->success.begin(); _iter874 != this->success.end(); ++_iter874)
- std::vector<FieldSchema> ::const_iterator _iter860;
- for (_iter860 = this->success.begin(); _iter860 != this->success.end(); ++_iter860)
++ std::vector<FieldSchema> ::const_iterator _iter882;
++ for (_iter882 = this->success.begin(); _iter882 != this->success.end(); ++_iter882)
{
- xfer += (*_iter874).write(oprot);
- xfer += (*_iter860).write(oprot);
++ xfer += (*_iter882).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -3001,14 -3001,14 +3001,14 @@@ uint32_t ThriftHiveMetastore_get_fields
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size875;
- ::apache::thrift::protocol::TType _etype878;
- xfer += iprot->readListBegin(_etype878, _size875);
- (*(this->success)).resize(_size875);
- uint32_t _i879;
- for (_i879 = 0; _i879 < _size875; ++_i879)
- uint32_t _size861;
- ::apache::thrift::protocol::TType _etype864;
- xfer += iprot->readListBegin(_etype864, _size861);
- (*(this->success)).resize(_size861);
- uint32_t _i865;
- for (_i865 = 0; _i865 < _size861; ++_i865)
++ uint32_t _size883;
++ ::apache::thrift::protocol::TType _etype886;
++ xfer += iprot->readListBegin(_etype886, _size883);
++ (*(this->success)).resize(_size883);
++ uint32_t _i887;
++ for (_i887 = 0; _i887 < _size883; ++_i887)
{
- xfer += (*(this->success))[_i879].read(iprot);
- xfer += (*(this->success))[_i865].read(iprot);
++ xfer += (*(this->success))[_i887].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -3194,14 -3194,14 +3194,14 @@@ uint32_t ThriftHiveMetastore_get_fields
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size880;
- ::apache::thrift::protocol::TType _etype883;
- xfer += iprot->readListBegin(_etype883, _size880);
- this->success.resize(_size880);
- uint32_t _i884;
- for (_i884 = 0; _i884 < _size880; ++_i884)
- uint32_t _size866;
- ::apache::thrift::protocol::TType _etype869;
- xfer += iprot->readListBegin(_etype869, _size866);
- this->success.resize(_size866);
- uint32_t _i870;
- for (_i870 = 0; _i870 < _size866; ++_i870)
++ uint32_t _size888;
++ ::apache::thrift::protocol::TType _etype891;
++ xfer += iprot->readListBegin(_etype891, _size888);
++ this->success.resize(_size888);
++ uint32_t _i892;
++ for (_i892 = 0; _i892 < _size888; ++_i892)
{
- xfer += this->success[_i884].read(iprot);
- xfer += this->success[_i870].read(iprot);
++ xfer += this->success[_i892].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -3256,10 -3256,10 +3256,10 @@@ uint32_t ThriftHiveMetastore_get_fields
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
- std::vector<FieldSchema> ::const_iterator _iter885;
- for (_iter885 = this->success.begin(); _iter885 != this->success.end(); ++_iter885)
- std::vector<FieldSchema> ::const_iterator _iter871;
- for (_iter871 = this->success.begin(); _iter871 != this->success.end(); ++_iter871)
++ std::vector<FieldSchema> ::const_iterator _iter893;
++ for (_iter893 = this->success.begin(); _iter893 != this->success.end(); ++_iter893)
{
- xfer += (*_iter885).write(oprot);
- xfer += (*_iter871).write(oprot);
++ xfer += (*_iter893).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -3312,14 -3312,14 +3312,14 @@@ uint32_t ThriftHiveMetastore_get_fields
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size886;
- ::apache::thrift::protocol::TType _etype889;
- xfer += iprot->readListBegin(_etype889, _size886);
- (*(this->success)).resize(_size886);
- uint32_t _i890;
- for (_i890 = 0; _i890 < _size886; ++_i890)
- uint32_t _size872;
- ::apache::thrift::protocol::TType _etype875;
- xfer += iprot->readListBegin(_etype875, _size872);
- (*(this->success)).resize(_size872);
- uint32_t _i876;
- for (_i876 = 0; _i876 < _size872; ++_i876)
++ uint32_t _size894;
++ ::apache::thrift::protocol::TType _etype897;
++ xfer += iprot->readListBegin(_etype897, _size894);
++ (*(this->success)).resize(_size894);
++ uint32_t _i898;
++ for (_i898 = 0; _i898 < _size894; ++_i898)
{
- xfer += (*(this->success))[_i890].read(iprot);
- xfer += (*(this->success))[_i876].read(iprot);
++ xfer += (*(this->success))[_i898].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -3489,14 -3489,14 +3489,14 @@@ uint32_t ThriftHiveMetastore_get_schema
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size891;
- ::apache::thrift::protocol::TType _etype894;
- xfer += iprot->readListBegin(_etype894, _size891);
- this->success.resize(_size891);
- uint32_t _i895;
- for (_i895 = 0; _i895 < _size891; ++_i895)
- uint32_t _size877;
- ::apache::thrift::protocol::TType _etype880;
- xfer += iprot->readListBegin(_etype880, _size877);
- this->success.resize(_size877);
- uint32_t _i881;
- for (_i881 = 0; _i881 < _size877; ++_i881)
++ uint32_t _size899;
++ ::apache::thrift::protocol::TType _etype902;
++ xfer += iprot->readListBegin(_etype902, _size899);
++ this->success.resize(_size899);
++ uint32_t _i903;
++ for (_i903 = 0; _i903 < _size899; ++_i903)
{
- xfer += this->success[_i895].read(iprot);
- xfer += this->success[_i881].read(iprot);
++ xfer += this->success[_i903].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -3551,10 -3551,10 +3551,10 @@@ uint32_t ThriftHiveMetastore_get_schema
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
- std::vector<FieldSchema> ::const_iterator _iter896;
- for (_iter896 = this->success.begin(); _iter896 != this->success.end(); ++_iter896)
- std::vector<FieldSchema> ::const_iterator _iter882;
- for (_iter882 = this->success.begin(); _iter882 != this->success.end(); ++_iter882)
++ std::vector<FieldSchema> ::const_iterator _iter904;
++ for (_iter904 = this->success.begin(); _iter904 != this->success.end(); ++_iter904)
{
- xfer += (*_iter896).write(oprot);
- xfer += (*_iter882).write(oprot);
++ xfer += (*_iter904).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -3607,14 -3607,14 +3607,14 @@@ uint32_t ThriftHiveMetastore_get_schema
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size897;
- ::apache::thrift::protocol::TType _etype900;
- xfer += iprot->readListBegin(_etype900, _size897);
- (*(this->success)).resize(_size897);
- uint32_t _i901;
- for (_i901 = 0; _i901 < _size897; ++_i901)
- uint32_t _size883;
- ::apache::thrift::protocol::TType _etype886;
- xfer += iprot->readListBegin(_etype886, _size883);
- (*(this->success)).resize(_size883);
- uint32_t _i887;
- for (_i887 = 0; _i887 < _size883; ++_i887)
++ uint32_t _size905;
++ ::apache::thrift::protocol::TType _etype908;
++ xfer += iprot->readListBegin(_etype908, _size905);
++ (*(this->success)).resize(_size905);
++ uint32_t _i909;
++ for (_i909 = 0; _i909 < _size905; ++_i909)
{
- xfer += (*(this->success))[_i901].read(iprot);
- xfer += (*(this->success))[_i887].read(iprot);
++ xfer += (*(this->success))[_i909].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -3800,14 -3800,14 +3800,14 @@@ uint32_t ThriftHiveMetastore_get_schema
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size902;
- ::apache::thrift::protocol::TType _etype905;
- xfer += iprot->readListBegin(_etype905, _size902);
- this->success.resize(_size902);
- uint32_t _i906;
- for (_i906 = 0; _i906 < _size902; ++_i906)
- uint32_t _size888;
- ::apache::thrift::protocol::TType _etype891;
- xfer += iprot->readListBegin(_etype891, _size888);
- this->success.resize(_size888);
- uint32_t _i892;
- for (_i892 = 0; _i892 < _size888; ++_i892)
++ uint32_t _size910;
++ ::apache::thrift::protocol::TType _etype913;
++ xfer += iprot->readListBegin(_etype913, _size910);
++ this->success.resize(_size910);
++ uint32_t _i914;
++ for (_i914 = 0; _i914 < _size910; ++_i914)
{
- xfer += this->success[_i906].read(iprot);
- xfer += this->success[_i892].read(iprot);
++ xfer += this->success[_i914].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -3862,10 -3862,10 +3862,10 @@@ uint32_t ThriftHiveMetastore_get_schema
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
- std::vector<FieldSchema> ::const_iterator _iter907;
- for (_iter907 = this->success.begin(); _iter907 != this->success.end(); ++_iter907)
- std::vector<FieldSchema> ::const_iterator _iter893;
- for (_iter893 = this->success.begin(); _iter893 != this->success.end(); ++_iter893)
++ std::vector<FieldSchema> ::const_iterator _iter915;
++ for (_iter915 = this->success.begin(); _iter915 != this->success.end(); ++_iter915)
{
- xfer += (*_iter907).write(oprot);
- xfer += (*_iter893).write(oprot);
++ xfer += (*_iter915).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -3918,14 -3918,14 +3918,14 @@@ uint32_t ThriftHiveMetastore_get_schema
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size908;
- ::apache::thrift::protocol::TType _etype911;
- xfer += iprot->readListBegin(_etype911, _size908);
- (*(this->success)).resize(_size908);
- uint32_t _i912;
- for (_i912 = 0; _i912 < _size908; ++_i912)
- uint32_t _size894;
- ::apache::thrift::protocol::TType _etype897;
- xfer += iprot->readListBegin(_etype897, _size894);
- (*(this->success)).resize(_size894);
- uint32_t _i898;
- for (_i898 = 0; _i898 < _size894; ++_i898)
++ uint32_t _size916;
++ ::apache::thrift::protocol::TType _etype919;
++ xfer += iprot->readListBegin(_etype919, _size916);
++ (*(this->success)).resize(_size916);
++ uint32_t _i920;
++ for (_i920 = 0; _i920 < _size916; ++_i920)
{
- xfer += (*(this->success))[_i912].read(iprot);
- xfer += (*(this->success))[_i898].read(iprot);
++ xfer += (*(this->success))[_i920].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -4518,14 -4518,14 +4518,14 @@@ uint32_t ThriftHiveMetastore_create_tab
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->primaryKeys.clear();
- uint32_t _size913;
- ::apache::thrift::protocol::TType _etype916;
- xfer += iprot->readListBegin(_etype916, _size913);
- this->primaryKeys.resize(_size913);
- uint32_t _i917;
- for (_i917 = 0; _i917 < _size913; ++_i917)
- uint32_t _size899;
- ::apache::thrift::protocol::TType _etype902;
- xfer += iprot->readListBegin(_etype902, _size899);
- this->primaryKeys.resize(_size899);
- uint32_t _i903;
- for (_i903 = 0; _i903 < _size899; ++_i903)
++ uint32_t _size921;
++ ::apache::thrift::protocol::TType _etype924;
++ xfer += iprot->readListBegin(_etype924, _size921);
++ this->primaryKeys.resize(_size921);
++ uint32_t _i925;
++ for (_i925 = 0; _i925 < _size921; ++_i925)
{
- xfer += this->primaryKeys[_i917].read(iprot);
- xfer += this->primaryKeys[_i903].read(iprot);
++ xfer += this->primaryKeys[_i925].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -4538,14 -4538,14 +4538,14 @@@
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->foreignKeys.clear();
- uint32_t _size918;
- ::apache::thrift::protocol::TType _etype921;
- xfer += iprot->readListBegin(_etype921, _size918);
- this->foreignKeys.resize(_size918);
- uint32_t _i922;
- for (_i922 = 0; _i922 < _size918; ++_i922)
- uint32_t _size904;
- ::apache::thrift::protocol::TType _etype907;
- xfer += iprot->readListBegin(_etype907, _size904);
- this->foreignKeys.resize(_size904);
- uint32_t _i908;
- for (_i908 = 0; _i908 < _size904; ++_i908)
++ uint32_t _size926;
++ ::apache::thrift::protocol::TType _etype929;
++ xfer += iprot->readListBegin(_etype929, _size926);
++ this->foreignKeys.resize(_size926);
++ uint32_t _i930;
++ for (_i930 = 0; _i930 < _size926; ++_i930)
{
- xfer += this->foreignKeys[_i922].read(iprot);
- xfer += this->foreignKeys[_i908].read(iprot);
++ xfer += this->foreignKeys[_i930].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -4578,10 -4578,10 +4578,10 @@@ uint32_t ThriftHiveMetastore_create_tab
xfer += oprot->writeFieldBegin("primaryKeys", ::apache::thrift::protocol::T_LIST, 2);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->primaryKeys.size()));
- std::vector<SQLPrimaryKey> ::const_iterator _iter923;
- for (_iter923 = this->primaryKeys.begin(); _iter923 != this->primaryKeys.end(); ++_iter923)
- std::vector<SQLPrimaryKey> ::const_iterator _iter909;
- for (_iter909 = this->primaryKeys.begin(); _iter909 != this->primaryKeys.end(); ++_iter909)
++ std::vector<SQLPrimaryKey> ::const_iterator _iter931;
++ for (_iter931 = this->primaryKeys.begin(); _iter931 != this->primaryKeys.end(); ++_iter931)
{
- xfer += (*_iter923).write(oprot);
- xfer += (*_iter909).write(oprot);
++ xfer += (*_iter931).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -4590,10 -4590,10 +4590,10 @@@
xfer += oprot->writeFieldBegin("foreignKeys", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->foreignKeys.size()));
- std::vector<SQLForeignKey> ::const_iterator _iter924;
- for (_iter924 = this->foreignKeys.begin(); _iter924 != this->foreignKeys.end(); ++_iter924)
- std::vector<SQLForeignKey> ::const_iterator _iter910;
- for (_iter910 = this->foreignKeys.begin(); _iter910 != this->foreignKeys.end(); ++_iter910)
++ std::vector<SQLForeignKey> ::const_iterator _iter932;
++ for (_iter932 = this->foreignKeys.begin(); _iter932 != this->foreignKeys.end(); ++_iter932)
{
- xfer += (*_iter924).write(oprot);
- xfer += (*_iter910).write(oprot);
++ xfer += (*_iter932).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -4621,10 -4621,10 +4621,10 @@@ uint32_t ThriftHiveMetastore_create_tab
xfer += oprot->writeFieldBegin("primaryKeys", ::apache::thrift::protocol::T_LIST, 2);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>((*(this->primaryKeys)).size()));
- std::vector<SQLPrimaryKey> ::const_iterator _iter925;
- for (_iter925 = (*(this->primaryKeys)).begin(); _iter925 != (*(this->primaryKeys)).end(); ++_iter925)
- std::vector<SQLPrimaryKey> ::const_iterator _iter911;
- for (_iter911 = (*(this->primaryKeys)).begin(); _iter911 != (*(this->primaryKeys)).end(); ++_iter911)
++ std::vector<SQLPrimaryKey> ::const_iterator _iter933;
++ for (_iter933 = (*(this->primaryKeys)).begin(); _iter933 != (*(this->primaryKeys)).end(); ++_iter933)
{
- xfer += (*_iter925).write(oprot);
- xfer += (*_iter911).write(oprot);
++ xfer += (*_iter933).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -4633,10 -4633,10 +4633,10 @@@
xfer += oprot->writeFieldBegin("foreignKeys", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>((*(this->foreignKeys)).size()));
- std::vector<SQLForeignKey> ::const_iterator _iter926;
- for (_iter926 = (*(this->foreignKeys)).begin(); _iter926 != (*(this->foreignKeys)).end(); ++_iter926)
- std::vector<SQLForeignKey> ::const_iterator _iter912;
- for (_iter912 = (*(this->foreignKeys)).begin(); _iter912 != (*(this->foreignKeys)).end(); ++_iter912)
++ std::vector<SQLForeignKey> ::const_iterator _iter934;
++ for (_iter934 = (*(this->foreignKeys)).begin(); _iter934 != (*(this->foreignKeys)).end(); ++_iter934)
{
- xfer += (*_iter926).write(oprot);
- xfer += (*_iter912).write(oprot);
++ xfer += (*_iter934).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -6055,14 -6055,14 +6055,14 @@@ uint32_t ThriftHiveMetastore_get_tables
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size927;
- ::apache::thrift::protocol::TType _etype930;
- xfer += iprot->readListBegin(_etype930, _size927);
- this->success.resize(_size927);
- uint32_t _i931;
- for (_i931 = 0; _i931 < _size927; ++_i931)
- uint32_t _size913;
- ::apache::thrift::protocol::TType _etype916;
- xfer += iprot->readListBegin(_etype916, _size913);
- this->success.resize(_size913);
- uint32_t _i917;
- for (_i917 = 0; _i917 < _size913; ++_i917)
++ uint32_t _size935;
++ ::apache::thrift::protocol::TType _etype938;
++ xfer += iprot->readListBegin(_etype938, _size935);
++ this->success.resize(_size935);
++ uint32_t _i939;
++ for (_i939 = 0; _i939 < _size935; ++_i939)
{
- xfer += iprot->readString(this->success[_i931]);
- xfer += iprot->readString(this->success[_i917]);
++ xfer += iprot->readString(this->success[_i939]);
}
xfer += iprot->readListEnd();
}
@@@ -6101,10 -6101,10 +6101,10 @@@ uint32_t ThriftHiveMetastore_get_tables
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
- std::vector<std::string> ::const_iterator _iter932;
- for (_iter932 = this->success.begin(); _iter932 != this->success.end(); ++_iter932)
- std::vector<std::string> ::const_iterator _iter918;
- for (_iter918 = this->success.begin(); _iter918 != this->success.end(); ++_iter918)
++ std::vector<std::string> ::const_iterator _iter940;
++ for (_iter940 = this->success.begin(); _iter940 != this->success.end(); ++_iter940)
{
- xfer += oprot->writeString((*_iter932));
- xfer += oprot->writeString((*_iter918));
++ xfer += oprot->writeString((*_iter940));
}
xfer += oprot->writeListEnd();
}
@@@ -6149,14 -6149,14 +6149,14 @@@ uint32_t ThriftHiveMetastore_get_tables
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size933;
- ::apache::thrift::protocol::TType _etype936;
- xfer += iprot->readListBegin(_etype936, _size933);
- (*(this->success)).resize(_size933);
- uint32_t _i937;
- for (_i937 = 0; _i937 < _size933; ++_i937)
- uint32_t _size919;
- ::apache::thrift::protocol::TType _etype922;
- xfer += iprot->readListBegin(_etype922, _size919);
- (*(this->success)).resize(_size919);
- uint32_t _i923;
- for (_i923 = 0; _i923 < _size919; ++_i923)
++ uint32_t _size941;
++ ::apache::thrift::protocol::TType _etype944;
++ xfer += iprot->readListBegin(_etype944, _size941);
++ (*(this->success)).resize(_size941);
++ uint32_t _i945;
++ for (_i945 = 0; _i945 < _size941; ++_i945)
{
- xfer += iprot->readString((*(this->success))[_i937]);
- xfer += iprot->readString((*(this->success))[_i923]);
++ xfer += iprot->readString((*(this->success))[_i945]);
}
xfer += iprot->readListEnd();
}
@@@ -6326,14 -6326,14 +6326,14 @@@ uint32_t ThriftHiveMetastore_get_tables
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size938;
- ::apache::thrift::protocol::TType _etype941;
- xfer += iprot->readListBegin(_etype941, _size938);
- this->success.resize(_size938);
- uint32_t _i942;
- for (_i942 = 0; _i942 < _size938; ++_i942)
- uint32_t _size924;
- ::apache::thrift::protocol::TType _etype927;
- xfer += iprot->readListBegin(_etype927, _size924);
- this->success.resize(_size924);
- uint32_t _i928;
- for (_i928 = 0; _i928 < _size924; ++_i928)
++ uint32_t _size946;
++ ::apache::thrift::protocol::TType _etype949;
++ xfer += iprot->readListBegin(_etype949, _size946);
++ this->success.resize(_size946);
++ uint32_t _i950;
++ for (_i950 = 0; _i950 < _size946; ++_i950)
{
- xfer += iprot->readString(this->success[_i942]);
- xfer += iprot->readString(this->success[_i928]);
++ xfer += iprot->readString(this->success[_i950]);
}
xfer += iprot->readListEnd();
}
@@@ -6372,10 -6372,10 +6372,10 @@@ uint32_t ThriftHiveMetastore_get_tables
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
- std::vector<std::string> ::const_iterator _iter943;
- for (_iter943 = this->success.begin(); _iter943 != this->success.end(); ++_iter943)
- std::vector<std::string> ::const_iterator _iter929;
- for (_iter929 = this->success.begin(); _iter929 != this->success.end(); ++_iter929)
++ std::vector<std::string> ::const_iterator _iter951;
++ for (_iter951 = this->success.begin(); _iter951 != this->success.end(); ++_iter951)
{
- xfer += oprot->writeString((*_iter943));
- xfer += oprot->writeString((*_iter929));
++ xfer += oprot->writeString((*_iter951));
}
xfer += oprot->writeListEnd();
}
@@@ -6420,14 -6420,14 +6420,14 @@@ uint32_t ThriftHiveMetastore_get_tables
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size944;
- ::apache::thrift::protocol::TType _etype947;
- xfer += iprot->readListBegin(_etype947, _size944);
- (*(this->success)).resize(_size944);
- uint32_t _i948;
- for (_i948 = 0; _i948 < _size944; ++_i948)
- uint32_t _size930;
- ::apache::thrift::protocol::TType _etype933;
- xfer += iprot->readListBegin(_etype933, _size930);
- (*(this->success)).resize(_size930);
- uint32_t _i934;
- for (_i934 = 0; _i934 < _size930; ++_i934)
++ uint32_t _size952;
++ ::apache::thrift::protocol::TType _etype955;
++ xfer += iprot->readListBegin(_etype955, _size952);
++ (*(this->success)).resize(_size952);
++ uint32_t _i956;
++ for (_i956 = 0; _i956 < _size952; ++_i956)
{
- xfer += iprot->readString((*(this->success))[_i948]);
- xfer += iprot->readString((*(this->success))[_i934]);
++ xfer += iprot->readString((*(this->success))[_i956]);
}
xfer += iprot->readListEnd();
}
@@@ -6502,14 -6502,14 +6502,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->tbl_types.clear();
- uint32_t _size949;
- ::apache::thrift::protocol::TType _etype952;
- xfer += iprot->readListBegin(_etype952, _size949);
- this->tbl_types.resize(_size949);
- uint32_t _i953;
- for (_i953 = 0; _i953 < _size949; ++_i953)
- uint32_t _size935;
- ::apache::thrift::protocol::TType _etype938;
- xfer += iprot->readListBegin(_etype938, _size935);
- this->tbl_types.resize(_size935);
- uint32_t _i939;
- for (_i939 = 0; _i939 < _size935; ++_i939)
++ uint32_t _size957;
++ ::apache::thrift::protocol::TType _etype960;
++ xfer += iprot->readListBegin(_etype960, _size957);
++ this->tbl_types.resize(_size957);
++ uint32_t _i961;
++ for (_i961 = 0; _i961 < _size957; ++_i961)
{
- xfer += iprot->readString(this->tbl_types[_i953]);
- xfer += iprot->readString(this->tbl_types[_i939]);
++ xfer += iprot->readString(this->tbl_types[_i961]);
}
xfer += iprot->readListEnd();
}
@@@ -6546,10 -6546,10 +6546,10 @@@ uint32_t ThriftHiveMetastore_get_table_
xfer += oprot->writeFieldBegin("tbl_types", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->tbl_types.size()));
- std::vector<std::string> ::const_iterator _iter954;
- for (_iter954 = this->tbl_types.begin(); _iter954 != this->tbl_types.end(); ++_iter954)
- std::vector<std::string> ::const_iterator _iter940;
- for (_iter940 = this->tbl_types.begin(); _iter940 != this->tbl_types.end(); ++_iter940)
++ std::vector<std::string> ::const_iterator _iter962;
++ for (_iter962 = this->tbl_types.begin(); _iter962 != this->tbl_types.end(); ++_iter962)
{
- xfer += oprot->writeString((*_iter954));
- xfer += oprot->writeString((*_iter940));
++ xfer += oprot->writeString((*_iter962));
}
xfer += oprot->writeListEnd();
}
@@@ -6581,10 -6581,10 +6581,10 @@@ uint32_t ThriftHiveMetastore_get_table_
xfer += oprot->writeFieldBegin("tbl_types", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->tbl_types)).size()));
- std::vector<std::string> ::const_iterator _iter955;
- for (_iter955 = (*(this->tbl_types)).begin(); _iter955 != (*(this->tbl_types)).end(); ++_iter955)
- std::vector<std::string> ::const_iterator _iter941;
- for (_iter941 = (*(this->tbl_types)).begin(); _iter941 != (*(this->tbl_types)).end(); ++_iter941)
++ std::vector<std::string> ::const_iterator _iter963;
++ for (_iter963 = (*(this->tbl_types)).begin(); _iter963 != (*(this->tbl_types)).end(); ++_iter963)
{
- xfer += oprot->writeString((*_iter955));
- xfer += oprot->writeString((*_iter941));
++ xfer += oprot->writeString((*_iter963));
}
xfer += oprot->writeListEnd();
}
@@@ -6625,14 -6625,14 +6625,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size956;
- ::apache::thrift::protocol::TType _etype959;
- xfer += iprot->readListBegin(_etype959, _size956);
- this->success.resize(_size956);
- uint32_t _i960;
- for (_i960 = 0; _i960 < _size956; ++_i960)
- uint32_t _size942;
- ::apache::thrift::protocol::TType _etype945;
- xfer += iprot->readListBegin(_etype945, _size942);
- this->success.resize(_size942);
- uint32_t _i946;
- for (_i946 = 0; _i946 < _size942; ++_i946)
++ uint32_t _size964;
++ ::apache::thrift::protocol::TType _etype967;
++ xfer += iprot->readListBegin(_etype967, _size964);
++ this->success.resize(_size964);
++ uint32_t _i968;
++ for (_i968 = 0; _i968 < _size964; ++_i968)
{
- xfer += this->success[_i960].read(iprot);
- xfer += this->success[_i946].read(iprot);
++ xfer += this->success[_i968].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -6671,10 -6671,10 +6671,10 @@@ uint32_t ThriftHiveMetastore_get_table_
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
- std::vector<TableMeta> ::const_iterator _iter961;
- for (_iter961 = this->success.begin(); _iter961 != this->success.end(); ++_iter961)
- std::vector<TableMeta> ::const_iterator _iter947;
- for (_iter947 = this->success.begin(); _iter947 != this->success.end(); ++_iter947)
++ std::vector<TableMeta> ::const_iterator _iter969;
++ for (_iter969 = this->success.begin(); _iter969 != this->success.end(); ++_iter969)
{
- xfer += (*_iter961).write(oprot);
- xfer += (*_iter947).write(oprot);
++ xfer += (*_iter969).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -6719,14 -6719,14 +6719,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size962;
- ::apache::thrift::protocol::TType _etype965;
- xfer += iprot->readListBegin(_etype965, _size962);
- (*(this->success)).resize(_size962);
- uint32_t _i966;
- for (_i966 = 0; _i966 < _size962; ++_i966)
- uint32_t _size948;
- ::apache::thrift::protocol::TType _etype951;
- xfer += iprot->readListBegin(_etype951, _size948);
- (*(this->success)).resize(_size948);
- uint32_t _i952;
- for (_i952 = 0; _i952 < _size948; ++_i952)
++ uint32_t _size970;
++ ::apache::thrift::protocol::TType _etype973;
++ xfer += iprot->readListBegin(_etype973, _size970);
++ (*(this->success)).resize(_size970);
++ uint32_t _i974;
++ for (_i974 = 0; _i974 < _size970; ++_i974)
{
- xfer += (*(this->success))[_i966].read(iprot);
- xfer += (*(this->success))[_i952].read(iprot);
++ xfer += (*(this->success))[_i974].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -6864,14 -6864,14 +6864,14 @@@ uint32_t ThriftHiveMetastore_get_all_ta
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size967;
- ::apache::thrift::protocol::TType _etype970;
- xfer += iprot->readListBegin(_etype970, _size967);
- this->success.resize(_size967);
- uint32_t _i971;
- for (_i971 = 0; _i971 < _size967; ++_i971)
- uint32_t _size953;
- ::apache::thrift::protocol::TType _etype956;
- xfer += iprot->readListBegin(_etype956, _size953);
- this->success.resize(_size953);
- uint32_t _i957;
- for (_i957 = 0; _i957 < _size953; ++_i957)
++ uint32_t _size975;
++ ::apache::thrift::protocol::TType _etype978;
++ xfer += iprot->readListBegin(_etype978, _size975);
++ this->success.resize(_size975);
++ uint32_t _i979;
++ for (_i979 = 0; _i979 < _size975; ++_i979)
{
- xfer += iprot->readString(this->success[_i971]);
- xfer += iprot->readString(this->success[_i957]);
++ xfer += iprot->readString(this->success[_i979]);
}
xfer += iprot->readListEnd();
}
@@@ -6910,10 -6910,10 +6910,10 @@@ uint32_t ThriftHiveMetastore_get_all_ta
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
- std::vector<std::string> ::const_iterator _iter972;
- for (_iter972 = this->success.begin(); _iter972 != this->success.end(); ++_iter972)
- std::vector<std::string> ::const_iterator _iter958;
- for (_iter958 = this->success.begin(); _iter958 != this->success.end(); ++_iter958)
++ std::vector<std::string> ::const_iterator _iter980;
++ for (_iter980 = this->success.begin(); _iter980 != this->success.end(); ++_iter980)
{
- xfer += oprot->writeString((*_iter972));
- xfer += oprot->writeString((*_iter958));
++ xfer += oprot->writeString((*_iter980));
}
xfer += oprot->writeListEnd();
}
@@@ -6958,14 -6958,14 +6958,14 @@@ uint32_t ThriftHiveMetastore_get_all_ta
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size973;
- ::apache::thrift::protocol::TType _etype976;
- xfer += iprot->readListBegin(_etype976, _size973);
- (*(this->success)).resize(_size973);
- uint32_t _i977;
- for (_i977 = 0; _i977 < _size973; ++_i977)
- uint32_t _size959;
- ::apache::thrift::protocol::TType _etype962;
- xfer += iprot->readListBegin(_etype962, _size959);
- (*(this->success)).resize(_size959);
- uint32_t _i963;
- for (_i963 = 0; _i963 < _size959; ++_i963)
++ uint32_t _size981;
++ ::apache::thrift::protocol::TType _etype984;
++ xfer += iprot->readListBegin(_etype984, _size981);
++ (*(this->success)).resize(_size981);
++ uint32_t _i985;
++ for (_i985 = 0; _i985 < _size981; ++_i985)
{
- xfer += iprot->readString((*(this->success))[_i977]);
- xfer += iprot->readString((*(this->success))[_i963]);
++ xfer += iprot->readString((*(this->success))[_i985]);
}
xfer += iprot->readListEnd();
}
@@@ -7275,14 -7275,14 +7275,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->tbl_names.clear();
- uint32_t _size978;
- ::apache::thrift::protocol::TType _etype981;
- xfer += iprot->readListBegin(_etype981, _size978);
- this->tbl_names.resize(_size978);
- uint32_t _i982;
- for (_i982 = 0; _i982 < _size978; ++_i982)
- uint32_t _size964;
- ::apache::thrift::protocol::TType _etype967;
- xfer += iprot->readListBegin(_etype967, _size964);
- this->tbl_names.resize(_size964);
- uint32_t _i968;
- for (_i968 = 0; _i968 < _size964; ++_i968)
++ uint32_t _size986;
++ ::apache::thrift::protocol::TType _etype989;
++ xfer += iprot->readListBegin(_etype989, _size986);
++ this->tbl_names.resize(_size986);
++ uint32_t _i990;
++ for (_i990 = 0; _i990 < _size986; ++_i990)
{
- xfer += iprot->readString(this->tbl_names[_i982]);
- xfer += iprot->readString(this->tbl_names[_i968]);
++ xfer += iprot->readString(this->tbl_names[_i990]);
}
xfer += iprot->readListEnd();
}
@@@ -7315,10 -7315,10 +7315,10 @@@ uint32_t ThriftHiveMetastore_get_table_
xfer += oprot->writeFieldBegin("tbl_names", ::apache::thrift::protocol::T_LIST, 2);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->tbl_names.size()));
- std::vector<std::string> ::const_iterator _iter983;
- for (_iter983 = this->tbl_names.begin(); _iter983 != this->tbl_names.end(); ++_iter983)
- std::vector<std::string> ::const_iterator _iter969;
- for (_iter969 = this->tbl_names.begin(); _iter969 != this->tbl_names.end(); ++_iter969)
++ std::vector<std::string> ::const_iterator _iter991;
++ for (_iter991 = this->tbl_names.begin(); _iter991 != this->tbl_names.end(); ++_iter991)
{
- xfer += oprot->writeString((*_iter983));
- xfer += oprot->writeString((*_iter969));
++ xfer += oprot->writeString((*_iter991));
}
xfer += oprot->writeListEnd();
}
@@@ -7346,10 -7346,10 +7346,10 @@@ uint32_t ThriftHiveMetastore_get_table_
xfer += oprot->writeFieldBegin("tbl_names", ::apache::thrift::protocol::T_LIST, 2);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->tbl_names)).size()));
- std::vector<std::string> ::const_iterator _iter984;
- for (_iter984 = (*(this->tbl_names)).begin(); _iter984 != (*(this->tbl_names)).end(); ++_iter984)
- std::vector<std::string> ::const_iterator _iter970;
- for (_iter970 = (*(this->tbl_names)).begin(); _iter970 != (*(this->tbl_names)).end(); ++_iter970)
++ std::vector<std::string> ::const_iterator _iter992;
++ for (_iter992 = (*(this->tbl_names)).begin(); _iter992 != (*(this->tbl_names)).end(); ++_iter992)
{
- xfer += oprot->writeString((*_iter984));
- xfer += oprot->writeString((*_iter970));
++ xfer += oprot->writeString((*_iter992));
}
xfer += oprot->writeListEnd();
}
@@@ -7390,14 -7390,14 +7390,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size985;
- ::apache::thrift::protocol::TType _etype988;
- xfer += iprot->readListBegin(_etype988, _size985);
- this->success.resize(_size985);
- uint32_t _i989;
- for (_i989 = 0; _i989 < _size985; ++_i989)
- uint32_t _size971;
- ::apache::thrift::protocol::TType _etype974;
- xfer += iprot->readListBegin(_etype974, _size971);
- this->success.resize(_size971);
- uint32_t _i975;
- for (_i975 = 0; _i975 < _size971; ++_i975)
++ uint32_t _size993;
++ ::apache::thrift::protocol::TType _etype996;
++ xfer += iprot->readListBegin(_etype996, _size993);
++ this->success.resize(_size993);
++ uint32_t _i997;
++ for (_i997 = 0; _i997 < _size993; ++_i997)
{
- xfer += this->success[_i989].read(iprot);
- xfer += this->success[_i975].read(iprot);
++ xfer += this->success[_i997].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -7428,10 -7428,10 +7428,10 @@@ uint32_t ThriftHiveMetastore_get_table_
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->success.size()));
- std::vector<Table> ::const_iterator _iter990;
- for (_iter990 = this->success.begin(); _iter990 != this->success.end(); ++_iter990)
- std::vector<Table> ::const_iterator _iter976;
- for (_iter976 = this->success.begin(); _iter976 != this->success.end(); ++_iter976)
++ std::vector<Table> ::const_iterator _iter998;
++ for (_iter998 = this->success.begin(); _iter998 != this->success.end(); ++_iter998)
{
- xfer += (*_iter990).write(oprot);
- xfer += (*_iter976).write(oprot);
++ xfer += (*_iter998).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -7472,14 -7472,14 +7472,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size991;
- ::apache::thrift::protocol::TType _etype994;
- xfer += iprot->readListBegin(_etype994, _size991);
- (*(this->success)).resize(_size991);
- uint32_t _i995;
- for (_i995 = 0; _i995 < _size991; ++_i995)
- uint32_t _size977;
- ::apache::thrift::protocol::TType _etype980;
- xfer += iprot->readListBegin(_etype980, _size977);
- (*(this->success)).resize(_size977);
- uint32_t _i981;
- for (_i981 = 0; _i981 < _size977; ++_i981)
++ uint32_t _size999;
++ ::apache::thrift::protocol::TType _etype1002;
++ xfer += iprot->readListBegin(_etype1002, _size999);
++ (*(this->success)).resize(_size999);
++ uint32_t _i1003;
++ for (_i1003 = 0; _i1003 < _size999; ++_i1003)
{
- xfer += (*(this->success))[_i995].read(iprot);
- xfer += (*(this->success))[_i981].read(iprot);
++ xfer += (*(this->success))[_i1003].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -8115,14 -8115,14 +8115,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->success.clear();
- uint32_t _size996;
- ::apache::thrift::protocol::TType _etype999;
- xfer += iprot->readListBegin(_etype999, _size996);
- this->success.resize(_size996);
- uint32_t _i1000;
- for (_i1000 = 0; _i1000 < _size996; ++_i1000)
- uint32_t _size982;
- ::apache::thrift::protocol::TType _etype985;
- xfer += iprot->readListBegin(_etype985, _size982);
- this->success.resize(_size982);
- uint32_t _i986;
- for (_i986 = 0; _i986 < _size982; ++_i986)
++ uint32_t _size1004;
++ ::apache::thrift::protocol::TType _etype1007;
++ xfer += iprot->readListBegin(_etype1007, _size1004);
++ this->success.resize(_size1004);
++ uint32_t _i1008;
++ for (_i1008 = 0; _i1008 < _size1004; ++_i1008)
{
- xfer += iprot->readString(this->success[_i1000]);
- xfer += iprot->readString(this->success[_i986]);
++ xfer += iprot->readString(this->success[_i1008]);
}
xfer += iprot->readListEnd();
}
@@@ -8177,10 -8177,10 +8177,10 @@@ uint32_t ThriftHiveMetastore_get_table_
xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
- std::vector<std::string> ::const_iterator _iter1001;
- for (_iter1001 = this->success.begin(); _iter1001 != this->success.end(); ++_iter1001)
- std::vector<std::string> ::const_iterator _iter987;
- for (_iter987 = this->success.begin(); _iter987 != this->success.end(); ++_iter987)
++ std::vector<std::string> ::const_iterator _iter1009;
++ for (_iter1009 = this->success.begin(); _iter1009 != this->success.end(); ++_iter1009)
{
- xfer += oprot->writeString((*_iter1001));
- xfer += oprot->writeString((*_iter987));
++ xfer += oprot->writeString((*_iter1009));
}
xfer += oprot->writeListEnd();
}
@@@ -8233,14 -8233,14 +8233,14 @@@ uint32_t ThriftHiveMetastore_get_table_
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
(*(this->success)).clear();
- uint32_t _size1002;
- ::apache::thrift::protocol::TType _etype1005;
- xfer += iprot->readListBegin(_etype1005, _size1002);
- (*(this->success)).resize(_size1002);
- uint32_t _i1006;
- for (_i1006 = 0; _i1006 < _size1002; ++_i1006)
- uint32_t _size988;
- ::apache::thrift::protocol::TType _etype991;
- xfer += iprot->readListBegin(_etype991, _size988);
- (*(this->success)).resize(_size988);
- uint32_t _i992;
- for (_i992 = 0; _i992 < _size988; ++_i992)
++ uint32_t _size1010;
++ ::apache::thrift::protocol::TType _etype1013;
++ xfer += iprot->readListBegin(_etype1013, _size1010);
++ (*(this->success)).resize(_size1010);
++ uint32_t _i1014;
++ for (_i1014 = 0; _i1014 < _size1010; ++_i1014)
{
- xfer += iprot->readString((*(this->success))[_i1006]);
- xfer += iprot->readString((*(this->success))[_i992]);
++ xfer += iprot->readString((*(this->success))[_i1014]);
}
xfer += iprot->readListEnd();
}
@@@ -9574,14 -9574,14 +9574,14 @@@ uint32_t ThriftHiveMetastore_add_partit
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->new_parts.clear();
- uint32_t _size1007;
- ::apache::thrift::protocol::TType _etype1010;
- xfer += iprot->readListBegin(_etype1010, _size1007);
- this->new_parts.resize(_size1007);
- uint32_t _i1011;
- for (_i1011 = 0; _i1011 < _size1007; ++_i1011)
- uint32_t _size993;
- ::apache::thrift::protocol::TType _etype996;
- xfer += iprot->readListBegin(_etype996, _size993);
- this->new_parts.resize(_size993);
- uint32_t _i997;
- for (_i997 = 0; _i997 < _size993; ++_i997)
++ uint32_t _size1015;
++ ::apache::thrift::protocol::TType _etype1018;
++ xfer += iprot->readListBegin(_etype1018, _size1015);
++ this->new_parts.resize(_size1015);
++ uint32_t _i1019;
++ for (_i1019 = 0; _i1019 < _size1015; ++_i1019)
{
- xfer += this->new_parts[_i1011].read(iprot);
- xfer += this->new_parts[_i997].read(iprot);
++ xfer += this->new_parts[_i1019].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -9610,10 -9610,10 +9610,10 @@@ uint32_t ThriftHiveMetastore_add_partit
xfer += oprot->writeFieldBegin("new_parts", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->new_parts.size()));
- std::vector<Partition> ::const_iterator _iter1012;
- for (_iter1012 = this->new_parts.begin(); _iter1012 != this->new_parts.end(); ++_iter1012)
- std::vector<Partition> ::const_iterator _iter998;
- for (_iter998 = this->new_parts.begin(); _iter998 != this->new_parts.end(); ++_iter998)
++ std::vector<Partition> ::const_iterator _iter1020;
++ for (_iter1020 = this->new_parts.begin(); _iter1020 != this->new_parts.end(); ++_iter1020)
{
- xfer += (*_iter1012).write(oprot);
- xfer += (*_iter998).write(oprot);
++ xfer += (*_iter1020).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -9637,10 -9637,10 +9637,10 @@@ uint32_t ThriftHiveMetastore_add_partit
xfer += oprot->writeFieldBegin("new_parts", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>((*(this->new_parts)).size()));
- std::vector<Partition> ::const_iterator _iter1013;
- for (_iter1013 = (*(this->new_parts)).begin(); _iter1013 != (*(this->new_parts)).end(); ++_iter1013)
- std::vector<Partition> ::const_iterator _iter999;
- for (_iter999 = (*(this->new_parts)).begin(); _iter999 != (*(this->new_parts)).end(); ++_iter999)
++ std::vector<Partition> ::const_iterator _iter1021;
++ for (_iter1021 = (*(this->new_parts)).begin(); _iter1021 != (*(this->new_parts)).end(); ++_iter1021)
{
- xfer += (*_iter1013).write(oprot);
- xfer += (*_iter999).write(oprot);
++ xfer += (*_iter1021).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -9849,14 -9849,14 +9849,14 @@@ uint32_t ThriftHiveMetastore_add_partit
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->new_parts.clear();
- uint32_t _size1014;
- ::apache::thrift::protocol::TType _etype1017;
- xfer += iprot->readListBegin(_etype1017, _size1014);
- this->new_parts.resize(_size1014);
- uint32_t _i1018;
- for (_i1018 = 0; _i1018 < _size1014; ++_i1018)
- uint32_t _size1000;
- ::apache::thrift::protocol::TType _etype1003;
- xfer += iprot->readListBegin(_etype1003, _size1000);
- this->new_parts.resize(_size1000);
- uint32_t _i1004;
- for (_i1004 = 0; _i1004 < _size1000; ++_i1004)
++ uint32_t _size1022;
++ ::apache::thrift::protocol::TType _etype1025;
++ xfer += iprot->readListBegin(_etype1025, _size1022);
++ this->new_parts.resize(_size1022);
++ uint32_t _i1026;
++ for (_i1026 = 0; _i1026 < _size1022; ++_i1026)
{
- xfer += this->new_parts[_i1018].read(iprot);
- xfer += this->new_parts[_i1004].read(iprot);
++ xfer += this->new_parts[_i1026].read(iprot);
}
xfer += iprot->readListEnd();
}
@@@ -9885,10 -9885,10 +9885,10 @@@ uint32_t ThriftHiveMetastore_add_partit
xfer += oprot->writeFieldBegin("new_parts", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->new_parts.size()));
- std::vector<PartitionSpec> ::const_iterator _iter1019;
- for (_iter1019 = this->new_parts.begin(); _iter1019 != this->new_parts.end(); ++_iter1019)
- std::vector<PartitionSpec> ::const_iterator _iter1005;
- for (_iter1005 = this->new_parts.begin(); _iter1005 != this->new_parts.end(); ++_iter1005)
++ std::vector<PartitionSpec> ::const_iterator _iter1027;
++ for (_iter1027 = this->new_parts.begin(); _iter1027 != this->new_parts.end(); ++_iter1027)
{
- xfer += (*_iter1019).write(oprot);
- xfer += (*_iter1005).write(oprot);
++ xfer += (*_iter1027).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -9912,10 -9912,10 +9912,10 @@@ uint32_t ThriftHiveMetastore_add_partit
xfer += oprot->writeFieldBegin("new_parts", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>((*(this->new_parts)).size()));
- std::vector<PartitionSpec> ::const_iterator _iter1020;
- for (_iter1020 = (*(this->new_parts)).begin(); _iter1020 != (*(this->new_parts)).end(); ++_iter1020)
- std::vector<PartitionSpec> ::const_iterator _iter1006;
- for (_iter1006 = (*(this->new_parts)).begin(); _iter1006 != (*(this->new_parts)).end(); ++_iter1006)
++ std::vector<PartitionSpec> ::const_iterator _iter1028;
++ for (_iter1028 = (*(this->new_parts)).begin(); _iter1028 != (*(this->new_parts)).end(); ++_iter1028)
{
- xfer += (*_iter1020).write(oprot);
- xfer += (*_iter1006).write(oprot);
++ xfer += (*_iter1028).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@@ -10140,14 -10140,14 +10140,14 @@@ uint32_t ThriftHiveMetastore_append_par
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->part_vals.clear();
- uint32_t _size1021;
- ::apache::thrift::protocol::TType _etype1024;
- xfer += iprot->readListBegin(_etype1024, _size1021);
- this->part_vals.resize(_size1021);
- uint32_t _i1025;
- for (_i1025 = 0; _i1025 < _size1021; ++_i1025)
- uint32_t _size1007;
- ::apache::thrift::protocol::TType _etype1010;
- xfer += iprot->readListBegin(_etype1010, _size1007);
- this->part_vals.resize(_size1007);
- uint32_t _i1011;
- for (_i1011 = 0; _i1011 < _size1007; ++_i1011)
++ uint32_t _size1029;
++ ::apache::thrift::protocol::TType _etype1032;
++ xfer += iprot->readListBegin(_etype1032, _size1029);
++ this->part_vals.resize(_size1029);
++ uint32_t _i1033;
++ for (_i1033 = 0; _i1033 < _size1029; ++_i1033)
{
- xfer += iprot->readString(this->part_vals[_i1025]);
- xfer += iprot->readString(this->part_vals[_i1011]);
++ xfer += iprot->readString(this->part_vals[_i1033]);
}
xfer += iprot->readListEnd();
}
@@@ -10184,10 -10184,10 +10184,10 @@@ uint32_t ThriftHiveMetastore_append_par
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->part_vals.size()));
- std::vector<std::string> ::const_iterator _iter1026;
- for (_iter1026 = this->part_vals.begin(); _iter1026 != this->part_vals.end(); ++_iter1026)
- std::vector<std::string> ::const_iterator _iter1012;
- for (_iter1012 = this->part_vals.begin(); _iter1012 != this->part_vals.end(); ++_iter1012)
++ std::vector<std::string> ::const_iterator _iter1034;
++ for (_iter1034 = this->part_vals.begin(); _iter1034 != this->part_vals.end(); ++_iter1034)
{
- xfer += oprot->writeString((*_iter1026));
- xfer += oprot->writeString((*_iter1012));
++ xfer += oprot->writeString((*_iter1034));
}
xfer += oprot->writeListEnd();
}
@@@ -10219,10 -10219,10 +10219,10 @@@ uint32_t ThriftHiveMetastore_append_par
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->part_vals)).size()));
- std::vector<std::string> ::const_iterator _iter1027;
- for (_iter1027 = (*(this->part_vals)).begin(); _iter1027 != (*(this->part_vals)).end(); ++_iter1027)
- std::vector<std::string> ::const_iterator _iter1013;
- for (_iter1013 = (*(this->part_vals)).begin(); _iter1013 != (*(this->part_vals)).end(); ++_iter1013)
++ std::vector<std::string> ::const_iterator _iter1035;
++ for (_iter1035 = (*(this->part_vals)).begin(); _iter1035 != (*(this->part_vals)).end(); ++_iter1035)
{
- xfer += oprot->writeString((*_iter1027));
- xfer += oprot->writeString((*_iter1013));
++ xfer += oprot->writeString((*_iter1035));
}
xfer += oprot->writeListEnd();
}
@@@ -10694,14 -10694,14 +10694,14 @@@ uint32_t ThriftHiveMetastore_append_par
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->part_vals.clear();
- uint32_t _size1028;
- ::apache::thrift::protocol::TType _etype1031;
- xfer += iprot->readListBegin(_etype1031, _size1028);
- this->part_vals.resize(_size1028);
- uint32_t _i1032;
- for (_i1032 = 0; _i1032 < _size1028; ++_i1032)
- uint32_t _size1014;
- ::apache::thrift::protocol::TType _etype1017;
- xfer += iprot->readListBegin(_etype1017, _size1014);
- this->part_vals.resize(_size1014);
- uint32_t _i1018;
- for (_i1018 = 0; _i1018 < _size1014; ++_i1018)
++ uint32_t _size1036;
++ ::apache::thrift::protocol::TType _etype1039;
++ xfer += iprot->readListBegin(_etype1039, _size1036);
++ this->part_vals.resize(_size1036);
++ uint32_t _i1040;
++ for (_i1040 = 0; _i1040 < _size1036; ++_i1040)
{
- xfer += iprot->readString(this->part_vals[_i1032]);
- xfer += iprot->readString(this->part_vals[_i1018]);
++ xfer += iprot->readString(this->part_vals[_i1040]);
}
xfer += iprot->readListEnd();
}
@@@ -10746,10 -10746,10 +10746,10 @@@ uint32_t ThriftHiveMetastore_append_par
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->part_vals.size()));
- std::vector<std::string> ::const_iterator _iter1033;
- for (_iter1033 = this->part_vals.begin(); _iter1033 != this->part_vals.end(); ++_iter1033)
- std::vector<std::string> ::const_iterator _iter1019;
- for (_iter1019 = this->part_vals.begin(); _iter1019 != this->part_vals.end(); ++_iter1019)
++ std::vector<std::string> ::const_iterator _iter1041;
++ for (_iter1041 = this->part_vals.begin(); _iter1041 != this->part_vals.end(); ++_iter1041)
{
- xfer += oprot->writeString((*_iter1033));
- xfer += oprot->writeString((*_iter1019));
++ xfer += oprot->writeString((*_iter1041));
}
xfer += oprot->writeListEnd();
}
@@@ -10785,10 -10785,10 +10785,10 @@@ uint32_t ThriftHiveMetastore_append_par
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->part_vals)).size()));
- std::vector<std::string> ::const_iterator _iter1034;
- for (_iter1034 = (*(this->part_vals)).begin(); _iter1034 != (*(this->part_vals)).end(); ++_iter1034)
- std::vector<std::string> ::const_iterator _iter1020;
- for (_iter1020 = (*(this->part_vals)).begin(); _iter1020 != (*(this->part_vals)).end(); ++_iter1020)
++ std::vector<std::string> ::const_iterator _iter1042;
++ for (_iter1042 = (*(this->part_vals)).begin(); _iter1042 != (*(this->part_vals)).end(); ++_iter1042)
{
- xfer += oprot->writeString((*_iter1034));
- xfer += oprot->writeString((*_iter1020));
++ xfer += oprot->writeString((*_iter1042));
}
xfer += oprot->writeListEnd();
}
@@@ -11591,14 -11591,14 +11591,14 @@@ uint32_t ThriftHiveMetastore_drop_parti
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->part_vals.clear();
- uint32_t _size1035;
- ::apache::thrift::protocol::TType _etype1038;
- xfer += iprot->readListBegin(_etype1038, _size1035);
- this->part_vals.resize(_size1035);
- uint32_t _i1039;
- for (_i1039 = 0; _i1039 < _size1035; ++_i1039)
- uint32_t _size1021;
- ::apache::thrift::protocol::TType _etype1024;
- xfer += iprot->readListBegin(_etype1024, _size1021);
- this->part_vals.resize(_size1021);
- uint32_t _i1025;
- for (_i1025 = 0; _i1025 < _size1021; ++_i1025)
++ uint32_t _size1043;
++ ::apache::thrift::protocol::TType _etype1046;
++ xfer += iprot->readListBegin(_etype1046, _size1043);
++ this->part_vals.resize(_size1043);
++ uint32_t _i1047;
++ for (_i1047 = 0; _i1047 < _size1043; ++_i1047)
{
- xfer += iprot->readString(this->part_vals[_i1039]);
- xfer += iprot->readString(this->part_vals[_i1025]);
++ xfer += iprot->readString(this->part_vals[_i1047]);
}
xfer += iprot->readListEnd();
}
@@@ -11643,10 -11643,10 +11643,10 @@@ uint32_t ThriftHiveMetastore_drop_parti
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->part_vals.size()));
- std::vector<std::string> ::const_iterator _iter1040;
- for (_iter1040 = this->part_vals.begin(); _iter1040 != this->part_vals.end(); ++_iter1040)
- std::vector<std::string> ::const_iterator _iter1026;
- for (_iter1026 = this->part_vals.begin(); _iter1026 != this->part_vals.end(); ++_iter1026)
++ std::vector<std::string> ::const_iterator _iter1048;
++ for (_iter1048 = this->part_vals.begin(); _iter1048 != this->part_vals.end(); ++_iter1048)
{
- xfer += oprot->writeString((*_iter1040));
- xfer += oprot->writeString((*_iter1026));
++ xfer += oprot->writeString((*_iter1048));
}
xfer += oprot->writeListEnd();
}
@@@ -11682,10 -11682,10 +11682,10 @@@ uint32_t ThriftHiveMetastore_drop_parti
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->part_vals)).size()));
- std::vector<std::string> ::const_iterator _iter1041;
- for (_iter1041 = (*(this->part_vals)).begin(); _iter1041 != (*(this->part_vals)).end(); ++_iter1041)
- std::vector<std::string> ::const_iterator _iter1027;
- for (_iter1027 = (*(this->part_vals)).begin(); _iter1027 != (*(this->part_vals)).end(); ++_iter1027)
++ std::vector<std::string> ::const_iterator _iter1049;
++ for (_iter1049 = (*(this->part_vals)).begin(); _iter1049 != (*(this->part_vals)).end(); ++_iter1049)
{
- xfer += oprot->writeString((*_iter1041));
- xfer += oprot->writeString((*_iter1027));
++ xfer += oprot->writeString((*_iter1049));
}
xfer += oprot->writeListEnd();
}
@@@ -11894,14 -11894,14 +11894,14 @@@ uint32_t ThriftHiveMetastore_drop_parti
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->part_vals.clear();
- uint32_t _size1042;
- ::apache::thrift::protocol::TType _etype1045;
- xfer += iprot->readListBegin(_etype1045, _size1042);
- this->part_vals.resize(_size1042);
- uint32_t _i1046;
- for (_i1046 = 0; _i1046 < _size1042; ++_i1046)
- uint32_t _size1028;
- ::apache::thrift::protocol::TType _etype1031;
- xfer += iprot->readListBegin(_etype1031, _size1028);
- this->part_vals.resize(_size1028);
- uint32_t _i1032;
- for (_i1032 = 0; _i1032 < _size1028; ++_i1032)
++ uint32_t _size1050;
++ ::apache::thrift::protocol::TType _etype1053;
++ xfer += iprot->readListBegin(_etype1053, _size1050);
++ this->part_vals.resize(_size1050);
++ uint32_t _i1054;
++ for (_i1054 = 0; _i1054 < _size1050; ++_i1054)
{
- xfer += iprot->readString(this->part_vals[_i1046]);
- xfer += iprot->readString(this->part_vals[_i1032]);
++ xfer += iprot->readString(this->part_vals[_i1054]);
}
xfer += iprot->readListEnd();
}
@@@ -11954,10 -11954,10 +11954,10 @@@ uint32_t ThriftHiveMetastore_drop_parti
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->part_vals.size()));
- std::vector<std::string> ::const_iterator _iter1047;
- for (_iter1047 = this->part_vals.begin(); _iter1047 != this->part_vals.end(); ++_iter1047)
- std::vector<std::string> ::const_iterator _iter1033;
- for (_iter1033 = this->part_vals.begin(); _iter1033 != this->part_vals.end(); ++_iter1033)
++ std::vector<std::string> ::const_iterator _iter1055;
++ for (_iter1055 = this->part_vals.begin(); _iter1055 != this->part_vals.end(); ++_iter1055)
{
- xfer += oprot->writeString((*_iter1047));
- xfer += oprot->writeString((*_iter1033));
++ xfer += oprot->writeString((*_iter1055));
}
xfer += oprot->writeListEnd();
}
@@@ -11997,10 -11997,10 +11997,10 @@@ uint32_t ThriftHiveMetastore_drop_parti
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->part_vals)).size()));
- std::vector<std::string> ::const_iterator _iter1048;
- for (_iter1048 = (*(this->part_vals)).begin(); _iter1048 != (*(this->part_vals)).end(); ++_iter1048)
- std::vector<std::string> ::const_iterator _iter1034;
- for (_iter1034 = (*(this->part_vals)).begin(); _iter1034 != (*(this->part_vals)).end(); ++_iter1034)
++ std::vector<std::string> ::const_iterator _iter1056;
++ for (_iter1056 = (*(this->part_vals)).begin(); _iter1056 != (*(this->part_vals)).end(); ++_iter1056)
{
- xfer += oprot->writeString((*_iter1048));
- xfer += oprot->writeString((*_iter1034));
++ xfer += oprot->writeString((*_iter1056));
}
xfer += oprot->writeListEnd();
}
@@@ -13006,14 -13006,14 +13006,14 @@@ uint32_t ThriftHiveMetastore_get_partit
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->part_vals.clear();
- uint32_t _size1049;
- ::apache::thrift::protocol::TType _etype1052;
- xfer += iprot->readListBegin(_etype1052, _size1049);
- this->part_vals.resize(_size1049);
- uint32_t _i1053;
- for (_i1053 = 0; _i1053 < _size1049; ++_i1053)
- uint32_t _size1035;
- ::apache::thrift::protocol::TType _etype1038;
- xfer += iprot->readListBegin(_etype1038, _size1035);
- this->part_vals.resize(_size1035);
- uint32_t _i1039;
- for (_i1039 = 0; _i1039 < _size1035; ++_i1039)
++ uint32_t _size1057;
++ ::apache::thrift::protocol::TType _etype1060;
++ xfer += iprot->readListBegin(_etype1060, _size1057);
++ this->part_vals.resize(_size1057);
++ uint32_t _i1061;
++ for (_i1061 = 0; _i1061 < _size1057; ++_i1061)
{
- xfer += iprot->readString(this->part_vals[_i1053]);
- xfer += iprot->readString(this->part_vals[_i1039]);
++ xfer += iprot->readString(this->part_vals[_i1061]);
}
xfer += iprot->readListEnd();
}
@@@ -13050,10 -13050,10 +13050,10 @@@ uint32_t ThriftHiveMetastore_get_partit
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->part_vals.size()));
- std::vector<std::string> ::const_iterator _iter1054;
- for (_iter1054 = this->part_vals.begin(); _iter1054 != this->part_vals.end(); ++_iter1054)
- std::vector<std::string> ::const_iterator _iter1040;
- for (_iter1040 = this->part_vals.begin(); _iter1040 != this->part_vals.end(); ++_iter1040)
++ std::vector<std::string> ::const_iterator _iter1062;
++ for (_iter1062 = this->part_vals.begin(); _iter1062 != this->part_vals.end(); ++_iter1062)
{
- xfer += oprot->writeString((*_iter1054));
- xfer += oprot->writeString((*_iter1040));
++ xfer += oprot->writeString((*_iter1062));
}
xfer += oprot->writeListEnd();
}
@@@ -13085,10 -13085,10 +13085,10 @@@ uint32_t ThriftHiveMetastore_get_partit
xfer += oprot->writeFieldBegin("part_vals", ::apache::thrift::protocol::T_LIST, 3);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->part_vals)).size()));
- std::vector<std::string> ::const_iterator _iter1055;
- for (_iter1055 = (*(this->part_vals)).begin(); _iter1055 != (*(this->part_vals)).end(); ++_iter1055)
- std::vector<std::string> ::const_iterator _iter1041;
- for (_iter1041 = (*(this->part_vals)).begin(); _iter1041 != (*(this->part_vals)).end(); ++_iter1041)
++ std::vector<std::string> ::const_iterator _iter1063;
++ for (_iter1063 = (*(this->part_vals)).begin(); _iter1063 != (*(this->part_vals)).end(); ++_iter1063)
{
- xfer += oprot->writeString((*_iter1055));
- xfer += oprot->writeString((*_iter1041));
++ xfer += oprot->writeString((*_iter1063));
}
xfer += oprot->writeListEnd();
}
@@@ -13277,17 -13277,17 +13277,17 @@@ uint32_t ThriftHiveMetastore_exchange_p
if (ftype == ::apache::thrift::protocol::T_MAP) {
{
this->partitionSpecs.clear();
- uint32_t _size1056;
- ::apache::thrift::protocol::TType _ktype1057;
- ::apache::thrift::protocol::TType _vtype1058;
- xfer += iprot->readMapBegin(_ktype1057, _vtype1058, _size1056);
- uint32_t _i1060;
- for (_i1060 = 0; _i1060 < _size1056; ++_i1060)
- uint32_t _size1042;
- ::apache::thrift::protocol::TType _ktype1043;
- ::apache::thrift::protocol::TType _vtype1044;
- xfer += iprot->readMapBegin(_ktype1043, _vtype1044, _size1042);
- uint32_t _i1046;
- for (_i1046 = 0; _i1046 < _size1042; ++_i1046)
++ uint32_t _size1064;
++ ::apache::thrift::protocol::TType _ktype1065;
++ ::apache::thrift::protocol::TType _vtype1066;
++ xfer += iprot->readMapBegin(_ktype1065, _vtype1066, _size1064);
++ uint32_t _i1068;
++ for (_i1068 = 0; _i1068 < _size1064; ++_i1068)
{
- std::string _key1061;
- xfer += iprot->readString(_key1061);
- std::string& _val1062 = this->partitionSpecs[_key1061];
- xfer += iprot->readString(_val1062);
- std::string _key1047;
- xfer += iprot->readString(_key1047);
- std::string& _val1048 = this->partitionSpecs[_key1047];
- xfer += iprot->readString(_val1048);
++ std::string _key1069;
++ xfer += iprot->readString(_key1069);
++ std::string& _val1070 = this->partitionSpecs[_key1069];
++ xfer += iprot->readString(_val1070);
}
xfer += iprot->readMapEnd();
}
@@@ -13348,11 -13348,11 +13348,11 @@@ uint32_t ThriftHiveMetastore_exchange_p
xfer += oprot->writeFieldBegin("partitionSpecs", ::apache::thrift::protocol::T_MAP, 1);
{
xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->partitionSpecs.size()));
- std::map<std::string, std::string> ::const_iterator _iter1063;
- for (_iter1063 = this->partitionSpecs.begin(); _iter1063 != this->partitionSpecs.end(); ++_iter1063)
- std::map<std::string, std::string> ::const_iterator _iter1049;
- for (_iter1049 = this->partitionSpecs.begin(); _iter1049 != this->partitionSpecs.end(); ++_iter1049)
++ std::map<std::string, std::string> ::const_iterator _iter1071;
++ for (_iter1071 = this->partitionSpecs.begin(); _iter1071 != this->partitionSpecs.end(); ++_iter1071)
{
- xfer += oprot->writeString(_iter1063->first);
- xfer += oprot->writeString(_iter1063->second);
- xfer += oprot->writeString(_iter1049->first);
- xfer += oprot->writeString(_iter1049->second);
++ xfer += oprot->writeString(_iter1071->first);
++ xfer += oprot->writeString(_iter1071->second);
}
xfer += oprot->writeMapEnd();
}
@@@ -13392,11 -13392,11 +13392,11 @@@ uint32_t ThriftHiveMetastore_exchange_p
xfer += oprot->writeFieldBegin("partitionSpecs", ::apache::thrift::protocol::T_MAP, 1);
{
xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_STRING, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>((*(this->partitionSpecs)).size()));
- std::map<std::string, std::string> ::const_iterator _iter1064;
- for (_iter1064 = (*(this->partitionSpecs)).begin(); _iter1064 != (*(this->partitionSpecs)).end(); ++_iter1064)
- std::map<std::string, std::string> ::const_iterator _iter1050;
- for (_iter1050 = (*(this->partitionSpecs)).begin(); _iter1050 != (*(this->partitionSpecs)).end(); ++_iter1050)
++ std::map<std::string, std::string> ::const_iterator
<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.h
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore_server.skeleton.cpp
----------------------------------------------------------------------
[26/50] [abbrv] hive git commit: HIVE-15703 :
HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via
Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/vector_mapjoin_reduce.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_mapjoin_reduce.q.out b/ql/src/test/results/clientpositive/llap/vector_mapjoin_reduce.q.out
index 6ddfd76..d0efdb0 100644
--- a/ql/src/test/results/clientpositive/llap/vector_mapjoin_reduce.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_mapjoin_reduce.q.out
@@ -49,7 +49,7 @@ STAGE PLANS:
alias: li
Statistics: Num rows: 100 Data size: 1600 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: ((l_linenumber = 1) and l_partkey is not null) (type: boolean)
+ predicate: ((l_linenumber = 1) and l_partkey is not null and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 17 Data size: 272 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: l_orderkey (type: int), l_partkey (type: int), l_suppkey (type: int)
@@ -69,7 +69,7 @@ STAGE PLANS:
alias: lineitem
Statistics: Num rows: 100 Data size: 9200 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (l_shipmode = 'AIR') (type: boolean)
+ predicate: ((l_shipmode = 'AIR') and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 14 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: l_orderkey (type: int)
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
index 729a84e..203ded8 100644
--- a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
@@ -3081,6 +3081,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
@@ -3175,16 +3176,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 7
Execution mode: vectorized, llap
Reduce Operator Tree:
@@ -3221,16 +3225,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 6
Vertex: Union 6
@@ -3281,6 +3288,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
@@ -3377,16 +3385,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 7
Execution mode: vectorized, llap
Reduce Operator Tree:
@@ -3423,16 +3434,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 6
Vertex: Union 6
@@ -3485,6 +3499,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
keys: ds (type: string)
@@ -3522,6 +3537,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator
keys: ds (type: string)
@@ -3606,16 +3622,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 2
Execution mode: vectorized, llap
Reduce Operator Tree:
@@ -3668,16 +3687,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 3
Vertex: Union 3
Union 9
@@ -5299,6 +5321,7 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: srcpart
+ filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
@@ -5359,16 +5382,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 5
Execution mode: vectorized, llap
Reduce Operator Tree:
@@ -5420,16 +5446,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
Union 4
Vertex: Union 4
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/perf/query14.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query14.q.out b/ql/src/test/results/clientpositive/perf/query14.q.out
index 3016ad4..21cabbc 100644
--- a/ql/src/test/results/clientpositive/perf/query14.q.out
+++ b/ql/src/test/results/clientpositive/perf/query14.q.out
@@ -1,9 +1,9 @@
+Warning: Shuffle Join MERGEJOIN[916][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 114' is a cross product
+Warning: Shuffle Join MERGEJOIN[917][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 115' is a cross product
Warning: Shuffle Join MERGEJOIN[912][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 5' is a cross product
Warning: Shuffle Join MERGEJOIN[913][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 6' is a cross product
Warning: Shuffle Join MERGEJOIN[914][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 61' is a cross product
Warning: Shuffle Join MERGEJOIN[915][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 62' is a cross product
-Warning: Shuffle Join MERGEJOIN[916][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 114' is a cross product
-Warning: Shuffle Join MERGEJOIN[917][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 115' is a cross product
PREHOOK: query: explain
with cross_items as
(select i_item_sk ss_item_sk
@@ -570,7 +570,7 @@ Stage-0
Select Operator [SEL_486] (rows=462000 width=1436)
Output:["_col0","_col1","_col2","_col3"]
Filter Operator [FIL_857] (rows=462000 width=1436)
- predicate:(i_brand_id is not null and i_class_id is not null and i_category_id is not null)
+ predicate:(i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_item_sk is not null)
TableScan [TS_484] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id"]
<-Reducer 148 [SIMPLE_EDGE]
@@ -801,7 +801,7 @@ Stage-0
Select Operator [SEL_94] (rows=462000 width=1436)
Output:["_col0","_col1","_col2","_col3"]
Filter Operator [FIL_807] (rows=462000 width=1436)
- predicate:(i_brand_id is not null and i_class_id is not null and i_category_id is not null)
+ predicate:(i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_item_sk is not null)
TableScan [TS_92] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id"]
<-Reducer 42 [SIMPLE_EDGE]
@@ -1408,7 +1408,7 @@ Stage-0
Select Operator [SEL_289] (rows=462000 width=1436)
Output:["_col0","_col1","_col2","_col3"]
Filter Operator [FIL_832] (rows=462000 width=1436)
- predicate:(i_brand_id is not null and i_class_id is not null and i_category_id is not null)
+ predicate:(i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_item_sk is not null)
TableScan [TS_287] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id"]
<-Reducer 95 [SIMPLE_EDGE]
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/perf/query23.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query23.q.out b/ql/src/test/results/clientpositive/perf/query23.q.out
index c8f3b85..85cee23 100644
--- a/ql/src/test/results/clientpositive/perf/query23.q.out
+++ b/ql/src/test/results/clientpositive/perf/query23.q.out
@@ -180,7 +180,7 @@ Stage-0
Select Operator [SEL_127] (rows=144002668 width=135)
Output:["_col0","_col1","_col2","_col3","_col4"]
Filter Operator [FIL_346] (rows=144002668 width=135)
- predicate:ws_sold_date_sk is not null
+ predicate:(ws_item_sk is not null and ws_bill_customer_sk is not null and ws_sold_date_sk is not null)
TableScan [TS_125] (rows=144002668 width=135)
default@web_sales,web_sales,Tbl:COMPLETE,Col:NONE,Output:["ws_sold_date_sk","ws_item_sk","ws_bill_customer_sk","ws_quantity","ws_list_price"]
<-Map 39 [SIMPLE_EDGE]
@@ -642,7 +642,7 @@ Stage-0
Select Operator [SEL_2] (rows=287989836 width=135)
Output:["_col0","_col1","_col2","_col3","_col4"]
Filter Operator [FIL_333] (rows=287989836 width=135)
- predicate:cs_sold_date_sk is not null
+ predicate:(cs_item_sk is not null and cs_bill_customer_sk is not null and cs_sold_date_sk is not null)
TableScan [TS_0] (rows=287989836 width=135)
default@catalog_sales,catalog_sales,Tbl:COMPLETE,Col:NONE,Output:["cs_sold_date_sk","cs_bill_customer_sk","cs_item_sk","cs_quantity","cs_list_price"]
<-Map 7 [SIMPLE_EDGE]
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/perf/query33.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query33.q.out b/ql/src/test/results/clientpositive/perf/query33.q.out
index 89660e3..342bd90 100644
--- a/ql/src/test/results/clientpositive/perf/query33.q.out
+++ b/ql/src/test/results/clientpositive/perf/query33.q.out
@@ -208,7 +208,7 @@ Stage-0
Select Operator [SEL_39] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_164] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_manufact_id is not null and i_item_sk is not null)
TableScan [TS_37] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_manufact_id"]
<-Reducer 20 [SIMPLE_EDGE]
@@ -224,7 +224,7 @@ Stage-0
Select Operator [SEL_42] (rows=231000 width=1436)
Output:["i_manufact_id"]
Filter Operator [FIL_165] (rows=231000 width=1436)
- predicate:(i_category) IN ('Books')
+ predicate:((i_category) IN ('Books') and i_manufact_id is not null)
TableScan [TS_40] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_category","i_manufact_id"]
<-Reducer 23 [SIMPLE_EDGE]
@@ -291,7 +291,7 @@ Stage-0
Select Operator [SEL_78] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_169] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_manufact_id is not null and i_item_sk is not null)
TableScan [TS_76] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_manufact_id"]
<-Reducer 31 [SIMPLE_EDGE]
@@ -307,7 +307,7 @@ Stage-0
Select Operator [SEL_81] (rows=231000 width=1436)
Output:["i_manufact_id"]
Filter Operator [FIL_170] (rows=231000 width=1436)
- predicate:(i_category) IN ('Books')
+ predicate:((i_category) IN ('Books') and i_manufact_id is not null)
TableScan [TS_79] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_category","i_manufact_id"]
<-Reducer 34 [SIMPLE_EDGE]
@@ -413,7 +413,7 @@ Stage-0
Select Operator [SEL_2] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_159] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_manufact_id is not null and i_item_sk is not null)
TableScan [TS_0] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_manufact_id"]
<-Reducer 9 [SIMPLE_EDGE]
@@ -429,7 +429,7 @@ Stage-0
Select Operator [SEL_5] (rows=231000 width=1436)
Output:["i_manufact_id"]
Filter Operator [FIL_160] (rows=231000 width=1436)
- predicate:(i_category) IN ('Books')
+ predicate:((i_category) IN ('Books') and i_manufact_id is not null)
TableScan [TS_3] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_category","i_manufact_id"]
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/perf/query56.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query56.q.out b/ql/src/test/results/clientpositive/perf/query56.q.out
index 2db6bfb..4fa28c2 100644
--- a/ql/src/test/results/clientpositive/perf/query56.q.out
+++ b/ql/src/test/results/clientpositive/perf/query56.q.out
@@ -194,7 +194,7 @@ Stage-0
Select Operator [SEL_39] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_164] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_item_id is not null and i_item_sk is not null)
TableScan [TS_37] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
<-Reducer 20 [SIMPLE_EDGE]
@@ -210,7 +210,7 @@ Stage-0
Select Operator [SEL_42] (rows=231000 width=1436)
Output:["i_item_id"]
Filter Operator [FIL_165] (rows=231000 width=1436)
- predicate:(i_color) IN ('orchid', 'chiffon', 'lace')
+ predicate:((i_color) IN ('orchid', 'chiffon', 'lace') and i_item_id is not null)
TableScan [TS_40] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_id","i_color"]
<-Reducer 23 [SIMPLE_EDGE]
@@ -277,7 +277,7 @@ Stage-0
Select Operator [SEL_78] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_169] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_item_id is not null and i_item_sk is not null)
TableScan [TS_76] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
<-Reducer 31 [SIMPLE_EDGE]
@@ -293,7 +293,7 @@ Stage-0
Select Operator [SEL_81] (rows=231000 width=1436)
Output:["i_item_id"]
Filter Operator [FIL_170] (rows=231000 width=1436)
- predicate:(i_color) IN ('orchid', 'chiffon', 'lace')
+ predicate:((i_color) IN ('orchid', 'chiffon', 'lace') and i_item_id is not null)
TableScan [TS_79] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_id","i_color"]
<-Reducer 34 [SIMPLE_EDGE]
@@ -399,7 +399,7 @@ Stage-0
Select Operator [SEL_2] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_159] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_item_id is not null and i_item_sk is not null)
TableScan [TS_0] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
<-Reducer 9 [SIMPLE_EDGE]
@@ -415,7 +415,7 @@ Stage-0
Select Operator [SEL_5] (rows=231000 width=1436)
Output:["i_item_id"]
Filter Operator [FIL_160] (rows=231000 width=1436)
- predicate:(i_color) IN ('orchid', 'chiffon', 'lace')
+ predicate:((i_color) IN ('orchid', 'chiffon', 'lace') and i_item_id is not null)
TableScan [TS_3] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_id","i_color"]
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/perf/query60.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query60.q.out b/ql/src/test/results/clientpositive/perf/query60.q.out
index 3b68c44..ad9d08e 100644
--- a/ql/src/test/results/clientpositive/perf/query60.q.out
+++ b/ql/src/test/results/clientpositive/perf/query60.q.out
@@ -214,7 +214,7 @@ Stage-0
Select Operator [SEL_39] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_164] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_item_id is not null and i_item_sk is not null)
TableScan [TS_37] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
<-Reducer 20 [SIMPLE_EDGE]
@@ -230,7 +230,7 @@ Stage-0
Select Operator [SEL_42] (rows=231000 width=1436)
Output:["i_item_id"]
Filter Operator [FIL_165] (rows=231000 width=1436)
- predicate:(i_category) IN ('Children')
+ predicate:((i_category) IN ('Children') and i_item_id is not null)
TableScan [TS_40] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_id","i_category"]
<-Reducer 23 [SIMPLE_EDGE]
@@ -297,7 +297,7 @@ Stage-0
Select Operator [SEL_78] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_169] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_item_id is not null and i_item_sk is not null)
TableScan [TS_76] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
<-Reducer 31 [SIMPLE_EDGE]
@@ -313,7 +313,7 @@ Stage-0
Select Operator [SEL_81] (rows=231000 width=1436)
Output:["i_item_id"]
Filter Operator [FIL_170] (rows=231000 width=1436)
- predicate:(i_category) IN ('Children')
+ predicate:((i_category) IN ('Children') and i_item_id is not null)
TableScan [TS_79] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_id","i_category"]
<-Reducer 34 [SIMPLE_EDGE]
@@ -419,7 +419,7 @@ Stage-0
Select Operator [SEL_2] (rows=462000 width=1436)
Output:["_col0","_col1"]
Filter Operator [FIL_159] (rows=462000 width=1436)
- predicate:i_item_sk is not null
+ predicate:(i_item_id is not null and i_item_sk is not null)
TableScan [TS_0] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
<-Reducer 9 [SIMPLE_EDGE]
@@ -435,7 +435,7 @@ Stage-0
Select Operator [SEL_5] (rows=231000 width=1436)
Output:["i_item_id"]
Filter Operator [FIL_160] (rows=231000 width=1436)
- predicate:(i_category) IN ('Children')
+ predicate:((i_category) IN ('Children') and i_item_id is not null)
TableScan [TS_3] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_id","i_category"]
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/perf/query70.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query70.q.out b/ql/src/test/results/clientpositive/perf/query70.q.out
index b4eaee6..d0900a8 100644
--- a/ql/src/test/results/clientpositive/perf/query70.q.out
+++ b/ql/src/test/results/clientpositive/perf/query70.q.out
@@ -159,7 +159,7 @@ Stage-0
Select Operator [SEL_17] (rows=1704 width=1910)
Output:["_col0","_col1"]
Filter Operator [FIL_87] (rows=1704 width=1910)
- predicate:s_store_sk is not null
+ predicate:(s_store_sk is not null and s_state is not null)
TableScan [TS_15] (rows=1704 width=1910)
default@store,store,Tbl:COMPLETE,Col:NONE,Output:["s_store_sk","s_state"]
<-Reducer 11 [SIMPLE_EDGE]
@@ -196,7 +196,7 @@ Stage-0
Select Operator [SEL_8] (rows=1704 width=1910)
Output:["_col0","_col1","_col2"]
Filter Operator [FIL_83] (rows=1704 width=1910)
- predicate:s_store_sk is not null
+ predicate:(s_state is not null and s_store_sk is not null)
TableScan [TS_6] (rows=1704 width=1910)
default@store,s,Tbl:COMPLETE,Col:NONE,Output:["s_store_sk","s_county","s_state"]
<-Reducer 2 [SIMPLE_EDGE]
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/perf/query83.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query83.q.out b/ql/src/test/results/clientpositive/perf/query83.q.out
index ee448d4..9960bc7 100644
--- a/ql/src/test/results/clientpositive/perf/query83.q.out
+++ b/ql/src/test/results/clientpositive/perf/query83.q.out
@@ -160,279 +160,279 @@ Stage-0
limit:100
Stage-1
Reducer 6
- File Output Operator [FS_137]
- Limit [LIM_136] (rows=100 width=77)
+ File Output Operator [FS_134]
+ Limit [LIM_133] (rows=100 width=77)
Number of rows:100
- Select Operator [SEL_135] (rows=76653825 width=77)
+ Select Operator [SEL_132] (rows=76653825 width=77)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
<-Reducer 5 [SIMPLE_EDGE]
- SHUFFLE [RS_134]
- Select Operator [SEL_133] (rows=76653825 width=77)
+ SHUFFLE [RS_131]
+ Select Operator [SEL_130] (rows=76653825 width=77)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
- Merge Join Operator [MERGEJOIN_231] (rows=76653825 width=77)
- Conds:RS_129._col0=RS_130._col0(Inner),RS_129._col0=RS_131._col0(Inner),Output:["_col0","_col1","_col3","_col5"]
+ Merge Join Operator [MERGEJOIN_228] (rows=76653825 width=77)
+ Conds:RS_126._col0=RS_127._col0(Inner),RS_126._col0=RS_128._col0(Inner),Output:["_col0","_col1","_col3","_col5"]
<-Reducer 18 [SIMPLE_EDGE]
- SHUFFLE [RS_130]
+ SHUFFLE [RS_127]
PartitionCols:_col0
- Group By Operator [GBY_84] (rows=34842647 width=77)
+ Group By Operator [GBY_82] (rows=34842647 width=77)
Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
<-Reducer 17 [SIMPLE_EDGE]
- SHUFFLE [RS_83]
+ SHUFFLE [RS_81]
PartitionCols:_col0
- Group By Operator [GBY_82] (rows=69685294 width=77)
- Output:["_col0","_col1"],aggregations:["sum(_col0)"],keys:_col1
- Filter Operator [FIL_80] (rows=69685294 width=77)
- predicate:_col1 is not null
- Select Operator [SEL_79] (rows=69685294 width=77)
- Output:["_col0","_col1"]
- Merge Join Operator [MERGEJOIN_229] (rows=69685294 width=77)
- Conds:RS_76._col0=RS_77._col0(Inner),Output:["_col2","_col4"]
- <-Reducer 16 [SIMPLE_EDGE]
- SHUFFLE [RS_76]
- PartitionCols:_col0
- Merge Join Operator [MERGEJOIN_222] (rows=63350266 width=77)
- Conds:RS_73._col1=RS_74._col0(Inner),Output:["_col0","_col2","_col4"]
- <-Map 15 [SIMPLE_EDGE]
- SHUFFLE [RS_73]
- PartitionCols:_col1
- Select Operator [SEL_45] (rows=57591150 width=77)
- Output:["_col0","_col1","_col2"]
- Filter Operator [FIL_209] (rows=57591150 width=77)
- predicate:(sr_item_sk is not null and sr_returned_date_sk is not null)
- TableScan [TS_43] (rows=57591150 width=77)
- default@store_returns,store_returns,Tbl:COMPLETE,Col:NONE,Output:["sr_returned_date_sk","sr_item_sk","sr_return_quantity"]
- <-Map 19 [SIMPLE_EDGE]
- SHUFFLE [RS_74]
- PartitionCols:_col0
- Select Operator [SEL_48] (rows=462000 width=1436)
- Output:["_col0","_col1"]
- Filter Operator [FIL_210] (rows=462000 width=1436)
- predicate:i_item_sk is not null
- TableScan [TS_46] (rows=462000 width=1436)
- default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
- <-Reducer 21 [SIMPLE_EDGE]
- SHUFFLE [RS_77]
- PartitionCols:_col0
- Merge Join Operator [MERGEJOIN_224] (rows=80353 width=1119)
- Conds:RS_69._col1=RS_70._col0(Inner),Output:["_col0"]
- <-Map 20 [SIMPLE_EDGE]
- SHUFFLE [RS_69]
- PartitionCols:_col1
- Select Operator [SEL_51] (rows=73049 width=1119)
- Output:["_col0","_col1"]
- Filter Operator [FIL_211] (rows=73049 width=1119)
- predicate:d_date_sk is not null
- TableScan [TS_49] (rows=73049 width=1119)
- default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_date"]
- <-Reducer 24 [SIMPLE_EDGE]
- SHUFFLE [RS_70]
- PartitionCols:_col0
- Group By Operator [GBY_67] (rows=40176 width=1119)
- Output:["_col0"],keys:KEY._col0
- <-Reducer 23 [SIMPLE_EDGE]
- SHUFFLE [RS_66]
- PartitionCols:_col0
- Group By Operator [GBY_65] (rows=80353 width=1119)
- Output:["_col0"],keys:_col0
- Merge Join Operator [MERGEJOIN_223] (rows=80353 width=1119)
- Conds:RS_61._col1=RS_62._col0(Inner),Output:["_col0"]
- <-Map 22 [SIMPLE_EDGE]
- SHUFFLE [RS_61]
- PartitionCols:_col1
- Select Operator [SEL_53] (rows=73049 width=1119)
- Output:["_col0","_col1"]
- TableScan [TS_52] (rows=73049 width=1119)
+ Group By Operator [GBY_80] (rows=69685294 width=77)
+ Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col4
+ Select Operator [SEL_79] (rows=69685294 width=77)
+ Output:["_col4","_col2"]
+ Merge Join Operator [MERGEJOIN_226] (rows=69685294 width=77)
+ Conds:RS_76._col0=RS_77._col0(Inner),Output:["_col2","_col4"]
+ <-Reducer 16 [SIMPLE_EDGE]
+ SHUFFLE [RS_76]
+ PartitionCols:_col0
+ Merge Join Operator [MERGEJOIN_219] (rows=63350266 width=77)
+ Conds:RS_73._col1=RS_74._col0(Inner),Output:["_col0","_col2","_col4"]
+ <-Map 15 [SIMPLE_EDGE]
+ SHUFFLE [RS_73]
+ PartitionCols:_col1
+ Select Operator [SEL_44] (rows=57591150 width=77)
+ Output:["_col0","_col1","_col2"]
+ Filter Operator [FIL_206] (rows=57591150 width=77)
+ predicate:(sr_item_sk is not null and sr_returned_date_sk is not null)
+ TableScan [TS_42] (rows=57591150 width=77)
+ default@store_returns,store_returns,Tbl:COMPLETE,Col:NONE,Output:["sr_returned_date_sk","sr_item_sk","sr_return_quantity"]
+ <-Map 19 [SIMPLE_EDGE]
+ SHUFFLE [RS_74]
+ PartitionCols:_col0
+ Select Operator [SEL_47] (rows=462000 width=1436)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_207] (rows=462000 width=1436)
+ predicate:(i_item_sk is not null and i_item_id is not null)
+ TableScan [TS_45] (rows=462000 width=1436)
+ default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
+ <-Reducer 21 [SIMPLE_EDGE]
+ SHUFFLE [RS_77]
+ PartitionCols:_col0
+ Merge Join Operator [MERGEJOIN_221] (rows=80353 width=1119)
+ Conds:RS_69._col1=RS_70._col0(Inner),Output:["_col0"]
+ <-Map 20 [SIMPLE_EDGE]
+ SHUFFLE [RS_69]
+ PartitionCols:_col1
+ Select Operator [SEL_50] (rows=73049 width=1119)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_208] (rows=73049 width=1119)
+ predicate:(d_date is not null and d_date_sk is not null)
+ TableScan [TS_48] (rows=73049 width=1119)
+ default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_date"]
+ <-Reducer 24 [SIMPLE_EDGE]
+ SHUFFLE [RS_70]
+ PartitionCols:_col0
+ Group By Operator [GBY_67] (rows=40176 width=1119)
+ Output:["_col0"],keys:KEY._col0
+ <-Reducer 23 [SIMPLE_EDGE]
+ SHUFFLE [RS_66]
+ PartitionCols:_col0
+ Group By Operator [GBY_65] (rows=80353 width=1119)
+ Output:["_col0"],keys:_col0
+ Merge Join Operator [MERGEJOIN_220] (rows=80353 width=1119)
+ Conds:RS_61._col1=RS_62._col0(Inner),Output:["_col0"]
+ <-Map 22 [SIMPLE_EDGE]
+ SHUFFLE [RS_61]
+ PartitionCols:_col1
+ Select Operator [SEL_53] (rows=73049 width=1119)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_209] (rows=73049 width=1119)
+ predicate:(d_week_seq is not null and d_date is not null)
+ TableScan [TS_51] (rows=73049 width=1119)
default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
- <-Reducer 26 [SIMPLE_EDGE]
- SHUFFLE [RS_62]
- PartitionCols:_col0
- Group By Operator [GBY_59] (rows=18262 width=1119)
- Output:["_col0"],keys:KEY._col0
- <-Map 25 [SIMPLE_EDGE]
- SHUFFLE [RS_58]
- PartitionCols:_col0
- Group By Operator [GBY_57] (rows=36525 width=1119)
- Output:["_col0"],keys:d_week_seq
- Select Operator [SEL_56] (rows=36525 width=1119)
- Output:["d_week_seq"]
- Filter Operator [FIL_213] (rows=36525 width=1119)
- predicate:(d_date) IN ('1998-01-02', '1998-10-15', '1998-11-10')
- TableScan [TS_54] (rows=73049 width=1119)
- default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
+ <-Reducer 26 [SIMPLE_EDGE]
+ SHUFFLE [RS_62]
+ PartitionCols:_col0
+ Group By Operator [GBY_59] (rows=18262 width=1119)
+ Output:["_col0"],keys:KEY._col0
+ <-Map 25 [SIMPLE_EDGE]
+ SHUFFLE [RS_58]
+ PartitionCols:_col0
+ Group By Operator [GBY_57] (rows=36525 width=1119)
+ Output:["_col0"],keys:d_week_seq
+ Select Operator [SEL_56] (rows=36525 width=1119)
+ Output:["d_week_seq"]
+ Filter Operator [FIL_210] (rows=36525 width=1119)
+ predicate:((d_date) IN ('1998-01-02', '1998-10-15', '1998-11-10') and d_week_seq is not null)
+ TableScan [TS_54] (rows=73049 width=1119)
+ default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
<-Reducer 30 [SIMPLE_EDGE]
- SHUFFLE [RS_131]
+ SHUFFLE [RS_128]
PartitionCols:_col0
- Group By Operator [GBY_127] (rows=8711072 width=92)
+ Group By Operator [GBY_124] (rows=8711072 width=92)
Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
<-Reducer 29 [SIMPLE_EDGE]
- SHUFFLE [RS_126]
+ SHUFFLE [RS_123]
PartitionCols:_col0
- Group By Operator [GBY_125] (rows=17422145 width=92)
- Output:["_col0","_col1"],aggregations:["sum(_col0)"],keys:_col1
- Filter Operator [FIL_123] (rows=17422145 width=92)
- predicate:_col1 is not null
- Select Operator [SEL_122] (rows=17422145 width=92)
- Output:["_col0","_col1"]
- Merge Join Operator [MERGEJOIN_230] (rows=17422145 width=92)
- Conds:RS_119._col0=RS_120._col0(Inner),Output:["_col2","_col4"]
- <-Reducer 28 [SIMPLE_EDGE]
- SHUFFLE [RS_119]
- PartitionCols:_col0
- Merge Join Operator [MERGEJOIN_225] (rows=15838314 width=92)
- Conds:RS_116._col1=RS_117._col0(Inner),Output:["_col0","_col2","_col4"]
- <-Map 27 [SIMPLE_EDGE]
- SHUFFLE [RS_116]
- PartitionCols:_col1
- Select Operator [SEL_88] (rows=14398467 width=92)
- Output:["_col0","_col1","_col2"]
- Filter Operator [FIL_214] (rows=14398467 width=92)
- predicate:(wr_item_sk is not null and wr_returned_date_sk is not null)
- TableScan [TS_86] (rows=14398467 width=92)
- default@web_returns,web_returns,Tbl:COMPLETE,Col:NONE,Output:["wr_returned_date_sk","wr_item_sk","wr_return_quantity"]
- <-Map 31 [SIMPLE_EDGE]
- SHUFFLE [RS_117]
- PartitionCols:_col0
- Select Operator [SEL_91] (rows=462000 width=1436)
- Output:["_col0","_col1"]
- Filter Operator [FIL_215] (rows=462000 width=1436)
- predicate:i_item_sk is not null
- TableScan [TS_89] (rows=462000 width=1436)
- default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
- <-Reducer 33 [SIMPLE_EDGE]
- SHUFFLE [RS_120]
- PartitionCols:_col0
- Merge Join Operator [MERGEJOIN_227] (rows=80353 width=1119)
- Conds:RS_112._col1=RS_113._col0(Inner),Output:["_col0"]
- <-Map 32 [SIMPLE_EDGE]
- SHUFFLE [RS_112]
- PartitionCols:_col1
- Select Operator [SEL_94] (rows=73049 width=1119)
- Output:["_col0","_col1"]
- Filter Operator [FIL_216] (rows=73049 width=1119)
- predicate:d_date_sk is not null
- TableScan [TS_92] (rows=73049 width=1119)
- default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_date"]
- <-Reducer 36 [SIMPLE_EDGE]
- SHUFFLE [RS_113]
- PartitionCols:_col0
- Group By Operator [GBY_110] (rows=40176 width=1119)
- Output:["_col0"],keys:KEY._col0
- <-Reducer 35 [SIMPLE_EDGE]
- SHUFFLE [RS_109]
- PartitionCols:_col0
- Group By Operator [GBY_108] (rows=80353 width=1119)
- Output:["_col0"],keys:_col0
- Merge Join Operator [MERGEJOIN_226] (rows=80353 width=1119)
- Conds:RS_104._col1=RS_105._col0(Inner),Output:["_col0"]
- <-Map 34 [SIMPLE_EDGE]
- SHUFFLE [RS_104]
- PartitionCols:_col1
- Select Operator [SEL_96] (rows=73049 width=1119)
- Output:["_col0","_col1"]
- TableScan [TS_95] (rows=73049 width=1119)
+ Group By Operator [GBY_122] (rows=17422145 width=92)
+ Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col4
+ Select Operator [SEL_121] (rows=17422145 width=92)
+ Output:["_col4","_col2"]
+ Merge Join Operator [MERGEJOIN_227] (rows=17422145 width=92)
+ Conds:RS_118._col0=RS_119._col0(Inner),Output:["_col2","_col4"]
+ <-Reducer 28 [SIMPLE_EDGE]
+ SHUFFLE [RS_118]
+ PartitionCols:_col0
+ Merge Join Operator [MERGEJOIN_222] (rows=15838314 width=92)
+ Conds:RS_115._col1=RS_116._col0(Inner),Output:["_col0","_col2","_col4"]
+ <-Map 27 [SIMPLE_EDGE]
+ SHUFFLE [RS_115]
+ PartitionCols:_col1
+ Select Operator [SEL_86] (rows=14398467 width=92)
+ Output:["_col0","_col1","_col2"]
+ Filter Operator [FIL_211] (rows=14398467 width=92)
+ predicate:(wr_item_sk is not null and wr_returned_date_sk is not null)
+ TableScan [TS_84] (rows=14398467 width=92)
+ default@web_returns,web_returns,Tbl:COMPLETE,Col:NONE,Output:["wr_returned_date_sk","wr_item_sk","wr_return_quantity"]
+ <-Map 31 [SIMPLE_EDGE]
+ SHUFFLE [RS_116]
+ PartitionCols:_col0
+ Select Operator [SEL_89] (rows=462000 width=1436)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_212] (rows=462000 width=1436)
+ predicate:(i_item_sk is not null and i_item_id is not null)
+ TableScan [TS_87] (rows=462000 width=1436)
+ default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
+ <-Reducer 33 [SIMPLE_EDGE]
+ SHUFFLE [RS_119]
+ PartitionCols:_col0
+ Merge Join Operator [MERGEJOIN_224] (rows=80353 width=1119)
+ Conds:RS_111._col1=RS_112._col0(Inner),Output:["_col0"]
+ <-Map 32 [SIMPLE_EDGE]
+ SHUFFLE [RS_111]
+ PartitionCols:_col1
+ Select Operator [SEL_92] (rows=73049 width=1119)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_213] (rows=73049 width=1119)
+ predicate:(d_date is not null and d_date_sk is not null)
+ TableScan [TS_90] (rows=73049 width=1119)
+ default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_date"]
+ <-Reducer 36 [SIMPLE_EDGE]
+ SHUFFLE [RS_112]
+ PartitionCols:_col0
+ Group By Operator [GBY_109] (rows=40176 width=1119)
+ Output:["_col0"],keys:KEY._col0
+ <-Reducer 35 [SIMPLE_EDGE]
+ SHUFFLE [RS_108]
+ PartitionCols:_col0
+ Group By Operator [GBY_107] (rows=80353 width=1119)
+ Output:["_col0"],keys:_col0
+ Merge Join Operator [MERGEJOIN_223] (rows=80353 width=1119)
+ Conds:RS_103._col1=RS_104._col0(Inner),Output:["_col0"]
+ <-Map 34 [SIMPLE_EDGE]
+ SHUFFLE [RS_103]
+ PartitionCols:_col1
+ Select Operator [SEL_95] (rows=73049 width=1119)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_214] (rows=73049 width=1119)
+ predicate:(d_week_seq is not null and d_date is not null)
+ TableScan [TS_93] (rows=73049 width=1119)
default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
- <-Reducer 38 [SIMPLE_EDGE]
- SHUFFLE [RS_105]
- PartitionCols:_col0
- Group By Operator [GBY_102] (rows=18262 width=1119)
- Output:["_col0"],keys:KEY._col0
- <-Map 37 [SIMPLE_EDGE]
- SHUFFLE [RS_101]
- PartitionCols:_col0
- Group By Operator [GBY_100] (rows=36525 width=1119)
- Output:["_col0"],keys:d_week_seq
- Select Operator [SEL_99] (rows=36525 width=1119)
- Output:["d_week_seq"]
- Filter Operator [FIL_218] (rows=36525 width=1119)
- predicate:(d_date) IN ('1998-01-02', '1998-10-15', '1998-11-10')
- TableScan [TS_97] (rows=73049 width=1119)
- default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
+ <-Reducer 38 [SIMPLE_EDGE]
+ SHUFFLE [RS_104]
+ PartitionCols:_col0
+ Group By Operator [GBY_101] (rows=18262 width=1119)
+ Output:["_col0"],keys:KEY._col0
+ <-Map 37 [SIMPLE_EDGE]
+ SHUFFLE [RS_100]
+ PartitionCols:_col0
+ Group By Operator [GBY_99] (rows=36525 width=1119)
+ Output:["_col0"],keys:d_week_seq
+ Select Operator [SEL_98] (rows=36525 width=1119)
+ Output:["d_week_seq"]
+ Filter Operator [FIL_215] (rows=36525 width=1119)
+ predicate:((d_date) IN ('1998-01-02', '1998-10-15', '1998-11-10') and d_week_seq is not null)
+ TableScan [TS_96] (rows=73049 width=1119)
+ default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
<-Reducer 4 [SIMPLE_EDGE]
- SHUFFLE [RS_129]
+ SHUFFLE [RS_126]
PartitionCols:_col0
- Group By Operator [GBY_41] (rows=17423323 width=106)
+ Group By Operator [GBY_40] (rows=17423323 width=106)
Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
<-Reducer 3 [SIMPLE_EDGE]
- SHUFFLE [RS_40]
+ SHUFFLE [RS_39]
PartitionCols:_col0
- Group By Operator [GBY_39] (rows=34846646 width=106)
- Output:["_col0","_col1"],aggregations:["sum(_col0)"],keys:_col1
- Filter Operator [FIL_37] (rows=34846646 width=106)
- predicate:_col1 is not null
- Select Operator [SEL_36] (rows=34846646 width=106)
- Output:["_col0","_col1"]
- Merge Join Operator [MERGEJOIN_228] (rows=34846646 width=106)
- Conds:RS_33._col0=RS_34._col0(Inner),Output:["_col2","_col4"]
- <-Reducer 2 [SIMPLE_EDGE]
- SHUFFLE [RS_33]
- PartitionCols:_col0
- Merge Join Operator [MERGEJOIN_219] (rows=31678769 width=106)
- Conds:RS_30._col1=RS_31._col0(Inner),Output:["_col0","_col2","_col4"]
- <-Map 1 [SIMPLE_EDGE]
- SHUFFLE [RS_30]
- PartitionCols:_col1
- Select Operator [SEL_2] (rows=28798881 width=106)
- Output:["_col0","_col1","_col2"]
- Filter Operator [FIL_204] (rows=28798881 width=106)
- predicate:(cr_item_sk is not null and cr_returned_date_sk is not null)
- TableScan [TS_0] (rows=28798881 width=106)
- default@catalog_returns,catalog_returns,Tbl:COMPLETE,Col:NONE,Output:["cr_returned_date_sk","cr_item_sk","cr_return_quantity"]
- <-Map 7 [SIMPLE_EDGE]
- SHUFFLE [RS_31]
- PartitionCols:_col0
- Select Operator [SEL_5] (rows=462000 width=1436)
- Output:["_col0","_col1"]
- Filter Operator [FIL_205] (rows=462000 width=1436)
- predicate:i_item_sk is not null
- TableScan [TS_3] (rows=462000 width=1436)
- default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
- <-Reducer 9 [SIMPLE_EDGE]
- SHUFFLE [RS_34]
- PartitionCols:_col0
- Merge Join Operator [MERGEJOIN_221] (rows=80353 width=1119)
- Conds:RS_26._col1=RS_27._col0(Inner),Output:["_col0"]
- <-Map 8 [SIMPLE_EDGE]
- SHUFFLE [RS_26]
- PartitionCols:_col1
- Select Operator [SEL_8] (rows=73049 width=1119)
- Output:["_col0","_col1"]
- Filter Operator [FIL_206] (rows=73049 width=1119)
- predicate:d_date_sk is not null
- TableScan [TS_6] (rows=73049 width=1119)
- default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_date"]
- <-Reducer 12 [SIMPLE_EDGE]
- SHUFFLE [RS_27]
- PartitionCols:_col0
- Group By Operator [GBY_24] (rows=40176 width=1119)
- Output:["_col0"],keys:KEY._col0
- <-Reducer 11 [SIMPLE_EDGE]
- SHUFFLE [RS_23]
- PartitionCols:_col0
- Group By Operator [GBY_22] (rows=80353 width=1119)
- Output:["_col0"],keys:_col0
- Merge Join Operator [MERGEJOIN_220] (rows=80353 width=1119)
- Conds:RS_18._col1=RS_19._col0(Inner),Output:["_col0"]
- <-Map 10 [SIMPLE_EDGE]
- SHUFFLE [RS_18]
- PartitionCols:_col1
- Select Operator [SEL_10] (rows=73049 width=1119)
- Output:["_col0","_col1"]
+ Group By Operator [GBY_38] (rows=34846646 width=106)
+ Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col4
+ Select Operator [SEL_37] (rows=34846646 width=106)
+ Output:["_col4","_col2"]
+ Merge Join Operator [MERGEJOIN_225] (rows=34846646 width=106)
+ Conds:RS_34._col0=RS_35._col0(Inner),Output:["_col2","_col4"]
+ <-Reducer 2 [SIMPLE_EDGE]
+ SHUFFLE [RS_34]
+ PartitionCols:_col0
+ Merge Join Operator [MERGEJOIN_216] (rows=31678769 width=106)
+ Conds:RS_31._col1=RS_32._col0(Inner),Output:["_col0","_col2","_col4"]
+ <-Map 1 [SIMPLE_EDGE]
+ SHUFFLE [RS_31]
+ PartitionCols:_col1
+ Select Operator [SEL_2] (rows=28798881 width=106)
+ Output:["_col0","_col1","_col2"]
+ Filter Operator [FIL_201] (rows=28798881 width=106)
+ predicate:(cr_item_sk is not null and cr_returned_date_sk is not null)
+ TableScan [TS_0] (rows=28798881 width=106)
+ default@catalog_returns,catalog_returns,Tbl:COMPLETE,Col:NONE,Output:["cr_returned_date_sk","cr_item_sk","cr_return_quantity"]
+ <-Map 7 [SIMPLE_EDGE]
+ SHUFFLE [RS_32]
+ PartitionCols:_col0
+ Select Operator [SEL_5] (rows=462000 width=1436)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_202] (rows=462000 width=1436)
+ predicate:(i_item_sk is not null and i_item_id is not null)
+ TableScan [TS_3] (rows=462000 width=1436)
+ default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_item_id"]
+ <-Reducer 9 [SIMPLE_EDGE]
+ SHUFFLE [RS_35]
+ PartitionCols:_col0
+ Merge Join Operator [MERGEJOIN_218] (rows=80353 width=1119)
+ Conds:RS_27._col1=RS_28._col0(Inner),Output:["_col0"]
+ <-Map 8 [SIMPLE_EDGE]
+ SHUFFLE [RS_27]
+ PartitionCols:_col1
+ Select Operator [SEL_8] (rows=73049 width=1119)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_203] (rows=73049 width=1119)
+ predicate:(d_date is not null and d_date_sk is not null)
+ TableScan [TS_6] (rows=73049 width=1119)
+ default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_date"]
+ <-Reducer 12 [SIMPLE_EDGE]
+ SHUFFLE [RS_28]
+ PartitionCols:_col0
+ Group By Operator [GBY_25] (rows=40176 width=1119)
+ Output:["_col0"],keys:KEY._col0
+ <-Reducer 11 [SIMPLE_EDGE]
+ SHUFFLE [RS_24]
+ PartitionCols:_col0
+ Group By Operator [GBY_23] (rows=80353 width=1119)
+ Output:["_col0"],keys:_col0
+ Merge Join Operator [MERGEJOIN_217] (rows=80353 width=1119)
+ Conds:RS_19._col1=RS_20._col0(Inner),Output:["_col0"]
+ <-Map 10 [SIMPLE_EDGE]
+ SHUFFLE [RS_19]
+ PartitionCols:_col1
+ Select Operator [SEL_11] (rows=73049 width=1119)
+ Output:["_col0","_col1"]
+ Filter Operator [FIL_204] (rows=73049 width=1119)
+ predicate:(d_week_seq is not null and d_date is not null)
TableScan [TS_9] (rows=73049 width=1119)
default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
- <-Reducer 14 [SIMPLE_EDGE]
- SHUFFLE [RS_19]
- PartitionCols:_col0
- Group By Operator [GBY_16] (rows=18262 width=1119)
- Output:["_col0"],keys:KEY._col0
- <-Map 13 [SIMPLE_EDGE]
- SHUFFLE [RS_15]
- PartitionCols:_col0
- Group By Operator [GBY_14] (rows=36525 width=1119)
- Output:["_col0"],keys:d_week_seq
- Select Operator [SEL_13] (rows=36525 width=1119)
- Output:["d_week_seq"]
- Filter Operator [FIL_208] (rows=36525 width=1119)
- predicate:(d_date) IN ('1998-01-02', '1998-10-15', '1998-11-10')
- TableScan [TS_11] (rows=73049 width=1119)
- default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
+ <-Reducer 14 [SIMPLE_EDGE]
+ SHUFFLE [RS_20]
+ PartitionCols:_col0
+ Group By Operator [GBY_17] (rows=18262 width=1119)
+ Output:["_col0"],keys:KEY._col0
+ <-Map 13 [SIMPLE_EDGE]
+ SHUFFLE [RS_16]
+ PartitionCols:_col0
+ Group By Operator [GBY_15] (rows=36525 width=1119)
+ Output:["_col0"],keys:d_week_seq
+ Select Operator [SEL_14] (rows=36525 width=1119)
+ Output:["d_week_seq"]
+ Filter Operator [FIL_205] (rows=36525 width=1119)
+ predicate:((d_date) IN ('1998-01-02', '1998-10-15', '1998-11-10') and d_week_seq is not null)
+ TableScan [TS_12] (rows=73049 width=1119)
+ default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date","d_week_seq"]
[25/50] [abbrv] hive git commit: HIVE-15703 :
HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via
Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/semijoin4.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/semijoin4.q.out b/ql/src/test/results/clientpositive/semijoin4.q.out
index 89e4023..d6117ed 100644
--- a/ql/src/test/results/clientpositive/semijoin4.q.out
+++ b/ql/src/test/results/clientpositive/semijoin4.q.out
@@ -18,6 +18,7 @@ STORED AS orc
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@table_18
+Warning: Shuffle Join JOIN[26][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Stage-2:MAPRED' is a cross product
PREHOOK: query: explain
SELECT
COALESCE(498,
@@ -70,41 +71,41 @@ STAGE PLANS:
alias: t1
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Filter Operator
- predicate: (decimal1309_col_65 is not null and bigint_col_13 is not null and tinyint_col_46 is not null) (type: boolean)
+ predicate: ((-92 = tinyint_col_46) and decimal1309_col_65 is not null and bigint_col_13 is not null) (type: boolean)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Select Operator
- expressions: bigint_col_13 (type: bigint), smallint_col_24 (type: smallint), tinyint_col_46 (type: tinyint), double_col_60 (type: double), decimal1309_col_65 (type: decimal(13,9))
- outputColumnNames: _col0, _col1, _col2, _col3, _col4
+ expressions: bigint_col_13 (type: bigint), smallint_col_24 (type: smallint), double_col_60 (type: double), decimal1309_col_65 (type: decimal(13,9))
+ outputColumnNames: _col0, _col1, _col3, _col4
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Output Operator
- key expressions: _col2 (type: tinyint), _col4 (type: decimal(27,9)), _col0 (type: bigint)
- sort order: +++
- Map-reduce partition columns: _col2 (type: tinyint), _col4 (type: decimal(27,9)), _col0 (type: bigint)
+ key expressions: _col4 (type: decimal(27,9)), _col0 (type: bigint)
+ sort order: ++
+ Map-reduce partition columns: _col4 (type: decimal(27,9)), _col0 (type: bigint)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
value expressions: _col1 (type: smallint), _col3 (type: double)
TableScan
alias: t2
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Filter Operator
- predicate: (tinyint_col_18 is not null and tinyint_col_21 is not null and decimal2709_col_9 is not null) (type: boolean)
+ predicate: ((tinyint_col_21 = -92) and tinyint_col_18 is not null and decimal2709_col_9 is not null) (type: boolean)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Select Operator
- expressions: decimal2709_col_9 (type: decimal(27,9)), tinyint_col_18 (type: tinyint), tinyint_col_21 (type: tinyint)
- outputColumnNames: _col0, _col1, _col2
+ expressions: decimal2709_col_9 (type: decimal(27,9)), tinyint_col_18 (type: tinyint)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Output Operator
- key expressions: _col2 (type: tinyint), _col0 (type: decimal(27,9)), UDFToLong(_col1) (type: bigint)
- sort order: +++
- Map-reduce partition columns: _col2 (type: tinyint), _col0 (type: decimal(27,9)), UDFToLong(_col1) (type: bigint)
+ key expressions: _col0 (type: decimal(27,9)), UDFToLong(_col1) (type: bigint)
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: decimal(27,9)), UDFToLong(_col1) (type: bigint)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Operator Tree:
Join Operator
condition map:
Inner Join 0 to 1
keys:
- 0 _col2 (type: tinyint), _col4 (type: decimal(27,9)), _col0 (type: bigint)
- 1 _col2 (type: tinyint), _col0 (type: decimal(27,9)), UDFToLong(_col1) (type: bigint)
- outputColumnNames: _col1, _col3, _col7
+ 0 _col4 (type: decimal(27,9)), _col0 (type: bigint)
+ 1 _col0 (type: decimal(27,9)), UDFToLong(_col1) (type: bigint)
+ outputColumnNames: _col1, _col3
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
File Output Operator
compressed: false
@@ -118,26 +119,22 @@ STAGE PLANS:
Map Operator Tree:
TableScan
Reduce Output Operator
- key expressions: UDFToInteger(_col7) (type: int)
- sort order: +
- Map-reduce partition columns: UDFToInteger(_col7) (type: int)
+ sort order:
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- value expressions: _col1 (type: smallint), _col3 (type: double), _col7 (type: tinyint)
+ value expressions: _col1 (type: smallint), _col3 (type: double)
TableScan
Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ sort order:
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Operator Tree:
Join Operator
condition map:
Inner Join 0 to 1
keys:
- 0 UDFToInteger(_col7) (type: int)
- 1 _col0 (type: int)
- outputColumnNames: _col1, _col3, _col7
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ 0
+ 1
+ outputColumnNames: _col1, _col3
+ Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
table:
@@ -150,27 +147,27 @@ STAGE PLANS:
Map Operator Tree:
TableScan
Reduce Output Operator
- key expressions: (UDFToShort(_col7) + _col1) (type: smallint), floor(_col3) (type: bigint)
+ key expressions: (UDFToShort(UDFToByte(-92)) + _col1) (type: smallint), floor(_col3) (type: bigint)
sort order: +-
- Map-reduce partition columns: (UDFToShort(_col7) + _col1) (type: smallint)
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- value expressions: _col1 (type: smallint), _col3 (type: double), _col7 (type: tinyint)
+ Map-reduce partition columns: (UDFToShort(UDFToByte(-92)) + _col1) (type: smallint)
+ Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: smallint), _col3 (type: double)
Reduce Operator Tree:
Select Operator
- expressions: VALUE._col1 (type: smallint), VALUE._col3 (type: double), VALUE._col7 (type: tinyint)
- outputColumnNames: _col1, _col3, _col7
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ expressions: VALUE._col1 (type: smallint), VALUE._col3 (type: double)
+ outputColumnNames: _col1, _col3
+ Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: NONE
PTF Operator
Function definitions:
Input definition
input alias: ptf_0
- output shape: _col1: smallint, _col3: double, _col7: tinyint
+ output shape: _col1: smallint, _col3: double
type: WINDOWING
Windowing table definition
input alias: ptf_1
name: windowingtablefunction
- order by: (UDFToShort(_col7) + _col1) ASC NULLS FIRST, floor(_col3) DESC NULLS LAST
- partition by: (UDFToShort(_col7) + _col1)
+ order by: (UDFToShort(UDFToByte(-92)) + _col1) ASC NULLS FIRST, floor(_col3) DESC NULLS LAST
+ partition by: (UDFToShort(UDFToByte(-92)) + _col1)
raw input shape:
window functions:
window function definition
@@ -180,14 +177,14 @@ STAGE PLANS:
window function: GenericUDAFLeadEvaluator
window frame: PRECEDING(MAX)~FOLLOWING(MAX)
isPivotResult: true
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: COALESCE(498,LEAD_window_0,524) (type: int)
outputColumnNames: _col0
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -261,12 +258,14 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Select Operator
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/semijoin5.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/semijoin5.q.out b/ql/src/test/results/clientpositive/semijoin5.q.out
index 20d372a..07b7470 100644
--- a/ql/src/test/results/clientpositive/semijoin5.q.out
+++ b/ql/src/test/results/clientpositive/semijoin5.q.out
@@ -122,9 +122,9 @@ STAGE PLANS:
value expressions: _col3 (type: double), _col5 (type: smallint), _col7 (type: int)
TableScan
Reduce Output Operator
- key expressions: _col1 (type: timestamp), _col0 (type: int)
+ key expressions: _col1 (type: timestamp), -92 (type: int)
sort order: ++
- Map-reduce partition columns: _col1 (type: timestamp), _col0 (type: int)
+ Map-reduce partition columns: _col1 (type: timestamp), -92 (type: int)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Operator Tree:
Join Operator
@@ -132,7 +132,7 @@ STAGE PLANS:
Inner Join 0 to 1
keys:
0 _col2 (type: timestamp), UDFToInteger(_col9) (type: int)
- 1 _col1 (type: timestamp), _col0 (type: int)
+ 1 _col1 (type: timestamp), -92 (type: int)
outputColumnNames: _col3, _col5, _col7
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
File Output Operator
@@ -388,40 +388,36 @@ STAGE PLANS:
1 _col0 (type: decimal(26,12))
outputColumnNames: _col2
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- Select Operator
- expressions: _col2 (type: timestamp)
- outputColumnNames: _col1
+ Group By Operator
+ keys: _col2 (type: timestamp)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- Group By Operator
- keys: _col1 (type: timestamp), -92 (type: int)
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-8
Map Reduce
Map Operator Tree:
TableScan
Reduce Output Operator
- key expressions: _col0 (type: timestamp), _col1 (type: int)
- sort order: ++
- Map-reduce partition columns: _col0 (type: timestamp), _col1 (type: int)
+ key expressions: _col0 (type: timestamp)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: timestamp)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: timestamp), KEY._col1 (type: int)
+ keys: KEY._col0 (type: timestamp)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Select Operator
- expressions: _col1 (type: int), _col0 (type: timestamp)
- outputColumnNames: _col0, _col1
+ expressions: _col0 (type: timestamp)
+ outputColumnNames: _col1
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
File Output Operator
compressed: false
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/spark/subquery_in.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/subquery_in.q.out b/ql/src/test/results/clientpositive/spark/subquery_in.q.out
index 69044fc..6cc7fa7 100644
--- a/ql/src/test/results/clientpositive/spark/subquery_in.q.out
+++ b/ql/src/test/results/clientpositive/spark/subquery_in.q.out
@@ -25,16 +25,19 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
- Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: string)
+ Filter Operator
+ predicate: (key > '9') (type: boolean)
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: string)
Map 3
Map Operator Tree:
TableScan
@@ -62,10 +65,10 @@ STAGE PLANS:
0 _col0 (type: string)
1 _col0 (type: string)
outputColumnNames: _col0, _col1
- Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
- Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -331,16 +334,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_name (type: string), p_size (type: int)
- outputColumnNames: _col0, _col1
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: UDFToDouble(_col1) (type: double)
- sort order: +
- Map-reduce partition columns: UDFToDouble(_col1) (type: double)
+ Select Operator
+ expressions: p_name (type: string), p_size (type: int)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: string), _col1 (type: int)
+ Reduce Output Operator
+ key expressions: UDFToDouble(_col1) (type: double)
+ sort order: +
+ Map-reduce partition columns: UDFToDouble(_col1) (type: double)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string), _col1 (type: int)
Map 3
Map Operator Tree:
TableScan
@@ -419,16 +425,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 76 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: double)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 76 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: double)
- sort order: +
- Map-reduce partition columns: _col0 (type: double)
+ Group By Operator
+ keys: _col0 (type: double)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 76 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: double)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: double)
+ Statistics: Num rows: 1 Data size: 76 Basic stats: COMPLETE Column stats: NONE
Reducer 6
Reduce Operator Tree:
Group By Operator
@@ -968,7 +977,7 @@ STAGE PLANS:
alias: li
Statistics: Num rows: 100 Data size: 11999 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: ((l_linenumber = 1) and l_partkey is not null) (type: boolean)
+ predicate: ((l_linenumber = 1) and l_partkey is not null and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 50 Data size: 5999 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: l_orderkey (type: int), l_partkey (type: int), l_suppkey (type: int)
@@ -986,7 +995,7 @@ STAGE PLANS:
alias: lineitem
Statistics: Num rows: 100 Data size: 11999 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (l_shipmode = 'AIR') (type: boolean)
+ predicate: ((l_shipmode = 'AIR') and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 50 Data size: 5999 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: l_orderkey (type: int)
@@ -1571,16 +1580,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: (_col5 - 1) (type: int)
- sort order: +
- Map-reduce partition columns: (_col5 - 1) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col5 - 1) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col5 - 1) (type: int)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Map 3
Map Operator Tree:
TableScan
@@ -1631,16 +1643,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
Reducer 5
Reduce Operator Tree:
Group By Operator
@@ -1700,16 +1715,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: (p_partkey is not null and p_size is not null) (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: (_col0 * _col5) (type: int)
- sort order: +
- Map-reduce partition columns: (_col0 * _col5) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col0 * _col5) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col0 * _col5) (type: int)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Map 3
Map Operator Tree:
TableScan
@@ -1760,16 +1778,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
Reducer 5
Reduce Operator Tree:
Group By Operator
@@ -1987,16 +2008,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_retailprice is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: floor(_col7) (type: bigint)
- sort order: +
- Map-reduce partition columns: floor(_col7) (type: bigint)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: floor(_col7) (type: bigint)
+ sort order: +
+ Map-reduce partition columns: floor(_col7) (type: bigint)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Map 3
Map Operator Tree:
TableScan
@@ -2044,19 +2068,26 @@ STAGE PLANS:
outputColumnNames: _col0, _col1
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
Select Operator
- expressions: floor(_col1) (type: bigint)
- outputColumnNames: _col0
+ expressions: _col1 (type: double)
+ outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: floor(_col1) is not null (type: boolean)
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
+ Select Operator
+ expressions: floor(_col1) (type: bigint)
+ outputColumnNames: _col0
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ keys: _col0 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
Reducer 5
Reduce Operator Tree:
Group By Operator
@@ -2798,24 +2829,26 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
+ Filter Operator
+ predicate: value is not null (type: boolean)
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col1 (type: string)
- sort order: +
- Map-reduce partition columns: _col1 (type: string)
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string)
Map 5
Map Operator Tree:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: value (type: string)
- outputColumnNames: value
+ Filter Operator
+ predicate: value is not null (type: boolean)
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
Group By Operator
keys: value (type: string)
@@ -2879,12 +2912,15 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col1 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col1 (type: bigint)
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: string)
+ Reduce Output Operator
+ key expressions: _col1 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col1 (type: bigint)
+ Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: string)
Reducer 4
Reduce Operator Tree:
Join Operator
@@ -2926,16 +2962,19 @@ STAGE PLANS:
expressions: _col1 (type: bigint)
outputColumnNames: _col1
Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
+ Group By Operator
+ keys: _col1 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE
Reducer 9
Reduce Operator Tree:
Group By Operator
@@ -3300,16 +3339,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: (_col5 - 1) (type: int)
- sort order: +
- Map-reduce partition columns: (_col5 - 1) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col5 - 1) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col5 - 1) (type: int)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Map 4
Map Operator Tree:
TableScan
@@ -3371,16 +3413,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
Reducer 6
Reduce Operator Tree:
Group By Operator
@@ -3441,16 +3486,19 @@ STAGE PLANS:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Filter Operator
+ predicate: p_size is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: (_col5 - 1) (type: int)
- sort order: +
- Map-reduce partition columns: (_col5 - 1) (type: int)
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Reduce Output Operator
+ key expressions: (_col5 - 1) (type: int)
+ sort order: +
+ Map-reduce partition columns: (_col5 - 1) (type: int)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
Map 4
Map Operator Tree:
TableScan
@@ -3516,16 +3564,19 @@ STAGE PLANS:
expressions: _col1 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: int)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ Group By Operator
+ keys: _col1 (type: int)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE
Reducer 6
Reduce Operator Tree:
Group By Operator
@@ -3578,54 +3629,63 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
+ Filter Operator
+ predicate: key is not null (type: boolean)
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: string)
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: string)
Map 3
Map Operator Tree:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_name (type: string)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
+ Select Operator
+ expressions: p_name (type: string)
outputColumnNames: _col0
- Statistics: Num rows: 52 Data size: 6294 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 52 Data size: 6294 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 52 Data size: 6294 Basic stats: COMPLETE Column stats: NONE
Map 5
Map Operator Tree:
TableScan
alias: part
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_brand (type: string)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: p_brand is not null (type: boolean)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
+ Select Operator
+ expressions: p_brand (type: string)
outputColumnNames: _col0
- Statistics: Num rows: 52 Data size: 6294 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 52 Data size: 6294 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 52 Data size: 6294 Basic stats: COMPLETE Column stats: NONE
Reducer 2
Reduce Operator Tree:
Join Operator
@@ -4892,7 +4952,7 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10
Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (sq_count_check(CASE WHEN (_col10 is null) THEN (0) ELSE (_col10) END, true) > 0) (type: boolean)
+ predicate: (sq_count_check(_col10, true) > 0) (type: boolean)
Statistics: Num rows: 9 Data size: 1112 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
@@ -5584,9 +5644,9 @@ STAGE PLANS:
outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 14 Data size: 1730 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col1 (type: string), _col3 (type: int)
+ key expressions: _col3 (type: int), _col1 (type: string)
sort order: ++
- Map-reduce partition columns: _col1 (type: string), _col3 (type: int)
+ Map-reduce partition columns: _col3 (type: int), _col1 (type: string)
Statistics: Num rows: 14 Data size: 1730 Basic stats: COMPLETE Column stats: NONE
value expressions: _col2 (type: boolean)
Reducer 2
@@ -5600,7 +5660,7 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10
Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (sq_count_check(CASE WHEN (_col10 is null) THEN (0) ELSE (_col10) END, true) > 0) (type: boolean)
+ predicate: (sq_count_check(_col10, true) > 0) (type: boolean)
Statistics: Num rows: 9 Data size: 1112 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
@@ -5645,26 +5705,26 @@ STAGE PLANS:
keys:
0 _col4 (type: string)
1 _col0 (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13
Statistics: Num rows: 9 Data size: 1223 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col4 (type: string), _col5 (type: int)
+ key expressions: _col5 (type: int), _col4 (type: string)
sort order: ++
- Map-reduce partition columns: _col4 (type: string), _col5 (type: int)
+ Map-reduce partition columns: _col5 (type: int), _col4 (type: string)
Statistics: Num rows: 9 Data size: 1223 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col10 (type: bigint), _col11 (type: bigint)
+ value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col12 (type: bigint), _col13 (type: bigint)
Reducer 4
Reduce Operator Tree:
Join Operator
condition map:
Left Outer Join0 to 1
keys:
- 0 _col4 (type: string), _col5 (type: int)
- 1 _col1 (type: string), _col3 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col14
+ 0 _col5 (type: int), _col4 (type: string)
+ 1 _col3 (type: int), _col1 (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13, _col16
Statistics: Num rows: 15 Data size: 1903 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: CASE WHEN ((_col10 = 0)) THEN (true) WHEN (_col10 is null) THEN (true) WHEN (_col14 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col11 < _col10)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col12 = 0)) THEN (true) WHEN (_col12 is null) THEN (true) WHEN (_col16 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col13 < _col12)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 7 Data size: 888 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
@@ -6025,7 +6085,7 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10
Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (sq_count_check(CASE WHEN (_col10 is null) THEN (0) ELSE (_col10) END, true) > 0) (type: boolean)
+ predicate: (sq_count_check(_col10, true) > 0) (type: boolean)
Statistics: Num rows: 9 Data size: 1112 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
@@ -6070,14 +6130,14 @@ STAGE PLANS:
keys:
0 _col0 (type: int)
1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13
Statistics: Num rows: 9 Data size: 1223 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: int), _col5 (type: int)
sort order: ++
Map-reduce partition columns: _col0 (type: int), _col5 (type: int)
Statistics: Num rows: 9 Data size: 1223 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col10 (type: bigint), _col11 (type: bigint)
+ value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col12 (type: bigint), _col13 (type: bigint)
Reducer 4
Reduce Operator Tree:
Join Operator
@@ -6086,10 +6146,10 @@ STAGE PLANS:
keys:
0 _col0 (type: int), _col5 (type: int)
1 _col1 (type: int), _col3 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col14
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col12, _col13, _col16
Statistics: Num rows: 15 Data size: 1903 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: CASE WHEN ((_col10 = 0)) THEN (true) WHEN (_col10 is null) THEN (true) WHEN (_col14 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col11 < _col10)) THEN (false) ELSE (true) END (type: boolean)
+ predicate: CASE WHEN ((_col12 = 0)) THEN (true) WHEN (_col12 is null) THEN (true) WHEN (_col16 is not null) THEN (false) WHEN (_col5 is null) THEN (null) WHEN ((_col13 < _col12)) THEN (false) ELSE (true) END (type: boolean)
Statistics: Num rows: 7 Data size: 888 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
@@ -6208,16 +6268,19 @@ STAGE PLANS:
TableScan
alias: t
Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: i (type: int)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: i is not null (type: boolean)
Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: UDFToLong(_col0) (type: bigint)
- sort order: +
- Map-reduce partition columns: UDFToLong(_col0) (type: bigint)
+ Select Operator
+ expressions: i (type: int)
+ outputColumnNames: _col0
Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col0 (type: int)
+ Reduce Output Operator
+ key expressions: UDFToLong(_col0) (type: bigint)
+ sort order: +
+ Map-reduce partition columns: UDFToLong(_col0) (type: bigint)
+ Statistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int)
Map 3
Map Operator Tree:
TableScan
@@ -6258,16 +6321,19 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Group By Operator
- keys: _col0 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col0 is not null (type: boolean)
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: bigint)
- sort order: +
- Map-reduce partition columns: _col0 (type: bigint)
+ Group By Operator
+ keys: _col0 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Reducer 5
Reduce Operator Tree:
Group By Operator
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/spark/vector_mapjoin_reduce.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/vector_mapjoin_reduce.q.out b/ql/src/test/results/clientpositive/spark/vector_mapjoin_reduce.q.out
index ea2c9a7..c84363f 100644
--- a/ql/src/test/results/clientpositive/spark/vector_mapjoin_reduce.q.out
+++ b/ql/src/test/results/clientpositive/spark/vector_mapjoin_reduce.q.out
@@ -28,7 +28,7 @@ STAGE PLANS:
alias: li
Statistics: Num rows: 100 Data size: 11999 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: ((l_linenumber = 1) and l_partkey is not null) (type: boolean)
+ predicate: ((l_linenumber = 1) and l_partkey is not null and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 50 Data size: 5999 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: l_orderkey (type: int), l_partkey (type: int), l_suppkey (type: int)
@@ -46,7 +46,7 @@ STAGE PLANS:
alias: lineitem
Statistics: Num rows: 100 Data size: 11999 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (l_shipmode = 'AIR') (type: boolean)
+ predicate: ((l_shipmode = 'AIR') and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 50 Data size: 5999 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: l_orderkey (type: int)
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/subq_where_serialization.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/subq_where_serialization.q.out b/ql/src/test/results/clientpositive/subq_where_serialization.q.out
index 5deb9d9..7feb0c7 100644
--- a/ql/src/test/results/clientpositive/subq_where_serialization.q.out
+++ b/ql/src/test/results/clientpositive/subq_where_serialization.q.out
@@ -15,9 +15,8 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string)
- outputColumnNames: key
+ Filter Operator
+ predicate: key is not null (type: boolean)
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
Group By Operator
keys: key (type: string)
@@ -58,14 +57,17 @@ STAGE PLANS:
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: key is not null (type: boolean)
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- HashTable Sink Operator
- keys:
- 0 _col0 (type: string)
- 1 _col0 (type: string)
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+ HashTable Sink Operator
+ keys:
+ 0 _col0 (type: string)
+ 1 _col0 (type: string)
Stage: Stage-3
Map Reduce
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/subquery_in_having.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/subquery_in_having.q.out b/ql/src/test/results/clientpositive/subquery_in_having.q.out
index d18d4e2..8cd1208 100644
--- a/ql/src/test/results/clientpositive/subquery_in_having.q.out
+++ b/ql/src/test/results/clientpositive/subquery_in_having.q.out
@@ -87,12 +87,15 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
+ Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-2
Map Reduce
@@ -159,17 +162,20 @@ STAGE PLANS:
expressions: _col1 (type: bigint)
outputColumnNames: _col1
Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Group By Operator
+ keys: _col1 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-4
Map Reduce
@@ -293,9 +299,8 @@ STAGE PLANS:
TableScan
alias: b
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_mfgr (type: string), p_size (type: int)
- outputColumnNames: p_mfgr, p_size
+ Filter Operator
+ predicate: p_mfgr is not null (type: boolean)
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: avg(p_size)
@@ -362,9 +367,8 @@ STAGE PLANS:
TableScan
alias: part_subq
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_mfgr (type: string), p_size (type: int)
- outputColumnNames: p_mfgr, p_size
+ Filter Operator
+ predicate: p_mfgr is not null (type: boolean)
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: max(p_size), min(p_size)
@@ -443,9 +447,8 @@ STAGE PLANS:
TableScan
alias: b
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_mfgr (type: string), p_size (type: int)
- outputColumnNames: p_mfgr, p_size
+ Filter Operator
+ predicate: p_mfgr is not null (type: boolean)
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: avg(p_size)
@@ -462,9 +465,8 @@ STAGE PLANS:
TableScan
alias: part_subq
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_mfgr (type: string), p_size (type: int)
- outputColumnNames: p_mfgr, p_size
+ Filter Operator
+ predicate: p_mfgr is not null (type: boolean)
Statistics: Num rows: 30 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: max(p_size), min(p_size)
@@ -600,16 +602,19 @@ STAGE PLANS:
TableScan
alias: b
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
- Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: string)
+ Filter Operator
+ predicate: (key > '8') (type: boolean)
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: string)
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
@@ -628,9 +633,9 @@ STAGE PLANS:
Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
Reduce Operator Tree:
Demux Operator
- Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 332 Data size: 3526 Basic stats: COMPLETE Column stats: NONE
Mux Operator
- Statistics: Num rows: 999 Data size: 10612 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 498 Data size: 5289 Basic stats: COMPLETE Column stats: NONE
Join Operator
condition map:
Inner Join 0 to 1
@@ -655,9 +660,9 @@ STAGE PLANS:
keys: KEY._col0 (type: string)
mode: mergepartial
outputColumnNames: _col0
- Statistics: Num rows: 333 Data size: 3537 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
Mux Operator
- Statistics: Num rows: 999 Data size: 10612 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 498 Data size: 5289 Basic stats: COMPLETE Column stats: NONE
Join Operator
condition map:
Inner Join 0 to 1
@@ -696,12 +701,15 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Filter Operator
+ predicate: _col2 is not null (type: boolean)
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-3
Map Reduce
@@ -794,17 +802,20 @@ STAGE PLANS:
expressions: _col1 (type: bigint)
outputColumnNames: _col1
Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Group By Operator
+ keys: _col1 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
@@ -870,16 +881,19 @@ STAGE PLANS:
TableScan
alias: b
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string), value (type: string)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
- Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
- value expressions: _col1 (type: string)
+ Filter Operator
+ predicate: (key > '8') (type: boolean)
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col1 (type: string)
TableScan
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
@@ -898,9 +912,9 @@ STAGE PLANS:
Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
Reduce Operator Tree:
Demux Operator
- Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 332 Data size: 3526 Basic stats: COMPLETE Column stats: NONE
Mux Operator
- Statistics: Num rows: 999 Data size: 10612 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 498 Data size: 5289 Basic stats: COMPLETE Column stats: NONE
Join Operator
condition map:
Inner Join 0 to 1
@@ -925,9 +939,9 @@ STAGE PLANS:
keys: KEY._col0 (type: string)
mode: mergepartial
outputColumnNames: _col0
- Statistics: Num rows: 333 Data size: 3537 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
Mux Operator
- Statistics: Num rows: 999 Data size: 10612 Basic stats: COMPLETE Column stats: NONE
+ Statistics: Num rows: 498 Data size: 5289 Basic stats: COMPLETE Column stats: NONE
Join Operator
condition map:
Inner Join 0 to 1
@@ -966,12 +980,15 @@ STAGE PLANS:
mode: mergepartial
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Filter Operator
+ predicate: _col2 is not null (type: boolean)
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-3
Map Reduce
@@ -1064,17 +1081,20 @@ STAGE PLANS:
expressions: _col1 (type: bigint)
outputColumnNames: _col1
Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col1 (type: bigint)
- mode: hash
- outputColumnNames: _col0
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Group By Operator
+ keys: _col1 (type: bigint)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
@@ -1726,9 +1746,8 @@ STAGE PLANS:
TableScan
alias: part_subq
Statistics: Num rows: 15 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: p_name (type: string), p_mfgr (type: string), p_size (type: int)
- outputColumnNames: p_name, p_mfgr, p_size
+ Filter Operator
+ predicate: p_name is not null (type: boolean)
Statistics: Num rows: 15 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: avg(p_size)
@@ -1856,21 +1875,24 @@ STAGE PLANS:
window function: GenericUDAFFirstValueEvaluator
window frame: PRECEDING(MAX)~CURRENT
Statistics: Num rows: 15 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: first_value_window_0 (type: string)
- outputColumnNames: _col0
+ Filter Operator
+ predicate: first_value_window_0 is not null (type: boolean)
Statistics: Num rows: 15 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: string)
- mode: hash
+ Select Operator
+ expressions: first_value_window_0 (type: string)
outputColumnNames: _col0
Statistics: Num rows: 15 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Group By Operator
+ keys: _col0 (type: string)
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 15 Data size: 3173 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
[42/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
index c1b26eb,86bbef3..f547651
--- a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
+++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
@@@ -11725,10 -11551,10 +11783,10 @@@ class get_databases_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype597, _size594) = iprot.readListBegin()
-- for _i598 in xrange(_size594):
-- _elem599 = iprot.readString()
-- self.success.append(_elem599)
++ (_etype604, _size601) = iprot.readListBegin()
++ for _i605 in xrange(_size601):
++ _elem606 = iprot.readString()
++ self.success.append(_elem606)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -11751,8 -11577,8 +11809,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter600 in self.success:
-- oprot.writeString(iter600)
++ for iter607 in self.success:
++ oprot.writeString(iter607)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -11857,10 -11683,10 +11915,10 @@@ class get_all_databases_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype604, _size601) = iprot.readListBegin()
-- for _i605 in xrange(_size601):
-- _elem606 = iprot.readString()
-- self.success.append(_elem606)
++ (_etype611, _size608) = iprot.readListBegin()
++ for _i612 in xrange(_size608):
++ _elem613 = iprot.readString()
++ self.success.append(_elem613)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -11883,8 -11709,8 +11941,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter607 in self.success:
-- oprot.writeString(iter607)
++ for iter614 in self.success:
++ oprot.writeString(iter614)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -12654,12 -12480,12 +12712,12 @@@ class get_type_all_result
if fid == 0:
if ftype == TType.MAP:
self.success = {}
-- (_ktype609, _vtype610, _size608 ) = iprot.readMapBegin()
-- for _i612 in xrange(_size608):
-- _key613 = iprot.readString()
-- _val614 = Type()
-- _val614.read(iprot)
-- self.success[_key613] = _val614
++ (_ktype616, _vtype617, _size615 ) = iprot.readMapBegin()
++ for _i619 in xrange(_size615):
++ _key620 = iprot.readString()
++ _val621 = Type()
++ _val621.read(iprot)
++ self.success[_key620] = _val621
iprot.readMapEnd()
else:
iprot.skip(ftype)
@@@ -12682,9 -12508,9 +12740,9 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.MAP, 0)
oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
-- for kiter615,viter616 in self.success.items():
-- oprot.writeString(kiter615)
-- viter616.write(oprot)
++ for kiter622,viter623 in self.success.items():
++ oprot.writeString(kiter622)
++ viter623.write(oprot)
oprot.writeMapEnd()
oprot.writeFieldEnd()
if self.o2 is not None:
@@@ -12827,11 -12653,11 +12885,11 @@@ class get_fields_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype620, _size617) = iprot.readListBegin()
-- for _i621 in xrange(_size617):
-- _elem622 = FieldSchema()
-- _elem622.read(iprot)
-- self.success.append(_elem622)
++ (_etype627, _size624) = iprot.readListBegin()
++ for _i628 in xrange(_size624):
++ _elem629 = FieldSchema()
++ _elem629.read(iprot)
++ self.success.append(_elem629)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -12866,8 -12692,8 +12924,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter623 in self.success:
-- iter623.write(oprot)
++ for iter630 in self.success:
++ iter630.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -13034,204 -12860,11 +13092,11 @@@ class get_fields_with_environment_conte
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype627, _size624) = iprot.readListBegin()
-- for _i628 in xrange(_size624):
-- _elem629 = FieldSchema()
-- _elem629.read(iprot)
-- self.success.append(_elem629)
- iprot.readListEnd()
- else:
- iprot.skip(ftype)
- elif fid == 1:
- if ftype == TType.STRUCT:
- self.o1 = MetaException()
- self.o1.read(iprot)
- else:
- iprot.skip(ftype)
- elif fid == 2:
- if ftype == TType.STRUCT:
- self.o2 = UnknownTableException()
- self.o2.read(iprot)
- else:
- iprot.skip(ftype)
- elif fid == 3:
- if ftype == TType.STRUCT:
- self.o3 = UnknownDBException()
- self.o3.read(iprot)
- else:
- iprot.skip(ftype)
- else:
- iprot.skip(ftype)
- iprot.readFieldEnd()
- iprot.readStructEnd()
-
- def write(self, oprot):
- if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
- oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
- return
- oprot.writeStructBegin('get_fields_with_environment_context_result')
- if self.success is not None:
- oprot.writeFieldBegin('success', TType.LIST, 0)
- oprot.writeListBegin(TType.STRUCT, len(self.success))
- for iter630 in self.success:
- iter630.write(oprot)
- oprot.writeListEnd()
- oprot.writeFieldEnd()
- if self.o1 is not None:
- oprot.writeFieldBegin('o1', TType.STRUCT, 1)
- self.o1.write(oprot)
- oprot.writeFieldEnd()
- if self.o2 is not None:
- oprot.writeFieldBegin('o2', TType.STRUCT, 2)
- self.o2.write(oprot)
- oprot.writeFieldEnd()
- if self.o3 is not None:
- oprot.writeFieldBegin('o3', TType.STRUCT, 3)
- self.o3.write(oprot)
- oprot.writeFieldEnd()
- oprot.writeFieldStop()
- oprot.writeStructEnd()
-
- def validate(self):
- return
-
-
- def __hash__(self):
- value = 17
- value = (value * 31) ^ hash(self.success)
- value = (value * 31) ^ hash(self.o1)
- value = (value * 31) ^ hash(self.o2)
- value = (value * 31) ^ hash(self.o3)
- return value
-
- def __repr__(self):
- L = ['%s=%r' % (key, value)
- for key, value in self.__dict__.iteritems()]
- return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
- def __eq__(self, other):
- return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
- def __ne__(self, other):
- return not (self == other)
-
- class get_schema_args:
- """
- Attributes:
- - db_name
- - table_name
- """
-
- thrift_spec = (
- None, # 0
- (1, TType.STRING, 'db_name', None, None, ), # 1
- (2, TType.STRING, 'table_name', None, None, ), # 2
- )
-
- def __init__(self, db_name=None, table_name=None,):
- self.db_name = db_name
- self.table_name = table_name
-
- def read(self, iprot):
- if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
- fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
- return
- iprot.readStructBegin()
- while True:
- (fname, ftype, fid) = iprot.readFieldBegin()
- if ftype == TType.STOP:
- break
- if fid == 1:
- if ftype == TType.STRING:
- self.db_name = iprot.readString()
- else:
- iprot.skip(ftype)
- elif fid == 2:
- if ftype == TType.STRING:
- self.table_name = iprot.readString()
- else:
- iprot.skip(ftype)
- else:
- iprot.skip(ftype)
- iprot.readFieldEnd()
- iprot.readStructEnd()
-
- def write(self, oprot):
- if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
- oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
- return
- oprot.writeStructBegin('get_schema_args')
- if self.db_name is not None:
- oprot.writeFieldBegin('db_name', TType.STRING, 1)
- oprot.writeString(self.db_name)
- oprot.writeFieldEnd()
- if self.table_name is not None:
- oprot.writeFieldBegin('table_name', TType.STRING, 2)
- oprot.writeString(self.table_name)
- oprot.writeFieldEnd()
- oprot.writeFieldStop()
- oprot.writeStructEnd()
-
- def validate(self):
- return
-
-
- def __hash__(self):
- value = 17
- value = (value * 31) ^ hash(self.db_name)
- value = (value * 31) ^ hash(self.table_name)
- return value
-
- def __repr__(self):
- L = ['%s=%r' % (key, value)
- for key, value in self.__dict__.iteritems()]
- return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
- def __eq__(self, other):
- return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
- def __ne__(self, other):
- return not (self == other)
-
- class get_schema_result:
- """
- Attributes:
- - success
- - o1
- - o2
- - o3
- """
-
- thrift_spec = (
- (0, TType.LIST, 'success', (TType.STRUCT,(FieldSchema, FieldSchema.thrift_spec)), None, ), # 0
- (1, TType.STRUCT, 'o1', (MetaException, MetaException.thrift_spec), None, ), # 1
- (2, TType.STRUCT, 'o2', (UnknownTableException, UnknownTableException.thrift_spec), None, ), # 2
- (3, TType.STRUCT, 'o3', (UnknownDBException, UnknownDBException.thrift_spec), None, ), # 3
- )
-
- def __init__(self, success=None, o1=None, o2=None, o3=None,):
- self.success = success
- self.o1 = o1
- self.o2 = o2
- self.o3 = o3
-
- def read(self, iprot):
- if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
- fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
- return
- iprot.readStructBegin()
- while True:
- (fname, ftype, fid) = iprot.readFieldBegin()
- if ftype == TType.STOP:
- break
- if fid == 0:
- if ftype == TType.LIST:
- self.success = []
+ (_etype634, _size631) = iprot.readListBegin()
+ for _i635 in xrange(_size631):
+ _elem636 = FieldSchema()
+ _elem636.read(iprot)
+ self.success.append(_elem636)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -13308,6 -12941,199 +13173,199 @@@
def __ne__(self, other):
return not (self == other)
+ class get_schema_args:
+ """
+ Attributes:
+ - db_name
+ - table_name
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.STRING, 'db_name', None, None, ), # 1
+ (2, TType.STRING, 'table_name', None, None, ), # 2
+ )
+
+ def __init__(self, db_name=None, table_name=None,):
+ self.db_name = db_name
+ self.table_name = table_name
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.STRING:
+ self.db_name = iprot.readString()
+ else:
+ iprot.skip(ftype)
+ elif fid == 2:
+ if ftype == TType.STRING:
+ self.table_name = iprot.readString()
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('get_schema_args')
+ if self.db_name is not None:
+ oprot.writeFieldBegin('db_name', TType.STRING, 1)
+ oprot.writeString(self.db_name)
+ oprot.writeFieldEnd()
+ if self.table_name is not None:
+ oprot.writeFieldBegin('table_name', TType.STRING, 2)
+ oprot.writeString(self.table_name)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.db_name)
+ value = (value * 31) ^ hash(self.table_name)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+ class get_schema_result:
+ """
+ Attributes:
+ - success
+ - o1
+ - o2
+ - o3
+ """
+
+ thrift_spec = (
+ (0, TType.LIST, 'success', (TType.STRUCT,(FieldSchema, FieldSchema.thrift_spec)), None, ), # 0
+ (1, TType.STRUCT, 'o1', (MetaException, MetaException.thrift_spec), None, ), # 1
+ (2, TType.STRUCT, 'o2', (UnknownTableException, UnknownTableException.thrift_spec), None, ), # 2
+ (3, TType.STRUCT, 'o3', (UnknownDBException, UnknownDBException.thrift_spec), None, ), # 3
+ )
+
+ def __init__(self, success=None, o1=None, o2=None, o3=None,):
+ self.success = success
+ self.o1 = o1
+ self.o2 = o2
+ self.o3 = o3
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 0:
+ if ftype == TType.LIST:
+ self.success = []
- (_etype634, _size631) = iprot.readListBegin()
- for _i635 in xrange(_size631):
- _elem636 = FieldSchema()
- _elem636.read(iprot)
- self.success.append(_elem636)
++ (_etype641, _size638) = iprot.readListBegin()
++ for _i642 in xrange(_size638):
++ _elem643 = FieldSchema()
++ _elem643.read(iprot)
++ self.success.append(_elem643)
+ iprot.readListEnd()
+ else:
+ iprot.skip(ftype)
+ elif fid == 1:
+ if ftype == TType.STRUCT:
+ self.o1 = MetaException()
+ self.o1.read(iprot)
+ else:
+ iprot.skip(ftype)
+ elif fid == 2:
+ if ftype == TType.STRUCT:
+ self.o2 = UnknownTableException()
+ self.o2.read(iprot)
+ else:
+ iprot.skip(ftype)
+ elif fid == 3:
+ if ftype == TType.STRUCT:
+ self.o3 = UnknownDBException()
+ self.o3.read(iprot)
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('get_schema_result')
+ if self.success is not None:
+ oprot.writeFieldBegin('success', TType.LIST, 0)
+ oprot.writeListBegin(TType.STRUCT, len(self.success))
- for iter637 in self.success:
- iter637.write(oprot)
++ for iter644 in self.success:
++ iter644.write(oprot)
+ oprot.writeListEnd()
+ oprot.writeFieldEnd()
+ if self.o1 is not None:
+ oprot.writeFieldBegin('o1', TType.STRUCT, 1)
+ self.o1.write(oprot)
+ oprot.writeFieldEnd()
+ if self.o2 is not None:
+ oprot.writeFieldBegin('o2', TType.STRUCT, 2)
+ self.o2.write(oprot)
+ oprot.writeFieldEnd()
+ if self.o3 is not None:
+ oprot.writeFieldBegin('o3', TType.STRUCT, 3)
+ self.o3.write(oprot)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.success)
+ value = (value * 31) ^ hash(self.o1)
+ value = (value * 31) ^ hash(self.o2)
+ value = (value * 31) ^ hash(self.o3)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
class get_schema_with_environment_context_args:
"""
Attributes:
@@@ -13434,11 -13260,11 +13492,11 @@@ class get_schema_with_environment_conte
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype641, _size638) = iprot.readListBegin()
-- for _i642 in xrange(_size638):
-- _elem643 = FieldSchema()
-- _elem643.read(iprot)
-- self.success.append(_elem643)
++ (_etype648, _size645) = iprot.readListBegin()
++ for _i649 in xrange(_size645):
++ _elem650 = FieldSchema()
++ _elem650.read(iprot)
++ self.success.append(_elem650)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -13473,8 -13299,8 +13531,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter644 in self.success:
-- iter644.write(oprot)
++ for iter651 in self.success:
++ iter651.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -13915,22 -13741,22 +13973,22 @@@ class create_table_with_constraints_arg
elif fid == 2:
if ftype == TType.LIST:
self.primaryKeys = []
-- (_etype648, _size645) = iprot.readListBegin()
-- for _i649 in xrange(_size645):
-- _elem650 = SQLPrimaryKey()
-- _elem650.read(iprot)
-- self.primaryKeys.append(_elem650)
++ (_etype655, _size652) = iprot.readListBegin()
++ for _i656 in xrange(_size652):
++ _elem657 = SQLPrimaryKey()
++ _elem657.read(iprot)
++ self.primaryKeys.append(_elem657)
iprot.readListEnd()
else:
iprot.skip(ftype)
elif fid == 3:
if ftype == TType.LIST:
self.foreignKeys = []
-- (_etype654, _size651) = iprot.readListBegin()
-- for _i655 in xrange(_size651):
-- _elem656 = SQLForeignKey()
-- _elem656.read(iprot)
-- self.foreignKeys.append(_elem656)
++ (_etype661, _size658) = iprot.readListBegin()
++ for _i662 in xrange(_size658):
++ _elem663 = SQLForeignKey()
++ _elem663.read(iprot)
++ self.foreignKeys.append(_elem663)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -13951,15 -13777,15 +14009,15 @@@
if self.primaryKeys is not None:
oprot.writeFieldBegin('primaryKeys', TType.LIST, 2)
oprot.writeListBegin(TType.STRUCT, len(self.primaryKeys))
-- for iter657 in self.primaryKeys:
-- iter657.write(oprot)
++ for iter664 in self.primaryKeys:
++ iter664.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.foreignKeys is not None:
oprot.writeFieldBegin('foreignKeys', TType.LIST, 3)
oprot.writeListBegin(TType.STRUCT, len(self.foreignKeys))
-- for iter658 in self.foreignKeys:
-- iter658.write(oprot)
++ for iter665 in self.foreignKeys:
++ iter665.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -14995,10 -14821,10 +15053,10 @@@ class get_tables_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype662, _size659) = iprot.readListBegin()
-- for _i663 in xrange(_size659):
-- _elem664 = iprot.readString()
-- self.success.append(_elem664)
++ (_etype669, _size666) = iprot.readListBegin()
++ for _i670 in xrange(_size666):
++ _elem671 = iprot.readString()
++ self.success.append(_elem671)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -15021,8 -14847,8 +15079,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter665 in self.success:
-- oprot.writeString(iter665)
++ for iter672 in self.success:
++ oprot.writeString(iter672)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -15172,10 -14998,10 +15230,10 @@@ class get_tables_by_type_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype669, _size666) = iprot.readListBegin()
-- for _i670 in xrange(_size666):
-- _elem671 = iprot.readString()
-- self.success.append(_elem671)
++ (_etype676, _size673) = iprot.readListBegin()
++ for _i677 in xrange(_size673):
++ _elem678 = iprot.readString()
++ self.success.append(_elem678)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -15198,8 -15024,8 +15256,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter672 in self.success:
-- oprot.writeString(iter672)
++ for iter679 in self.success:
++ oprot.writeString(iter679)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -15272,10 -15098,10 +15330,10 @@@ class get_table_meta_args
elif fid == 3:
if ftype == TType.LIST:
self.tbl_types = []
-- (_etype676, _size673) = iprot.readListBegin()
-- for _i677 in xrange(_size673):
-- _elem678 = iprot.readString()
-- self.tbl_types.append(_elem678)
++ (_etype683, _size680) = iprot.readListBegin()
++ for _i684 in xrange(_size680):
++ _elem685 = iprot.readString()
++ self.tbl_types.append(_elem685)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -15300,8 -15126,8 +15358,8 @@@
if self.tbl_types is not None:
oprot.writeFieldBegin('tbl_types', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.tbl_types))
-- for iter679 in self.tbl_types:
-- oprot.writeString(iter679)
++ for iter686 in self.tbl_types:
++ oprot.writeString(iter686)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -15357,11 -15183,11 +15415,11 @@@ class get_table_meta_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype683, _size680) = iprot.readListBegin()
-- for _i684 in xrange(_size680):
-- _elem685 = TableMeta()
-- _elem685.read(iprot)
-- self.success.append(_elem685)
++ (_etype690, _size687) = iprot.readListBegin()
++ for _i691 in xrange(_size687):
++ _elem692 = TableMeta()
++ _elem692.read(iprot)
++ self.success.append(_elem692)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -15384,8 -15210,8 +15442,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter686 in self.success:
-- iter686.write(oprot)
++ for iter693 in self.success:
++ iter693.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -15509,10 -15335,10 +15567,10 @@@ class get_all_tables_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype690, _size687) = iprot.readListBegin()
-- for _i691 in xrange(_size687):
-- _elem692 = iprot.readString()
-- self.success.append(_elem692)
++ (_etype697, _size694) = iprot.readListBegin()
++ for _i698 in xrange(_size694):
++ _elem699 = iprot.readString()
++ self.success.append(_elem699)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -15535,8 -15361,8 +15593,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter693 in self.success:
-- oprot.writeString(iter693)
++ for iter700 in self.success:
++ oprot.writeString(iter700)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -15772,10 -15598,10 +15830,10 @@@ class get_table_objects_by_name_args
elif fid == 2:
if ftype == TType.LIST:
self.tbl_names = []
-- (_etype697, _size694) = iprot.readListBegin()
-- for _i698 in xrange(_size694):
-- _elem699 = iprot.readString()
-- self.tbl_names.append(_elem699)
++ (_etype704, _size701) = iprot.readListBegin()
++ for _i705 in xrange(_size701):
++ _elem706 = iprot.readString()
++ self.tbl_names.append(_elem706)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -15796,8 -15622,8 +15854,8 @@@
if self.tbl_names is not None:
oprot.writeFieldBegin('tbl_names', TType.LIST, 2)
oprot.writeListBegin(TType.STRING, len(self.tbl_names))
-- for iter700 in self.tbl_names:
-- oprot.writeString(iter700)
++ for iter707 in self.tbl_names:
++ oprot.writeString(iter707)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -15849,11 -15675,11 +15907,11 @@@ class get_table_objects_by_name_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype704, _size701) = iprot.readListBegin()
-- for _i705 in xrange(_size701):
-- _elem706 = Table()
-- _elem706.read(iprot)
-- self.success.append(_elem706)
++ (_etype711, _size708) = iprot.readListBegin()
++ for _i712 in xrange(_size708):
++ _elem713 = Table()
++ _elem713.read(iprot)
++ self.success.append(_elem713)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -15870,8 -15696,8 +15928,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter707 in self.success:
-- iter707.write(oprot)
++ for iter714 in self.success:
++ iter714.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -16354,10 -16180,10 +16412,10 @@@ class get_table_names_by_filter_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype711, _size708) = iprot.readListBegin()
-- for _i712 in xrange(_size708):
-- _elem713 = iprot.readString()
-- self.success.append(_elem713)
++ (_etype718, _size715) = iprot.readListBegin()
++ for _i719 in xrange(_size715):
++ _elem720 = iprot.readString()
++ self.success.append(_elem720)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -16392,8 -16218,8 +16450,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter714 in self.success:
-- oprot.writeString(iter714)
++ for iter721 in self.success:
++ oprot.writeString(iter721)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -17363,11 -17189,11 +17421,11 @@@ class add_partitions_args
if fid == 1:
if ftype == TType.LIST:
self.new_parts = []
-- (_etype718, _size715) = iprot.readListBegin()
-- for _i719 in xrange(_size715):
-- _elem720 = Partition()
-- _elem720.read(iprot)
-- self.new_parts.append(_elem720)
++ (_etype725, _size722) = iprot.readListBegin()
++ for _i726 in xrange(_size722):
++ _elem727 = Partition()
++ _elem727.read(iprot)
++ self.new_parts.append(_elem727)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -17384,8 -17210,8 +17442,8 @@@
if self.new_parts is not None:
oprot.writeFieldBegin('new_parts', TType.LIST, 1)
oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
-- for iter721 in self.new_parts:
-- iter721.write(oprot)
++ for iter728 in self.new_parts:
++ iter728.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -17543,11 -17369,11 +17601,11 @@@ class add_partitions_pspec_args
if fid == 1:
if ftype == TType.LIST:
self.new_parts = []
-- (_etype725, _size722) = iprot.readListBegin()
-- for _i726 in xrange(_size722):
-- _elem727 = PartitionSpec()
-- _elem727.read(iprot)
-- self.new_parts.append(_elem727)
++ (_etype732, _size729) = iprot.readListBegin()
++ for _i733 in xrange(_size729):
++ _elem734 = PartitionSpec()
++ _elem734.read(iprot)
++ self.new_parts.append(_elem734)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -17564,8 -17390,8 +17622,8 @@@
if self.new_parts is not None:
oprot.writeFieldBegin('new_parts', TType.LIST, 1)
oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
-- for iter728 in self.new_parts:
-- iter728.write(oprot)
++ for iter735 in self.new_parts:
++ iter735.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -17739,10 -17565,10 +17797,10 @@@ class append_partition_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype732, _size729) = iprot.readListBegin()
-- for _i733 in xrange(_size729):
-- _elem734 = iprot.readString()
-- self.part_vals.append(_elem734)
++ (_etype739, _size736) = iprot.readListBegin()
++ for _i740 in xrange(_size736):
++ _elem741 = iprot.readString()
++ self.part_vals.append(_elem741)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -17767,8 -17593,8 +17825,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter735 in self.part_vals:
-- oprot.writeString(iter735)
++ for iter742 in self.part_vals:
++ oprot.writeString(iter742)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -18121,10 -17947,10 +18179,10 @@@ class append_partition_with_environment
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype739, _size736) = iprot.readListBegin()
-- for _i740 in xrange(_size736):
-- _elem741 = iprot.readString()
-- self.part_vals.append(_elem741)
++ (_etype746, _size743) = iprot.readListBegin()
++ for _i747 in xrange(_size743):
++ _elem748 = iprot.readString()
++ self.part_vals.append(_elem748)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -18155,8 -17981,8 +18213,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter742 in self.part_vals:
-- oprot.writeString(iter742)
++ for iter749 in self.part_vals:
++ oprot.writeString(iter749)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.environment_context is not None:
@@@ -18751,10 -18577,10 +18809,10 @@@ class drop_partition_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype746, _size743) = iprot.readListBegin()
-- for _i747 in xrange(_size743):
-- _elem748 = iprot.readString()
-- self.part_vals.append(_elem748)
++ (_etype753, _size750) = iprot.readListBegin()
++ for _i754 in xrange(_size750):
++ _elem755 = iprot.readString()
++ self.part_vals.append(_elem755)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -18784,8 -18610,8 +18842,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter749 in self.part_vals:
-- oprot.writeString(iter749)
++ for iter756 in self.part_vals:
++ oprot.writeString(iter756)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.deleteData is not None:
@@@ -18958,10 -18784,10 +19016,10 @@@ class drop_partition_with_environment_c
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype753, _size750) = iprot.readListBegin()
-- for _i754 in xrange(_size750):
-- _elem755 = iprot.readString()
-- self.part_vals.append(_elem755)
++ (_etype760, _size757) = iprot.readListBegin()
++ for _i761 in xrange(_size757):
++ _elem762 = iprot.readString()
++ self.part_vals.append(_elem762)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -18997,8 -18823,8 +19055,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter756 in self.part_vals:
-- oprot.writeString(iter756)
++ for iter763 in self.part_vals:
++ oprot.writeString(iter763)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.deleteData is not None:
@@@ -19735,10 -19561,10 +19793,10 @@@ class get_partition_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype760, _size757) = iprot.readListBegin()
-- for _i761 in xrange(_size757):
-- _elem762 = iprot.readString()
-- self.part_vals.append(_elem762)
++ (_etype767, _size764) = iprot.readListBegin()
++ for _i768 in xrange(_size764):
++ _elem769 = iprot.readString()
++ self.part_vals.append(_elem769)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -19763,8 -19589,8 +19821,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter763 in self.part_vals:
-- oprot.writeString(iter763)
++ for iter770 in self.part_vals:
++ oprot.writeString(iter770)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -19923,11 -19749,11 +19981,11 @@@ class exchange_partition_args
if fid == 1:
if ftype == TType.MAP:
self.partitionSpecs = {}
-- (_ktype765, _vtype766, _size764 ) = iprot.readMapBegin()
-- for _i768 in xrange(_size764):
-- _key769 = iprot.readString()
-- _val770 = iprot.readString()
-- self.partitionSpecs[_key769] = _val770
++ (_ktype772, _vtype773, _size771 ) = iprot.readMapBegin()
++ for _i775 in xrange(_size771):
++ _key776 = iprot.readString()
++ _val777 = iprot.readString()
++ self.partitionSpecs[_key776] = _val777
iprot.readMapEnd()
else:
iprot.skip(ftype)
@@@ -19964,9 -19790,9 +20022,9 @@@
if self.partitionSpecs is not None:
oprot.writeFieldBegin('partitionSpecs', TType.MAP, 1)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.partitionSpecs))
-- for kiter771,viter772 in self.partitionSpecs.items():
-- oprot.writeString(kiter771)
-- oprot.writeString(viter772)
++ for kiter778,viter779 in self.partitionSpecs.items():
++ oprot.writeString(kiter778)
++ oprot.writeString(viter779)
oprot.writeMapEnd()
oprot.writeFieldEnd()
if self.source_db is not None:
@@@ -20171,11 -19997,11 +20229,11 @@@ class exchange_partitions_args
if fid == 1:
if ftype == TType.MAP:
self.partitionSpecs = {}
-- (_ktype774, _vtype775, _size773 ) = iprot.readMapBegin()
-- for _i777 in xrange(_size773):
-- _key778 = iprot.readString()
-- _val779 = iprot.readString()
-- self.partitionSpecs[_key778] = _val779
++ (_ktype781, _vtype782, _size780 ) = iprot.readMapBegin()
++ for _i784 in xrange(_size780):
++ _key785 = iprot.readString()
++ _val786 = iprot.readString()
++ self.partitionSpecs[_key785] = _val786
iprot.readMapEnd()
else:
iprot.skip(ftype)
@@@ -20212,9 -20038,9 +20270,9 @@@
if self.partitionSpecs is not None:
oprot.writeFieldBegin('partitionSpecs', TType.MAP, 1)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.partitionSpecs))
-- for kiter780,viter781 in self.partitionSpecs.items():
-- oprot.writeString(kiter780)
-- oprot.writeString(viter781)
++ for kiter787,viter788 in self.partitionSpecs.items():
++ oprot.writeString(kiter787)
++ oprot.writeString(viter788)
oprot.writeMapEnd()
oprot.writeFieldEnd()
if self.source_db is not None:
@@@ -20297,11 -20123,11 +20355,11 @@@ class exchange_partitions_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype785, _size782) = iprot.readListBegin()
-- for _i786 in xrange(_size782):
-- _elem787 = Partition()
-- _elem787.read(iprot)
-- self.success.append(_elem787)
++ (_etype792, _size789) = iprot.readListBegin()
++ for _i793 in xrange(_size789):
++ _elem794 = Partition()
++ _elem794.read(iprot)
++ self.success.append(_elem794)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -20342,8 -20168,8 +20400,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter788 in self.success:
-- iter788.write(oprot)
++ for iter795 in self.success:
++ iter795.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -20437,10 -20263,10 +20495,10 @@@ class get_partition_with_auth_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype792, _size789) = iprot.readListBegin()
-- for _i793 in xrange(_size789):
-- _elem794 = iprot.readString()
-- self.part_vals.append(_elem794)
++ (_etype799, _size796) = iprot.readListBegin()
++ for _i800 in xrange(_size796):
++ _elem801 = iprot.readString()
++ self.part_vals.append(_elem801)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -20452,10 -20278,10 +20510,10 @@@
elif fid == 5:
if ftype == TType.LIST:
self.group_names = []
-- (_etype798, _size795) = iprot.readListBegin()
-- for _i799 in xrange(_size795):
-- _elem800 = iprot.readString()
-- self.group_names.append(_elem800)
++ (_etype805, _size802) = iprot.readListBegin()
++ for _i806 in xrange(_size802):
++ _elem807 = iprot.readString()
++ self.group_names.append(_elem807)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -20480,8 -20306,8 +20538,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter801 in self.part_vals:
-- oprot.writeString(iter801)
++ for iter808 in self.part_vals:
++ oprot.writeString(iter808)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.user_name is not None:
@@@ -20491,8 -20317,8 +20549,8 @@@
if self.group_names is not None:
oprot.writeFieldBegin('group_names', TType.LIST, 5)
oprot.writeListBegin(TType.STRING, len(self.group_names))
-- for iter802 in self.group_names:
-- oprot.writeString(iter802)
++ for iter809 in self.group_names:
++ oprot.writeString(iter809)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -20921,11 -20747,11 +20979,11 @@@ class get_partitions_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype806, _size803) = iprot.readListBegin()
-- for _i807 in xrange(_size803):
-- _elem808 = Partition()
-- _elem808.read(iprot)
-- self.success.append(_elem808)
++ (_etype813, _size810) = iprot.readListBegin()
++ for _i814 in xrange(_size810):
++ _elem815 = Partition()
++ _elem815.read(iprot)
++ self.success.append(_elem815)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -20954,8 -20780,8 +21012,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter809 in self.success:
-- iter809.write(oprot)
++ for iter816 in self.success:
++ iter816.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -21049,10 -20875,10 +21107,10 @@@ class get_partitions_with_auth_args
elif fid == 5:
if ftype == TType.LIST:
self.group_names = []
-- (_etype813, _size810) = iprot.readListBegin()
-- for _i814 in xrange(_size810):
-- _elem815 = iprot.readString()
-- self.group_names.append(_elem815)
++ (_etype820, _size817) = iprot.readListBegin()
++ for _i821 in xrange(_size817):
++ _elem822 = iprot.readString()
++ self.group_names.append(_elem822)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21085,8 -20911,8 +21143,8 @@@
if self.group_names is not None:
oprot.writeFieldBegin('group_names', TType.LIST, 5)
oprot.writeListBegin(TType.STRING, len(self.group_names))
-- for iter816 in self.group_names:
-- oprot.writeString(iter816)
++ for iter823 in self.group_names:
++ oprot.writeString(iter823)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -21147,11 -20973,11 +21205,11 @@@ class get_partitions_with_auth_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype820, _size817) = iprot.readListBegin()
-- for _i821 in xrange(_size817):
-- _elem822 = Partition()
-- _elem822.read(iprot)
-- self.success.append(_elem822)
++ (_etype827, _size824) = iprot.readListBegin()
++ for _i828 in xrange(_size824):
++ _elem829 = Partition()
++ _elem829.read(iprot)
++ self.success.append(_elem829)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21180,8 -21006,8 +21238,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter823 in self.success:
-- iter823.write(oprot)
++ for iter830 in self.success:
++ iter830.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -21339,11 -21165,11 +21397,11 @@@ class get_partitions_pspec_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype827, _size824) = iprot.readListBegin()
-- for _i828 in xrange(_size824):
-- _elem829 = PartitionSpec()
-- _elem829.read(iprot)
-- self.success.append(_elem829)
++ (_etype834, _size831) = iprot.readListBegin()
++ for _i835 in xrange(_size831):
++ _elem836 = PartitionSpec()
++ _elem836.read(iprot)
++ self.success.append(_elem836)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21372,8 -21198,8 +21430,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter830 in self.success:
-- iter830.write(oprot)
++ for iter837 in self.success:
++ iter837.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -21528,10 -21354,10 +21586,10 @@@ class get_partition_names_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype834, _size831) = iprot.readListBegin()
-- for _i835 in xrange(_size831):
-- _elem836 = iprot.readString()
-- self.success.append(_elem836)
++ (_etype841, _size838) = iprot.readListBegin()
++ for _i842 in xrange(_size838):
++ _elem843 = iprot.readString()
++ self.success.append(_elem843)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21554,8 -21380,8 +21612,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter837 in self.success:
-- oprot.writeString(iter837)
++ for iter844 in self.success:
++ oprot.writeString(iter844)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o2 is not None:
@@@ -21631,10 -21457,10 +21689,10 @@@ class get_partitions_ps_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype841, _size838) = iprot.readListBegin()
-- for _i842 in xrange(_size838):
-- _elem843 = iprot.readString()
-- self.part_vals.append(_elem843)
++ (_etype848, _size845) = iprot.readListBegin()
++ for _i849 in xrange(_size845):
++ _elem850 = iprot.readString()
++ self.part_vals.append(_elem850)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21664,8 -21490,8 +21722,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter844 in self.part_vals:
-- oprot.writeString(iter844)
++ for iter851 in self.part_vals:
++ oprot.writeString(iter851)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.max_parts is not None:
@@@ -21729,11 -21555,11 +21787,11 @@@ class get_partitions_ps_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype848, _size845) = iprot.readListBegin()
-- for _i849 in xrange(_size845):
-- _elem850 = Partition()
-- _elem850.read(iprot)
-- self.success.append(_elem850)
++ (_etype855, _size852) = iprot.readListBegin()
++ for _i856 in xrange(_size852):
++ _elem857 = Partition()
++ _elem857.read(iprot)
++ self.success.append(_elem857)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21762,8 -21588,8 +21820,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter851 in self.success:
-- iter851.write(oprot)
++ for iter858 in self.success:
++ iter858.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -21850,10 -21676,10 +21908,10 @@@ class get_partitions_ps_with_auth_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype855, _size852) = iprot.readListBegin()
-- for _i856 in xrange(_size852):
-- _elem857 = iprot.readString()
-- self.part_vals.append(_elem857)
++ (_etype862, _size859) = iprot.readListBegin()
++ for _i863 in xrange(_size859):
++ _elem864 = iprot.readString()
++ self.part_vals.append(_elem864)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21870,10 -21696,10 +21928,10 @@@
elif fid == 6:
if ftype == TType.LIST:
self.group_names = []
-- (_etype861, _size858) = iprot.readListBegin()
-- for _i862 in xrange(_size858):
-- _elem863 = iprot.readString()
-- self.group_names.append(_elem863)
++ (_etype868, _size865) = iprot.readListBegin()
++ for _i869 in xrange(_size865):
++ _elem870 = iprot.readString()
++ self.group_names.append(_elem870)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -21898,8 -21724,8 +21956,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter864 in self.part_vals:
-- oprot.writeString(iter864)
++ for iter871 in self.part_vals:
++ oprot.writeString(iter871)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.max_parts is not None:
@@@ -21913,8 -21739,8 +21971,8 @@@
if self.group_names is not None:
oprot.writeFieldBegin('group_names', TType.LIST, 6)
oprot.writeListBegin(TType.STRING, len(self.group_names))
-- for iter865 in self.group_names:
-- oprot.writeString(iter865)
++ for iter872 in self.group_names:
++ oprot.writeString(iter872)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -21976,11 -21802,11 +22034,11 @@@ class get_partitions_ps_with_auth_resul
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype869, _size866) = iprot.readListBegin()
-- for _i870 in xrange(_size866):
-- _elem871 = Partition()
-- _elem871.read(iprot)
-- self.success.append(_elem871)
++ (_etype876, _size873) = iprot.readListBegin()
++ for _i877 in xrange(_size873):
++ _elem878 = Partition()
++ _elem878.read(iprot)
++ self.success.append(_elem878)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -22009,8 -21835,8 +22067,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter872 in self.success:
-- iter872.write(oprot)
++ for iter879 in self.success:
++ iter879.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -22091,10 -21917,10 +22149,10 @@@ class get_partition_names_ps_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype876, _size873) = iprot.readListBegin()
-- for _i877 in xrange(_size873):
-- _elem878 = iprot.readString()
-- self.part_vals.append(_elem878)
++ (_etype883, _size880) = iprot.readListBegin()
++ for _i884 in xrange(_size880):
++ _elem885 = iprot.readString()
++ self.part_vals.append(_elem885)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -22124,8 -21950,8 +22182,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter879 in self.part_vals:
-- oprot.writeString(iter879)
++ for iter886 in self.part_vals:
++ oprot.writeString(iter886)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.max_parts is not None:
@@@ -22189,10 -22015,10 +22247,10 @@@ class get_partition_names_ps_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype883, _size880) = iprot.readListBegin()
-- for _i884 in xrange(_size880):
-- _elem885 = iprot.readString()
-- self.success.append(_elem885)
++ (_etype890, _size887) = iprot.readListBegin()
++ for _i891 in xrange(_size887):
++ _elem892 = iprot.readString()
++ self.success.append(_elem892)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -22221,8 -22047,8 +22279,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter886 in self.success:
-- oprot.writeString(iter886)
++ for iter893 in self.success:
++ oprot.writeString(iter893)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -22393,11 -22219,11 +22451,11 @@@ class get_partitions_by_filter_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype890, _size887) = iprot.readListBegin()
-- for _i891 in xrange(_size887):
-- _elem892 = Partition()
-- _elem892.read(iprot)
-- self.success.append(_elem892)
++ (_etype897, _size894) = iprot.readListBegin()
++ for _i898 in xrange(_size894):
++ _elem899 = Partition()
++ _elem899.read(iprot)
++ self.success.append(_elem899)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -22426,8 -22252,8 +22484,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter893 in self.success:
-- iter893.write(oprot)
++ for iter900 in self.success:
++ iter900.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -22598,11 -22424,11 +22656,11 @@@ class get_part_specs_by_filter_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype897, _size894) = iprot.readListBegin()
-- for _i898 in xrange(_size894):
-- _elem899 = PartitionSpec()
-- _elem899.read(iprot)
-- self.success.append(_elem899)
++ (_etype904, _size901) = iprot.readListBegin()
++ for _i905 in xrange(_size901):
++ _elem906 = PartitionSpec()
++ _elem906.read(iprot)
++ self.success.append(_elem906)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -22631,8 -22457,8 +22689,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter900 in self.success:
-- iter900.write(oprot)
++ for iter907 in self.success:
++ iter907.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -23052,10 -22878,10 +23110,10 @@@ class get_partitions_by_names_args
elif fid == 3:
if ftype == TType.LIST:
self.names = []
-- (_etype904, _size901) = iprot.readListBegin()
-- for _i905 in xrange(_size901):
-- _elem906 = iprot.readString()
-- self.names.append(_elem906)
++ (_etype911, _size908) = iprot.readListBegin()
++ for _i912 in xrange(_size908):
++ _elem913 = iprot.readString()
++ self.names.append(_elem913)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -23080,8 -22906,8 +23138,8 @@@
if self.names is not None:
oprot.writeFieldBegin('names', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.names))
-- for iter907 in self.names:
-- oprot.writeString(iter907)
++ for iter914 in self.names:
++ oprot.writeString(iter914)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -23140,11 -22966,11 +23198,11 @@@ class get_partitions_by_names_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype911, _size908) = iprot.readListBegin()
-- for _i912 in xrange(_size908):
-- _elem913 = Partition()
-- _elem913.read(iprot)
-- self.success.append(_elem913)
++ (_etype918, _size915) = iprot.readListBegin()
++ for _i919 in xrange(_size915):
++ _elem920 = Partition()
++ _elem920.read(iprot)
++ self.success.append(_elem920)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -23173,8 -22999,8 +23231,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter914 in self.success:
-- iter914.write(oprot)
++ for iter921 in self.success:
++ iter921.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -23424,11 -23250,11 +23482,11 @@@ class alter_partitions_args
elif fid == 3:
if ftype == TType.LIST:
self.new_parts = []
-- (_etype918, _size915) = iprot.readListBegin()
-- for _i919 in xrange(_size915):
-- _elem920 = Partition()
-- _elem920.read(iprot)
-- self.new_parts.append(_elem920)
++ (_etype925, _size922) = iprot.readListBegin()
++ for _i926 in xrange(_size922):
++ _elem927 = Partition()
++ _elem927.read(iprot)
++ self.new_parts.append(_elem927)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -23453,8 -23279,8 +23511,8 @@@
if self.new_parts is not None:
oprot.writeFieldBegin('new_parts', TType.LIST, 3)
oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
-- for iter921 in self.new_parts:
-- iter921.write(oprot)
++ for iter928 in self.new_parts:
++ iter928.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -23607,11 -23433,11 +23665,11 @@@ class alter_partitions_with_environment
elif fid == 3:
if ftype == TType.LIST:
self.new_parts = []
-- (_etype925, _size922) = iprot.readListBegin()
-- for _i926 in xrange(_size922):
-- _elem927 = Partition()
-- _elem927.read(iprot)
-- self.new_parts.append(_elem927)
++ (_etype932, _size929) = iprot.readListBegin()
++ for _i933 in xrange(_size929):
++ _elem934 = Partition()
++ _elem934.read(iprot)
++ self.new_parts.append(_elem934)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -23642,8 -23468,8 +23700,8 @@@
if self.new_parts is not None:
oprot.writeFieldBegin('new_parts', TType.LIST, 3)
oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
-- for iter928 in self.new_parts:
-- iter928.write(oprot)
++ for iter935 in self.new_parts:
++ iter935.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.environment_context is not None:
@@@ -23987,10 -23813,10 +24045,10 @@@ class rename_partition_args
elif fid == 3:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype932, _size929) = iprot.readListBegin()
-- for _i933 in xrange(_size929):
-- _elem934 = iprot.readString()
-- self.part_vals.append(_elem934)
++ (_etype939, _size936) = iprot.readListBegin()
++ for _i940 in xrange(_size936):
++ _elem941 = iprot.readString()
++ self.part_vals.append(_elem941)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -24021,8 -23847,8 +24079,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter935 in self.part_vals:
-- oprot.writeString(iter935)
++ for iter942 in self.part_vals:
++ oprot.writeString(iter942)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.new_part is not None:
@@@ -24164,10 -23990,10 +24222,10 @@@ class partition_name_has_valid_characte
if fid == 1:
if ftype == TType.LIST:
self.part_vals = []
-- (_etype939, _size936) = iprot.readListBegin()
-- for _i940 in xrange(_size936):
-- _elem941 = iprot.readString()
-- self.part_vals.append(_elem941)
++ (_etype946, _size943) = iprot.readListBegin()
++ for _i947 in xrange(_size943):
++ _elem948 = iprot.readString()
++ self.part_vals.append(_elem948)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -24189,8 -24015,8 +24247,8 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.LIST, 1)
oprot.writeListBegin(TType.STRING, len(self.part_vals))
-- for iter942 in self.part_vals:
-- oprot.writeString(iter942)
++ for iter949 in self.part_vals:
++ oprot.writeString(iter949)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.throw_exception is not None:
@@@ -24548,10 -24374,10 +24606,10 @@@ class partition_name_to_vals_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype946, _size943) = iprot.readListBegin()
-- for _i947 in xrange(_size943):
-- _elem948 = iprot.readString()
-- self.success.append(_elem948)
++ (_etype953, _size950) = iprot.readListBegin()
++ for _i954 in xrange(_size950):
++ _elem955 = iprot.readString()
++ self.success.append(_elem955)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -24574,8 -24400,8 +24632,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter949 in self.success:
-- oprot.writeString(iter949)
++ for iter956 in self.success:
++ oprot.writeString(iter956)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -24699,11 -24525,11 +24757,11 @@@ class partition_name_to_spec_result
if fid == 0:
if ftype == TType.MAP:
self.success = {}
-- (_ktype951, _vtype952, _size950 ) = iprot.readMapBegin()
-- for _i954 in xrange(_size950):
-- _key955 = iprot.readString()
-- _val956 = iprot.readString()
-- self.success[_key955] = _val956
++ (_ktype958, _vtype959, _size957 ) = iprot.readMapBegin()
++ for _i961 in xrange(_size957):
++ _key962 = iprot.readString()
++ _val963 = iprot.readString()
++ self.success[_key962] = _val963
iprot.readMapEnd()
else:
iprot.skip(ftype)
@@@ -24726,9 -24552,9 +24784,9 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.MAP, 0)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-- for kiter957,viter958 in self.success.items():
-- oprot.writeString(kiter957)
-- oprot.writeString(viter958)
++ for kiter964,viter965 in self.success.items():
++ oprot.writeString(kiter964)
++ oprot.writeString(viter965)
oprot.writeMapEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -24804,11 -24630,11 +24862,11 @@@ class markPartitionForEvent_args
elif fid == 3:
if ftype == TType.MAP:
self.part_vals = {}
-- (_ktype960, _vtype961, _size959 ) = iprot.readMapBegin()
-- for _i963 in xrange(_size959):
-- _key964 = iprot.readString()
-- _val965 = iprot.readString()
-- self.part_vals[_key964] = _val965
++ (_ktype967, _vtype968, _size966 ) = iprot.readMapBegin()
++ for _i970 in xrange(_size966):
++ _key971 = iprot.readString()
++ _val972 = iprot.readString()
++ self.part_vals[_key971] = _val972
iprot.readMapEnd()
else:
iprot.skip(ftype)
@@@ -24838,9 -24664,9 +24896,9 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.MAP, 3)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.part_vals))
-- for kiter966,viter967 in self.part_vals.items():
-- oprot.writeString(kiter966)
-- oprot.writeString(viter967)
++ for kiter973,viter974 in self.part_vals.items():
++ oprot.writeString(kiter973)
++ oprot.writeString(viter974)
oprot.writeMapEnd()
oprot.writeFieldEnd()
if self.eventType is not None:
@@@ -25054,11 -24880,11 +25112,11 @@@ class isPartitionMarkedForEvent_args
elif fid == 3:
if ftype == TType.MAP:
self.part_vals = {}
-- (_ktype969, _vtype970, _size968 ) = iprot.readMapBegin()
-- for _i972 in xrange(_size968):
-- _key973 = iprot.readString()
-- _val974 = iprot.readString()
-- self.part_vals[_key973] = _val974
++ (_ktype976, _vtype977, _size975 ) = iprot.readMapBegin()
++ for _i979 in xrange(_size975):
++ _key980 = iprot.readString()
++ _val981 = iprot.readString()
++ self.part_vals[_key980] = _val981
iprot.readMapEnd()
else:
iprot.skip(ftype)
@@@ -25088,9 -24914,9 +25146,9 @@@
if self.part_vals is not None:
oprot.writeFieldBegin('part_vals', TType.MAP, 3)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.part_vals))
-- for kiter975,viter976 in self.part_vals.items():
-- oprot.writeString(kiter975)
-- oprot.writeString(viter976)
++ for kiter982,viter983 in self.part_vals.items():
++ oprot.writeString(kiter982)
++ oprot.writeString(viter983)
oprot.writeMapEnd()
oprot.writeFieldEnd()
if self.eventType is not None:
@@@ -26145,11 -25971,11 +26203,11 @@@ class get_indexes_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype980, _size977) = iprot.readListBegin()
-- for _i981 in xrange(_size977):
-- _elem982 = Index()
-- _elem982.read(iprot)
-- self.success.append(_elem982)
++ (_etype987, _size984) = iprot.readListBegin()
++ for _i988 in xrange(_size984):
++ _elem989 = Index()
++ _elem989.read(iprot)
++ self.success.append(_elem989)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -26178,8 -26004,8 +26236,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter983 in self.success:
-- iter983.write(oprot)
++ for iter990 in self.success:
++ iter990.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -26334,10 -26160,10 +26392,10 @@@ class get_index_names_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype987, _size984) = iprot.readListBegin()
-- for _i988 in xrange(_size984):
-- _elem989 = iprot.readString()
-- self.success.append(_elem989)
++ (_etype994, _size991) = iprot.readListBegin()
++ for _i995 in xrange(_size991):
++ _elem996 = iprot.readString()
++ self.success.append(_elem996)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -26360,8 -26186,8 +26418,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter990 in self.success:
-- oprot.writeString(iter990)
++ for iter997 in self.success:
++ oprot.writeString(iter997)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o2 is not None:
@@@ -29227,10 -29053,10 +29285,10 @@@ class get_functions_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype994, _size991) = iprot.readListBegin()
-- for _i995 in xrange(_size991):
-- _elem996 = iprot.readString()
-- self.success.append(_elem996)
++ (_etype1001, _size998) = iprot.readListBegin()
++ for _i1002 in xrange(_size998):
++ _elem1003 = iprot.readString()
++ self.success.append(_elem1003)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -29253,8 -29079,8 +29311,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter997 in self.success:
-- oprot.writeString(iter997)
++ for iter1004 in self.success:
++ oprot.writeString(iter1004)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -29942,10 -29768,10 +30000,10 @@@ class get_role_names_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype1001, _size998) = iprot.readListBegin()
-- for _i1002 in xrange(_size998):
-- _elem1003 = iprot.readString()
-- self.success.append(_elem1003)
++ (_etype1008, _size1005) = iprot.readListBegin()
++ for _i1009 in xrange(_size1005):
++ _elem1010 = iprot.readString()
++ self.success.append(_elem1010)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -29968,8 -29794,8 +30026,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter1004 in self.success:
-- oprot.writeString(iter1004)
++ for iter1011 in self.success:
++ oprot.writeString(iter1011)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -30483,11 -30309,11 +30541,11 @@@ class list_roles_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype1008, _size1005) = iprot.readListBegin()
-- for _i1009 in xrange(_size1005):
-- _elem1010 = Role()
-- _elem1010.read(iprot)
-- self.success.append(_elem1010)
++ (_etype1015, _size1012) = iprot.readListBegin()
++ for _i1016 in xrange(_size1012):
++ _elem1017 = Role()
++ _elem1017.read(iprot)
++ self.success.append(_elem1017)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -30510,8 -30336,8 +30568,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter1011 in self.success:
-- iter1011.write(oprot)
++ for iter1018 in self.success:
++ iter1018.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -31020,10 -30846,10 +31078,10 @@@ class get_privilege_set_args
elif fid == 3:
if ftype == TType.LIST:
self.group_names = []
-- (_etype1015, _size1012) = iprot.readListBegin()
-- for _i1016 in xrange(_size1012):
-- _elem1017 = iprot.readString()
-- self.group_names.append(_elem1017)
++ (_etype1022, _size1019) = iprot.readListBegin()
++ for _i1023 in xrange(_size1019):
++ _elem1024 = iprot.readString()
++ self.group_names.append(_elem1024)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -31048,8 -30874,8 +31106,8 @@@
if self.group_names is not None:
oprot.writeFieldBegin('group_names', TType.LIST, 3)
oprot.writeListBegin(TType.STRING, len(self.group_names))
-- for iter1018 in self.group_names:
-- oprot.writeString(iter1018)
++ for iter1025 in self.group_names:
++ oprot.writeString(iter1025)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -31276,11 -31102,11 +31334,11 @@@ class list_privileges_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype1022, _size1019) = iprot.readListBegin()
-- for _i1023 in xrange(_size1019):
-- _elem1024 = HiveObjectPrivilege()
-- _elem1024.read(iprot)
-- self.success.append(_elem1024)
++ (_etype1029, _size1026) = iprot.readListBegin()
++ for _i1030 in xrange(_size1026):
++ _elem1031 = HiveObjectPrivilege()
++ _elem1031.read(iprot)
++ self.success.append(_elem1031)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -31303,8 -31129,8 +31361,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRUCT, len(self.success))
-- for iter1025 in self.success:
-- iter1025.write(oprot)
++ for iter1032 in self.success:
++ iter1032.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -31802,10 -31628,10 +31860,10 @@@ class set_ugi_args
elif fid == 2:
if ftype == TType.LIST:
self.group_names = []
-- (_etype1029, _size1026) = iprot.readListBegin()
-- for _i1030 in xrange(_size1026):
-- _elem1031 = iprot.readString()
-- self.group_names.append(_elem1031)
++ (_etype1036, _size1033) = iprot.readListBegin()
++ for _i1037 in xrange(_size1033):
++ _elem1038 = iprot.readString()
++ self.group_names.append(_elem1038)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -31826,8 -31652,8 +31884,8 @@@
if self.group_names is not None:
oprot.writeFieldBegin('group_names', TType.LIST, 2)
oprot.writeListBegin(TType.STRING, len(self.group_names))
-- for iter1032 in self.group_names:
-- oprot.writeString(iter1032)
++ for iter1039 in self.group_names:
++ oprot.writeString(iter1039)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -31882,10 -31708,10 +31940,10 @@@ class set_ugi_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype1036, _size1033) = iprot.readListBegin()
-- for _i1037 in xrange(_size1033):
-- _elem1038 = iprot.readString()
-- self.success.append(_elem1038)
++ (_etype1043, _size1040) = iprot.readListBegin()
++ for _i1044 in xrange(_size1040):
++ _elem1045 = iprot.readString()
++ self.success.append(_elem1045)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -31908,8 -31734,8 +31966,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter1039 in self.success:
-- oprot.writeString(iter1039)
++ for iter1046 in self.success:
++ oprot.writeString(iter1046)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.o1 is not None:
@@@ -32841,10 -32667,10 +32899,10 @@@ class get_all_token_identifiers_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype1043, _size1040) = iprot.readListBegin()
-- for _i1044 in xrange(_size1040):
-- _elem1045 = iprot.readString()
-- self.success.append(_elem1045)
++ (_etype1050, _size1047) = iprot.readListBegin()
++ for _i1051 in xrange(_size1047):
++ _elem1052 = iprot.readString()
++ self.success.append(_elem1052)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -32861,8 -32687,8 +32919,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter1046 in self.success:
-- oprot.writeString(iter1046)
++ for iter1053 in self.success:
++ oprot.writeString(iter1053)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -33389,10 -33215,10 +33447,10 @@@ class get_master_keys_result
if fid == 0:
if ftype == TType.LIST:
self.success = []
-- (_etype1050, _size1047) = iprot.readListBegin()
-- for _i1051 in xrange(_size1047):
-- _elem1052 = iprot.readString()
-- self.success.append(_elem1052)
++ (_etype1057, _size1054) = iprot.readListBegin()
++ for _i1058 in xrange(_size1054):
++ _elem1059 = iprot.readString()
++ self.success.append(_elem1059)
iprot.readListEnd()
else:
iprot.skip(ftype)
@@@ -33409,8 -33235,8 +33467,8 @@@
if self.success is not None:
oprot.writeFieldBegin('success', TType.LIST, 0)
oprot.writeListBegin(TType.STRING, len(self.success))
-- for iter1053 in self.success:
-- oprot.writeString(iter1053)
++ for iter1060 in self.success:
++ oprot.writeString(iter1060)
oprot.writeListEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
@@@ -35211,10 -34503,141 +35269,141 @@@ class compact_result
def __ne__(self, other):
return not (self == other)
-class show_locks_args:
++class compact2_args:
+ """
+ Attributes:
+ - rqst
+ """
+
+ thrift_spec = (
+ None, # 0
- (1, TType.STRUCT, 'rqst', (ShowLocksRequest, ShowLocksRequest.thrift_spec), None, ), # 1
++ (1, TType.STRUCT, 'rqst', (CompactionRequest, CompactionRequest.thrift_spec), None, ), # 1
+ )
+
+ def __init__(self, rqst=None,):
+ self.rqst = rqst
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.STRUCT:
- self.rqst = ShowLocksRequest()
++ self.rqst = CompactionRequest()
+ self.rqst.read(iprot)
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
- oprot.writeStructBegin('show_locks_args')
++ oprot.writeStructBegin('compact2_args')
+ if self.rqst is not None:
+ oprot.writeFieldBegin('rqst', TType.STRUCT, 1)
+ self.rqst.write(oprot)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.rqst)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
-class show_locks_result:
++class compact2_result:
+ """
+ Attributes:
+ - success
+ """
+
+ thrift_spec = (
- (0, TType.STRUCT, 'success', (ShowLocksResponse, ShowLocksResponse.thrift_spec), None, ), # 0
++ (0, TType.STRUCT, 'success', (CompactionResponse, CompactionResponse.thrift_spec), None, ), # 0
+ )
+
+ def __init__(self, success=None,):
+ self.success = success
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 0:
+ if ftype == TType.STRUCT:
- self.success = ShowLocksResponse()
++ self.success = CompactionResponse()
+ self.success.read(iprot)
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
- oprot.writeStructBegin('show_locks_result')
++ oprot.writeStructBegin('compact2_result')
+ if self.success is not None:
+ oprot.writeFieldBegin('success', TType.STRUCT, 0)
+ self.success.write(oprot)
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ return
+
+
+ def __hash__(self):
+ value = 17
+ value = (value * 31) ^ hash(self.success)
+ return value
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
-class heartbeat_args:
+class show_compact_args:
"""
Attributes:
- - ids
+ - rqst
"""
thrift_spec = (
[46/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesResult.java
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesResult.java
index 91cb198,91cb198..d91fd62
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesResult.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTablesResult.java
@@@ -354,14 -354,14 +354,14 @@@ public class GetTablesResult implement
case 1: // TABLES
if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
{
-- org.apache.thrift.protocol.TList _list666 = iprot.readListBegin();
-- struct.tables = new ArrayList<Table>(_list666.size);
-- Table _elem667;
-- for (int _i668 = 0; _i668 < _list666.size; ++_i668)
++ org.apache.thrift.protocol.TList _list674 = iprot.readListBegin();
++ struct.tables = new ArrayList<Table>(_list674.size);
++ Table _elem675;
++ for (int _i676 = 0; _i676 < _list674.size; ++_i676)
{
-- _elem667 = new Table();
-- _elem667.read(iprot);
-- struct.tables.add(_elem667);
++ _elem675 = new Table();
++ _elem675.read(iprot);
++ struct.tables.add(_elem675);
}
iprot.readListEnd();
}
@@@ -387,9 -387,9 +387,9 @@@
oprot.writeFieldBegin(TABLES_FIELD_DESC);
{
oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.tables.size()));
-- for (Table _iter669 : struct.tables)
++ for (Table _iter677 : struct.tables)
{
-- _iter669.write(oprot);
++ _iter677.write(oprot);
}
oprot.writeListEnd();
}
@@@ -414,9 -414,9 +414,9 @@@
TTupleProtocol oprot = (TTupleProtocol) prot;
{
oprot.writeI32(struct.tables.size());
-- for (Table _iter670 : struct.tables)
++ for (Table _iter678 : struct.tables)
{
-- _iter670.write(oprot);
++ _iter678.write(oprot);
}
}
}
@@@ -425,14 -425,14 +425,14 @@@
public void read(org.apache.thrift.protocol.TProtocol prot, GetTablesResult struct) throws org.apache.thrift.TException {
TTupleProtocol iprot = (TTupleProtocol) prot;
{
-- org.apache.thrift.protocol.TList _list671 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-- struct.tables = new ArrayList<Table>(_list671.size);
-- Table _elem672;
-- for (int _i673 = 0; _i673 < _list671.size; ++_i673)
++ org.apache.thrift.protocol.TList _list679 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
++ struct.tables = new ArrayList<Table>(_list679.size);
++ Table _elem680;
++ for (int _i681 = 0; _i681 < _list679.size; ++_i681)
{
-- _elem672 = new Table();
-- _elem672.read(iprot);
-- struct.tables.add(_elem672);
++ _elem680 = new Table();
++ _elem680.read(iprot);
++ struct.tables.add(_elem680);
}
}
struct.setTablesIsSet(true);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetValidWriteIdsResult.java
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetValidWriteIdsResult.java
index a51f321,0000000..4a42e1a
mode 100644,000000..100644
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetValidWriteIdsResult.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetValidWriteIdsResult.java
@@@ -1,740 -1,0 +1,740 @@@
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+package org.apache.hadoop.hive.metastore.api;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+public class GetValidWriteIdsResult implements org.apache.thrift.TBase<GetValidWriteIdsResult, GetValidWriteIdsResult._Fields>, java.io.Serializable, Cloneable, Comparable<GetValidWriteIdsResult> {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetValidWriteIdsResult");
+
+ private static final org.apache.thrift.protocol.TField LOW_WATERMARK_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("lowWatermarkId", org.apache.thrift.protocol.TType.I64, (short)1);
+ private static final org.apache.thrift.protocol.TField HIGH_WATERMARK_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("highWatermarkId", org.apache.thrift.protocol.TType.I64, (short)2);
+ private static final org.apache.thrift.protocol.TField ARE_IDS_VALID_FIELD_DESC = new org.apache.thrift.protocol.TField("areIdsValid", org.apache.thrift.protocol.TType.BOOL, (short)3);
+ private static final org.apache.thrift.protocol.TField IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("ids", org.apache.thrift.protocol.TType.LIST, (short)4);
+
+ private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+ static {
+ schemes.put(StandardScheme.class, new GetValidWriteIdsResultStandardSchemeFactory());
+ schemes.put(TupleScheme.class, new GetValidWriteIdsResultTupleSchemeFactory());
+ }
+
+ private long lowWatermarkId; // required
+ private long highWatermarkId; // required
+ private boolean areIdsValid; // optional
+ private List<Long> ids; // optional
+
+ /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+ public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+ LOW_WATERMARK_ID((short)1, "lowWatermarkId"),
+ HIGH_WATERMARK_ID((short)2, "highWatermarkId"),
+ ARE_IDS_VALID((short)3, "areIdsValid"),
+ IDS((short)4, "ids");
+
+ private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+ static {
+ for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ byName.put(field.getFieldName(), field);
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, or null if its not found.
+ */
+ public static _Fields findByThriftId(int fieldId) {
+ switch(fieldId) {
+ case 1: // LOW_WATERMARK_ID
+ return LOW_WATERMARK_ID;
+ case 2: // HIGH_WATERMARK_ID
+ return HIGH_WATERMARK_ID;
+ case 3: // ARE_IDS_VALID
+ return ARE_IDS_VALID;
+ case 4: // IDS
+ return IDS;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+ public static _Fields findByThriftIdOrThrow(int fieldId) {
+ _Fields fields = findByThriftId(fieldId);
+ if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ return fields;
+ }
+
+ /**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+ public static _Fields findByName(String name) {
+ return byName.get(name);
+ }
+
+ private final short _thriftId;
+ private final String _fieldName;
+
+ _Fields(short thriftId, String fieldName) {
+ _thriftId = thriftId;
+ _fieldName = fieldName;
+ }
+
+ public short getThriftFieldId() {
+ return _thriftId;
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+ }
+
+ // isset id assignments
+ private static final int __LOWWATERMARKID_ISSET_ID = 0;
+ private static final int __HIGHWATERMARKID_ISSET_ID = 1;
+ private static final int __AREIDSVALID_ISSET_ID = 2;
+ private byte __isset_bitfield = 0;
+ private static final _Fields optionals[] = {_Fields.ARE_IDS_VALID,_Fields.IDS};
+ public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+ static {
+ Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+ tmpMap.put(_Fields.LOW_WATERMARK_ID, new org.apache.thrift.meta_data.FieldMetaData("lowWatermarkId", org.apache.thrift.TFieldRequirementType.REQUIRED,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+ tmpMap.put(_Fields.HIGH_WATERMARK_ID, new org.apache.thrift.meta_data.FieldMetaData("highWatermarkId", org.apache.thrift.TFieldRequirementType.REQUIRED,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+ tmpMap.put(_Fields.ARE_IDS_VALID, new org.apache.thrift.meta_data.FieldMetaData("areIdsValid", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ tmpMap.put(_Fields.IDS, new org.apache.thrift.meta_data.FieldMetaData("ids", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64))));
+ metaDataMap = Collections.unmodifiableMap(tmpMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetValidWriteIdsResult.class, metaDataMap);
+ }
+
+ public GetValidWriteIdsResult() {
+ }
+
+ public GetValidWriteIdsResult(
+ long lowWatermarkId,
+ long highWatermarkId)
+ {
+ this();
+ this.lowWatermarkId = lowWatermarkId;
+ setLowWatermarkIdIsSet(true);
+ this.highWatermarkId = highWatermarkId;
+ setHighWatermarkIdIsSet(true);
+ }
+
+ /**
+ * Performs a deep copy on <i>other</i>.
+ */
+ public GetValidWriteIdsResult(GetValidWriteIdsResult other) {
+ __isset_bitfield = other.__isset_bitfield;
+ this.lowWatermarkId = other.lowWatermarkId;
+ this.highWatermarkId = other.highWatermarkId;
+ this.areIdsValid = other.areIdsValid;
+ if (other.isSetIds()) {
+ List<Long> __this__ids = new ArrayList<Long>(other.ids);
+ this.ids = __this__ids;
+ }
+ }
+
+ public GetValidWriteIdsResult deepCopy() {
+ return new GetValidWriteIdsResult(this);
+ }
+
+ @Override
+ public void clear() {
+ setLowWatermarkIdIsSet(false);
+ this.lowWatermarkId = 0;
+ setHighWatermarkIdIsSet(false);
+ this.highWatermarkId = 0;
+ setAreIdsValidIsSet(false);
+ this.areIdsValid = false;
+ this.ids = null;
+ }
+
+ public long getLowWatermarkId() {
+ return this.lowWatermarkId;
+ }
+
+ public void setLowWatermarkId(long lowWatermarkId) {
+ this.lowWatermarkId = lowWatermarkId;
+ setLowWatermarkIdIsSet(true);
+ }
+
+ public void unsetLowWatermarkId() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LOWWATERMARKID_ISSET_ID);
+ }
+
+ /** Returns true if field lowWatermarkId is set (has been assigned a value) and false otherwise */
+ public boolean isSetLowWatermarkId() {
+ return EncodingUtils.testBit(__isset_bitfield, __LOWWATERMARKID_ISSET_ID);
+ }
+
+ public void setLowWatermarkIdIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LOWWATERMARKID_ISSET_ID, value);
+ }
+
+ public long getHighWatermarkId() {
+ return this.highWatermarkId;
+ }
+
+ public void setHighWatermarkId(long highWatermarkId) {
+ this.highWatermarkId = highWatermarkId;
+ setHighWatermarkIdIsSet(true);
+ }
+
+ public void unsetHighWatermarkId() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __HIGHWATERMARKID_ISSET_ID);
+ }
+
+ /** Returns true if field highWatermarkId is set (has been assigned a value) and false otherwise */
+ public boolean isSetHighWatermarkId() {
+ return EncodingUtils.testBit(__isset_bitfield, __HIGHWATERMARKID_ISSET_ID);
+ }
+
+ public void setHighWatermarkIdIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __HIGHWATERMARKID_ISSET_ID, value);
+ }
+
+ public boolean isAreIdsValid() {
+ return this.areIdsValid;
+ }
+
+ public void setAreIdsValid(boolean areIdsValid) {
+ this.areIdsValid = areIdsValid;
+ setAreIdsValidIsSet(true);
+ }
+
+ public void unsetAreIdsValid() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __AREIDSVALID_ISSET_ID);
+ }
+
+ /** Returns true if field areIdsValid is set (has been assigned a value) and false otherwise */
+ public boolean isSetAreIdsValid() {
+ return EncodingUtils.testBit(__isset_bitfield, __AREIDSVALID_ISSET_ID);
+ }
+
+ public void setAreIdsValidIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __AREIDSVALID_ISSET_ID, value);
+ }
+
+ public int getIdsSize() {
+ return (this.ids == null) ? 0 : this.ids.size();
+ }
+
+ public java.util.Iterator<Long> getIdsIterator() {
+ return (this.ids == null) ? null : this.ids.iterator();
+ }
+
+ public void addToIds(long elem) {
+ if (this.ids == null) {
+ this.ids = new ArrayList<Long>();
+ }
+ this.ids.add(elem);
+ }
+
+ public List<Long> getIds() {
+ return this.ids;
+ }
+
+ public void setIds(List<Long> ids) {
+ this.ids = ids;
+ }
+
+ public void unsetIds() {
+ this.ids = null;
+ }
+
+ /** Returns true if field ids is set (has been assigned a value) and false otherwise */
+ public boolean isSetIds() {
+ return this.ids != null;
+ }
+
+ public void setIdsIsSet(boolean value) {
+ if (!value) {
+ this.ids = null;
+ }
+ }
+
+ public void setFieldValue(_Fields field, Object value) {
+ switch (field) {
+ case LOW_WATERMARK_ID:
+ if (value == null) {
+ unsetLowWatermarkId();
+ } else {
+ setLowWatermarkId((Long)value);
+ }
+ break;
+
+ case HIGH_WATERMARK_ID:
+ if (value == null) {
+ unsetHighWatermarkId();
+ } else {
+ setHighWatermarkId((Long)value);
+ }
+ break;
+
+ case ARE_IDS_VALID:
+ if (value == null) {
+ unsetAreIdsValid();
+ } else {
+ setAreIdsValid((Boolean)value);
+ }
+ break;
+
+ case IDS:
+ if (value == null) {
+ unsetIds();
+ } else {
+ setIds((List<Long>)value);
+ }
+ break;
+
+ }
+ }
+
+ public Object getFieldValue(_Fields field) {
+ switch (field) {
+ case LOW_WATERMARK_ID:
+ return getLowWatermarkId();
+
+ case HIGH_WATERMARK_ID:
+ return getHighWatermarkId();
+
+ case ARE_IDS_VALID:
+ return isAreIdsValid();
+
+ case IDS:
+ return getIds();
+
+ }
+ throw new IllegalStateException();
+ }
+
+ /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+ public boolean isSet(_Fields field) {
+ if (field == null) {
+ throw new IllegalArgumentException();
+ }
+
+ switch (field) {
+ case LOW_WATERMARK_ID:
+ return isSetLowWatermarkId();
+ case HIGH_WATERMARK_ID:
+ return isSetHighWatermarkId();
+ case ARE_IDS_VALID:
+ return isSetAreIdsValid();
+ case IDS:
+ return isSetIds();
+ }
+ throw new IllegalStateException();
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ if (that == null)
+ return false;
+ if (that instanceof GetValidWriteIdsResult)
+ return this.equals((GetValidWriteIdsResult)that);
+ return false;
+ }
+
+ public boolean equals(GetValidWriteIdsResult that) {
+ if (that == null)
+ return false;
+
+ boolean this_present_lowWatermarkId = true;
+ boolean that_present_lowWatermarkId = true;
+ if (this_present_lowWatermarkId || that_present_lowWatermarkId) {
+ if (!(this_present_lowWatermarkId && that_present_lowWatermarkId))
+ return false;
+ if (this.lowWatermarkId != that.lowWatermarkId)
+ return false;
+ }
+
+ boolean this_present_highWatermarkId = true;
+ boolean that_present_highWatermarkId = true;
+ if (this_present_highWatermarkId || that_present_highWatermarkId) {
+ if (!(this_present_highWatermarkId && that_present_highWatermarkId))
+ return false;
+ if (this.highWatermarkId != that.highWatermarkId)
+ return false;
+ }
+
+ boolean this_present_areIdsValid = true && this.isSetAreIdsValid();
+ boolean that_present_areIdsValid = true && that.isSetAreIdsValid();
+ if (this_present_areIdsValid || that_present_areIdsValid) {
+ if (!(this_present_areIdsValid && that_present_areIdsValid))
+ return false;
+ if (this.areIdsValid != that.areIdsValid)
+ return false;
+ }
+
+ boolean this_present_ids = true && this.isSetIds();
+ boolean that_present_ids = true && that.isSetIds();
+ if (this_present_ids || that_present_ids) {
+ if (!(this_present_ids && that_present_ids))
+ return false;
+ if (!this.ids.equals(that.ids))
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ List<Object> list = new ArrayList<Object>();
+
+ boolean present_lowWatermarkId = true;
+ list.add(present_lowWatermarkId);
+ if (present_lowWatermarkId)
+ list.add(lowWatermarkId);
+
+ boolean present_highWatermarkId = true;
+ list.add(present_highWatermarkId);
+ if (present_highWatermarkId)
+ list.add(highWatermarkId);
+
+ boolean present_areIdsValid = true && (isSetAreIdsValid());
+ list.add(present_areIdsValid);
+ if (present_areIdsValid)
+ list.add(areIdsValid);
+
+ boolean present_ids = true && (isSetIds());
+ list.add(present_ids);
+ if (present_ids)
+ list.add(ids);
+
+ return list.hashCode();
+ }
+
+ @Override
+ public int compareTo(GetValidWriteIdsResult other) {
+ if (!getClass().equals(other.getClass())) {
+ return getClass().getName().compareTo(other.getClass().getName());
+ }
+
+ int lastComparison = 0;
+
+ lastComparison = Boolean.valueOf(isSetLowWatermarkId()).compareTo(other.isSetLowWatermarkId());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetLowWatermarkId()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lowWatermarkId, other.lowWatermarkId);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetHighWatermarkId()).compareTo(other.isSetHighWatermarkId());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetHighWatermarkId()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.highWatermarkId, other.highWatermarkId);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetAreIdsValid()).compareTo(other.isSetAreIdsValid());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetAreIdsValid()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.areIdsValid, other.areIdsValid);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetIds()).compareTo(other.isSetIds());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetIds()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ids, other.ids);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ return 0;
+ }
+
+ public _Fields fieldForId(int fieldId) {
+ return _Fields.findByThriftId(fieldId);
+ }
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+ schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+ schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("GetValidWriteIdsResult(");
+ boolean first = true;
+
+ sb.append("lowWatermarkId:");
+ sb.append(this.lowWatermarkId);
+ first = false;
+ if (!first) sb.append(", ");
+ sb.append("highWatermarkId:");
+ sb.append(this.highWatermarkId);
+ first = false;
+ if (isSetAreIdsValid()) {
+ if (!first) sb.append(", ");
+ sb.append("areIdsValid:");
+ sb.append(this.areIdsValid);
+ first = false;
+ }
+ if (isSetIds()) {
+ if (!first) sb.append(", ");
+ sb.append("ids:");
+ if (this.ids == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.ids);
+ }
+ first = false;
+ }
+ sb.append(")");
+ return sb.toString();
+ }
+
+ public void validate() throws org.apache.thrift.TException {
+ // check for required fields
+ if (!isSetLowWatermarkId()) {
+ throw new org.apache.thrift.protocol.TProtocolException("Required field 'lowWatermarkId' is unset! Struct:" + toString());
+ }
+
+ if (!isSetHighWatermarkId()) {
+ throw new org.apache.thrift.protocol.TProtocolException("Required field 'highWatermarkId' is unset! Struct:" + toString());
+ }
+
+ // check for sub-struct validity
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+ try {
+ write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+ try {
+ // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+ __isset_bitfield = 0;
+ read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private static class GetValidWriteIdsResultStandardSchemeFactory implements SchemeFactory {
+ public GetValidWriteIdsResultStandardScheme getScheme() {
+ return new GetValidWriteIdsResultStandardScheme();
+ }
+ }
+
+ private static class GetValidWriteIdsResultStandardScheme extends StandardScheme<GetValidWriteIdsResult> {
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot, GetValidWriteIdsResult struct) throws org.apache.thrift.TException {
+ org.apache.thrift.protocol.TField schemeField;
+ iprot.readStructBegin();
+ while (true)
+ {
+ schemeField = iprot.readFieldBegin();
+ if (schemeField.type == org.apache.thrift.protocol.TType.STOP) {
+ break;
+ }
+ switch (schemeField.id) {
+ case 1: // LOW_WATERMARK_ID
+ if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+ struct.lowWatermarkId = iprot.readI64();
+ struct.setLowWatermarkIdIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 2: // HIGH_WATERMARK_ID
+ if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+ struct.highWatermarkId = iprot.readI64();
+ struct.setHighWatermarkIdIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 3: // ARE_IDS_VALID
+ if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+ struct.areIdsValid = iprot.readBool();
+ struct.setAreIdsValidIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 4: // IDS
+ if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+ {
- org.apache.thrift.protocol.TList _list634 = iprot.readListBegin();
- struct.ids = new ArrayList<Long>(_list634.size);
- long _elem635;
- for (int _i636 = 0; _i636 < _list634.size; ++_i636)
++ org.apache.thrift.protocol.TList _list642 = iprot.readListBegin();
++ struct.ids = new ArrayList<Long>(_list642.size);
++ long _elem643;
++ for (int _i644 = 0; _i644 < _list642.size; ++_i644)
+ {
- _elem635 = iprot.readI64();
- struct.ids.add(_elem635);
++ _elem643 = iprot.readI64();
++ struct.ids.add(_elem643);
+ }
+ iprot.readListEnd();
+ }
+ struct.setIdsIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ default:
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ iprot.readFieldEnd();
+ }
+ iprot.readStructEnd();
+ struct.validate();
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot, GetValidWriteIdsResult struct) throws org.apache.thrift.TException {
+ struct.validate();
+
+ oprot.writeStructBegin(STRUCT_DESC);
+ oprot.writeFieldBegin(LOW_WATERMARK_ID_FIELD_DESC);
+ oprot.writeI64(struct.lowWatermarkId);
+ oprot.writeFieldEnd();
+ oprot.writeFieldBegin(HIGH_WATERMARK_ID_FIELD_DESC);
+ oprot.writeI64(struct.highWatermarkId);
+ oprot.writeFieldEnd();
+ if (struct.isSetAreIdsValid()) {
+ oprot.writeFieldBegin(ARE_IDS_VALID_FIELD_DESC);
+ oprot.writeBool(struct.areIdsValid);
+ oprot.writeFieldEnd();
+ }
+ if (struct.ids != null) {
+ if (struct.isSetIds()) {
+ oprot.writeFieldBegin(IDS_FIELD_DESC);
+ {
+ oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, struct.ids.size()));
- for (long _iter637 : struct.ids)
++ for (long _iter645 : struct.ids)
+ {
- oprot.writeI64(_iter637);
++ oprot.writeI64(_iter645);
+ }
+ oprot.writeListEnd();
+ }
+ oprot.writeFieldEnd();
+ }
+ }
+ oprot.writeFieldStop();
+ oprot.writeStructEnd();
+ }
+
+ }
+
+ private static class GetValidWriteIdsResultTupleSchemeFactory implements SchemeFactory {
+ public GetValidWriteIdsResultTupleScheme getScheme() {
+ return new GetValidWriteIdsResultTupleScheme();
+ }
+ }
+
+ private static class GetValidWriteIdsResultTupleScheme extends TupleScheme<GetValidWriteIdsResult> {
+
+ @Override
+ public void write(org.apache.thrift.protocol.TProtocol prot, GetValidWriteIdsResult struct) throws org.apache.thrift.TException {
+ TTupleProtocol oprot = (TTupleProtocol) prot;
+ oprot.writeI64(struct.lowWatermarkId);
+ oprot.writeI64(struct.highWatermarkId);
+ BitSet optionals = new BitSet();
+ if (struct.isSetAreIdsValid()) {
+ optionals.set(0);
+ }
+ if (struct.isSetIds()) {
+ optionals.set(1);
+ }
+ oprot.writeBitSet(optionals, 2);
+ if (struct.isSetAreIdsValid()) {
+ oprot.writeBool(struct.areIdsValid);
+ }
+ if (struct.isSetIds()) {
+ {
+ oprot.writeI32(struct.ids.size());
- for (long _iter638 : struct.ids)
++ for (long _iter646 : struct.ids)
+ {
- oprot.writeI64(_iter638);
++ oprot.writeI64(_iter646);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void read(org.apache.thrift.protocol.TProtocol prot, GetValidWriteIdsResult struct) throws org.apache.thrift.TException {
+ TTupleProtocol iprot = (TTupleProtocol) prot;
+ struct.lowWatermarkId = iprot.readI64();
+ struct.setLowWatermarkIdIsSet(true);
+ struct.highWatermarkId = iprot.readI64();
+ struct.setHighWatermarkIdIsSet(true);
+ BitSet incoming = iprot.readBitSet(2);
+ if (incoming.get(0)) {
+ struct.areIdsValid = iprot.readBool();
+ struct.setAreIdsValidIsSet(true);
+ }
+ if (incoming.get(1)) {
+ {
- org.apache.thrift.protocol.TList _list639 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, iprot.readI32());
- struct.ids = new ArrayList<Long>(_list639.size);
- long _elem640;
- for (int _i641 = 0; _i641 < _list639.size; ++_i641)
++ org.apache.thrift.protocol.TList _list647 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, iprot.readI32());
++ struct.ids = new ArrayList<Long>(_list647.size);
++ long _elem648;
++ for (int _i649 = 0; _i649 < _list647.size; ++_i649)
+ {
- _elem640 = iprot.readI64();
- struct.ids.add(_elem640);
++ _elem648 = iprot.readI64();
++ struct.ids.add(_elem648);
+ }
+ }
+ struct.setIdsIsSet(true);
+ }
+ }
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
index 9c228c7,800219f..dc6a5ad
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
@@@ -52,8 -52,7 +52,9 @@@ public class Table implements org.apach
private static final org.apache.thrift.protocol.TField TABLE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("tableType", org.apache.thrift.protocol.TType.STRING, (short)12);
private static final org.apache.thrift.protocol.TField PRIVILEGES_FIELD_DESC = new org.apache.thrift.protocol.TField("privileges", org.apache.thrift.protocol.TType.STRUCT, (short)13);
private static final org.apache.thrift.protocol.TField TEMPORARY_FIELD_DESC = new org.apache.thrift.protocol.TField("temporary", org.apache.thrift.protocol.TType.BOOL, (short)14);
- private static final org.apache.thrift.protocol.TField MM_NEXT_WRITE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("mmNextWriteId", org.apache.thrift.protocol.TType.I64, (short)15);
- private static final org.apache.thrift.protocol.TField MM_WATERMARK_WRITE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("mmWatermarkWriteId", org.apache.thrift.protocol.TType.I64, (short)16);
+ private static final org.apache.thrift.protocol.TField REWRITE_ENABLED_FIELD_DESC = new org.apache.thrift.protocol.TField("rewriteEnabled", org.apache.thrift.protocol.TType.BOOL, (short)15);
++ private static final org.apache.thrift.protocol.TField MM_NEXT_WRITE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("mmNextWriteId", org.apache.thrift.protocol.TType.I64, (short)16);
++ private static final org.apache.thrift.protocol.TField MM_WATERMARK_WRITE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("mmWatermarkWriteId", org.apache.thrift.protocol.TType.I64, (short)17);
private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
static {
@@@ -75,8 -74,7 +76,9 @@@
private String tableType; // required
private PrincipalPrivilegeSet privileges; // optional
private boolean temporary; // optional
+ private boolean rewriteEnabled; // optional
+ private long mmNextWriteId; // optional
+ private long mmWatermarkWriteId; // optional
/** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@@ -94,8 -92,7 +96,9 @@@
TABLE_TYPE((short)12, "tableType"),
PRIVILEGES((short)13, "privileges"),
TEMPORARY((short)14, "temporary"),
- MM_NEXT_WRITE_ID((short)15, "mmNextWriteId"),
- MM_WATERMARK_WRITE_ID((short)16, "mmWatermarkWriteId");
- REWRITE_ENABLED((short)15, "rewriteEnabled");
++ REWRITE_ENABLED((short)15, "rewriteEnabled"),
++ MM_NEXT_WRITE_ID((short)16, "mmNextWriteId"),
++ MM_WATERMARK_WRITE_ID((short)17, "mmWatermarkWriteId");
private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
@@@ -138,10 -135,8 +141,12 @@@
return PRIVILEGES;
case 14: // TEMPORARY
return TEMPORARY;
- case 15: // MM_NEXT_WRITE_ID
+ case 15: // REWRITE_ENABLED
+ return REWRITE_ENABLED;
++ case 16: // MM_NEXT_WRITE_ID
+ return MM_NEXT_WRITE_ID;
- case 16: // MM_WATERMARK_WRITE_ID
++ case 17: // MM_WATERMARK_WRITE_ID
+ return MM_WATERMARK_WRITE_ID;
default:
return null;
}
@@@ -186,10 -181,9 +191,11 @@@
private static final int __LASTACCESSTIME_ISSET_ID = 1;
private static final int __RETENTION_ISSET_ID = 2;
private static final int __TEMPORARY_ISSET_ID = 3;
- private static final int __MMNEXTWRITEID_ISSET_ID = 4;
- private static final int __MMWATERMARKWRITEID_ISSET_ID = 5;
+ private static final int __REWRITEENABLED_ISSET_ID = 4;
++ private static final int __MMNEXTWRITEID_ISSET_ID = 5;
++ private static final int __MMWATERMARKWRITEID_ISSET_ID = 6;
private byte __isset_bitfield = 0;
- private static final _Fields optionals[] = {_Fields.PRIVILEGES,_Fields.TEMPORARY,_Fields.MM_NEXT_WRITE_ID,_Fields.MM_WATERMARK_WRITE_ID};
- private static final _Fields optionals[] = {_Fields.PRIVILEGES,_Fields.TEMPORARY,_Fields.REWRITE_ENABLED};
++ private static final _Fields optionals[] = {_Fields.PRIVILEGES,_Fields.TEMPORARY,_Fields.REWRITE_ENABLED,_Fields.MM_NEXT_WRITE_ID,_Fields.MM_WATERMARK_WRITE_ID};
public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
static {
Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@@ -224,10 -218,8 +230,12 @@@
new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, PrincipalPrivilegeSet.class)));
tmpMap.put(_Fields.TEMPORARY, new org.apache.thrift.meta_data.FieldMetaData("temporary", org.apache.thrift.TFieldRequirementType.OPTIONAL,
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ tmpMap.put(_Fields.REWRITE_ENABLED, new org.apache.thrift.meta_data.FieldMetaData("rewriteEnabled", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ tmpMap.put(_Fields.MM_NEXT_WRITE_ID, new org.apache.thrift.meta_data.FieldMetaData("mmNextWriteId", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+ tmpMap.put(_Fields.MM_WATERMARK_WRITE_ID, new org.apache.thrift.meta_data.FieldMetaData("mmWatermarkWriteId", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
metaDataMap = Collections.unmodifiableMap(tmpMap);
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Table.class, metaDataMap);
}
@@@ -313,8 -305,7 +321,9 @@@
this.privileges = new PrincipalPrivilegeSet(other.privileges);
}
this.temporary = other.temporary;
+ this.rewriteEnabled = other.rewriteEnabled;
+ this.mmNextWriteId = other.mmNextWriteId;
+ this.mmWatermarkWriteId = other.mmWatermarkWriteId;
}
public Table deepCopy() {
@@@ -341,10 -332,8 +350,12 @@@
this.privileges = null;
this.temporary = false;
+ setRewriteEnabledIsSet(false);
+ this.rewriteEnabled = false;
+ setMmNextWriteIdIsSet(false);
+ this.mmNextWriteId = 0;
+ setMmWatermarkWriteIdIsSet(false);
+ this.mmWatermarkWriteId = 0;
}
public String getTableName() {
@@@ -691,50 -680,28 +702,72 @@@
__isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TEMPORARY_ISSET_ID, value);
}
+ public boolean isRewriteEnabled() {
+ return this.rewriteEnabled;
+ }
+
+ public void setRewriteEnabled(boolean rewriteEnabled) {
+ this.rewriteEnabled = rewriteEnabled;
+ setRewriteEnabledIsSet(true);
+ }
+
+ public void unsetRewriteEnabled() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __REWRITEENABLED_ISSET_ID);
+ }
+
+ /** Returns true if field rewriteEnabled is set (has been assigned a value) and false otherwise */
+ public boolean isSetRewriteEnabled() {
+ return EncodingUtils.testBit(__isset_bitfield, __REWRITEENABLED_ISSET_ID);
+ }
+
+ public void setRewriteEnabledIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __REWRITEENABLED_ISSET_ID, value);
+ }
+
+ public long getMmNextWriteId() {
+ return this.mmNextWriteId;
+ }
+
+ public void setMmNextWriteId(long mmNextWriteId) {
+ this.mmNextWriteId = mmNextWriteId;
+ setMmNextWriteIdIsSet(true);
+ }
+
+ public void unsetMmNextWriteId() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MMNEXTWRITEID_ISSET_ID);
+ }
+
+ /** Returns true if field mmNextWriteId is set (has been assigned a value) and false otherwise */
+ public boolean isSetMmNextWriteId() {
+ return EncodingUtils.testBit(__isset_bitfield, __MMNEXTWRITEID_ISSET_ID);
+ }
+
+ public void setMmNextWriteIdIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MMNEXTWRITEID_ISSET_ID, value);
+ }
+
+ public long getMmWatermarkWriteId() {
+ return this.mmWatermarkWriteId;
+ }
+
+ public void setMmWatermarkWriteId(long mmWatermarkWriteId) {
+ this.mmWatermarkWriteId = mmWatermarkWriteId;
+ setMmWatermarkWriteIdIsSet(true);
+ }
+
+ public void unsetMmWatermarkWriteId() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MMWATERMARKWRITEID_ISSET_ID);
+ }
+
+ /** Returns true if field mmWatermarkWriteId is set (has been assigned a value) and false otherwise */
+ public boolean isSetMmWatermarkWriteId() {
+ return EncodingUtils.testBit(__isset_bitfield, __MMWATERMARKWRITEID_ISSET_ID);
+ }
+
+ public void setMmWatermarkWriteIdIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MMWATERMARKWRITEID_ISSET_ID, value);
+ }
+
public void setFieldValue(_Fields field, Object value) {
switch (field) {
case TABLE_NAME:
@@@ -849,22 -816,14 +882,30 @@@
}
break;
+ case REWRITE_ENABLED:
+ if (value == null) {
+ unsetRewriteEnabled();
+ } else {
+ setRewriteEnabled((Boolean)value);
+ }
+ break;
+
+ case MM_NEXT_WRITE_ID:
+ if (value == null) {
+ unsetMmNextWriteId();
+ } else {
+ setMmNextWriteId((Long)value);
+ }
+ break;
+
+ case MM_WATERMARK_WRITE_ID:
+ if (value == null) {
+ unsetMmWatermarkWriteId();
+ } else {
+ setMmWatermarkWriteId((Long)value);
+ }
+ break;
+
}
}
@@@ -912,12 -871,9 +953,15 @@@
case TEMPORARY:
return isTemporary();
+ case REWRITE_ENABLED:
+ return isRewriteEnabled();
+
+ case MM_NEXT_WRITE_ID:
+ return getMmNextWriteId();
+
+ case MM_WATERMARK_WRITE_ID:
+ return getMmWatermarkWriteId();
+
}
throw new IllegalStateException();
}
@@@ -957,10 -913,8 +1001,12 @@@
return isSetPrivileges();
case TEMPORARY:
return isSetTemporary();
+ case REWRITE_ENABLED:
+ return isSetRewriteEnabled();
+ case MM_NEXT_WRITE_ID:
+ return isSetMmNextWriteId();
+ case MM_WATERMARK_WRITE_ID:
+ return isSetMmWatermarkWriteId();
}
throw new IllegalStateException();
}
@@@ -1104,24 -1058,15 +1150,33 @@@
return false;
}
+ boolean this_present_rewriteEnabled = true && this.isSetRewriteEnabled();
+ boolean that_present_rewriteEnabled = true && that.isSetRewriteEnabled();
+ if (this_present_rewriteEnabled || that_present_rewriteEnabled) {
+ if (!(this_present_rewriteEnabled && that_present_rewriteEnabled))
+ return false;
+ if (this.rewriteEnabled != that.rewriteEnabled)
+ return false;
+ }
+
+ boolean this_present_mmNextWriteId = true && this.isSetMmNextWriteId();
+ boolean that_present_mmNextWriteId = true && that.isSetMmNextWriteId();
+ if (this_present_mmNextWriteId || that_present_mmNextWriteId) {
+ if (!(this_present_mmNextWriteId && that_present_mmNextWriteId))
+ return false;
+ if (this.mmNextWriteId != that.mmNextWriteId)
+ return false;
+ }
+
+ boolean this_present_mmWatermarkWriteId = true && this.isSetMmWatermarkWriteId();
+ boolean that_present_mmWatermarkWriteId = true && that.isSetMmWatermarkWriteId();
+ if (this_present_mmWatermarkWriteId || that_present_mmWatermarkWriteId) {
+ if (!(this_present_mmWatermarkWriteId && that_present_mmWatermarkWriteId))
+ return false;
+ if (this.mmWatermarkWriteId != that.mmWatermarkWriteId)
+ return false;
+ }
+
return true;
}
@@@ -1199,16 -1144,11 +1254,21 @@@
if (present_temporary)
list.add(temporary);
+ boolean present_rewriteEnabled = true && (isSetRewriteEnabled());
+ list.add(present_rewriteEnabled);
+ if (present_rewriteEnabled)
+ list.add(rewriteEnabled);
+
+ boolean present_mmNextWriteId = true && (isSetMmNextWriteId());
+ list.add(present_mmNextWriteId);
+ if (present_mmNextWriteId)
+ list.add(mmNextWriteId);
+
+ boolean present_mmWatermarkWriteId = true && (isSetMmWatermarkWriteId());
+ list.add(present_mmWatermarkWriteId);
+ if (present_mmWatermarkWriteId)
+ list.add(mmWatermarkWriteId);
+
return list.hashCode();
}
@@@ -1360,26 -1300,16 +1420,36 @@@
return lastComparison;
}
}
+ lastComparison = Boolean.valueOf(isSetRewriteEnabled()).compareTo(other.isSetRewriteEnabled());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetRewriteEnabled()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rewriteEnabled, other.rewriteEnabled);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetMmNextWriteId()).compareTo(other.isSetMmNextWriteId());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetMmNextWriteId()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.mmNextWriteId, other.mmNextWriteId);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetMmWatermarkWriteId()).compareTo(other.isSetMmWatermarkWriteId());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetMmWatermarkWriteId()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.mmWatermarkWriteId, other.mmWatermarkWriteId);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
return 0;
}
@@@ -1499,18 -1429,12 +1569,24 @@@
sb.append(this.temporary);
first = false;
}
+ if (isSetRewriteEnabled()) {
+ if (!first) sb.append(", ");
+ sb.append("rewriteEnabled:");
+ sb.append(this.rewriteEnabled);
+ first = false;
+ }
+ if (isSetMmNextWriteId()) {
+ if (!first) sb.append(", ");
+ sb.append("mmNextWriteId:");
+ sb.append(this.mmNextWriteId);
+ first = false;
+ }
+ if (isSetMmWatermarkWriteId()) {
+ if (!first) sb.append(", ");
+ sb.append("mmWatermarkWriteId:");
+ sb.append(this.mmWatermarkWriteId);
+ first = false;
+ }
sb.append(")");
return sb.toString();
}
@@@ -1699,22 -1623,14 +1775,30 @@@
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
break;
- case 15: // MM_NEXT_WRITE_ID
+ case 15: // REWRITE_ENABLED
+ if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+ struct.rewriteEnabled = iprot.readBool();
+ struct.setRewriteEnabledIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
++ case 16: // MM_NEXT_WRITE_ID
+ if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+ struct.mmNextWriteId = iprot.readI64();
+ struct.setMmNextWriteIdIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
- case 16: // MM_WATERMARK_WRITE_ID
++ case 17: // MM_WATERMARK_WRITE_ID
+ if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+ struct.mmWatermarkWriteId = iprot.readI64();
+ struct.setMmWatermarkWriteIdIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
default:
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
@@@ -1809,16 -1725,11 +1893,21 @@@
oprot.writeBool(struct.temporary);
oprot.writeFieldEnd();
}
+ if (struct.isSetRewriteEnabled()) {
+ oprot.writeFieldBegin(REWRITE_ENABLED_FIELD_DESC);
+ oprot.writeBool(struct.rewriteEnabled);
+ oprot.writeFieldEnd();
+ }
+ if (struct.isSetMmNextWriteId()) {
+ oprot.writeFieldBegin(MM_NEXT_WRITE_ID_FIELD_DESC);
+ oprot.writeI64(struct.mmNextWriteId);
+ oprot.writeFieldEnd();
+ }
+ if (struct.isSetMmWatermarkWriteId()) {
+ oprot.writeFieldBegin(MM_WATERMARK_WRITE_ID_FIELD_DESC);
+ oprot.writeI64(struct.mmWatermarkWriteId);
+ oprot.writeFieldEnd();
+ }
oprot.writeFieldStop();
oprot.writeStructEnd();
}
@@@ -1879,13 -1790,10 +1968,16 @@@
if (struct.isSetTemporary()) {
optionals.set(13);
}
- if (struct.isSetMmNextWriteId()) {
+ if (struct.isSetRewriteEnabled()) {
optionals.set(14);
}
- if (struct.isSetMmWatermarkWriteId()) {
- oprot.writeBitSet(optionals, 15);
++ if (struct.isSetMmNextWriteId()) {
+ optionals.set(15);
+ }
- oprot.writeBitSet(optionals, 16);
++ if (struct.isSetMmWatermarkWriteId()) {
++ optionals.set(16);
++ }
++ oprot.writeBitSet(optionals, 17);
if (struct.isSetTableName()) {
oprot.writeString(struct.tableName);
}
@@@ -1941,18 -1849,15 +2033,21 @@@
if (struct.isSetTemporary()) {
oprot.writeBool(struct.temporary);
}
+ if (struct.isSetRewriteEnabled()) {
+ oprot.writeBool(struct.rewriteEnabled);
+ }
+ if (struct.isSetMmNextWriteId()) {
+ oprot.writeI64(struct.mmNextWriteId);
+ }
+ if (struct.isSetMmWatermarkWriteId()) {
+ oprot.writeI64(struct.mmWatermarkWriteId);
+ }
}
@Override
public void read(org.apache.thrift.protocol.TProtocol prot, Table struct) throws org.apache.thrift.TException {
TTupleProtocol iprot = (TTupleProtocol) prot;
- BitSet incoming = iprot.readBitSet(16);
- BitSet incoming = iprot.readBitSet(15);
++ BitSet incoming = iprot.readBitSet(17);
if (incoming.get(0)) {
struct.tableName = iprot.readString();
struct.setTableNameIsSet(true);
@@@ -2033,13 -1938,9 +2128,17 @@@
struct.setTemporaryIsSet(true);
}
if (incoming.get(14)) {
+ struct.rewriteEnabled = iprot.readBool();
+ struct.setRewriteEnabledIsSet(true);
+ }
++ if (incoming.get(15)) {
+ struct.mmNextWriteId = iprot.readI64();
+ struct.setMmNextWriteIdIsSet(true);
+ }
- if (incoming.get(15)) {
++ if (incoming.get(16)) {
+ struct.mmWatermarkWriteId = iprot.readI64();
+ struct.setMmWatermarkWriteIdIsSet(true);
+ }
}
}
[32/50] [abbrv] hive git commit: HIVE-15517: NOT (x <=> y) returns
NULL if x or y is NULL (Pengcheng Xiong, reviewed by Ashutosh Chauhan)
Posted by se...@apache.org.
HIVE-15517: NOT (x <=> y) returns NULL if x or y is NULL (Pengcheng Xiong, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/89664c08
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/89664c08
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/89664c08
Branch: refs/heads/hive-14535
Commit: 89664c086602b91bb79d9d844408ce981db94819
Parents: 0c3d5da
Author: Pengcheng Xiong <px...@apache.org>
Authored: Wed Feb 1 10:20:39 2017 -0800
Committer: Pengcheng Xiong <px...@apache.org>
Committed: Wed Feb 1 10:20:39 2017 -0800
----------------------------------------------------------------------
.../ql/udf/generic/GenericUDFOPEqualNS.java | 5 +++
.../ql/udf/generic/GenericUDFOPNotEqualNS.java | 45 ++++++++++++++++++++
ql/src/test/queries/clientpositive/equal_ns.q | 6 +++
.../test/results/clientpositive/equal_ns.q.out | 29 +++++++++++++
4 files changed, 85 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/89664c08/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualNS.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualNS.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualNS.java
index 3707a33..7574d2c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualNS.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualNS.java
@@ -40,4 +40,9 @@ public class GenericUDFOPEqualNS extends GenericUDFOPEqual {
}
return super.evaluate(arguments);
}
+
+ @Override
+ public GenericUDF negative() {
+ return new GenericUDFOPNotEqualNS();
+ }
}
http://git-wip-us.apache.org/repos/asf/hive/blob/89664c08/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqualNS.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqualNS.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqualNS.java
new file mode 100644
index 0000000..4e89423
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqualNS.java
@@ -0,0 +1,45 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.udf.generic;
+
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+
+// this function is for internal use only
+public class GenericUDFOPNotEqualNS extends GenericUDFOPNotEqual {
+
+ @Override
+ public Object evaluate(DeferredObject[] arguments) throws HiveException {
+ Object o0 = arguments[0].get();
+ Object o1 = arguments[1].get();
+ if (o0 == null && o1 == null) {
+ result.set(false);
+ return result;
+ }
+ if (o0 == null || o1 == null) {
+ result.set(true);
+ return result;
+ }
+ return super.evaluate(arguments);
+ }
+
+ @Override
+ public GenericUDF negative() {
+ return new GenericUDFOPEqualNS();
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/89664c08/ql/src/test/queries/clientpositive/equal_ns.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/equal_ns.q b/ql/src/test/queries/clientpositive/equal_ns.q
new file mode 100644
index 0000000..910d089
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/equal_ns.q
@@ -0,0 +1,6 @@
+set hive.mapred.mode=nonstrict;
+-- SORT_QUERY_RESULTS
+
+create table test(x string, y string);
+insert into test values ('q', 'q'), ('q', 'w'), (NULL, 'q'), ('q', NULL), (NULL, NULL);
+select *, x<=>y, not (x<=> y), (x <=> y) = false from test;
http://git-wip-us.apache.org/repos/asf/hive/blob/89664c08/ql/src/test/results/clientpositive/equal_ns.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/equal_ns.q.out b/ql/src/test/results/clientpositive/equal_ns.q.out
new file mode 100644
index 0000000..6a38c05
--- /dev/null
+++ b/ql/src/test/results/clientpositive/equal_ns.q.out
@@ -0,0 +1,29 @@
+PREHOOK: query: create table test(x string, y string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test
+POSTHOOK: query: create table test(x string, y string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test
+PREHOOK: query: insert into test values ('q', 'q'), ('q', 'w'), (NULL, 'q'), ('q', NULL), (NULL, NULL)
+PREHOOK: type: QUERY
+PREHOOK: Output: default@test
+POSTHOOK: query: insert into test values ('q', 'q'), ('q', 'w'), (NULL, 'q'), ('q', NULL), (NULL, NULL)
+POSTHOOK: type: QUERY
+POSTHOOK: Output: default@test
+POSTHOOK: Lineage: test.x SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: test.y SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+PREHOOK: query: select *, x<=>y, not (x<=> y), (x <=> y) = false from test
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test
+#### A masked pattern was here ####
+POSTHOOK: query: select *, x<=>y, not (x<=> y), (x <=> y) = false from test
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test
+#### A masked pattern was here ####
+NULL NULL true false false
+NULL q false true true
+q NULL false true true
+q q true false false
+q w false true true
[15/50] [abbrv] hive git commit: HIVE-15750: Fail schema discovery
when two columns have similar names with different casing in Druid (Jesus
Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Posted by se...@apache.org.
HIVE-15750: Fail schema discovery when two columns have similar names with different casing in Druid (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f7bc7648
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f7bc7648
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f7bc7648
Branch: refs/heads/hive-14535
Commit: f7bc76486b3b7063ccdf25062ba88feda492c6b8
Parents: eb29bd1
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Mon Jan 30 13:36:36 2017 +0000
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Tue Jan 31 10:16:46 2017 +0000
----------------------------------------------------------------------
.../hadoop/hive/druid/QTestDruidSerDe2.java | 92 ++++++++++++++++++++
.../hive/druid/QTestDruidStorageHandler2.java | 34 ++++++++
ql/src/test/queries/clientnegative/druid_case.q | 6 ++
.../results/clientnegative/druid_case.q.out | 7 ++
4 files changed, 139 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/f7bc7648/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidSerDe2.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidSerDe2.java b/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidSerDe2.java
new file mode 100644
index 0000000..06b2072
--- /dev/null
+++ b/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidSerDe2.java
@@ -0,0 +1,92 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.druid;
+
+import java.util.List;
+
+import org.apache.hadoop.hive.druid.serde.DruidSerDe;
+import org.apache.hadoop.hive.serde2.SerDeException;
+import org.apache.hadoop.util.StringUtils;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+
+import io.druid.query.metadata.metadata.SegmentAnalysis;
+import io.druid.query.metadata.metadata.SegmentMetadataQuery;
+
+/**
+ * Druid SerDe to be used in tests.
+ */
+public class QTestDruidSerDe2 extends DruidSerDe {
+
+ // Request :
+ // "{\"queryType\":\"segmentMetadata\",\"dataSource\":{\"type\":\"table\",\"name\":\"wikipedia\"},"
+ // + "\"intervals\":{\"type\":\"intervals\","
+ // + "\"intervals\":[\"-146136543-09-08T00:30:34.096-07:52:58/146140482-04-24T08:36:27.903-07:00\"]},"
+ // + "\"toInclude\":{\"type\":\"all\"},\"merge\":true,\"context\":null,\"analysisTypes\":[],"
+ // + "\"usingDefaultInterval\":true,\"lenientAggregatorMerge\":false,\"descending\":false}";
+ private static final String RESPONSE =
+ "[ {\r\n "
+ + " \"id\" : \"merged\",\r\n "
+ + " \"intervals\" : [ \"2010-01-01T00:00:00.000Z/2015-12-31T00:00:00.000Z\" ],\r\n "
+ + " \"columns\" : {\r\n "
+ + " \"__time\" : { \"type\" : \"LONG\", \"hasMultipleValues\" : false, \"size\" : 407240380, \"cardinality\" : null, \"errorMessage\" : null },\r\n "
+ + " \"robot\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : 1944, \"errorMessage\" : null },\r\n "
+ + " \"namespace\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : true, \"size\" : 100000, \"cardinality\" : 1504, \"errorMessage\" : null },\r\n "
+ + " \"anonymous\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : 1944, \"errorMessage\" : null },\r\n "
+ // Next column has a similar name as previous, but different casing.
+ // This is allowed in Druid, but it should fail in Hive.
+ + " \"Anonymous\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : 1944, \"errorMessage\" : null },\r\n "
+ + " \"page\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : 1944, \"errorMessage\" : null },\r\n "
+ + " \"language\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : 1944, \"errorMessage\" : null },\r\n "
+ + " \"newpage\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : 1944, \"errorMessage\" : null },\r\n "
+ + " \"user\" : { \"type\" : \"STRING\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : 1944, \"errorMessage\" : null },\r\n "
+ + " \"count\" : { \"type\" : \"FLOAT\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : null, \"errorMessage\" : null },\r\n "
+ + " \"added\" : { \"type\" : \"FLOAT\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : null, \"errorMessage\" : null },\r\n "
+ + " \"delta\" : { \"type\" : \"FLOAT\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : null, \"errorMessage\" : null },\r\n "
+ + " \"variation\" : { \"type\" : \"FLOAT\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : null, \"errorMessage\" : null },\r\n "
+ + " \"deleted\" : { \"type\" : \"FLOAT\", \"hasMultipleValues\" : false, \"size\" : 100000, \"cardinality\" : null, \"errorMessage\" : null }\r\n "
+ + " },\r\n "
+ + " \"aggregators\" : {\r\n "
+ + " \"count\" : { \"type\" : \"longSum\", \"name\" : \"count\", \"fieldName\" : \"count\" },\r\n "
+ + " \"added\" : { \"type\" : \"doubleSum\", \"name\" : \"added\", \"fieldName\" : \"added\" },\r\n "
+ + " \"delta\" : { \"type\" : \"doubleSum\", \"name\" : \"delta\", \"fieldName\" : \"delta\" },\r\n "
+ + " \"variation\" : { \"type\" : \"doubleSum\", \"name\" : \"variation\", \"fieldName\" : \"variation\" },\r\n "
+ + " \"deleted\" : { \"type\" : \"doubleSum\", \"name\" : \"deleted\", \"fieldName\" : \"deleted\" }\r\n "
+ + " },\r\n "
+ + " \"queryGranularity\" : {\r\n \"type\": \"none\"\r\n },\r\n "
+ + " \"size\" : 300000,\r\n "
+ + " \"numRows\" : 5000000\r\n} ]";
+
+ /* Submits the request and returns */
+ @Override
+ protected SegmentAnalysis submitMetadataRequest(String address, SegmentMetadataQuery query)
+ throws SerDeException {
+ // Retrieve results
+ List<SegmentAnalysis> resultsList;
+ try {
+ resultsList = DruidStorageHandlerUtils.JSON_MAPPER.readValue(RESPONSE,
+ new TypeReference<List<SegmentAnalysis>>() {
+ }
+ );
+ } catch (Exception e) {
+ throw new SerDeException(StringUtils.stringifyException(e));
+ }
+ return resultsList.get(0);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/f7bc7648/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidStorageHandler2.java
----------------------------------------------------------------------
diff --git a/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidStorageHandler2.java b/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidStorageHandler2.java
new file mode 100644
index 0000000..6ac4df9
--- /dev/null
+++ b/druid-handler/src/test/org/apache/hadoop/hive/druid/QTestDruidStorageHandler2.java
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.druid;
+
+import org.apache.hadoop.hive.serde2.AbstractSerDe;
+
+/**
+ * Storage handler for Druid to be used in tests. It cannot connect to
+ * Druid, and thus it cannot execute queries.
+ */
+@SuppressWarnings("deprecation")
+public class QTestDruidStorageHandler2 extends DruidStorageHandler {
+
+ @Override
+ public Class<? extends AbstractSerDe> getSerDeClass() {
+ return QTestDruidSerDe2.class;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/f7bc7648/ql/src/test/queries/clientnegative/druid_case.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/druid_case.q b/ql/src/test/queries/clientnegative/druid_case.q
new file mode 100644
index 0000000..4828bf8
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/druid_case.q
@@ -0,0 +1,6 @@
+set hive.strict.checks.cartesian.product=false;
+set hive.druid.broker.address.default=localhost.test;
+
+CREATE EXTERNAL TABLE druid_table_1
+STORED BY 'org.apache.hadoop.hive.druid.QTestDruidStorageHandler2'
+TBLPROPERTIES ("druid.datasource" = "wikipedia");
http://git-wip-us.apache.org/repos/asf/hive/blob/f7bc7648/ql/src/test/results/clientnegative/druid_case.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/druid_case.q.out b/ql/src/test/results/clientnegative/druid_case.q.out
new file mode 100644
index 0000000..457028b
--- /dev/null
+++ b/ql/src/test/results/clientnegative/druid_case.q.out
@@ -0,0 +1,7 @@
+PREHOOK: query: CREATE EXTERNAL TABLE druid_table_1
+STORED BY 'org.apache.hadoop.hive.druid.QTestDruidStorageHandler2'
+TBLPROPERTIES ("druid.datasource" = "wikipedia")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@druid_table_1
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hive.ql.metadata.HiveException: Duplicate column name anonymous in the table definition.
[12/50] [abbrv] hive git commit: HIVE-14949 Enforce that
target:source is not 1:N (Eugene Koifman, reviewed by Alan Gates)
Posted by se...@apache.org.
HIVE-14949 Enforce that target:source is not 1:N (Eugene Koifman, reviewed by Alan Gates)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/e3b10c1f
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/e3b10c1f
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/e3b10c1f
Branch: refs/heads/hive-14535
Commit: e3b10c1fcb097242b6391aa6deb097de1581fd56
Parents: 8db19d1
Author: Eugene Koifman <ek...@hortonworks.com>
Authored: Mon Jan 30 12:29:12 2017 -0800
Committer: Eugene Koifman <ek...@hortonworks.com>
Committed: Mon Jan 30 12:29:40 2017 -0800
----------------------------------------------------------------------
.../org/apache/hadoop/hive/conf/HiveConf.java | 4 +
.../hadoop/hive/ql/exec/FunctionRegistry.java | 1 +
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 2 +-
.../ql/parse/UpdateDeleteSemanticAnalyzer.java | 77 +++++++++++++++--
.../generic/GenericUDFCardinalityViolation.java | 64 ++++++++++++++
.../apache/hadoop/hive/ql/TestTxnCommands.java | 37 +++++++-
.../apache/hadoop/hive/ql/TestTxnCommands2.java | 2 +
.../results/clientpositive/acid_subquery.q.out | 3 +
.../results/clientpositive/llap/sqlmerge.q.out | 91 ++++++++++++++++----
.../results/clientpositive/show_functions.q.out | 2 +
10 files changed, 255 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index 4e83867..586e693 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -1946,6 +1946,10 @@ public class HiveConf extends Configuration {
new TimeValidator(TimeUnit.MILLISECONDS), "Time interval describing how often the reaper runs"),
WRITE_SET_REAPER_INTERVAL("hive.writeset.reaper.interval", "60s",
new TimeValidator(TimeUnit.MILLISECONDS), "Frequency of WriteSet reaper runs"),
+
+ MERGE_CARDINALITY_VIOLATION_CHECK("hive.merge.cardinality.check", true,
+ "Set to true to ensure that each SQL Merge statement ensures that for each row in the target\n" +
+ "table there is at most 1 matching row in the source table per SQL Specification."),
// For Druid storage handler
HIVE_DRUID_INDEXING_GRANULARITY("hive.druid.indexer.segments.granularity", "DAY",
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
index e166eee..0f05160 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
@@ -465,6 +465,7 @@ public final class FunctionRegistry {
system.registerGenericUDF("printf", GenericUDFPrintf.class);
system.registerGenericUDF("greatest", GenericUDFGreatest.class);
system.registerGenericUDF("least", GenericUDFLeast.class);
+ system.registerGenericUDF("cardinality_violation", GenericUDFCardinalityViolation.class);
system.registerGenericUDF("from_utc_timestamp", GenericUDFFromUtcTimestamp.class);
system.registerGenericUDF("to_utc_timestamp", GenericUDFToUtcTimestamp.class);
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 6249475..6c0f300 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -859,7 +859,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
}
/**
- * Generate a temp table out of a value clause
+ * Generate a temp table out of a values clause
* See also {@link #preProcessForInsert(ASTNode, QB)}
*/
private ASTNode genValuesTempTable(ASTNode originalFrom, QB qb) throws SemanticException {
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
index 79355ba..f102786 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
@@ -29,9 +29,12 @@ import java.util.Map;
import java.util.Set;
import org.antlr.runtime.TokenRewriteStream;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.metastore.TableType;
+import org.apache.hadoop.hive.metastore.Warehouse;
import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.MetaException;
import org.apache.hadoop.hive.ql.Context;
import org.apache.hadoop.hive.ql.ErrorMsg;
import org.apache.hadoop.hive.ql.QueryState;
@@ -127,16 +130,19 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
/**
* Append list of partition columns to Insert statement, i.e. the 2nd set of partCol1,partCol2
* INSERT INTO T PARTITION(partCol1,partCol2...) SELECT col1, ... partCol1,partCol2...
- * @param targetName simple target table name (i.e. name or alias)
+ * @param target target table
*/
- private void addPartitionColsToSelect(List<FieldSchema> partCols, StringBuilder rewrittenQueryStr, String targetName) {
+ private void addPartitionColsToSelect(List<FieldSchema> partCols, StringBuilder rewrittenQueryStr,
+ ASTNode target) throws SemanticException {
+ String targetName = target != null ? getSimpleTableName(target) : null;
+
// If the table is partitioned, we need to select the partition columns as well.
if (partCols != null) {
for (FieldSchema fschema : partCols) {
rewrittenQueryStr.append(", ");
//would be nice if there was a way to determine if quotes are needed
if(targetName != null) {
- rewrittenQueryStr.append(HiveUtils.unparseIdentifier(targetName, this.conf)).append('.');
+ rewrittenQueryStr.append(targetName).append('.');
}
rewrittenQueryStr.append(HiveUtils.unparseIdentifier(fschema.getName(), this.conf));
}
@@ -690,13 +696,15 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
if(numWhenMatchedDeleteClauses + numWhenMatchedUpdateClauses == 2 && extraPredicate == null) {
throw new SemanticException(ErrorMsg.MERGE_PREDIACTE_REQUIRED, ctx.getCmd());
}
-
+ handleCardinalityViolation(rewrittenQueryStr, target, onClauseAsText, targetTable);
ReparseResult rr = parseRewrittenQuery(rewrittenQueryStr, ctx.getCmd());
Context rewrittenCtx = rr.rewrittenCtx;
ASTNode rewrittenTree = rr.rewrittenTree;
//set dest name mapping on new context
- for(int insClauseIdx = 1, whenClauseIdx = 0; insClauseIdx < rewrittenTree.getChildCount(); insClauseIdx++, whenClauseIdx++) {
+ for(int insClauseIdx = 1, whenClauseIdx = 0;
+ insClauseIdx < rewrittenTree.getChildCount() - 1/*skip cardinality violation clause*/;
+ insClauseIdx++, whenClauseIdx++) {
//we've added Insert clauses in order or WHEN items in whenClauses
ASTNode insertClause = (ASTNode) rewrittenTree.getChild(insClauseIdx);
switch (getWhenClauseOperation(whenClauses.get(whenClauseIdx)).getType()) {
@@ -810,6 +818,61 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
*/
return targetTable.equals(entity.getTable());
}
+
+ /**
+ * Per SQL Spec ISO/IEC 9075-2:2011(E) Section 14.2 under "General Rules" Item 6/Subitem a/Subitem 2/Subitem B,
+ * an error should be raised if > 1 row of "source" matches the same row in "target".
+ * This should not affect the runtime of the query as it's running in parallel with other
+ * branches of the multi-insert. It won't actually write any data to merge_tmp_table since the
+ * cardinality_violation() UDF throws an error whenever it's called killing the query
+ */
+ private void handleCardinalityViolation(StringBuilder rewrittenQueryStr, ASTNode target,
+ String onClauseAsString, Table targetTable)
+ throws SemanticException {
+ if(!conf.getBoolVar(HiveConf.ConfVars.MERGE_CARDINALITY_VIOLATION_CHECK)) {
+ LOG.info("Merge statement cardinality violation check is disabled: " +
+ HiveConf.ConfVars.MERGE_CARDINALITY_VIOLATION_CHECK.varname);
+ return;
+ }
+ //this is a tmp table and thus Session scoped and acid requires SQL statement to be serial in a
+ // given session, i.e. the name can be fixed across all invocations
+ String tableName = "merge_tmp_table";
+ rewrittenQueryStr.append("\nINSERT INTO ").append(tableName)
+ .append("\n SELECT cardinality_violation(")
+ .append(getSimpleTableName(target)).append(".ROW__ID");
+ addPartitionColsToSelect(targetTable.getPartCols(), rewrittenQueryStr, target);
+
+ rewrittenQueryStr.append(")\n WHERE ").append(onClauseAsString)
+ .append(" GROUP BY ").append(getSimpleTableName(target)).append(".ROW__ID");
+
+ addPartitionColsToSelect(targetTable.getPartCols(), rewrittenQueryStr, target);
+
+ rewrittenQueryStr.append(" HAVING count(*) > 1");
+ //say table T has partiton p, we are generating
+ //select cardinality_violation(ROW_ID, p) WHERE ... GROUP BY ROW__ID, p
+ //the Group By args are passed to cardinality_violation to add the violating value to the error msg
+ try {
+ if (null == db.getTable(tableName, false)) {
+ StorageFormat format = new StorageFormat(conf);
+ format.processStorageFormat("TextFile");
+ Table table = db.newTable(tableName);
+ table.setSerializationLib(format.getSerde());
+ List<FieldSchema> fields = new ArrayList<FieldSchema>();
+ fields.add(new FieldSchema("val", "int", null));
+ table.setFields(fields);
+ table.setDataLocation(Warehouse.getDnsPath(new Path(SessionState.get().getTempTableSpace(),
+ tableName), conf));
+ table.getTTable().setTemporary(true);
+ table.setStoredAsSubDirectories(false);
+ table.setInputFormatClass(format.getInputFormat());
+ table.setOutputFormatClass(format.getOutputFormat());
+ db.createTable(table, true);
+ }
+ }
+ catch(HiveException|MetaException e) {
+ throw new SemanticException(e.getMessage(), e);
+ }
+ }
/**
* @param onClauseAsString - because there is no clone() and we need to use in multiple places
* @param deleteExtraPredicate - see notes at caller
@@ -849,7 +912,7 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
rewrittenQueryStr.append(getSimpleTableName(target)).append(".").append(HiveUtils.unparseIdentifier(name, this.conf));
}
}
- addPartitionColsToSelect(targetTable.getPartCols(), rewrittenQueryStr, targetName);
+ addPartitionColsToSelect(targetTable.getPartCols(), rewrittenQueryStr, target);
rewrittenQueryStr.append("\n WHERE ").append(onClauseAsString);
String extraPredicate = getWhenClausePredicate(whenMatchedUpdateClause);
if(extraPredicate != null) {
@@ -883,7 +946,7 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
addPartitionColsToInsert(partCols, rewrittenQueryStr);
rewrittenQueryStr.append(" -- delete clause\n select ").append(targetName).append(".ROW__ID ");
- addPartitionColsToSelect(partCols, rewrittenQueryStr, targetName);
+ addPartitionColsToSelect(partCols, rewrittenQueryStr, target);
rewrittenQueryStr.append("\n WHERE ").append(onClauseAsString);
String extraPredicate = getWhenClausePredicate(whenMatchedDeleteClause);
if(extraPredicate != null) {
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCardinalityViolation.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCardinalityViolation.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCardinalityViolation.java
new file mode 100644
index 0000000..0724ff4e
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCardinalityViolation.java
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.udf.generic;
+
+import java.util.ArrayList;
+
+import org.apache.hadoop.hive.ql.exec.Description;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters.Converter;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.VoidObjectInspector;
+import org.apache.logging.log4j.core.layout.StringBuilderEncoder;
+
+/**
+ * GenericUDFArray.
+ *
+ */
+@Description(name = "cardinality_violation",
+ value = "_FUNC_(n0, n1...) - raises Cardinality Violation")
+public class GenericUDFCardinalityViolation extends GenericUDF {
+ private transient Converter[] converters;
+ private transient ArrayList<Object> ret = new ArrayList<Object>();
+
+ @Override
+ public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException {
+ return PrimitiveObjectInspectorFactory.javaIntObjectInspector;
+ }
+
+ @Override
+ public Object evaluate(DeferredObject[] arguments) throws HiveException {
+ StringBuilder nonUniqueKey = new StringBuilder();
+ for(DeferredObject t : arguments) {
+ if(nonUniqueKey.length() > 0) {nonUniqueKey.append(','); }
+ nonUniqueKey.append(t.get());
+ }
+ throw new RuntimeException("Cardinality Violation in Merge statement: " + nonUniqueKey);
+ }
+
+ @Override
+ public String getDisplayString(String[] children) {
+ return getStandardDisplayString("cardinality_violation", children, ",");
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java b/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
index 9e2179c..a90dd35 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java
@@ -80,6 +80,7 @@ public class TestTxnCommands {
private Driver d;
private static enum Table {
ACIDTBL("acidTbl"),
+ ACIDTBLPART("acidTblPart"),
ACIDTBL2("acidTbl2"),
NONACIDORCTBL("nonAcidOrcTbl"),
NONACIDORCTBL2("nonAcidOrcTbl2");
@@ -106,6 +107,7 @@ public class TestTxnCommands {
hiveConf
.setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER,
"org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory");
+ hiveConf.setBoolVar(HiveConf.ConfVars.MERGE_CARDINALITY_VIOLATION_CHECK, true);
TxnDbUtil.setConfValues(hiveConf);
TxnDbUtil.prepDb();
File f = new File(TEST_WAREHOUSE_DIR);
@@ -120,6 +122,7 @@ public class TestTxnCommands {
d.setMaxRows(10000);
dropTables();
runStatementOnDriver("create table " + Table.ACIDTBL + "(a int, b int) clustered by (a) into " + BUCKET_COUNT + " buckets stored as orc TBLPROPERTIES ('transactional'='true')");
+ runStatementOnDriver("create table " + Table.ACIDTBLPART + "(a int, b int) partitioned by (p string) clustered by (a) into " + BUCKET_COUNT + " buckets stored as orc TBLPROPERTIES ('transactional'='true')");
runStatementOnDriver("create table " + Table.NONACIDORCTBL + "(a int, b int) clustered by (a) into " + BUCKET_COUNT + " buckets stored as orc TBLPROPERTIES ('transactional'='false')");
runStatementOnDriver("create table " + Table.NONACIDORCTBL2 + "(a int, b int) clustered by (a) into " + BUCKET_COUNT + " buckets stored as orc TBLPROPERTIES ('transactional'='false')");
runStatementOnDriver("create temporary table " + Table.ACIDTBL2 + "(a int, b int, c int) clustered by (c) into " + BUCKET_COUNT + " buckets stored as orc TBLPROPERTIES ('transactional'='true')");
@@ -759,10 +762,11 @@ public class TestTxnCommands {
LOG.info("Explain1: " + sb);
for(int i = 0; i < explain.size(); i++) {
if(explain.get(i).contains("Edges:")) {
- Assert.assertTrue(explain.get(i + 1).contains("Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 6 (SIMPLE_EDGE)"));
- Assert.assertTrue(explain.get(i + 2).contains("Reducer 3 <- Reducer 2 (SIMPLE_EDGE)"));
- Assert.assertTrue(explain.get(i + 3).contains("Reducer 4 <- Reducer 2 (SIMPLE_EDGE)"));
- Assert.assertTrue(explain.get(i + 4).contains("Reducer 5 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)"));
+ Assert.assertTrue("At i+1=" + (i+1) + explain.get(i + 1), explain.get(i + 1).contains("Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE)"));
+ Assert.assertTrue("At i+1=" + (i+2) + explain.get(i + 2), explain.get(i + 2).contains("Reducer 3 <- Reducer 2 (SIMPLE_EDGE)"));
+ Assert.assertTrue("At i+1=" + (i+3) + explain.get(i + 3), explain.get(i + 3).contains("Reducer 4 <- Reducer 2 (SIMPLE_EDGE)"));
+ Assert.assertTrue("At i+1=" + (i+4) + explain.get(i + 4), explain.get(i + 4).contains("Reducer 5 <- Reducer 2 (SIMPLE_EDGE)"));
+ Assert.assertTrue("At i+1=" + (i+5) + explain.get(i + 5), explain.get(i + 5).contains("Reducer 6 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)"));
break;
}
}
@@ -801,6 +805,31 @@ public class TestTxnCommands {
int[][] rExpected = {{5,6},{7,8},{11,11}};
Assert.assertEquals(stringifyValues(rExpected), r);
}
+
+ /**
+ * see https://issues.apache.org/jira/browse/HIVE-14949 for details
+ * @throws Exception
+ */
+ @Test
+ public void testMergeCardinalityViolation() throws Exception {
+ int[][] sourceVals = {{2,2},{2,44},{5,5},{11,11}};
+ runStatementOnDriver("insert into " + Table.NONACIDORCTBL + " " + makeValuesClause(sourceVals));
+ int[][] targetVals = {{2,1},{4,3},{5,6},{7,8}};
+ runStatementOnDriver("insert into " + Table.ACIDTBL + " " + makeValuesClause(targetVals));
+ String query = "merge into " + Table.ACIDTBL +
+ " as t using " + Table.NONACIDORCTBL + " s ON t.a = s.a " +
+ "WHEN MATCHED and s.a < 5 THEN DELETE " +
+ "WHEN MATCHED AND s.a < 3 THEN update set b = 0 " +
+ "WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b) ";
+ runStatementOnDriverNegative(query);
+ runStatementOnDriver("insert into " + Table.ACIDTBLPART + " partition(p) values(1,1,'p1'),(2,2,'p1'),(3,3,'p1'),(4,4,'p2')");
+ query = "merge into " + Table.ACIDTBLPART +
+ " as t using " + Table.NONACIDORCTBL + " s ON t.a = s.a " +
+ "WHEN MATCHED and s.a < 5 THEN DELETE " +
+ "WHEN MATCHED AND s.a < 3 THEN update set b = 0 " +
+ "WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b, 'p1') ";
+ runStatementOnDriverNegative(query);
+ }
@Test
public void testSetClauseFakeColumn() throws Exception {
CommandProcessorResponse cpr = runStatementOnDriverNegative("MERGE INTO "+ Table.ACIDTBL +
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands2.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands2.java b/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands2.java
index af1f962..6718ae9 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands2.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands2.java
@@ -120,6 +120,8 @@ public class TestTxnCommands2 {
hiveConf
.setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER,
"org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory");
+ hiveConf.setBoolVar(HiveConf.ConfVars.MERGE_CARDINALITY_VIOLATION_CHECK, true);
+
TxnDbUtil.setConfValues(hiveConf);
TxnDbUtil.prepDb();
File f = new File(TEST_WAREHOUSE_DIR);
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/test/results/clientpositive/acid_subquery.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/acid_subquery.q.out b/ql/src/test/results/clientpositive/acid_subquery.q.out
index b6402e4..f3c44b1 100644
--- a/ql/src/test/results/clientpositive/acid_subquery.q.out
+++ b/ql/src/test/results/clientpositive/acid_subquery.q.out
@@ -75,6 +75,7 @@ PREHOOK: Input: default@target
PREHOOK: Input: default@target@p=1/q=2
PREHOOK: Input: default@target@p=1/q=3
PREHOOK: Input: default@target@p=2/q=2
+PREHOOK: Output: default@merge_tmp_table
PREHOOK: Output: default@target
PREHOOK: Output: default@target@p=1/q=2
PREHOOK: Output: default@target@p=1/q=2
@@ -89,9 +90,11 @@ POSTHOOK: Input: default@target
POSTHOOK: Input: default@target@p=1/q=2
POSTHOOK: Input: default@target@p=1/q=3
POSTHOOK: Input: default@target@p=2/q=2
+POSTHOOK: Output: default@merge_tmp_table
POSTHOOK: Output: default@target@p=1/q=2
POSTHOOK: Output: default@target@p=1/q=2
POSTHOOK: Output: default@target@p=1/q=3
POSTHOOK: Output: default@target@p=1/q=3
POSTHOOK: Output: default@target@p=2/q=2
POSTHOOK: Output: default@target@p=2/q=2
+POSTHOOK: Lineage: merge_tmp_table.val EXPRESSION [(target)t.FieldSchema(name:ROW__ID, type:struct<transactionId:bigint,bucketId:int,rowId:bigint>, comment:), (target)t.FieldSchema(name:p, type:int, comment:null), (target)t.FieldSchema(name:q, type:int, comment:null), ]
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/test/results/clientpositive/llap/sqlmerge.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/sqlmerge.q.out b/ql/src/test/results/clientpositive/llap/sqlmerge.q.out
index 068b75f..486e812 100644
--- a/ql/src/test/results/clientpositive/llap/sqlmerge.q.out
+++ b/ql/src/test/results/clientpositive/llap/sqlmerge.q.out
@@ -25,24 +25,27 @@ WHEN MATCHED THEN UPDATE SET b = 7
WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b)
POSTHOOK: type: QUERY
STAGE DEPENDENCIES:
- Stage-3 is a root stage
- Stage-4 depends on stages: Stage-3
- Stage-0 depends on stages: Stage-4
- Stage-5 depends on stages: Stage-0
- Stage-2 depends on stages: Stage-4
- Stage-6 depends on stages: Stage-2
- Stage-1 depends on stages: Stage-4
- Stage-7 depends on stages: Stage-1
+ Stage-4 is a root stage
+ Stage-5 depends on stages: Stage-4
+ Stage-0 depends on stages: Stage-5
+ Stage-6 depends on stages: Stage-0
+ Stage-2 depends on stages: Stage-5
+ Stage-7 depends on stages: Stage-2
+ Stage-3 depends on stages: Stage-5
+ Stage-8 depends on stages: Stage-3
+ Stage-1 depends on stages: Stage-5
+ Stage-9 depends on stages: Stage-1
STAGE PLANS:
- Stage: Stage-3
+ Stage: Stage-4
Tez
#### A masked pattern was here ####
Edges:
- Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 6 (SIMPLE_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE)
Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
Reducer 4 <- Reducer 2 (SIMPLE_EDGE)
- Reducer 5 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 5 <- Reducer 2 (SIMPLE_EDGE)
+ Reducer 6 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
#### A masked pattern was here ####
Vertices:
Map 1
@@ -58,7 +61,7 @@ STAGE PLANS:
value expressions: ROW__ID (type: struct<transactionid:bigint,bucketid:int,rowid:bigint>)
Execution mode: llap
LLAP IO: may be used (ACID table)
- Map 6
+ Map 7
Map Operator Tree:
TableScan
alias: s
@@ -108,6 +111,25 @@ STAGE PLANS:
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
value expressions: _col1 (type: int)
Filter Operator
+ predicate: (_col0 = _col5) (type: boolean)
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Select Operator
+ expressions: _col4 (type: struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+ outputColumnNames: _col4
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Group By Operator
+ aggregations: count()
+ keys: _col4 (type: struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ value expressions: _col1 (type: bigint)
+ Filter Operator
predicate: _col0 is null (type: boolean)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Select Operator
@@ -152,6 +174,30 @@ STAGE PLANS:
Reducer 5
Execution mode: llap
Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ keys: KEY._col0 (type: struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Filter Operator
+ predicate: (_col1 > 1) (type: boolean)
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ Select Operator
+ expressions: cardinality_violation(_col0) (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ name: default.merge_tmp_table
+ Reducer 6
+ Execution mode: llap
+ Reduce Operator Tree:
Select Operator
expressions: VALUE._col0 (type: int), VALUE._col1 (type: int)
outputColumnNames: _col0, _col1
@@ -165,7 +211,7 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
name: default.acidtbl
- Stage: Stage-4
+ Stage: Stage-5
Dependency Collection
Stage: Stage-0
@@ -178,7 +224,7 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
name: default.acidtbl
- Stage: Stage-5
+ Stage: Stage-6
Stats-Aggr Operator
Stage: Stage-2
@@ -191,7 +237,20 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
name: default.acidtbl
- Stage: Stage-6
+ Stage: Stage-7
+ Stats-Aggr Operator
+
+ Stage: Stage-3
+ Move Operator
+ tables:
+ replace: false
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ name: default.merge_tmp_table
+
+ Stage: Stage-8
Stats-Aggr Operator
Stage: Stage-1
@@ -204,6 +263,6 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
name: default.acidtbl
- Stage: Stage-7
+ Stage: Stage-9
Stats-Aggr Operator
http://git-wip-us.apache.org/repos/asf/hive/blob/e3b10c1f/ql/src/test/results/clientpositive/show_functions.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/show_functions.q.out b/ql/src/test/results/clientpositive/show_functions.q.out
index b8daea9..3c9bb4a 100644
--- a/ql/src/test/results/clientpositive/show_functions.q.out
+++ b/ql/src/test/results/clientpositive/show_functions.q.out
@@ -38,6 +38,7 @@ between
bin
bloom_filter
bround
+cardinality_violation
case
cbrt
ceil
@@ -263,6 +264,7 @@ PREHOOK: query: SHOW FUNCTIONS '^c.*'
PREHOOK: type: SHOWFUNCTIONS
POSTHOOK: query: SHOW FUNCTIONS '^c.*'
POSTHOOK: type: SHOWFUNCTIONS
+cardinality_violation
case
cbrt
ceil
[08/50] [abbrv] hive git commit: HIVE-15698: Vectorization support
for min/max/bloomfilter runtime filtering (Jason Dere,
reviewed by Matt McCline)
Posted by se...@apache.org.
HIVE-15698: Vectorization support for min/max/bloomfilter runtime filtering (Jason Dere, reviewed by Matt McCline)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/62ebd1ab
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/62ebd1ab
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/62ebd1ab
Branch: refs/heads/hive-14535
Commit: 62ebd1abb87d951024a371ba37a451f536a594e6
Parents: 79eb224
Author: Jason Dere <jd...@hortonworks.com>
Authored: Sun Jan 29 23:33:02 2017 -0800
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Sun Jan 29 23:33:02 2017 -0800
----------------------------------------------------------------------
.../apache/hadoop/hive/ant/GenVectorCode.java | 83 ++
.../test/resources/testconfiguration.properties | 1 +
.../FilterColumnBetweenDynamicValue.txt | 101 ++
.../FilterDecimalColumnBetween.txt | 16 +
.../FilterStringColumnBetween.txt | 8 +-
.../FilterTimestampColumnBetween.txt | 16 +
.../FilterTruncStringColumnBetween.txt | 8 +-
.../ql/exec/tez/DynamicValueRegistryTez.java | 12 +-
.../exec/vector/VectorExpressionDescriptor.java | 3 +-
.../ql/exec/vector/VectorFilterOperator.java | 2 +
.../ql/exec/vector/VectorSelectOperator.java | 1 +
.../ql/exec/vector/VectorizationContext.java | 77 +-
.../DynamicValueVectorExpression.java | 314 +++++++
.../vector/expressions/VectorExpression.java | 13 +-
.../VectorInBloomFilterColDynamicValue.java | 285 ++++++
.../aggregates/VectorUDAFBloomFilter.java | 474 ++++++++++
.../aggregates/VectorUDAFBloomFilterMerge.java | 365 ++++++++
.../hive/ql/optimizer/physical/Vectorizer.java | 2 +
.../ql/udf/generic/GenericUDAFBloomFilter.java | 10 +-
.../ql/udf/generic/GenericUDFInBloomFilter.java | 12 +-
.../ql/optimizer/physical/TestVectorizer.java | 31 +
.../test/queries/clientpositive/explainuser_3.q | 1 +
.../vectorized_dynamic_semijoin_reduction.q | 43 +
.../results/clientpositive/llap/mergejoin.q.out | 66 +-
.../results/clientpositive/llap/orc_llap.q.out | 12 +-
.../llap/vector_binary_join_groupby.q.out | 4 +-
.../vectorized_dynamic_partition_pruning.q.out | 4 +-
.../vectorized_dynamic_semijoin_reduction.q.out | 932 +++++++++++++++++++
.../clientpositive/tez/explainuser_3.q.out | 17 +-
.../vector_binary_join_groupby.q.out | 1 +
.../apache/hive/common/util/BloomFilter.java | 36 +
.../hive/common/util/TestBloomFilter.java | 125 +++
32 files changed, 3000 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
----------------------------------------------------------------------
diff --git a/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java b/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
index e9fe8fa..133ef0a 100644
--- a/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
+++ b/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
@@ -789,6 +789,15 @@ public class GenVectorCode extends Task {
{"FilterTimestampColumnBetween", ""},
{"FilterTimestampColumnBetween", "!"},
+ // This is for runtime min/max pushdown - don't need to do NOT BETWEEN
+ {"FilterColumnBetweenDynamicValue", "long", ""},
+ {"FilterColumnBetweenDynamicValue", "double", ""},
+ {"FilterColumnBetweenDynamicValue", "decimal", ""},
+ {"FilterColumnBetweenDynamicValue", "string", ""},
+ {"FilterColumnBetweenDynamicValue", "char", ""},
+ {"FilterColumnBetweenDynamicValue", "varchar", ""},
+ {"FilterColumnBetweenDynamicValue", "timestamp", ""},
+
{"ColumnCompareColumn", "Equal", "long", "double", "=="},
{"ColumnCompareColumn", "Equal", "double", "double", "=="},
{"ColumnCompareColumn", "NotEqual", "long", "double", "!="},
@@ -1164,6 +1173,8 @@ public class GenVectorCode extends Task {
} else if (tdesc[0].equals("FilterColumnBetween")) {
generateFilterColumnBetween(tdesc);
+ } else if (tdesc[0].equals("FilterColumnBetweenDynamicValue")) {
+ generateFilterColumnBetweenDynamicValue(tdesc);
} else if (tdesc[0].equals("ScalarArithmeticColumn") || tdesc[0].equals("ScalarDivideColumn")) {
generateScalarArithmeticColumn(tdesc);
} else if (tdesc[0].equals("FilterColumnCompareColumn")) {
@@ -1379,6 +1390,72 @@ public class GenVectorCode extends Task {
className, templateString);
}
+ private void generateFilterColumnBetweenDynamicValue(String[] tdesc) throws Exception {
+ String operandType = tdesc[1];
+ String optionalNot = tdesc[2];
+
+ String className = "Filter" + getCamelCaseType(operandType) + "Column" +
+ (optionalNot.equals("!") ? "Not" : "") + "BetweenDynamicValue";
+
+ String typeName = getCamelCaseType(operandType);
+ String defaultValue;
+ String vectorType;
+ String getPrimitiveMethod;
+ String getValueMethod;
+
+ if (operandType.equals("long")) {
+ defaultValue = "0";
+ vectorType = "long";
+ getPrimitiveMethod = "getLong";
+ getValueMethod = "";
+ } else if (operandType.equals("double")) {
+ defaultValue = "0";
+ vectorType = "double";
+ getPrimitiveMethod = "getDouble";
+ getValueMethod = "";
+ } else if (operandType.equals("decimal")) {
+ defaultValue = "null";
+ vectorType = "HiveDecimal";
+ getPrimitiveMethod = "getHiveDecimal";
+ getValueMethod = "";
+ } else if (operandType.equals("string")) {
+ defaultValue = "null";
+ vectorType = "byte[]";
+ getPrimitiveMethod = "getString";
+ getValueMethod = ".getBytes()";
+ } else if (operandType.equals("char")) {
+ defaultValue = "null";
+ vectorType = "byte[]";
+ getPrimitiveMethod = "getHiveChar";
+ getValueMethod = ".getStrippedValue().getBytes()"; // Does vectorization use stripped char values?
+ } else if (operandType.equals("varchar")) {
+ defaultValue = "null";
+ vectorType = "byte[]";
+ getPrimitiveMethod = "getHiveVarchar";
+ getValueMethod = ".getValue().getBytes()";
+ } else if (operandType.equals("timestamp")) {
+ defaultValue = "null";
+ vectorType = "Timestamp";
+ getPrimitiveMethod = "getTimestamp";
+ getValueMethod = "";
+ } else {
+ throw new IllegalArgumentException("Type " + operandType + " not supported");
+ }
+
+ // Read the template into a string, expand it, and write it.
+ File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt"));
+ String templateString = readFile(templateFile);
+ templateString = templateString.replaceAll("<ClassName>", className);
+ templateString = templateString.replaceAll("<TypeName>", typeName);
+ templateString = templateString.replaceAll("<DefaultValue>", defaultValue);
+ templateString = templateString.replaceAll("<VectorType>", vectorType);
+ templateString = templateString.replaceAll("<GetPrimitiveMethod>", getPrimitiveMethod);
+ templateString = templateString.replaceAll("<GetValueMethod>", getValueMethod);
+
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+ }
+
private void generateColumnCompareColumn(String[] tdesc) throws Exception {
String operatorName = tdesc[1];
String operandType1 = tdesc[2];
@@ -3084,6 +3161,12 @@ public class GenVectorCode extends Task {
return "Timestamp";
} else if (type.equals("date")) {
return "Date";
+ } else if (type.equals("string")) {
+ return "String";
+ } else if (type.equals("char")) {
+ return "Char";
+ } else if (type.equals("varchar")) {
+ return "VarChar";
} else {
return type;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index e966959..8b3f589 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -611,6 +611,7 @@ minillaplocal.query.files=acid_globallimit.q,\
vector_udf1.q,\
vectorization_short_regress.q,\
vectorized_dynamic_partition_pruning.q,\
+ vectorized_dynamic_semijoin_reduction.q,\
vectorized_ptf.q,\
windowing.q,\
windowing_gby.q,\
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetweenDynamicValue.txt
----------------------------------------------------------------------
diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetweenDynamicValue.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetweenDynamicValue.txt
new file mode 100644
index 0000000..97ab7aa
--- /dev/null
+++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetweenDynamicValue.txt
@@ -0,0 +1,101 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.Filter<TypeName>ColumnBetween;
+import org.apache.hadoop.hive.ql.plan.DynamicValue;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.sql.Timestamp;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+
+public class <ClassName> extends Filter<TypeName>ColumnBetween {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger LOG = LoggerFactory.getLogger(<ClassName>.class);
+
+ protected DynamicValue leftDynamicValue;
+ protected DynamicValue rightDynamicValue;
+ protected transient boolean initialized = false;
+ protected transient boolean isLeftOrRightNull = false;
+
+ public <ClassName>(int colNum, DynamicValue leftValue, DynamicValue rightValue) {
+ super(colNum, <DefaultValue>, <DefaultValue>);
+ this.leftDynamicValue = leftValue;
+ this.rightDynamicValue = rightValue;
+ }
+
+ public <ClassName>() {
+ }
+
+ public DynamicValue getLeftDynamicValue() {
+ return leftDynamicValue;
+ }
+
+ public void setLeftDynamicValue(DynamicValue leftValue) {
+ this.leftDynamicValue = leftValue;
+ }
+
+ public DynamicValue getRightDynamicValue() {
+ return rightDynamicValue;
+ }
+
+ public void getRightDynamicValue(DynamicValue rightValue) {
+ this.rightDynamicValue = rightValue;
+ }
+
+ @Override
+ public void init(Configuration conf) {
+ super.init(conf);
+ leftDynamicValue.setConf(conf);
+ rightDynamicValue.setConf(conf);
+ }
+
+ @Override
+ public void evaluate(VectorizedRowBatch batch) {
+ if (!initialized) {
+ Object lVal = leftDynamicValue.getValue();
+ Object rVal = rightDynamicValue.getValue();
+ if (lVal == null || rVal == null) {
+ isLeftOrRightNull = true;
+ } else {
+ <VectorType> min = PrimitiveObjectInspectorUtils.<GetPrimitiveMethod>(
+ lVal, leftDynamicValue.getObjectInspector())<GetValueMethod>;
+ setLeftValue(min);
+
+ <VectorType> max = PrimitiveObjectInspectorUtils.<GetPrimitiveMethod>(
+ rVal, rightDynamicValue.getObjectInspector())<GetValueMethod>;
+ setRightValue(max);
+ }
+ initialized = true;
+ }
+
+ // Special case for dynamic values - min/max can be null
+ if (isLeftOrRightNull) {
+ // Entire batch is filtered out
+ batch.size = 0;
+ }
+
+ super.evaluate(batch);
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt
----------------------------------------------------------------------
diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt
index d68edfa..62d2254 100644
--- a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt
+++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt
@@ -154,6 +154,22 @@ public class <ClassName> extends VectorExpression {
return "boolean";
}
+ public HiveDecimal getLeftValue() {
+ return leftValue;
+ }
+
+ public void setLeftValue(HiveDecimal value) {
+ this.leftValue = value;
+ }
+
+ public HiveDecimal getRightValue() {
+ return rightValue;
+ }
+
+ public void setRightValue(HiveDecimal value) {
+ this.rightValue = value;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
----------------------------------------------------------------------
diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
index e8049da..16d4aaf 100644
--- a/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
+++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
@@ -161,19 +161,19 @@ public class <ClassName> extends VectorExpression {
this.colNum = colNum;
}
- public byte[] getLeft() {
+ public byte[] getLeftValue() {
return left;
}
- public void setLeft(byte[] value) {
+ public void setLeftValue(byte[] value) {
this.left = value;
}
- public byte[] getRight() {
+ public byte[] getRightValue() {
return right;
}
- public void setRight(byte[] value) {
+ public void setRightValue(byte[] value) {
this.right = value;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt
----------------------------------------------------------------------
diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt
index 4298d79..806148f 100644
--- a/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt
+++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt
@@ -153,6 +153,22 @@ public class <ClassName> extends VectorExpression {
return "boolean";
}
+ public Timestamp getLeftValue() {
+ return leftValue;
+ }
+
+ public void setLeftValue(Timestamp value) {
+ this.leftValue = value;
+ }
+
+ public Timestamp getRightValue() {
+ return rightValue;
+ }
+
+ public void setRightValue(Timestamp value) {
+ this.rightValue = value;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
----------------------------------------------------------------------
diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
index 94a174d..d350dcb 100644
--- a/ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
+++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
@@ -163,19 +163,19 @@ public class <ClassName> extends VectorExpression {
this.colNum = colNum;
}
- public byte[] getLeft() {
+ public byte[] getLeftValue() {
return left;
}
- public void setLeft(byte[] value) {
+ public void setLeftValue(byte[] value) {
this.left = value;
}
- public byte[] getRight() {
+ public byte[] getRightValue() {
return right;
}
- public void setRight(byte[] value) {
+ public void setRightValue(byte[] value) {
this.right = value;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java
index 7bbedf6..b7687c5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java
@@ -122,9 +122,15 @@ public class DynamicValueRegistryTez implements DynamicValueRegistry {
setValue(runtimeValuesInfo.getDynamicValueIDs().get(colIdx), val);
}
}
- // For now, expecting a single row (min/max, aggregated bloom filter)
- if (rowCount != 1) {
- throw new IllegalStateException("Expected 1 row from " + inputSourceName + ", got " + rowCount);
+ // For now, expecting a single row (min/max, aggregated bloom filter), or no rows
+ if (rowCount == 0) {
+ LOG.debug("No input rows from " + inputSourceName + ", filling dynamic values with nulls");
+ for (int colIdx = 0; colIdx < colExprEvaluators.size(); ++colIdx) {
+ ExprNodeEvaluator eval = colExprEvaluators.get(colIdx);
+ setValue(runtimeValuesInfo.getDynamicValueIDs().get(colIdx), null);
+ }
+ } else if (rowCount > 1) {
+ throw new IllegalStateException("Expected 0 or 1 rows from " + inputSourceName + ", got " + rowCount);
}
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExpressionDescriptor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExpressionDescriptor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExpressionDescriptor.java
index 217af3f..f4499d7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExpressionDescriptor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExpressionDescriptor.java
@@ -183,7 +183,8 @@ public class VectorExpressionDescriptor {
public enum InputExpressionType {
NONE(0),
COLUMN(1),
- SCALAR(2);
+ SCALAR(2),
+ DYNAMICVALUE(3);
private final int value;
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java
index 261246b..2598445 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java
@@ -72,6 +72,8 @@ public class VectorFilterOperator extends FilterOperator {
try {
heartbeatInterval = HiveConf.getIntVar(hconf,
HiveConf.ConfVars.HIVESENDHEARTBEAT);
+
+ conditionEvaluator.init(hconf);
} catch (Throwable e) {
throw new HiveException(e);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java
index f7fec8f..bb382b1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java
@@ -113,6 +113,7 @@ public class VectorSelectOperator extends Operator<SelectDesc> implements
projectedColumns = new int [vExpressions.length];
for (int i = 0; i < projectedColumns.length; i++) {
+ vExpressions[i].init(hconf);
projectedColumns[i] = vExpressions[i].getOutputColumn();
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
index c887757..484f615 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
@@ -54,6 +54,8 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.*;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFAvgDecimal;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFAvgTimestamp;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFBloomFilter;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFBloomFilterMerge;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFCount;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFCountMerge;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFCountStar;
@@ -97,6 +99,7 @@ import org.apache.hadoop.hive.ql.plan.AggregationDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDynamicValueDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
import org.apache.hadoop.hive.ql.plan.GroupByDesc;
import org.apache.hadoop.hive.ql.udf.SettableUDF;
@@ -585,6 +588,8 @@ public class VectorizationContext {
} else if (exprDesc instanceof ExprNodeConstantDesc) {
ve = getConstantVectorExpression(((ExprNodeConstantDesc) exprDesc).getValue(), exprDesc.getTypeInfo(),
mode);
+ } else if (exprDesc instanceof ExprNodeDynamicValueDesc) {
+ ve = getDynamicValueVectorExpression((ExprNodeDynamicValueDesc) exprDesc, mode);
}
if (ve == null) {
throw new HiveException(
@@ -1094,6 +1099,21 @@ public class VectorizationContext {
}
}
+ private VectorExpression getDynamicValueVectorExpression(ExprNodeDynamicValueDesc dynamicValueExpr,
+ VectorExpressionDescriptor.Mode mode) throws HiveException {
+ String typeName = dynamicValueExpr.getTypeInfo().getTypeName();
+ VectorExpressionDescriptor.ArgumentType vectorArgType = VectorExpressionDescriptor.ArgumentType.fromHiveTypeName(typeName);
+ if (vectorArgType == VectorExpressionDescriptor.ArgumentType.NONE) {
+ throw new HiveException("No vector argument type for type name " + typeName);
+ }
+ int outCol = -1;
+ if (mode == VectorExpressionDescriptor.Mode.PROJECTION) {
+ outCol = ocm.allocateOutputColumn(dynamicValueExpr.getTypeInfo());
+ }
+
+ return new DynamicValueVectorExpression(outCol, dynamicValueExpr.getTypeInfo(), dynamicValueExpr.getDynamicValue());
+ }
+
/**
* Used as a fast path for operations that don't modify their input, like unary +
* and casting boolean to long. IdentityExpression and its children are always
@@ -1181,6 +1201,8 @@ public class VectorizationContext {
builder.setInputExpressionType(i, InputExpressionType.COLUMN);
} else if (child instanceof ExprNodeConstantDesc) {
builder.setInputExpressionType(i, InputExpressionType.SCALAR);
+ } else if (child instanceof ExprNodeDynamicValueDesc) {
+ builder.setInputExpressionType(i, InputExpressionType.DYNAMICVALUE);
} else {
throw new HiveException("Cannot handle expression type: " + child.getClass().getSimpleName());
}
@@ -1225,6 +1247,8 @@ public class VectorizationContext {
} else if (child instanceof ExprNodeConstantDesc) {
Object scalarValue = getVectorTypeScalarValue((ExprNodeConstantDesc) child);
arguments[i] = (null == scalarValue) ? getConstantVectorExpression(null, child.getTypeInfo(), childrenMode) : scalarValue;
+ } else if (child instanceof ExprNodeDynamicValueDesc) {
+ arguments[i] = ((ExprNodeDynamicValueDesc) child).getDynamicValue();
} else {
throw new HiveException("Cannot handle expression type: " + child.getClass().getSimpleName());
}
@@ -2092,8 +2116,13 @@ public class VectorizationContext {
return null;
}
+ boolean hasDynamicValues = false;
+
// We don't currently support the BETWEEN ends being columns. They must be scalars.
- if (!(childExpr.get(2) instanceof ExprNodeConstantDesc) ||
+ if ((childExpr.get(2) instanceof ExprNodeDynamicValueDesc) &&
+ (childExpr.get(3) instanceof ExprNodeDynamicValueDesc)) {
+ hasDynamicValues = true;
+ } else if (!(childExpr.get(2) instanceof ExprNodeConstantDesc) ||
!(childExpr.get(3) instanceof ExprNodeConstantDesc)) {
return null;
}
@@ -2138,35 +2167,51 @@ public class VectorizationContext {
// determine class
Class<?> cl = null;
if (isIntFamily(colType) && !notKeywordPresent) {
- cl = FilterLongColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterLongColumnBetweenDynamicValue.class :
+ FilterLongColumnBetween.class);
} else if (isIntFamily(colType) && notKeywordPresent) {
cl = FilterLongColumnNotBetween.class;
} else if (isFloatFamily(colType) && !notKeywordPresent) {
- cl = FilterDoubleColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterDoubleColumnBetweenDynamicValue.class :
+ FilterDoubleColumnBetween.class);
} else if (isFloatFamily(colType) && notKeywordPresent) {
cl = FilterDoubleColumnNotBetween.class;
} else if (colType.equals("string") && !notKeywordPresent) {
- cl = FilterStringColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterStringColumnBetweenDynamicValue.class :
+ FilterStringColumnBetween.class);
} else if (colType.equals("string") && notKeywordPresent) {
cl = FilterStringColumnNotBetween.class;
} else if (varcharTypePattern.matcher(colType).matches() && !notKeywordPresent) {
- cl = FilterVarCharColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterVarCharColumnBetweenDynamicValue.class :
+ FilterVarCharColumnBetween.class);
} else if (varcharTypePattern.matcher(colType).matches() && notKeywordPresent) {
cl = FilterVarCharColumnNotBetween.class;
} else if (charTypePattern.matcher(colType).matches() && !notKeywordPresent) {
- cl = FilterCharColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterCharColumnBetweenDynamicValue.class :
+ FilterCharColumnBetween.class);
} else if (charTypePattern.matcher(colType).matches() && notKeywordPresent) {
cl = FilterCharColumnNotBetween.class;
} else if (colType.equals("timestamp") && !notKeywordPresent) {
- cl = FilterTimestampColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterTimestampColumnBetweenDynamicValue.class :
+ FilterTimestampColumnBetween.class);
} else if (colType.equals("timestamp") && notKeywordPresent) {
cl = FilterTimestampColumnNotBetween.class;
} else if (isDecimalFamily(colType) && !notKeywordPresent) {
- cl = FilterDecimalColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterDecimalColumnBetweenDynamicValue.class :
+ FilterDecimalColumnBetween.class);
} else if (isDecimalFamily(colType) && notKeywordPresent) {
cl = FilterDecimalColumnNotBetween.class;
} else if (isDateFamily(colType) && !notKeywordPresent) {
- cl = FilterLongColumnBetween.class;
+ cl = (hasDynamicValues ?
+ FilterLongColumnBetweenDynamicValue.class :
+ FilterLongColumnBetween.class);
} else if (isDateFamily(colType) && notKeywordPresent) {
cl = FilterLongColumnNotBetween.class;
}
@@ -2224,6 +2269,12 @@ public class VectorizationContext {
} else if (child instanceof ExprNodeConstantDesc) {
// this is a constant (or null)
argDescs[i].setConstant((ExprNodeConstantDesc) child);
+ } else if (child instanceof ExprNodeDynamicValueDesc) {
+ VectorExpression e = getVectorExpression(child, VectorExpressionDescriptor.Mode.PROJECTION);
+ vectorExprs.add(e);
+ variableArgPositions.add(i);
+ exprResultColumnNums.add(e.getOutputColumn());
+ argDescs[i].setVariable(e.getOutputColumn());
} else {
throw new HiveException("Unable to vectorize custom UDF. Encountered unsupported expr desc : "
+ child);
@@ -2651,6 +2702,14 @@ public class VectorizationContext {
add(new AggregateDefinition("stddev_samp", ArgumentType.FLOAT_FAMILY, Mode.PARTIAL1, VectorUDAFStdSampDouble.class));
add(new AggregateDefinition("stddev_samp", ArgumentType.DECIMAL, Mode.PARTIAL1, VectorUDAFStdSampDecimal.class));
add(new AggregateDefinition("stddev_samp", ArgumentType.TIMESTAMP, Mode.PARTIAL1, VectorUDAFStdSampTimestamp.class));
+
+ // UDAFBloomFilter. Original data is one type, partial/final is another,
+ // so this requires 2 aggregation classes (partial1/complete), (partial2/final)
+ add(new AggregateDefinition("bloom_filter", ArgumentType.ALL_FAMILY, Mode.PARTIAL1, VectorUDAFBloomFilter.class));
+ add(new AggregateDefinition("bloom_filter", ArgumentType.ALL_FAMILY, Mode.COMPLETE, VectorUDAFBloomFilter.class));
+ add(new AggregateDefinition("bloom_filter", ArgumentType.BINARY, Mode.PARTIAL2, VectorUDAFBloomFilterMerge.class));
+ add(new AggregateDefinition("bloom_filter", ArgumentType.BINARY, Mode.FINAL, VectorUDAFBloomFilterMerge.class));
+
}};
public VectorAggregateExpression getAggregatorExpression(AggregationDesc desc)
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DynamicValueVectorExpression.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DynamicValueVectorExpression.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DynamicValueVectorExpression.java
new file mode 100644
index 0000000..1a34118
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DynamicValueVectorExpression.java
@@ -0,0 +1,314 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.exec.vector.expressions;
+
+import java.sql.Timestamp;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
+import org.apache.hadoop.hive.ql.exec.vector.*;
+import org.apache.hadoop.hive.ql.plan.DynamicValue;
+import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Constant is represented as a vector with repeating values.
+ */
+public class DynamicValueVectorExpression extends VectorExpression {
+ private static final Logger LOG = LoggerFactory.getLogger(DynamicValueVectorExpression.class);
+
+ private static final long serialVersionUID = 1L;
+
+ DynamicValue dynamicValue;
+ TypeInfo typeInfo;
+ transient private boolean initialized = false;
+
+ private int outputColumn;
+ protected long longValue = 0;
+ private double doubleValue = 0;
+ private byte[] bytesValue = null;
+ private HiveDecimal decimalValue = null;
+ private Timestamp timestampValue = null;
+ private HiveIntervalDayTime intervalDayTimeValue = null;
+ private boolean isNullValue = false;
+
+ private ColumnVector.Type type;
+ private int bytesValueLength = 0;
+
+ public DynamicValueVectorExpression() {
+ super();
+ }
+
+ public DynamicValueVectorExpression(int outputColumn, TypeInfo typeInfo, DynamicValue dynamicValue) {
+ this();
+ this.outputColumn = outputColumn;
+ this.type = VectorizationContext.getColumnVectorTypeFromTypeInfo(typeInfo);
+ this.dynamicValue = dynamicValue;
+ this.typeInfo = typeInfo;
+ }
+
+ private void evaluateLong(VectorizedRowBatch vrg) {
+ LongColumnVector cv = (LongColumnVector) vrg.cols[outputColumn];
+ cv.isRepeating = true;
+ cv.noNulls = !isNullValue;
+ if (!isNullValue) {
+ cv.vector[0] = longValue;
+ cv.isNull[0] = false;
+ } else {
+ cv.isNull[0] = true;
+ }
+ }
+
+ private void evaluateDouble(VectorizedRowBatch vrg) {
+ DoubleColumnVector cv = (DoubleColumnVector) vrg.cols[outputColumn];
+ cv.isRepeating = true;
+ cv.noNulls = !isNullValue;
+ if (!isNullValue) {
+ cv.vector[0] = doubleValue;
+ cv.isNull[0] = false;
+ } else {
+ cv.isNull[0] = true;
+ }
+ }
+
+ private void evaluateBytes(VectorizedRowBatch vrg) {
+ BytesColumnVector cv = (BytesColumnVector) vrg.cols[outputColumn];
+ cv.isRepeating = true;
+ cv.noNulls = !isNullValue;
+ cv.initBuffer();
+ if (!isNullValue) {
+ cv.setVal(0, bytesValue, 0, bytesValueLength);
+ cv.isNull[0] = false;
+ } else {
+ cv.isNull[0] = true;
+ }
+ }
+
+ private void evaluateDecimal(VectorizedRowBatch vrg) {
+ DecimalColumnVector dcv = (DecimalColumnVector) vrg.cols[outputColumn];
+ dcv.isRepeating = true;
+ dcv.noNulls = !isNullValue;
+ if (!isNullValue) {
+ dcv.vector[0].set(decimalValue);
+ dcv.isNull[0] = false;
+ } else {
+ dcv.isNull[0] = true;
+ }
+ }
+
+ private void evaluateTimestamp(VectorizedRowBatch vrg) {
+ TimestampColumnVector dcv = (TimestampColumnVector) vrg.cols[outputColumn];
+ dcv.isRepeating = true;
+ dcv.noNulls = !isNullValue;
+ if (!isNullValue) {
+ dcv.set(0, timestampValue);
+ dcv.isNull[0] = false;
+ } else {
+ dcv.isNull[0] = true;
+ }
+ }
+
+ private void evaluateIntervalDayTime(VectorizedRowBatch vrg) {
+ IntervalDayTimeColumnVector dcv = (IntervalDayTimeColumnVector) vrg.cols[outputColumn];
+ dcv.isRepeating = true;
+ dcv.noNulls = !isNullValue;
+ if (!isNullValue) {
+ dcv.set(0, intervalDayTimeValue);
+ dcv.isNull[0] = false;
+ } else {
+ dcv.isNull[0] = true;
+ }
+ }
+
+ private void initValue() {
+ Object val = dynamicValue.getValue();
+
+ if (val == null) {
+ isNullValue = true;
+ } else {
+ PrimitiveObjectInspector poi = dynamicValue.getObjectInspector();
+ byte[] bytesVal;
+ switch (poi.getPrimitiveCategory()) {
+ case BOOLEAN:
+ case BYTE:
+ case SHORT:
+ case INT:
+ case LONG:
+ longValue = PrimitiveObjectInspectorUtils.getLong(val, poi);
+ break;
+ case FLOAT:
+ case DOUBLE:
+ doubleValue = PrimitiveObjectInspectorUtils.getDouble(val, poi);
+ break;
+ case STRING:
+ case CHAR:
+ case VARCHAR:
+ bytesVal = PrimitiveObjectInspectorUtils.getString(val, poi).getBytes();
+ setBytesValue(bytesVal);
+ break;
+ case BINARY:
+ bytesVal = PrimitiveObjectInspectorUtils.getBinary(val, poi).copyBytes();
+ setBytesValue(bytesVal);
+ break;
+ case DECIMAL:
+ decimalValue = PrimitiveObjectInspectorUtils.getHiveDecimal(val, poi);
+ break;
+ case DATE:
+ longValue = DateWritable.dateToDays(PrimitiveObjectInspectorUtils.getDate(val, poi));
+ case TIMESTAMP:
+ timestampValue = PrimitiveObjectInspectorUtils.getTimestamp(val, poi);
+ break;
+ case INTERVAL_YEAR_MONTH:
+ longValue = PrimitiveObjectInspectorUtils.getHiveIntervalYearMonth(val, poi).getTotalMonths();
+ break;
+ case INTERVAL_DAY_TIME:
+ intervalDayTimeValue = PrimitiveObjectInspectorUtils.getHiveIntervalDayTime(val, poi);
+ break;
+ default:
+ throw new IllegalStateException("Unsupported type " + poi.getPrimitiveCategory());
+ }
+ }
+
+ initialized = true;
+ }
+
+ @Override
+ public void init(Configuration conf) {
+ super.init(conf);
+ dynamicValue.setConf(conf);
+ }
+
+ @Override
+ public void evaluate(VectorizedRowBatch vrg) {
+ if (!initialized) {
+ initValue();
+ }
+
+ switch (type) {
+ case LONG:
+ evaluateLong(vrg);
+ break;
+ case DOUBLE:
+ evaluateDouble(vrg);
+ break;
+ case BYTES:
+ evaluateBytes(vrg);
+ break;
+ case DECIMAL:
+ evaluateDecimal(vrg);
+ break;
+ case TIMESTAMP:
+ evaluateTimestamp(vrg);
+ break;
+ case INTERVAL_DAY_TIME:
+ evaluateIntervalDayTime(vrg);
+ break;
+ default:
+ throw new IllegalStateException("Unsupported type " + type);
+ }
+ }
+
+ @Override
+ public int getOutputColumn() {
+ return outputColumn;
+ }
+
+ public long getLongValue() {
+ return longValue;
+ }
+
+ public void setLongValue(long longValue) {
+ this.longValue = longValue;
+ }
+
+ public double getDoubleValue() {
+ return doubleValue;
+ }
+
+ public void setDoubleValue(double doubleValue) {
+ this.doubleValue = doubleValue;
+ }
+
+ public byte[] getBytesValue() {
+ return bytesValue;
+ }
+
+ public void setBytesValue(byte[] bytesValue) {
+ this.bytesValue = bytesValue.clone();
+ this.bytesValueLength = bytesValue.length;
+ }
+
+ public void setDecimalValue(HiveDecimal decimalValue) {
+ this.decimalValue = decimalValue;
+ }
+
+ public HiveDecimal getDecimalValue() {
+ return decimalValue;
+ }
+
+ public void setTimestampValue(Timestamp timestampValue) {
+ this.timestampValue = timestampValue;
+ }
+
+ public Timestamp getTimestampValue() {
+ return timestampValue;
+ }
+
+ public void setIntervalDayTimeValue(HiveIntervalDayTime intervalDayTimeValue) {
+ this.intervalDayTimeValue = intervalDayTimeValue;
+ }
+
+ public HiveIntervalDayTime getIntervalDayTimeValue() {
+ return intervalDayTimeValue;
+ }
+
+ public String getTypeString() {
+ return getOutputType();
+ }
+
+ public void setOutputColumn(int outputColumn) {
+ this.outputColumn = outputColumn;
+ }
+
+ @Override
+ public VectorExpressionDescriptor.Descriptor getDescriptor() {
+ return (new VectorExpressionDescriptor.Builder()).build();
+ }
+
+ public DynamicValue getDynamicValue() {
+ return dynamicValue;
+ }
+
+ public void setDynamicValue(DynamicValue dynamicValue) {
+ this.dynamicValue = dynamicValue;
+ }
+
+ public TypeInfo getTypeInfo() {
+ return typeInfo;
+ }
+
+ public void setTypeInfo(TypeInfo typeInfo) {
+ this.typeInfo = typeInfo;
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
index 8fca8a1..218f306 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
@@ -22,6 +22,8 @@ import java.io.Serializable;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
+
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
@@ -31,7 +33,7 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
public abstract class VectorExpression implements Serializable {
public enum Type {
STRING, CHAR, VARCHAR, TIMESTAMP, DATE, LONG, DOUBLE, DECIMAL,
- INTERVAL_YEAR_MONTH, INTERVAL_DAY_TIME, OTHER;
+ INTERVAL_YEAR_MONTH, INTERVAL_DAY_TIME, BINARY, OTHER;
private static Map<String, Type> types = ImmutableMap.<String, Type>builder()
.put("string", STRING)
.put("char", CHAR)
@@ -43,6 +45,7 @@ public abstract class VectorExpression implements Serializable {
.put("decimal", DECIMAL)
.put("interval_year_month", INTERVAL_YEAR_MONTH)
.put("interval_day_time", INTERVAL_DAY_TIME)
+ .put("binary", BINARY)
.build();
public static Type getValue(String name) {
@@ -76,6 +79,14 @@ public abstract class VectorExpression implements Serializable {
*/
public abstract void evaluate(VectorizedRowBatch batch);
+ public void init(Configuration conf) {
+ if (childExpressions != null) {
+ for (VectorExpression child : childExpressions) {
+ child.init(conf);
+ }
+ }
+ }
+
/**
* Returns the index of the output column in the array
* of column vectors. If not applicable, -1 is returned.
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorInBloomFilterColDynamicValue.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorInBloomFilterColDynamicValue.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorInBloomFilterColDynamicValue.java
new file mode 100644
index 0000000..188a87e
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorInBloomFilterColDynamicValue.java
@@ -0,0 +1,285 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.exec.vector.expressions;
+
+import java.io.ByteArrayInputStream;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor.Descriptor;
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.plan.DynamicValue;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.BinaryObjectInspector;
+import org.apache.hive.common.util.BloomFilter;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class VectorInBloomFilterColDynamicValue extends VectorExpression {
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger LOG = LoggerFactory.getLogger(VectorInBloomFilterColDynamicValue.class);
+
+ protected int colNum;
+ protected DynamicValue bloomFilterDynamicValue;
+ protected transient boolean initialized = false;
+ protected transient BloomFilter bloomFilter;
+ protected transient BloomFilterCheck bfCheck;
+
+ public VectorInBloomFilterColDynamicValue(int colNum, DynamicValue bloomFilterDynamicValue) {
+ this.colNum = colNum;
+ this.bloomFilterDynamicValue = bloomFilterDynamicValue;
+ }
+
+ public VectorInBloomFilterColDynamicValue() {
+ }
+
+ @Override
+ public void init(Configuration conf) {
+ super.init(conf);
+ bloomFilterDynamicValue.setConf(conf);
+
+ // Instantiate BloomFilterCheck based on input column type
+ VectorExpression.Type colType = this.getInputTypes()[0];
+ switch (colType) {
+ case LONG:
+ case DATE:
+ bfCheck = new LongBloomFilterCheck();
+ break;
+ case DOUBLE:
+ bfCheck = new DoubleBloomFilterCheck();
+ break;
+ case DECIMAL:
+ bfCheck = new DecimalBloomFilterCheck();
+ break;
+ case STRING:
+ case CHAR:
+ case VARCHAR:
+ case BINARY:
+ bfCheck = new BytesBloomFilterCheck();
+ break;
+ case TIMESTAMP:
+ bfCheck = new TimestampBloomFilterCheck();
+ break;
+ default:
+ throw new IllegalStateException("Unsupported type " + colType);
+ }
+ }
+
+ private void initValue() {
+ try {
+ Object val = bloomFilterDynamicValue.getValue();
+ if (val != null) {
+ BinaryObjectInspector boi = (BinaryObjectInspector) bloomFilterDynamicValue.getObjectInspector();
+ byte[] bytes = boi.getPrimitiveJavaObject(val);
+ bloomFilter = BloomFilter.deserialize(new ByteArrayInputStream(bytes));
+ } else {
+ bloomFilter = null;
+ }
+ initialized = true;
+ } catch (Exception err) {
+ throw new RuntimeException(err);
+ }
+ }
+
+ @Override
+ public void evaluate(VectorizedRowBatch batch) {
+ if (childExpressions != null) {
+ super.evaluateChildren(batch);
+ }
+
+ if (!initialized) {
+ initValue();
+ }
+
+ ColumnVector inputColVector = batch.cols[colNum];
+ int[] sel = batch.selected;
+ boolean[] nullPos = inputColVector.isNull;
+ int n = batch.size;
+
+ // return immediately if batch is empty
+ if (n == 0) {
+ return;
+ }
+
+ // In case the dynamic value resolves to a null value
+ if (bloomFilter == null) {
+ batch.size = 0;
+ }
+
+ if (inputColVector.noNulls) {
+ if (inputColVector.isRepeating) {
+
+ // All must be selected otherwise size would be zero. Repeating property will not change.
+ if (!(bfCheck.checkValue(inputColVector, 0))) {
+
+ //Entire batch is filtered out.
+ batch.size = 0;
+ }
+ } else if (batch.selectedInUse) {
+ int newSize = 0;
+ for(int j=0; j != n; j++) {
+ int i = sel[j];
+ if (bfCheck.checkValue(inputColVector, i)) {
+ sel[newSize++] = i;
+ }
+ }
+ batch.size = newSize;
+ } else {
+ int newSize = 0;
+ for(int i = 0; i != n; i++) {
+ if (bfCheck.checkValue(inputColVector, i)) {
+ sel[newSize++] = i;
+ }
+ }
+ if (newSize < n) {
+ batch.size = newSize;
+ batch.selectedInUse = true;
+ }
+ }
+ } else {
+ if (inputColVector.isRepeating) {
+
+ // All must be selected otherwise size would be zero. Repeating property will not change.
+ if (!nullPos[0]) {
+ if (!(bfCheck.checkValue(inputColVector, 0))) {
+
+ //Entire batch is filtered out.
+ batch.size = 0;
+ }
+ } else {
+ batch.size = 0;
+ }
+ } else if (batch.selectedInUse) {
+ int newSize = 0;
+ for(int j=0; j != n; j++) {
+ int i = sel[j];
+ if (!nullPos[i]) {
+ if (bfCheck.checkValue(inputColVector, i)) {
+ sel[newSize++] = i;
+ }
+ }
+ }
+
+ //Change the selected vector
+ batch.size = newSize;
+ } else {
+ int newSize = 0;
+ for(int i = 0; i != n; i++) {
+ if (!nullPos[i]) {
+ if (bfCheck.checkValue(inputColVector, i)) {
+ sel[newSize++] = i;
+ }
+ }
+ }
+ if (newSize < n) {
+ batch.size = newSize;
+ batch.selectedInUse = true;
+ }
+ }
+ }
+ }
+
+ @Override
+ public int getOutputColumn() {
+ return -1;
+ }
+
+ @Override
+ public String getOutputType() {
+ return "boolean";
+ }
+
+ public int getColNum() {
+ return colNum;
+ }
+
+ public void setColNum(int colNum) {
+ this.colNum = colNum;
+ }
+
+ @Override
+ public Descriptor getDescriptor() {
+ VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
+ b.setMode(VectorExpressionDescriptor.Mode.FILTER)
+ .setNumArguments(2)
+ .setArgumentTypes(
+ VectorExpressionDescriptor.ArgumentType.ALL_FAMILY,
+ VectorExpressionDescriptor.ArgumentType.BINARY)
+ .setInputExpressionTypes(
+ VectorExpressionDescriptor.InputExpressionType.COLUMN,
+ VectorExpressionDescriptor.InputExpressionType.DYNAMICVALUE);
+ return b.build();
+ }
+
+ // Type-specific handling
+ abstract class BloomFilterCheck {
+ abstract public boolean checkValue(ColumnVector columnVector, int idx);
+ }
+
+ class BytesBloomFilterCheck extends BloomFilterCheck {
+ @Override
+ public boolean checkValue(ColumnVector columnVector, int idx) {
+ BytesColumnVector col = (BytesColumnVector) columnVector;
+ return bloomFilter.testBytes(col.vector[idx], col.start[idx], col.length[idx]);
+ }
+ }
+
+ class LongBloomFilterCheck extends BloomFilterCheck {
+ @Override
+ public boolean checkValue(ColumnVector columnVector, int idx) {
+ LongColumnVector col = (LongColumnVector) columnVector;
+ return bloomFilter.testLong(col.vector[idx]);
+ }
+ }
+
+ class DoubleBloomFilterCheck extends BloomFilterCheck {
+ @Override
+ public boolean checkValue(ColumnVector columnVector, int idx) {
+ DoubleColumnVector col = (DoubleColumnVector) columnVector;
+ return bloomFilter.testDouble(col.vector[idx]);
+ }
+ }
+
+ class DecimalBloomFilterCheck extends BloomFilterCheck {
+ private byte[] scratchBuffer = new byte[HiveDecimal.SCRATCH_BUFFER_LEN_TO_BYTES];
+
+ @Override
+ public boolean checkValue(ColumnVector columnVector, int idx) {
+ DecimalColumnVector col = (DecimalColumnVector) columnVector;
+ int startIdx = col.vector[idx].toBytes(scratchBuffer);
+ return bloomFilter.testBytes(scratchBuffer, startIdx, scratchBuffer.length - startIdx);
+ }
+ }
+
+ class TimestampBloomFilterCheck extends BloomFilterCheck {
+ @Override
+ public boolean checkValue(ColumnVector columnVector, int idx) {
+ TimestampColumnVector col = (TimestampColumnVector) columnVector;
+ return bloomFilter.testLong(col.time[idx]);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java
new file mode 100644
index 0000000..3ecb82e
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java
@@ -0,0 +1,474 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationBufferRow;
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression.AggregationBuffer;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.AggregationDesc;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFBloomFilter;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFBloomFilter.GenericUDAFBloomFilterEvaluator;
+import org.apache.hadoop.hive.ql.util.JavaDataModel;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.io.Text;
+import org.apache.hive.common.util.BloomFilter;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class VectorUDAFBloomFilter extends VectorAggregateExpression {
+
+ private static final Logger LOG = LoggerFactory.getLogger(VectorUDAFBloomFilter.class);
+
+ private static final long serialVersionUID = 1L;
+
+ private VectorExpression inputExpression;
+ private long expectedEntries = -1;
+ private ValueProcessor valueProcessor;
+ transient private int bitSetSize = -1;
+ transient private BytesWritable bw = new BytesWritable();
+ transient private ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+
+ /**
+ * class for storing the current aggregate value.
+ */
+ private static final class Aggregation implements AggregationBuffer {
+ private static final long serialVersionUID = 1L;
+
+ BloomFilter bf;
+
+ public Aggregation(long expectedEntries) {
+ bf = new BloomFilter(expectedEntries);
+ }
+
+ @Override
+ public int getVariableSize() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void reset() {
+ bf.reset();
+ }
+ }
+
+ public VectorUDAFBloomFilter(VectorExpression inputExpression) {
+ this();
+ this.inputExpression = inputExpression;
+
+ // Instantiate the ValueProcessor based on the input type
+ VectorExpressionDescriptor.ArgumentType inputType =
+ VectorExpressionDescriptor.ArgumentType.fromHiveTypeName(inputExpression.getOutputType());
+ switch (inputType) {
+ case INT_FAMILY:
+ case DATE:
+ valueProcessor = new ValueProcessorLong();
+ break;
+ case FLOAT_FAMILY:
+ valueProcessor = new ValueProcessorDouble();
+ break;
+ case DECIMAL:
+ valueProcessor = new ValueProcessorDecimal();
+ break;
+ case STRING:
+ case CHAR:
+ case VARCHAR:
+ case STRING_FAMILY:
+ case BINARY:
+ valueProcessor = new ValueProcessorBytes();
+ break;
+ case TIMESTAMP:
+ valueProcessor = new ValueProcessorTimestamp();
+ break;
+ default:
+ throw new IllegalStateException("Unsupported type " + inputType);
+ }
+ }
+
+ public VectorUDAFBloomFilter() {
+ super();
+ }
+
+ @Override
+ public AggregationBuffer getNewAggregationBuffer() throws HiveException {
+ if (expectedEntries < 0) {
+ throw new IllegalStateException("expectedEntries not initialized");
+ }
+ return new Aggregation(expectedEntries);
+ }
+
+ @Override
+ public void aggregateInput(AggregationBuffer agg, VectorizedRowBatch batch)
+ throws HiveException {
+
+ inputExpression.evaluate(batch);
+
+ ColumnVector inputColumn = batch.cols[this.inputExpression.getOutputColumn()];
+
+ int batchSize = batch.size;
+
+ if (batchSize == 0) {
+ return;
+ }
+
+ Aggregation myagg = (Aggregation) agg;
+
+ if (inputColumn.isRepeating) {
+ if (inputColumn.noNulls) {
+ valueProcessor.processValue(myagg, inputColumn, 0);
+ }
+ return;
+ }
+
+ if (!batch.selectedInUse && inputColumn.noNulls) {
+ iterateNoSelectionNoNulls(myagg, inputColumn, batchSize);
+ }
+ else if (!batch.selectedInUse) {
+ iterateNoSelectionHasNulls(myagg, inputColumn, batchSize);
+ }
+ else if (inputColumn.noNulls){
+ iterateSelectionNoNulls(myagg, inputColumn, batchSize, batch.selected);
+ }
+ else {
+ iterateSelectionHasNulls(myagg, inputColumn, batchSize, batch.selected);
+ }
+ }
+
+ private void iterateNoSelectionNoNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize) {
+ for (int i=0; i< batchSize; ++i) {
+ valueProcessor.processValue(myagg, inputColumn, i);
+ }
+ }
+
+ private void iterateNoSelectionHasNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize) {
+
+ for (int i=0; i< batchSize; ++i) {
+ if (!inputColumn.isNull[i]) {
+ valueProcessor.processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ private void iterateSelectionNoNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize,
+ int[] selected) {
+
+ for (int j=0; j< batchSize; ++j) {
+ int i = selected[j];
+ valueProcessor.processValue(myagg, inputColumn, i);
+ }
+ }
+
+ private void iterateSelectionHasNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize,
+ int[] selected) {
+
+ for (int j=0; j< batchSize; ++j) {
+ int i = selected[j];
+ if (!inputColumn.isNull[i]) {
+ valueProcessor.processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ @Override
+ public void aggregateInputSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets, int aggregateIndex,
+ VectorizedRowBatch batch) throws HiveException {
+
+ int batchSize = batch.size;
+
+ if (batchSize == 0) {
+ return;
+ }
+
+ inputExpression.evaluate(batch);
+
+ ColumnVector inputColumn = batch.cols[this.inputExpression.getOutputColumn()];
+
+ if (inputColumn.noNulls) {
+ if (inputColumn.isRepeating) {
+ iterateNoNullsRepeatingWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize);
+ } else {
+ if (batch.selectedInUse) {
+ iterateNoNullsSelectionWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batch.selected, batchSize);
+ } else {
+ iterateNoNullsWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize);
+ }
+ }
+ } else {
+ if (inputColumn.isRepeating) {
+ // All nulls, no-op for min/max
+ } else {
+ if (batch.selectedInUse) {
+ iterateHasNullsSelectionWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize, batch.selected);
+ } else {
+ iterateHasNullsWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize);
+ }
+ }
+ }
+ }
+
+ private void iterateNoNullsRepeatingWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize) {
+
+ for (int i=0; i < batchSize; ++i) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ valueProcessor.processValue(myagg, inputColumn, 0);
+ }
+ }
+
+ private void iterateNoNullsSelectionWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int[] selection,
+ int batchSize) {
+
+ for (int i=0; i < batchSize; ++i) {
+ int row = selection[i];
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ valueProcessor.processValue(myagg, inputColumn, row);
+ }
+ }
+
+ private void iterateNoNullsWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize) {
+ for (int i=0; i < batchSize; ++i) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ valueProcessor.processValue(myagg, inputColumn, i);
+ }
+ }
+
+ private void iterateHasNullsSelectionWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize,
+ int[] selection) {
+
+ for (int i=0; i < batchSize; ++i) {
+ int row = selection[i];
+ if (!inputColumn.isNull[row]) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ valueProcessor.processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ private void iterateHasNullsWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize) {
+
+ for (int i=0; i < batchSize; ++i) {
+ if (!inputColumn.isNull[i]) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ valueProcessor.processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ private Aggregation getCurrentAggregationBuffer(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ int row) {
+ VectorAggregationBufferRow mySet = aggregationBufferSets[row];
+ Aggregation myagg = (Aggregation) mySet.getAggregationBuffer(aggregrateIndex);
+ return myagg;
+ }
+
+ @Override
+ public void reset(AggregationBuffer agg) throws HiveException {
+ agg.reset();
+ }
+
+ @Override
+ public Object evaluateOutput(AggregationBuffer agg) throws HiveException {
+ try {
+ Aggregation bfAgg = (Aggregation) agg;
+ byteStream.reset();
+ BloomFilter.serialize(byteStream, bfAgg.bf);
+ byte[] bytes = byteStream.toByteArray();
+ bw.set(bytes, 0, bytes.length);
+ return bw;
+ } catch (IOException err) {
+ throw new HiveException("Error encountered while serializing bloomfilter", err);
+ }
+ }
+
+ @Override
+ public ObjectInspector getOutputObjectInspector() {
+ return PrimitiveObjectInspectorFactory.writableBinaryObjectInspector;
+ }
+
+ @Override
+ public int getAggregationBufferFixedSize() {
+ if (bitSetSize < 0) {
+ // Not pretty, but we need a way to get the size
+ try {
+ Aggregation agg = (Aggregation) getNewAggregationBuffer();
+ bitSetSize = agg.bf.getBitSet().length;
+ } catch (Exception e) {
+ throw new RuntimeException("Unexpected error while creating AggregationBuffer", e);
+ }
+ }
+
+ // BloomFilter: object(BitSet: object(data: long[]), numBits: int, numHashFunctions: int)
+ JavaDataModel model = JavaDataModel.get();
+ int bloomFilterSize = JavaDataModel.alignUp(model.object() + model.lengthForLongArrayOfSize(bitSetSize),
+ model.memoryAlign());
+ return JavaDataModel.alignUp(
+ model.object() + bloomFilterSize + model.primitive1() + model.primitive1(),
+ model.memoryAlign());
+ }
+
+ @Override
+ public void init(AggregationDesc desc) throws HiveException {
+ GenericUDAFBloomFilterEvaluator udafBloomFilter =
+ (GenericUDAFBloomFilterEvaluator) desc.getGenericUDAFEvaluator();
+ expectedEntries = udafBloomFilter.getExpectedEntries();
+ }
+
+ public VectorExpression getInputExpression() {
+ return inputExpression;
+ }
+
+ public void setInputExpression(VectorExpression inputExpression) {
+ this.inputExpression = inputExpression;
+ }
+
+ public long getExpectedEntries() {
+ return expectedEntries;
+ }
+
+ public void setExpectedEntries(long expectedEntries) {
+ this.expectedEntries = expectedEntries;
+ }
+
+ // Type-specific handling done here
+ private static abstract class ValueProcessor {
+ abstract protected void processValue(Aggregation myagg, ColumnVector inputColumn, int index);
+ }
+
+ //
+ // Type-specific implementations
+ //
+
+ public static class ValueProcessorBytes extends ValueProcessor {
+ @Override
+ protected void processValue(Aggregation myagg, ColumnVector columnVector, int i) {
+ BytesColumnVector inputColumn = (BytesColumnVector) columnVector;
+ myagg.bf.addBytes(inputColumn.vector[i], inputColumn.start[i], inputColumn.length[i]);
+ }
+ }
+
+ public static class ValueProcessorLong extends ValueProcessor {
+ @Override
+ protected void processValue(Aggregation myagg, ColumnVector columnVector, int i) {
+ LongColumnVector inputColumn = (LongColumnVector) columnVector;
+ myagg.bf.addLong(inputColumn.vector[i]);
+ }
+ }
+
+ public static class ValueProcessorDouble extends ValueProcessor {
+ @Override
+ protected void processValue(Aggregation myagg, ColumnVector columnVector, int i) {
+ DoubleColumnVector inputColumn = (DoubleColumnVector) columnVector;
+ myagg.bf.addDouble(inputColumn.vector[i]);
+ }
+ }
+
+ public static class ValueProcessorDecimal extends ValueProcessor {
+ private byte[] scratchBuffer = new byte[HiveDecimal.SCRATCH_BUFFER_LEN_TO_BYTES];
+
+ @Override
+ protected void processValue(Aggregation myagg, ColumnVector columnVector, int i) {
+ DecimalColumnVector inputColumn = (DecimalColumnVector) columnVector;
+ int startIdx = inputColumn.vector[i].toBytes(scratchBuffer);
+ myagg.bf.addBytes(scratchBuffer, startIdx, scratchBuffer.length - startIdx);
+ }
+ }
+
+ public static class ValueProcessorTimestamp extends ValueProcessor {
+ @Override
+ protected void processValue(Aggregation myagg, ColumnVector columnVector, int i) {
+ TimestampColumnVector inputColumn = (TimestampColumnVector) columnVector;
+ myagg.bf.addLong(inputColumn.time[i]);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilterMerge.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilterMerge.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilterMerge.java
new file mode 100644
index 0000000..ad190b7
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilterMerge.java
@@ -0,0 +1,365 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+
+import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationBufferRow;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression.AggregationBuffer;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.AggregationDesc;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFBloomFilter.GenericUDAFBloomFilterEvaluator;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hive.common.util.BloomFilter;
+
+public class VectorUDAFBloomFilterMerge extends VectorAggregateExpression {
+
+ private static final long serialVersionUID = 1L;
+
+ private VectorExpression inputExpression;
+ private long expectedEntries = -1;
+ transient private int aggBufferSize = -1;
+ transient private BytesWritable bw = new BytesWritable();
+
+ /**
+ * class for storing the current aggregate value.
+ */
+ private static final class Aggregation implements AggregationBuffer {
+ private static final long serialVersionUID = 1L;
+
+ byte[] bfBytes;
+
+ public Aggregation(long expectedEntries) {
+ try {
+ BloomFilter bf = new BloomFilter(expectedEntries);
+ ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+ BloomFilter.serialize(bytesOut, bf);
+ bfBytes = bytesOut.toByteArray();
+ } catch (Exception err) {
+ throw new IllegalArgumentException("Error creating aggregation buffer", err);
+ }
+ }
+
+ @Override
+ public int getVariableSize() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void reset() {
+ // Do not change the initial bytes which contain NumHashFunctions/NumBits!
+ Arrays.fill(bfBytes, BloomFilter.START_OF_SERIALIZED_LONGS, bfBytes.length, (byte) 0);
+ }
+ }
+
+ public VectorUDAFBloomFilterMerge(VectorExpression inputExpression) {
+ this();
+ this.inputExpression = inputExpression;
+ }
+
+ public VectorUDAFBloomFilterMerge() {
+ super();
+ }
+
+ @Override
+ public AggregationBuffer getNewAggregationBuffer() throws HiveException {
+ if (expectedEntries < 0) {
+ throw new IllegalStateException("expectedEntries not initialized");
+ }
+ return new Aggregation(expectedEntries);
+ }
+
+ @Override
+ public void aggregateInput(AggregationBuffer agg, VectorizedRowBatch batch)
+ throws HiveException {
+
+ inputExpression.evaluate(batch);
+
+ ColumnVector inputColumn = batch.cols[this.inputExpression.getOutputColumn()];
+
+ int batchSize = batch.size;
+
+ if (batchSize == 0) {
+ return;
+ }
+
+ Aggregation myagg = (Aggregation) agg;
+
+ if (inputColumn.isRepeating) {
+ if (inputColumn.noNulls) {
+ processValue(myagg, inputColumn, 0);
+ }
+ return;
+ }
+
+ if (!batch.selectedInUse && inputColumn.noNulls) {
+ iterateNoSelectionNoNulls(myagg, inputColumn, batchSize);
+ }
+ else if (!batch.selectedInUse) {
+ iterateNoSelectionHasNulls(myagg, inputColumn, batchSize);
+ }
+ else if (inputColumn.noNulls){
+ iterateSelectionNoNulls(myagg, inputColumn, batchSize, batch.selected);
+ }
+ else {
+ iterateSelectionHasNulls(myagg, inputColumn, batchSize, batch.selected);
+ }
+ }
+
+ private void iterateNoSelectionNoNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize) {
+ for (int i=0; i< batchSize; ++i) {
+ processValue(myagg, inputColumn, i);
+ }
+ }
+
+ private void iterateNoSelectionHasNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize) {
+
+ for (int i=0; i< batchSize; ++i) {
+ if (!inputColumn.isNull[i]) {
+ processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ private void iterateSelectionNoNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize,
+ int[] selected) {
+
+ for (int j=0; j< batchSize; ++j) {
+ int i = selected[j];
+ processValue(myagg, inputColumn, i);
+ }
+ }
+
+ private void iterateSelectionHasNulls(
+ Aggregation myagg,
+ ColumnVector inputColumn,
+ int batchSize,
+ int[] selected) {
+
+ for (int j=0; j< batchSize; ++j) {
+ int i = selected[j];
+ if (!inputColumn.isNull[i]) {
+ processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ @Override
+ public void aggregateInputSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets, int aggregateIndex,
+ VectorizedRowBatch batch) throws HiveException {
+
+ int batchSize = batch.size;
+
+ if (batchSize == 0) {
+ return;
+ }
+
+ inputExpression.evaluate(batch);
+
+ ColumnVector inputColumn = batch.cols[this.inputExpression.getOutputColumn()];
+
+ if (inputColumn.noNulls) {
+ if (inputColumn.isRepeating) {
+ iterateNoNullsRepeatingWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize);
+ } else {
+ if (batch.selectedInUse) {
+ iterateNoNullsSelectionWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batch.selected, batchSize);
+ } else {
+ iterateNoNullsWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize);
+ }
+ }
+ } else {
+ if (inputColumn.isRepeating) {
+ // All nulls, no-op for min/max
+ } else {
+ if (batch.selectedInUse) {
+ iterateHasNullsSelectionWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize, batch.selected);
+ } else {
+ iterateHasNullsWithAggregationSelection(
+ aggregationBufferSets, aggregateIndex,
+ inputColumn, batchSize);
+ }
+ }
+ }
+ }
+
+ private void iterateNoNullsRepeatingWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize) {
+
+ for (int i=0; i < batchSize; ++i) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ processValue(myagg, inputColumn, 0);
+ }
+ }
+
+ private void iterateNoNullsSelectionWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int[] selection,
+ int batchSize) {
+
+ for (int i=0; i < batchSize; ++i) {
+ int row = selection[i];
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ processValue(myagg, inputColumn, row);
+ }
+ }
+
+ private void iterateNoNullsWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize) {
+ for (int i=0; i < batchSize; ++i) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ processValue(myagg, inputColumn, i);
+ }
+ }
+
+ private void iterateHasNullsSelectionWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize,
+ int[] selection) {
+
+ for (int i=0; i < batchSize; ++i) {
+ int row = selection[i];
+ if (!inputColumn.isNull[row]) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ private void iterateHasNullsWithAggregationSelection(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ ColumnVector inputColumn,
+ int batchSize) {
+
+ for (int i=0; i < batchSize; ++i) {
+ if (!inputColumn.isNull[i]) {
+ Aggregation myagg = getCurrentAggregationBuffer(
+ aggregationBufferSets,
+ aggregrateIndex,
+ i);
+ processValue(myagg, inputColumn, i);
+ }
+ }
+ }
+
+ private Aggregation getCurrentAggregationBuffer(
+ VectorAggregationBufferRow[] aggregationBufferSets,
+ int aggregrateIndex,
+ int row) {
+ VectorAggregationBufferRow mySet = aggregationBufferSets[row];
+ Aggregation myagg = (Aggregation) mySet.getAggregationBuffer(aggregrateIndex);
+ return myagg;
+ }
+
+ @Override
+ public void reset(AggregationBuffer agg) throws HiveException {
+ agg.reset();
+ }
+
+ @Override
+ public Object evaluateOutput(AggregationBuffer agg) throws HiveException {
+ Aggregation bfAgg = (Aggregation) agg;
+ bw.set(bfAgg.bfBytes, 0, bfAgg.bfBytes.length);
+ return bw;
+ }
+
+ @Override
+ public ObjectInspector getOutputObjectInspector() {
+ return PrimitiveObjectInspectorFactory.writableBinaryObjectInspector;
+ }
+
+ @Override
+ public int getAggregationBufferFixedSize() {
+ if (aggBufferSize < 0) {
+ // Not pretty, but we need a way to get the size
+ try {
+ Aggregation agg = (Aggregation) getNewAggregationBuffer();
+ aggBufferSize = agg.bfBytes.length;
+ } catch (Exception e) {
+ throw new RuntimeException("Unexpected error while creating AggregationBuffer", e);
+ }
+ }
+
+ return aggBufferSize;
+ }
+
+ @Override
+ public void init(AggregationDesc desc) throws HiveException {
+ GenericUDAFBloomFilterEvaluator udafBloomFilter =
+ (GenericUDAFBloomFilterEvaluator) desc.getGenericUDAFEvaluator();
+ expectedEntries = udafBloomFilter.getExpectedEntries();
+ }
+
+ void processValue(Aggregation myagg, ColumnVector columnVector, int i) {
+ // columnVector entry is byte array representing serialized BloomFilter.
+ // BloomFilter.mergeBloomFilterBytes() does a simple byte ORing
+ // which should be faster than deserialize/merge.
+ BytesColumnVector inputColumn = (BytesColumnVector) columnVector;
+ BloomFilter.mergeBloomFilterBytes(myagg.bfBytes, 0, myagg.bfBytes.length,
+ inputColumn.vector[i], inputColumn.start[i], inputColumn.length[i]);
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
index e3d9d7f..439950b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
@@ -335,6 +335,7 @@ public class Vectorizer implements PhysicalPlanResolver {
supportedGenericUDFs.add(GenericUDFNvl.class);
supportedGenericUDFs.add(GenericUDFElt.class);
supportedGenericUDFs.add(GenericUDFInitCap.class);
+ supportedGenericUDFs.add(GenericUDFInBloomFilter.class);
// For type casts
supportedGenericUDFs.add(UDFToLong.class);
@@ -368,6 +369,7 @@ public class Vectorizer implements PhysicalPlanResolver {
supportedAggregationUdfs.add("stddev");
supportedAggregationUdfs.add("stddev_pop");
supportedAggregationUdfs.add("stddev_samp");
+ supportedAggregationUdfs.add("bloom_filter");
}
private class VectorTaskColumnInfo {
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFBloomFilter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFBloomFilter.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFBloomFilter.java
index fb9a140..deb0f76 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFBloomFilter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFBloomFilter.java
@@ -24,6 +24,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.*;
@@ -72,6 +73,8 @@ public class GenericUDAFBloomFilter implements GenericUDAFResolver2 {
// Bloom filter rest
private ByteArrayOutputStream result = new ByteArrayOutputStream();
+ private transient byte[] scratchBuffer = new byte[HiveDecimal.SCRATCH_BUFFER_LEN_TO_BYTES];
+
@Override
public ObjectInspector init(Mode m, ObjectInspector[] parameters) throws HiveException {
super.init(m, parameters);
@@ -167,9 +170,10 @@ public class GenericUDAFBloomFilter implements GenericUDAFResolver2 {
bf.addDouble(vDouble);
break;
case DECIMAL:
- HiveDecimal vDecimal = ((HiveDecimalObjectInspector)inputOI).
- getPrimitiveJavaObject(parameters[0]);
- bf.addString(vDecimal.toString());
+ HiveDecimalWritable vDecimal = ((HiveDecimalObjectInspector)inputOI).
+ getPrimitiveWritableObject(parameters[0]);
+ int startIdx = vDecimal.toBytes(scratchBuffer);
+ bf.addBytes(scratchBuffer, startIdx, scratchBuffer.length - startIdx);
break;
case DATE:
DateWritable vDate = ((DateObjectInspector)inputOI).
http://git-wip-us.apache.org/repos/asf/hive/blob/62ebd1ab/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInBloomFilter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInBloomFilter.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInBloomFilter.java
index 1b7de6c..3e6e069 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInBloomFilter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInBloomFilter.java
@@ -22,8 +22,11 @@ import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorInBloomFilterColDynamicValue;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.*;
@@ -41,6 +44,7 @@ import java.sql.Timestamp;
/**
* GenericUDF to lookup a value in BloomFilter
*/
+@VectorizedExpressions({VectorInBloomFilterColDynamicValue.class})
public class GenericUDFInBloomFilter extends GenericUDF {
private static final Logger LOG = LoggerFactory.getLogger(GenericUDFInBloomFilter.class);
@@ -48,6 +52,7 @@ public class GenericUDFInBloomFilter extends GenericUDF {
private transient ObjectInspector bloomFilterObjectInspector;
private transient BloomFilter bloomFilter;
private transient boolean initializedBloomFilter;
+ private transient byte[] scratchBuffer = new byte[HiveDecimal.SCRATCH_BUFFER_LEN_TO_BYTES];
@Override
public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException {
@@ -133,9 +138,10 @@ public class GenericUDFInBloomFilter extends GenericUDF {
get(arguments[0].get());
return bloomFilter.testDouble(vDouble);
case DECIMAL:
- HiveDecimal vDecimal = ((HiveDecimalObjectInspector) valObjectInspector).
- getPrimitiveJavaObject(arguments[0].get());
- return bloomFilter.testString(vDecimal.toString());
+ HiveDecimalWritable vDecimal = ((HiveDecimalObjectInspector) valObjectInspector).
+ getPrimitiveWritableObject(arguments[0].get());
+ int startIdx = vDecimal.toBytes(scratchBuffer);
+ return bloomFilter.testBytes(scratchBuffer, startIdx, scratchBuffer.length - startIdx);
case DATE:
DateWritable vDate = ((DateObjectInspector) valObjectInspector).
getPrimitiveWritableObject(arguments[0].get());
[03/50] [abbrv] hive git commit: HIVE-15704. Update the default
logger for llap to query-routing. (Siddharth Seth,
reviewed by Prasanth Jayachandran)
Posted by se...@apache.org.
HIVE-15704. Update the default logger for llap to query-routing. (Siddharth Seth, reviewed by Prasanth Jayachandran)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/888e5d7e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/888e5d7e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/888e5d7e
Branch: refs/heads/hive-14535
Commit: 888e5d7ecc01d8c6d1c43e9eccf22b9c24a62181
Parents: 1be08d1
Author: Siddharth Seth <ss...@apache.org>
Authored: Fri Jan 27 11:52:04 2017 -0800
Committer: Siddharth Seth <ss...@apache.org>
Committed: Fri Jan 27 11:52:04 2017 -0800
----------------------------------------------------------------------
common/src/java/org/apache/hadoop/hive/conf/HiveConf.java | 2 +-
llap-server/src/main/resources/package.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/888e5d7e/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index ea173c8..1e7bfd7 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -3201,7 +3201,7 @@ public class HiveConf extends Configuration {
"Whether to create the LLAP coordinator; since execution engine and container vs llap\n" +
"settings are both coming from job configs, we don't know at start whether this should\n" +
"be created. Default true."),
- LLAP_DAEMON_LOGGER("hive.llap.daemon.logger", Constants.LLAP_LOGGER_NAME_RFA,
+ LLAP_DAEMON_LOGGER("hive.llap.daemon.logger", Constants.LLAP_LOGGER_NAME_QUERY_ROUTING,
new StringSet(Constants.LLAP_LOGGER_NAME_QUERY_ROUTING,
Constants.LLAP_LOGGER_NAME_RFA,
Constants.LLAP_LOGGER_NAME_CONSOLE),
http://git-wip-us.apache.org/repos/asf/hive/blob/888e5d7e/llap-server/src/main/resources/package.py
----------------------------------------------------------------------
diff --git a/llap-server/src/main/resources/package.py b/llap-server/src/main/resources/package.py
index 380c6a8..62a8d08 100644
--- a/llap-server/src/main/resources/package.py
+++ b/llap-server/src/main/resources/package.py
@@ -85,7 +85,7 @@ def main(args):
parser.add_argument("--args", default="")
parser.add_argument("--name", default="llap0")
parser.add_argument("--loglevel", default="INFO")
- parser.add_argument("--logger", default="RFA")
+ parser.add_argument("--logger", default="query-routing")
parser.add_argument("--chaosmonkey", type=int, default=0)
parser.add_argument("--slider-am-container-mb", type=int, default=1024)
parser.add_argument("--slider-appconfig-global", nargs='*', type=slider_appconfig_global_property, action='append')
[24/50] [abbrv] hive git commit: HIVE-15703 :
HiveSubQRemoveRelBuilder should use Hive's own factories (Vineet Garg via
Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/subquery_notin_having.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/subquery_notin_having.q.out b/ql/src/test/results/clientpositive/subquery_notin_having.q.out
index 72a72f9..644e70e 100644
--- a/ql/src/test/results/clientpositive/subquery_notin_having.q.out
+++ b/ql/src/test/results/clientpositive/subquery_notin_having.q.out
@@ -1,4 +1,4 @@
-Warning: Shuffle Join JOIN[23][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-2:MAPRED' is a cross product
+Warning: Shuffle Join JOIN[22][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-2:MAPRED' is a cross product
PREHOOK: query: explain
select key, count(*)
from src
@@ -172,32 +172,32 @@ STAGE PLANS:
Filter Operator
predicate: (key > '12') (type: boolean)
Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
- Select Operator
- expressions: key (type: string)
+ Group By Operator
+ keys: key (type: string)
+ mode: hash
outputColumnNames: _col0
Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: string), true (type: boolean)
- mode: hash
- outputColumnNames: _col0, _col1
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
- Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
@@ -1028,8 +1028,8 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col0 (type: string), true (type: boolean)
- sort order: ++
+ key expressions: _col0 (type: string)
+ sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE Column stats: NONE
value expressions: _col1 (type: double), _col2 (type: double)
@@ -1048,16 +1048,20 @@ STAGE PLANS:
outputColumnNames: _col0
Statistics: Num rows: 4 Data size: 484 Basic stats: COMPLETE Column stats: NONE
Group By Operator
- keys: _col0 (type: string), true (type: boolean)
+ keys: _col0 (type: string)
mode: complete
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 2 Data size: 242 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 2 Data size: 242 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
@@ -1123,7 +1127,7 @@ POSTHOOK: query: INSERT INTO t2 VALUES (null), (2), (100)
POSTHOOK: type: QUERY
POSTHOOK: Output: default@t2
POSTHOOK: Lineage: t2.c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-Warning: Shuffle Join JOIN[21][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-2:MAPRED' is a cross product
+Warning: Shuffle Join JOIN[20][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-2:MAPRED' is a cross product
PREHOOK: query: explain SELECT c1 FROM t1 group by c1 having c1 NOT IN (SELECT c1 FROM t2)
PREHOOK: type: QUERY
POSTHOOK: query: explain SELECT c1 FROM t1 group by c1 having c1 NOT IN (SELECT c1 FROM t2)
@@ -1280,30 +1284,34 @@ STAGE PLANS:
Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: c1 (type: int)
- outputColumnNames: _col0
+ outputColumnNames: c1
Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
Group By Operator
- keys: _col0 (type: int), true (type: boolean)
+ keys: c1 (type: int)
mode: hash
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col0 (type: int), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: int), _col1 (type: boolean)
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 3 Data size: 6 Basic stats: COMPLETE Column stats: NONE
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: int)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 2 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 2 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
@@ -1311,7 +1319,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join JOIN[21][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-2:MAPRED' is a cross product
+Warning: Shuffle Join JOIN[20][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-2:MAPRED' is a cross product
PREHOOK: query: SELECT c1 FROM t1 group by c1 having c1 NOT IN (SELECT c1 FROM t2)
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out b/ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out
index 1652996..7820831 100644
--- a/ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out
+++ b/ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out
@@ -1,4 +1,4 @@
-Warning: Map Join MAPJOIN[35][bigTable=?] in task 'Stage-8:MAPRED' is a cross product
+Warning: Map Join MAPJOIN[34][bigTable=?] in task 'Stage-8:MAPRED' is a cross product
PREHOOK: query: explain
select *
from src
@@ -214,30 +214,34 @@ STAGE PLANS:
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: key (type: string)
- outputColumnNames: _col0
+ outputColumnNames: key
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
Group By Operator
- keys: _col0 (type: string), true (type: boolean)
+ keys: key (type: string)
mode: hash
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator
- key expressions: _col0 (type: string), _col1 (type: boolean)
- sort order: ++
- Map-reduce partition columns: _col0 (type: string), _col1 (type: boolean)
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: string), KEY._col1 (type: boolean)
+ keys: KEY._col0 (type: string)
mode: mergepartial
- outputColumnNames: _col0, _col1
+ outputColumnNames: _col0
Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- table:
- input format: org.apache.hadoop.mapred.SequenceFileInputFormat
- output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
- serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+ Select Operator
+ expressions: _col0 (type: string), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
Stage: Stage-0
Fetch Operator
@@ -245,7 +249,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Map Join MAPJOIN[35][bigTable=?] in task 'Stage-8:MAPRED' is a cross product
+Warning: Map Join MAPJOIN[34][bigTable=?] in task 'Stage-8:MAPRED' is a cross product
PREHOOK: query: select *
from src
where not key in
http://git-wip-us.apache.org/repos/asf/hive/blob/4becd689/ql/src/test/results/clientpositive/vector_mapjoin_reduce.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_mapjoin_reduce.q.out b/ql/src/test/results/clientpositive/vector_mapjoin_reduce.q.out
index 1dec224..eaaf3e9 100644
--- a/ql/src/test/results/clientpositive/vector_mapjoin_reduce.q.out
+++ b/ql/src/test/results/clientpositive/vector_mapjoin_reduce.q.out
@@ -68,7 +68,7 @@ STAGE PLANS:
alias: li
Statistics: Num rows: 100 Data size: 11999 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: ((l_linenumber = 1) and l_partkey is not null) (type: boolean)
+ predicate: ((l_linenumber = 1) and l_partkey is not null and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 50 Data size: 5999 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: l_orderkey (type: int), l_partkey (type: int), l_suppkey (type: int)
@@ -227,7 +227,7 @@ STAGE PLANS:
alias: lineitem
Statistics: Num rows: 100 Data size: 11999 Basic stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (l_shipmode = 'AIR') (type: boolean)
+ predicate: ((l_shipmode = 'AIR') and l_orderkey is not null) (type: boolean)
Statistics: Num rows: 50 Data size: 5999 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: l_orderkey (type: int)
[20/50] [abbrv] hive git commit: HIVE-15709: Vectorization: Fix
performance issue with using LazyBinaryUtils.writeVInt and locking / thread
local storage (Matt McCline, reviewed by Gopal Vijayaraghavan)
Posted by se...@apache.org.
HIVE-15709: Vectorization: Fix performance issue with using LazyBinaryUtils.writeVInt and locking / thread local storage (Matt McCline, reviewed by Gopal Vijayaraghavan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/bb33ffac
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/bb33ffac
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/bb33ffac
Branch: refs/heads/hive-14535
Commit: bb33ffacb35d813cd95aeb79c3d8e1067f96d2c3
Parents: 5468207
Author: Matt McCline <mm...@hortonworks.com>
Authored: Tue Jan 31 11:47:04 2017 -0800
Committer: Matt McCline <mm...@hortonworks.com>
Committed: Tue Jan 31 11:47:04 2017 -0800
----------------------------------------------------------------------
.../hive/ql/exec/vector/VectorSerializeRow.java | 638 +++----------------
.../hive/serde2/lazybinary/LazyBinaryUtils.java | 4 +-
.../fast/LazyBinarySerializeWrite.java | 28 +-
3 files changed, 130 insertions(+), 540 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/bb33ffac/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java
index a95098a..319b4a8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSerializeRow.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hive.ql.exec.vector;
import java.io.IOException;
import java.sql.Timestamp;
+import java.util.Arrays;
import java.util.List;
import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
@@ -49,6 +50,11 @@ public final class VectorSerializeRow<T extends SerializeWrite> {
private T serializeWrite;
+ private Category[] categories;
+ private PrimitiveCategory[] primitiveCategories;
+
+ private int[] outputColumnNums;
+
public VectorSerializeRow(T serializeWrite) {
this();
this.serializeWrite = serializeWrite;
@@ -58,598 +64,164 @@ public final class VectorSerializeRow<T extends SerializeWrite> {
private VectorSerializeRow() {
}
- private abstract class Writer<W extends SerializeWrite> {
- protected int columnIndex;
-
- Writer(int columnIndex) {
- this.columnIndex = columnIndex;
- }
-
- abstract boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException;
- }
-
- private abstract class AbstractLongWriter extends Writer<T> {
-
- AbstractLongWriter(int columnIndex) {
- super(columnIndex);
- }
- }
-
- private class BooleanWriter extends AbstractLongWriter {
-
- BooleanWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeBoolean(colVector.vector[0] != 0);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeBoolean(colVector.vector[batchIndex] != 0);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
- }
-
- private class ByteWriter extends AbstractLongWriter {
-
- ByteWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeByte((byte) colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeByte((byte) colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
- }
-
- private class ShortWriter extends AbstractLongWriter {
-
- ShortWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeShort((short) colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeShort((short) colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
- }
-
- private class IntWriter extends AbstractLongWriter {
-
- IntWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeInt((int) colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeInt((int) colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
- }
-
- private class LongWriter extends AbstractLongWriter {
-
- LongWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeLong(colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeLong(colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
- }
-
- private class DateWriter extends AbstractLongWriter {
-
- DateWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeDate((int) colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeDate((int) colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
- }
-
- private class TimestampWriter extends Writer {
-
- Timestamp scratchTimestamp;
-
- TimestampWriter(int columnIndex) {
- super(columnIndex);
- scratchTimestamp = new Timestamp(0);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- TimestampColumnVector colVector = (TimestampColumnVector) batch.cols[columnIndex];
+ public void init(List<String> typeNames, int[] columnMap) throws HiveException {
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- colVector.timestampUpdate(scratchTimestamp, 0);
- serializeWrite.writeTimestamp(scratchTimestamp);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- colVector.timestampUpdate(scratchTimestamp, batchIndex);
- serializeWrite.writeTimestamp(scratchTimestamp);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
+ final int size = typeNames.size();
+ categories = new Category[size];
+ primitiveCategories = new PrimitiveCategory[size];
+ outputColumnNums = Arrays.copyOf(columnMap, size);
+ TypeInfo typeInfo;
+ for (int i = 0; i < size; i++) {
+ typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeNames.get(i));
+ categories[i] = typeInfo.getCategory();
+ if (categories[i] == Category.PRIMITIVE) {
+ primitiveCategories[i] = ((PrimitiveTypeInfo) typeInfo).getPrimitiveCategory();
}
}
}
- private class IntervalYearMonthWriter extends AbstractLongWriter {
-
- IntervalYearMonthWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
+ public void init(List<String> typeNames) throws HiveException {
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeHiveIntervalYearMonth((int) colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeHiveIntervalYearMonth((int) colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
+ final int size = typeNames.size();
+ categories = new Category[size];
+ primitiveCategories = new PrimitiveCategory[size];
+ outputColumnNums = new int[size];
+ TypeInfo typeInfo;
+ for (int i = 0; i < size; i++) {
+ typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeNames.get(i));
+ categories[i] = typeInfo.getCategory();
+ if (categories[i] == Category.PRIMITIVE) {
+ primitiveCategories[i] = ((PrimitiveTypeInfo) typeInfo).getPrimitiveCategory();
}
+ outputColumnNums[i] = i;
}
}
- private class IntervalDayTimeWriter extends Writer {
-
- private HiveIntervalDayTime hiveIntervalDayTime;
-
- IntervalDayTimeWriter(int columnIndex) {
- super(columnIndex);
- hiveIntervalDayTime = new HiveIntervalDayTime();
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- IntervalDayTimeColumnVector colVector = (IntervalDayTimeColumnVector) batch.cols[columnIndex];
+ public void init(TypeInfo[] typeInfos, int[] columnMap)
+ throws HiveException {
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- hiveIntervalDayTime.set(colVector.asScratchIntervalDayTime(0));
- serializeWrite.writeHiveIntervalDayTime(hiveIntervalDayTime);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- hiveIntervalDayTime.set(colVector.asScratchIntervalDayTime(batchIndex));
- serializeWrite.writeHiveIntervalDayTime(hiveIntervalDayTime);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
+ final int size = typeInfos.length;
+ categories = new Category[size];
+ primitiveCategories = new PrimitiveCategory[size];
+ outputColumnNums = Arrays.copyOf(columnMap, size);
+ TypeInfo typeInfo;
+ for (int i = 0; i < typeInfos.length; i++) {
+ typeInfo = typeInfos[i];
+ categories[i] = typeInfo.getCategory();
+ if (categories[i] == Category.PRIMITIVE) {
+ primitiveCategories[i] = ((PrimitiveTypeInfo) typeInfo).getPrimitiveCategory();
}
}
}
- private abstract class AbstractDoubleWriter extends Writer<T> {
-
- AbstractDoubleWriter(int columnIndex) {
- super(columnIndex);
- }
- }
-
- private class FloatWriter extends AbstractDoubleWriter {
-
- FloatWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- DoubleColumnVector colVector = (DoubleColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeFloat((float) colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeFloat((float) colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
+ public int getCount() {
+ return categories.length;
}
- private class DoubleWriter extends AbstractDoubleWriter {
-
- DoubleWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- DoubleColumnVector colVector = (DoubleColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeDouble(colVector.vector[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeDouble(colVector.vector[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
+ public void setOutput(Output output) {
+ serializeWrite.set(output);
}
- private class StringWriter extends Writer<T> {
-
- StringWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeString(colVector.vector[0], colVector.start[0], colVector.length[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeString(colVector.vector[batchIndex],
- colVector.start[batchIndex], colVector.length[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- }
- }
+ public void setOutputAppend(Output output) {
+ serializeWrite.setAppend(output);
}
- private class BinaryWriter extends Writer<T> {
-
- BinaryWriter(int columnIndex) {
- super(columnIndex);
- }
+ private boolean hasAnyNulls;
+ private boolean isAllNulls;
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
+ /*
+ * Note that when serializing a row, the logical mapping using selected in use has already
+ * been performed. batchIndex is the actual index of the row.
+ */
+ public void serializeWrite(VectorizedRowBatch batch, int batchIndex) throws IOException {
+ hasAnyNulls = false;
+ isAllNulls = true;
+ ColumnVector colVector;
+ int adjustedBatchIndex;
+ final int size = categories.length;
+ for (int i = 0; i < size; i++) {
+ colVector = batch.cols[outputColumnNums[i]];
if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- serializeWrite.writeBinary(colVector.vector[0], colVector.start[0], colVector.length[0]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
+ adjustedBatchIndex = 0;
} else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeBinary(colVector.vector[batchIndex],
- colVector.start[batchIndex], colVector.length[batchIndex]);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
+ adjustedBatchIndex = batchIndex;
}
- }
- }
-
- private class HiveDecimalWriter extends Writer<T> {
- protected HiveDecimalWritable[] vector;
-
- HiveDecimalWriter(int columnIndex) {
- super(columnIndex);
- }
-
- @Override
- boolean apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
- DecimalColumnVector colVector = (DecimalColumnVector) batch.cols[columnIndex];
-
- if (colVector.isRepeating) {
- if (colVector.noNulls || !colVector.isNull[0]) {
- // We serialize specifying the HiveDecimalWritable but also the desired
- // serialization scale that will be used by text serialization for adding
- // trailing fractional zeroes.
- serializeWrite.writeHiveDecimal(colVector.vector[0], colVector.scale);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
- } else {
- if (colVector.noNulls || !colVector.isNull[batchIndex]) {
- serializeWrite.writeHiveDecimal(colVector.vector[batchIndex], colVector.scale);
- return true;
- } else {
- serializeWrite.writeNull();
- return false;
- }
+ if (!colVector.noNulls && colVector.isNull[adjustedBatchIndex]) {
+ serializeWrite.writeNull();
+ hasAnyNulls = true;
+ continue;
}
- }
- }
-
- private Writer<T>[] writers;
-
- private Writer<T> createWriter(TypeInfo typeInfo, int columnIndex) throws HiveException {
- Writer<T> writer;
- Category category = typeInfo.getCategory();
- switch (category) {
- case PRIMITIVE:
- {
- PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfo;
- PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory();
- switch (primitiveCategory) {
- // case VOID:
- // UNDONE:
- // break;
+ isAllNulls = false;
+ switch (categories[i]) {
+ case PRIMITIVE:
+ switch (primitiveCategories[i]) {
case BOOLEAN:
- writer = new BooleanWriter(columnIndex);
+ serializeWrite.writeBoolean(((LongColumnVector) colVector).vector[adjustedBatchIndex] != 0);
break;
case BYTE:
- writer = new ByteWriter(columnIndex);
+ serializeWrite.writeByte((byte) ((LongColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case SHORT:
- writer = new ShortWriter(columnIndex);
+ serializeWrite.writeShort((short) ((LongColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case INT:
- writer = new IntWriter(columnIndex);
+ serializeWrite.writeInt((int) ((LongColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case LONG:
- writer = new LongWriter(columnIndex);
+ serializeWrite.writeLong(((LongColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case DATE:
- writer = new DateWriter(columnIndex);
+ serializeWrite.writeDate((int) ((LongColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case TIMESTAMP:
- writer = new TimestampWriter(columnIndex);
+ serializeWrite.writeTimestamp(((TimestampColumnVector) colVector).asScratchTimestamp(adjustedBatchIndex));
break;
case FLOAT:
- writer = new FloatWriter(columnIndex);
+ serializeWrite.writeFloat((float) ((DoubleColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case DOUBLE:
- writer = new DoubleWriter(columnIndex);
+ serializeWrite.writeDouble(((DoubleColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case STRING:
case CHAR:
case VARCHAR:
- // We store CHAR and VARCHAR without pads, so use STRING writer class.
- writer = new StringWriter(columnIndex);
+ {
+ // We store CHAR and VARCHAR without pads, so write with STRING.
+ BytesColumnVector bytesColVector = (BytesColumnVector) colVector;
+ serializeWrite.writeString(
+ bytesColVector.vector[adjustedBatchIndex],
+ bytesColVector.start[adjustedBatchIndex],
+ bytesColVector.length[adjustedBatchIndex]);
+ }
break;
case BINARY:
- writer = new BinaryWriter(columnIndex);
+ {
+ BytesColumnVector bytesColVector = (BytesColumnVector) colVector;
+ serializeWrite.writeBinary(
+ bytesColVector.vector[adjustedBatchIndex],
+ bytesColVector.start[adjustedBatchIndex],
+ bytesColVector.length[adjustedBatchIndex]);
+ }
break;
case DECIMAL:
- writer = new HiveDecimalWriter(columnIndex);
+ {
+ DecimalColumnVector decimalColVector = (DecimalColumnVector) colVector;
+ serializeWrite.writeHiveDecimal(decimalColVector.vector[adjustedBatchIndex], decimalColVector.scale);
+ }
break;
case INTERVAL_YEAR_MONTH:
- writer = new IntervalYearMonthWriter(columnIndex);
+ serializeWrite.writeHiveIntervalYearMonth((int) ((LongColumnVector) colVector).vector[adjustedBatchIndex]);
break;
case INTERVAL_DAY_TIME:
- writer = new IntervalDayTimeWriter(columnIndex);
+ serializeWrite.writeHiveIntervalDayTime(((IntervalDayTimeColumnVector) colVector).asScratchIntervalDayTime(adjustedBatchIndex));
break;
default:
- throw new HiveException("Unexpected primitive type category " + primitiveCategory);
+ throw new RuntimeException("Unexpected primitive category " + primitiveCategories[i]);
}
- }
- break;
- default:
- throw new HiveException("Unexpected type category " + category);
- }
- return writer;
- }
-
- public void init(List<String> typeNames, int[] columnMap) throws HiveException {
-
- writers = new Writer[typeNames.size()];
- for (int i = 0; i < typeNames.size(); i++) {
- String typeName = typeNames.get(i);
- TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
- int columnIndex = columnMap[i];
- Writer<T> writer = createWriter(typeInfo, columnIndex);
- writers[i] = writer;
- }
- }
-
- public void init(List<String> typeNames) throws HiveException {
-
- writers = new Writer[typeNames.size()];
- for (int i = 0; i < typeNames.size(); i++) {
- String typeName = typeNames.get(i);
- TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
- Writer<T> writer = createWriter(typeInfo, i);
- writers[i] = writer;
- }
- }
-
- public void init(TypeInfo[] typeInfos, int[] columnMap)
- throws HiveException {
-
- writers = new Writer[typeInfos.length];
- for (int i = 0; i < typeInfos.length; i++) {
- int columnIndex = columnMap[i];
- Writer<T> writer = createWriter(typeInfos[i], columnIndex);
- writers[i] = writer;
- }
- }
-
- public int getCount() {
- return writers.length;
- }
-
- public void setOutput(Output output) {
- serializeWrite.set(output);
- }
-
- public void setOutputAppend(Output output) {
- serializeWrite.setAppend(output);
- }
-
- private boolean hasAnyNulls;
- private boolean isAllNulls;
-
- /*
- * Note that when serializing a row, the logical mapping using selected in use has already
- * been performed. batchIndex is the actual index of the row.
- */
- public void serializeWrite(VectorizedRowBatch batch, int batchIndex) throws IOException {
-
- hasAnyNulls = false;
- isAllNulls = true;
- for (Writer<T> writer : writers) {
- if (!writer.apply(batch, batchIndex)) {
- hasAnyNulls = true;
- } else {
- isAllNulls = false;
+ break;
+ default:
+ throw new RuntimeException("Unexpected category " + categories[i]);
}
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/bb33ffac/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java
index f8a110d..f4ac56f 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java
@@ -402,10 +402,12 @@ public final class LazyBinaryUtils {
return 1 + len;
}
+ public static int VLONG_BYTES_LEN = 9;
+
private static ThreadLocal<byte[]> vLongBytesThreadLocal = new ThreadLocal<byte[]>() {
@Override
public byte[] initialValue() {
- return new byte[9];
+ return new byte[VLONG_BYTES_LEN];
}
};
http://git-wip-us.apache.org/repos/asf/hive/blob/bb33ffac/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
index 6bc4622..085d71c 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinarySerializeWrite.java
@@ -60,11 +60,13 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
private HiveIntervalYearMonthWritable hiveIntervalYearMonthWritable;
private HiveIntervalDayTimeWritable hiveIntervalDayTimeWritable;
private HiveIntervalDayTime hiveIntervalDayTime;
+ private byte[] vLongBytes;
private long[] scratchLongs;
private byte[] scratchBuffer;
public LazyBinarySerializeWrite(int fieldCount) {
this();
+ vLongBytes = new byte[LazyBinaryUtils.VLONG_BYTES_LEN];
this.fieldCount = fieldCount;
}
@@ -270,7 +272,7 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
// Set bit in NULL byte when a field is NOT NULL.
nullByte |= 1 << (fieldIndex % 8);
- LazyBinaryUtils.writeVInt(output, v);
+ writeVInt(v);
fieldIndex++;
@@ -301,7 +303,7 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
// Set bit in NULL byte when a field is NOT NULL.
nullByte |= 1 << (fieldIndex % 8);
- LazyBinaryUtils.writeVLong(output, v);
+ writeVLong(v);
fieldIndex++;
@@ -402,7 +404,7 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
nullByte |= 1 << (fieldIndex % 8);
int length = v.length;
- LazyBinaryUtils.writeVInt(output, length);
+ writeVInt(length);
output.write(v, 0, length);
@@ -432,7 +434,7 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
// Set bit in NULL byte when a field is NOT NULL.
nullByte |= 1 << (fieldIndex % 8);
- LazyBinaryUtils.writeVInt(output, length);
+ writeVInt(length);
output.write(v, start, length);
@@ -498,7 +500,7 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
// Set bit in NULL byte when a field is NOT NULL.
nullByte |= 1 << (fieldIndex % 8);
- LazyBinaryUtils.writeVInt(output, DateWritable.dateToDays(date));
+ writeVInt(DateWritable.dateToDays(date));
fieldIndex++;
@@ -527,7 +529,7 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
// Set bit in NULL byte when a field is NOT NULL.
nullByte |= 1 << (fieldIndex % 8);
- LazyBinaryUtils.writeVInt(output, dateAsDays);
+ writeVInt(dateAsDays);
fieldIndex++;
@@ -751,4 +753,18 @@ public class LazyBinarySerializeWrite implements SerializeWrite {
output.writeByte(nullOffset, nullByte);
}
}
+
+ /*
+ * Write a VInt using our temporary byte buffer instead of paying the thread local performance
+ * cost of LazyBinaryUtils.writeVInt
+ */
+ private void writeVInt(int v) {
+ final int len = LazyBinaryUtils.writeVLongToByteArray(vLongBytes, v);
+ output.write(vLongBytes, 0, len);
+ }
+
+ private void writeVLong(long v) {
+ final int len = LazyBinaryUtils.writeVLongToByteArray(vLongBytes, v);
+ output.write(vLongBytes, 0, len);
+ }
}
[49/50] [abbrv] hive git commit: HIVE-14671 : merge master into
hive-14535 (Sergey Shelukhin) UNVERIFIED (build only)
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/common/src/java/org/apache/hadoop/hive/common/FileUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/if/hive_metastore.thrift
----------------------------------------------------------------------
diff --cc metastore/if/hive_metastore.thrift
index 6260dad,bf80455..4a86313
--- a/metastore/if/hive_metastore.thrift
+++ b/metastore/if/hive_metastore.thrift
@@@ -302,11 -302,10 +302,12 @@@ struct Table
9: map<string, string> parameters, // to store comments or any other user level parameters
10: string viewOriginalText, // original view text, null for non-view
11: string viewExpandedText, // expanded view text, null for non-view
- 12: string tableType, // table type enum, e.g. EXTERNAL_TABLE
+ 12: string tableType, // table type enum, e.g. EXTERNAL_TABLE
13: optional PrincipalPrivilegeSet privileges,
14: optional bool temporary=false,
- 15: optional i64 mmNextWriteId,
- 16: optional i64 mmWatermarkWriteId
- 15: optional bool rewriteEnabled // rewrite enabled or not
++ 15: optional bool rewriteEnabled, // rewrite enabled or not
++ 16: optional i64 mmNextWriteId,
++ 17: optional i64 mmWatermarkWriteId
}
struct Partition {
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/derby/038-HIVE-14637.derby.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/derby/038-HIVE-14637.derby.sql
index 0000000,0000000..cb6e5f6
new file mode 100644
--- /dev/null
+++ b/metastore/scripts/upgrade/derby/038-HIVE-14637.derby.sql
@@@ -1,0 -1,0 +1,6 @@@
++ALTER TABLE "TBLS" ADD "MM_WATERMARK_WRITE_ID" BIGINT DEFAULT -1;
++ALTER TABLE "TBLS" ADD "MM_NEXT_WRITE_ID" BIGINT DEFAULT 0;
++CREATE TABLE "APP"."TBL_WRITES" ("TW_ID" BIGINT NOT NULL, "TBL_ID" BIGINT NOT NULL, "WRITE_ID" BIGINT NOT NULL, "STATE" CHAR(1) NOT NULL, "CREATED" BIGINT NOT NULL, "LAST_HEARTBEAT" BIGINT NOT NULL);
++ALTER TABLE "APP"."TBL_WRITES" ADD CONSTRAINT "TBL_WRITES_PK" PRIMARY KEY ("TW_ID");
++ALTER TABLE "APP"."TBL_WRITES" ADD CONSTRAINT "TBL_WRITES_FK1" FOREIGN KEY ("TBL_ID") REFERENCES "APP"."TBLS" ("TBL_ID") ON DELETE NO ACTION ON UPDATE NO ACTION;
++CREATE UNIQUE INDEX "APP"."UNIQUEWRITE" ON "APP"."TBL_WRITES" ("TBL_ID", "WRITE_ID");
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
index 9da1703,fe18089..7666fbc
--- a/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
+++ b/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
@@@ -60,7 -60,7 +60,7 @@@ CREATE TABLE "APP"."COLUMNS" ("SD_ID" B
CREATE TABLE "APP"."ROLES" ("ROLE_ID" BIGINT NOT NULL, "CREATE_TIME" INTEGER NOT NULL, "OWNER_NAME" VARCHAR(128), "ROLE_NAME" VARCHAR(128));
- CREATE TABLE "APP"."TBLS" ("TBL_ID" BIGINT NOT NULL, "CREATE_TIME" INTEGER NOT NULL, "DB_ID" BIGINT, "LAST_ACCESS_TIME" INTEGER NOT NULL, "OWNER" VARCHAR(767), "RETENTION" INTEGER NOT NULL, "SD_ID" BIGINT, "TBL_NAME" VARCHAR(128), "TBL_TYPE" VARCHAR(128), "VIEW_EXPANDED_TEXT" LONG VARCHAR, "VIEW_ORIGINAL_TEXT" LONG VARCHAR, "MM_WATERMARK_WRITE_ID" BIGINT DEFAULT -1, "MM_NEXT_WRITE_ID" BIGINT DEFAULT 0);
-CREATE TABLE "APP"."TBLS" ("TBL_ID" BIGINT NOT NULL, "CREATE_TIME" INTEGER NOT NULL, "DB_ID" BIGINT, "LAST_ACCESS_TIME" INTEGER NOT NULL, "OWNER" VARCHAR(767), "RETENTION" INTEGER NOT NULL, "SD_ID" BIGINT, "TBL_NAME" VARCHAR(128), "TBL_TYPE" VARCHAR(128), "VIEW_EXPANDED_TEXT" LONG VARCHAR, "VIEW_ORIGINAL_TEXT" LONG VARCHAR, "IS_REWRITE_ENABLED" CHAR(1) NOT NULL);
++CREATE TABLE "APP"."TBLS" ("TBL_ID" BIGINT NOT NULL, "CREATE_TIME" INTEGER NOT NULL, "DB_ID" BIGINT, "LAST_ACCESS_TIME" INTEGER NOT NULL, "OWNER" VARCHAR(767), "RETENTION" INTEGER NOT NULL, "SD_ID" BIGINT, "TBL_NAME" VARCHAR(128), "TBL_TYPE" VARCHAR(128), "VIEW_EXPANDED_TEXT" LONG VARCHAR, "VIEW_ORIGINAL_TEXT" LONG VARCHAR, "IS_REWRITE_ENABLED" CHAR(1) NOT NULL, "MM_WATERMARK_WRITE_ID" BIGINT DEFAULT -1, "MM_NEXT_WRITE_ID" BIGINT DEFAULT 0);
CREATE TABLE "APP"."PARTITION_KEYS" ("TBL_ID" BIGINT NOT NULL, "PKEY_COMMENT" VARCHAR(4000), "PKEY_NAME" VARCHAR(128) NOT NULL, "PKEY_TYPE" VARCHAR(767) NOT NULL, "INTEGER_IDX" INTEGER NOT NULL);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/derby/upgrade-2.1.0-to-2.2.0.derby.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/derby/upgrade-2.1.0-to-2.2.0.derby.sql
index 67750a6,699a619..f59b37f
--- a/metastore/scripts/upgrade/derby/upgrade-2.1.0-to-2.2.0.derby.sql
+++ b/metastore/scripts/upgrade/derby/upgrade-2.1.0-to-2.2.0.derby.sql
@@@ -1,5 -1,4 +1,6 @@@
-- Upgrade MetaStore schema from 2.1.0 to 2.2.0
+ RUN '037-HIVE-14496.derby.sql';
+RUN '037-HIVE-14637.derby.sql';
+
UPDATE "APP".VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Hive release version 2.2.0' where VER_ID=1;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/mssql/023-HIVE-14637.mssql.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/mssql/023-HIVE-14637.mssql.sql
index 0000000,0000000..9666d2b
new file mode 100644
--- /dev/null
+++ b/metastore/scripts/upgrade/mssql/023-HIVE-14637.mssql.sql
@@@ -1,0 -1,0 +1,15 @@@
++ALTER TABLE TBLS ADD MM_WATERMARK_WRITE_ID BIGINT DEFAULT -1;
++ALTER TABLE TBLS ADD MM_NEXT_WRITE_ID BIGINT DEFAULT 0;
++
++CREATE TABLE TBL_WRITES
++(
++ TW_ID BIGINT NOT NULL,
++ TBL_ID BIGINT NOT NULL,
++ WRITE_ID BIGINT NOT NULL,
++ STATE CHAR(1) NOT NULL,
++ CREATED BIGINT NOT NULL,
++ LAST_HEARTBEAT BIGINT NOT NULL
++);
++ALTER TABLE TBL_WRITES ADD CONSTRAINT TBL_WRITES_PK PRIMARY KEY (TW_ID);
++ALTER TABLE TBL_WRITES ADD CONSTRAINT TBL_WRITES_FK1 FOREIGN KEY (TBL_ID) REFERENCES TBLS (TBL_ID) ;
++CREATE UNIQUE INDEX UNIQUEWRITE ON TBL_WRITES (TBL_ID, WRITE_ID);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
index 31016e2,7ff881c..2606de5
--- a/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
+++ b/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
@@@ -359,8 -359,7 +359,9 @@@ CREATE TABLE TBL
TBL_TYPE nvarchar(128) NULL,
VIEW_EXPANDED_TEXT text NULL,
VIEW_ORIGINAL_TEXT text NULL,
- IS_REWRITE_ENABLED bit NOT NULL
++ IS_REWRITE_ENABLED bit NOT NULL,
+ MM_WATERMARK_WRITE_ID BIGINT NULL DEFAULT -1,
+ MM_NEXT_WRITE_ID BIGINT NULL DEFAULT 0
);
ALTER TABLE TBLS ADD CONSTRAINT TBLS_PK PRIMARY KEY (TBL_ID);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/mssql/upgrade-2.1.0-to-2.2.0.mssql.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/mssql/upgrade-2.1.0-to-2.2.0.mssql.sql
index 2e6f394,55d8e9b..2dcdedc
--- a/metastore/scripts/upgrade/mssql/upgrade-2.1.0-to-2.2.0.mssql.sql
+++ b/metastore/scripts/upgrade/mssql/upgrade-2.1.0-to-2.2.0.mssql.sql
@@@ -1,6 -1,6 +1,7 @@@
SELECT 'Upgrading MetaStore schema from 2.1.0 to 2.2.0' AS MESSAGE;
- :r 022-HIVE-14637.mssql.sql
+ :r 022-HIVE-14496.mssql.sql
++:r 023-HIVE-14637.mssql.sql
UPDATE VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Hive release version 2.2.0' where VER_ID=1;
SELECT 'Finished upgrading MetaStore schema from 2.1.0 to 2.2.0' AS MESSAGE;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/mysql/038-HIVE-14637.mysql.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/mysql/038-HIVE-14637.mysql.sql
index 0000000,0000000..9e34db2
new file mode 100644
--- /dev/null
+++ b/metastore/scripts/upgrade/mysql/038-HIVE-14637.mysql.sql
@@@ -1,0 -1,0 +1,15 @@@
++alter table `TBLS` ADD COLUMN `MM_WATERMARK_WRITE_ID` bigint(20) DEFAULT -1;
++alter table `TBLS` ADD COLUMN `MM_NEXT_WRITE_ID` bigint(20) DEFAULT 0;
++
++CREATE TABLE IF NOT EXISTS `TBL_WRITES`
++(
++ `TW_ID` BIGINT NOT NULL,
++ `TBL_ID` BIGINT NOT NULL,
++ `WRITE_ID` BIGINT NOT NULL,
++ `STATE` CHAR(1) NOT NULL,
++ `CREATED` BIGINT NOT NULL,
++ `LAST_HEARTBEAT` BIGINT NOT NULL,
++ PRIMARY KEY (`TW_ID`),
++ UNIQUE KEY `UNIQUEWRITE` (`TBL_ID`,`WRITE_ID`),
++ CONSTRAINT `TBL_WRITES_FK1` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
++) ENGINE=InnoDB DEFAULT CHARSET=latin1;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
index 3e73008,2009f1f..7696a62
--- a/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
+++ b/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
@@@ -587,8 -587,7 +587,9 @@@ CREATE TABLE IF NOT EXISTS `TBLS`
`TBL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`VIEW_EXPANDED_TEXT` mediumtext,
`VIEW_ORIGINAL_TEXT` mediumtext,
+ `IS_REWRITE_ENABLED` bit(1) NOT NULL,
+ `MM_WATERMARK_WRITE_ID` bigint(20) DEFAULT -1,
+ `MM_NEXT_WRITE_ID` bigint(20) DEFAULT 0,
PRIMARY KEY (`TBL_ID`),
UNIQUE KEY `UNIQUETABLE` (`TBL_NAME`,`DB_ID`),
KEY `TBLS_N50` (`SD_ID`),
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/mysql/upgrade-2.1.0-to-2.2.0.mysql.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/mysql/upgrade-2.1.0-to-2.2.0.mysql.sql
index 6ac1b89,07a002f..afe17f9
--- a/metastore/scripts/upgrade/mysql/upgrade-2.1.0-to-2.2.0.mysql.sql
+++ b/metastore/scripts/upgrade/mysql/upgrade-2.1.0-to-2.2.0.mysql.sql
@@@ -1,6 -1,6 +1,7 @@@
SELECT 'Upgrading MetaStore schema from 2.1.0 to 2.2.0' AS ' ';
- SOURCE 037-HIVE-14637.mysql.sql;
+ SOURCE 037-HIVE-14496.mysql.sql;
++SOURCE 038-HIVE-14637.mysql.sql;
UPDATE VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Hive release version 2.2.0' where VER_ID=1;
SELECT 'Finished upgrading MetaStore schema from 2.1.0 to 2.2.0' AS ' ';
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/oracle/038-HIVE-14637.oracle.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/oracle/038-HIVE-14637.oracle.sql
index 0000000,0000000..218eefe
new file mode 100644
--- /dev/null
+++ b/metastore/scripts/upgrade/oracle/038-HIVE-14637.oracle.sql
@@@ -1,0 -1,0 +1,15 @@@
++ALTER TABLE TBLS ADD MM_WATERMARK_WRITE_ID NUMBER DEFAULT -1;
++ALTER TABLE TBLS ADD MM_NEXT_WRITE_ID NUMBER DEFAULT 0;
++
++CREATE TABLE TBL_WRITES
++(
++ TW_ID NUMBER NOT NULL,
++ TBL_ID NUMBER NOT NULL,
++ WRITE_ID NUMBER NOT NULL,
++ STATE CHAR(1) NOT NULL,
++ CREATED NUMBER NOT NULL,
++ LAST_HEARTBEAT NUMBER NOT NULL
++);
++ALTER TABLE TBL_WRITES ADD CONSTRAINT TBL_WRITES_PK PRIMARY KEY (TW_ID);
++ALTER TABLE TBL_WRITES ADD CONSTRAINT TBL_WRITES_FK1 FOREIGN KEY (TBL_ID) REFERENCES TBLS (TBL_ID) INITIALLY DEFERRED ;
++CREATE UNIQUE INDEX UNIQUEWRITE ON TBL_WRITES (TBL_ID, WRITE_ID);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
index 5479712,bb5a934..122aa9a
--- a/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
+++ b/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
@@@ -376,8 -376,7 +376,9 @@@ CREATE TABLE TBL
TBL_TYPE VARCHAR2(128) NULL,
VIEW_EXPANDED_TEXT CLOB NULL,
VIEW_ORIGINAL_TEXT CLOB NULL,
- IS_REWRITE_ENABLED NUMBER(1) NOT NULL CHECK (IS_REWRITE_ENABLED IN (1,0))
++ IS_REWRITE_ENABLED NUMBER(1) NOT NULL CHECK (IS_REWRITE_ENABLED IN (1,0)),
+ MM_WATERMARK_WRITE_ID NUMBER DEFAULT -1,
+ MM_NEXT_WRITE_ID NUMBER DEFAULT 0
);
ALTER TABLE TBLS ADD CONSTRAINT TBLS_PK PRIMARY KEY (TBL_ID);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/oracle/upgrade-2.1.0-to-2.2.0.oracle.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/oracle/upgrade-2.1.0-to-2.2.0.oracle.sql
index 8d841d6,b5e65b9..dd1b97c
--- a/metastore/scripts/upgrade/oracle/upgrade-2.1.0-to-2.2.0.oracle.sql
+++ b/metastore/scripts/upgrade/oracle/upgrade-2.1.0-to-2.2.0.oracle.sql
@@@ -1,6 -1,6 +1,7 @@@
SELECT 'Upgrading MetaStore schema from 2.1.0 to 2.2.0' AS Status from dual;
- @037-HIVE-14637.oracle.sql;
+ @037-HIVE-14496.oracle.sql;
++@038-HIVE-14637.oracle.sql;
UPDATE VERSION SET SCHEMA_VERSION='2.2.0', VERSION_COMMENT='Hive release version 2.2.0' where VER_ID=1;
SELECT 'Finished upgrading MetaStore schema from 2.1.0 to 2.2.0' AS Status from dual;
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/postgres/037-HIVE-14637.postgres.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/postgres/037-HIVE-14637.postgres.sql
index 0000000,0000000..310f51e
new file mode 100644
--- /dev/null
+++ b/metastore/scripts/upgrade/postgres/037-HIVE-14637.postgres.sql
@@@ -1,0 -1,0 +1,16 @@@
++
++ALTER TABLE "TBLS" ADD COLUMN "MM_WATERMARK_WRITE_ID" bigint DEFAULT -1;
++ALTER TABLE "TBLS" ADD COLUMN "MM_NEXT_WRITE_ID" bigint DEFAULT 0;
++
++CREATE TABLE "TBL_WRITES"
++(
++ "TW_ID" BIGINT NOT NULL,
++ "TBL_ID" BIGINT NOT NULL,
++ "WRITE_ID" BIGINT NOT NULL,
++ "STATE" CHAR(1) NOT NULL,
++ "CREATED" BIGINT NOT NULL,
++ "LAST_HEARTBEAT" BIGINT NOT NULL
++);
++ALTER TABLE ONLY "TBL_WRITES" ADD CONSTRAINT "TBL_WRITES_PK" PRIMARY KEY ("TW_ID");
++ALTER TABLE ONLY "TBL_WRITES" ADD CONSTRAINT "TBL_WRITES_FK1" FOREIGN KEY ("TBL_ID") REFERENCES "TBLS" ("TBL_ID") DEFERRABLE;
++ALTER TABLE ONLY "TBL_WRITES" ADD CONSTRAINT "UNIQUEWRITE" UNIQUE ("TBL_ID", "WRITE_ID");
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
index bc865ed,0021df0..f36a111
--- a/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
+++ b/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
@@@ -373,8 -373,7 +373,9 @@@ CREATE TABLE "TBLS"
"TBL_TYPE" character varying(128) DEFAULT NULL::character varying,
"VIEW_EXPANDED_TEXT" text,
"VIEW_ORIGINAL_TEXT" text,
- "IS_REWRITE_ENABLED" boolean NOT NULL
++ "IS_REWRITE_ENABLED" boolean NOT NULL,
+ "MM_WATERMARK_WRITE_ID" bigint DEFAULT -1,
+ "MM_NEXT_WRITE_ID" bigint DEFAULT 0
);
http://git-wip-us.apache.org/repos/asf/hive/blob/748c1bd2/metastore/scripts/upgrade/postgres/upgrade-2.1.0-to-2.2.0.postgres.sql
----------------------------------------------------------------------
diff --cc metastore/scripts/upgrade/postgres/upgrade-2.1.0-to-2.2.0.postgres.sql
index 70542b8,0f7139a..a316383
--- a/metastore/scripts/upgrade/postgres/upgrade-2.1.0-to-2.2.0.postgres.sql
+++ b/metastore/scripts/upgrade/postgres/upgrade-2.1.0-to-2.2.0.postgres.sql
@@@ -1,6 -1,6 +1,7 @@@
SELECT 'Upgrading MetaStore schema from 2.1.0 to 2.2.0';
- \i 036-HIVE-14637.postgres.sql;
+ \i 036-HIVE-14496.postgres.sql;
++\i 037-HIVE-14637.postgres.sql;
UPDATE "VERSION" SET "SCHEMA_VERSION"='2.2.0', "VERSION_COMMENT"='Hive release version 2.2.0' where "VER_ID"=1;
SELECT 'Finished upgrading MetaStore schema from 2.1.0 to 2.2.0';
[34/50] [abbrv] hive git commit: HIVE-15649 : LLAP IO may NPE on
all-column read (Sergey Shelukhin, reviewed by Prasanth Jayachandran) ADDENDUM
Posted by se...@apache.org.
HIVE-15649 : LLAP IO may NPE on all-column read (Sergey Shelukhin, reviewed by Prasanth Jayachandran) ADDENDUM
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/43e04976
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/43e04976
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/43e04976
Branch: refs/heads/hive-14535
Commit: 43e0497677a55f18fbf8bd3ba9ea41b87fcdb033
Parents: 06b2b0e
Author: Sergey Shelukhin <se...@apache.org>
Authored: Wed Feb 1 12:30:20 2017 -0800
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Wed Feb 1 12:30:20 2017 -0800
----------------------------------------------------------------------
.../hive/llap/io/api/impl/LlapRecordReader.java | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/43e04976/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java b/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java
index 2f79828..9ef9ca4 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.llap.io.api.impl;
+import java.util.ArrayList;
+
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
@@ -98,7 +100,6 @@ class LlapRecordReader
this.executor = executor;
this.jobConf = job;
this.split = split;
- this.columnIds = includedCols;
this.sarg = ConvertAstToSearchArg.createFromConf(job);
this.columnNames = ColumnProjectionUtils.getReadColumnNames(job);
final String fragmentId = LlapTezUtils.getFragmentId(job);
@@ -122,12 +123,13 @@ class LlapRecordReader
rbCtx = ctx != null ? ctx : LlapInputFormat.createFakeVrbCtx(mapWork);
if (includedCols == null) {
// Assume including everything means the VRB will have everything.
- this.columnCount = rbCtx.getRowColumnTypeInfos().length;
- } else {
- this.columnCount = columnIds.size();
+ includedCols = new ArrayList<>(rbCtx.getRowColumnTypeInfos().length);
+ for (int i = 0; i < rbCtx.getRowColumnTypeInfos().length; ++i) {
+ includedCols.add(i);
+ }
}
-
-
+ this.columnIds = includedCols;
+ this.columnCount = columnIds.size();
int partitionColumnCount = rbCtx.getPartitionColumnCount();
if (partitionColumnCount > 0) {
@@ -169,8 +171,7 @@ class LlapRecordReader
SchemaEvolution schemaEvolution = new SchemaEvolution(
fileSchema, rp.getReaderSchema(), includedColumns);
for (int i = 0; i < columnCount; ++i) {
- int colId = columnIds == null ? i : columnIds.get(i);
- if (!schemaEvolution.isPPDSafeConversion(colId)) {
+ if (!schemaEvolution.isPPDSafeConversion(columnIds.get(i))) {
LlapIoImpl.LOG.warn("Unsupported schema evolution! Disabling Llap IO for {}", split);
return false;
}
@@ -214,7 +215,7 @@ class LlapRecordReader
// VRB was created from VrbCtx, so we already have pre-allocated column vectors
for (int i = 0; i < cvb.cols.length; ++i) {
// Return old CVs (if any) to caller. We assume these things all have the same schema.
- cvb.swapColumnVector(i, value.cols, columnIds == null ? i : columnIds.get(i));
+ cvb.swapColumnVector(i, value.cols, columnIds.get(i));
}
value.selectedInUse = false;
value.size = cvb.size;