This is an automated email from the ASF dual-hosted git repository.
krisztiankasa pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new c00891a2628 HIVE-27446: Exception when rebuild materialized view
incrementally in presence of delete operations (Krisztian Kasa, reviewed by
Laszlo Vegh)
c00891a2628 is described below
commit c00891a26282c8615f9b56088efe91fd5ac674e2
Author: Krisztian Kasa <[email protected]>
AuthorDate: Wed Dec 13 06:37:22 2023 +0100
HIVE-27446: Exception when rebuild materialized view incrementally in
presence of delete operations (Krisztian Kasa, reviewed by Laszlo Vegh)
---
.../AlterMaterializedViewRebuildAnalyzer.java | 7 +-
...veJoinInsertDeleteIncrementalRewritingRule.java | 62 ++++++----
.../rules/views/HiveRowIsDeletedPropagator.java | 25 ----
.../calcite/rules/views/InputRefShifter.java | 49 ++++++++
.../materialized_view_join_rebuild.q | 33 +++++
.../materialized_view_repeated_rebuild.q | 37 ++++++
.../llap/materialized_view_create_rewrite_5.q.out | 112 ++++++++---------
.../llap/materialized_view_create_rewrite_8.q.out | 52 ++++----
.../llap/materialized_view_join_rebuild.q.out | 108 +++++++++++++++++
.../llap/materialized_view_repeated_rebuild.q.out | 134 +++++++++++++++++++++
10 files changed, 486 insertions(+), 133 deletions(-)
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java
index c9020b7cbdd..3542ac06ab0 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java
@@ -808,19 +808,20 @@ public class AlterMaterializedViewRebuildAnalyzer extends
CalcitePlanner {
// We bypass the OR clause and select the first disjunct
int indexDelete;
int indexInsert;
- if (whereClauseInInsert.getChild(0).getChild(0).getType() ==
HiveParser.DOT) {
+ if (whereClauseInInsert.getChild(0).getChild(0).getType() ==
HiveParser.KW_AND) {
indexDelete = 0;
indexInsert = 1;
- } else if (whereClauseInInsert.getChild(0).getChild(1).getType() ==
HiveParser.DOT) {
+ } else if (whereClauseInInsert.getChild(0).getChild(1).getType() ==
HiveParser.KW_AND) {
indexDelete = 1;
indexInsert = 0;
} else {
throw new SemanticException("Unexpected condition in incremental
rewriting");
}
+ ASTNode deletePredicate =
+ (ASTNode)
ParseDriver.adaptor.dupTree(whereClauseInInsert.getChild(0).getChild(indexDelete));
ASTNode newCondInInsert = (ASTNode)
whereClauseInInsert.getChild(0).getChild(indexInsert);
ParseDriver.adaptor.setChild(whereClauseInInsert, 0, newCondInInsert);
- ASTNode deletePredicate = (ASTNode)
whereClauseInInsert.getChild(0).getChild(indexDelete);
addDeleteBranch(insertNode, subqueryNodeInputROJ, deletePredicate,
astBuilder);
// 3) Add sort node to delete branch
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveJoinInsertDeleteIncrementalRewritingRule.java
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveJoinInsertDeleteIncrementalRewritingRule.java
index 57274e55d87..10a9c5c2760 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveJoinInsertDeleteIncrementalRewritingRule.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveJoinInsertDeleteIncrementalRewritingRule.java
@@ -31,7 +31,6 @@ import org.apache.calcite.tools.RelBuilder;
import org.apache.hadoop.hive.ql.optimizer.calcite.HiveRelFactories;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject;
-import org.apache.hadoop.hive.ql.parse.ASTNode;
import org.apache.hadoop.hive.ql.parse.CalcitePlanner;
import java.util.ArrayList;
@@ -46,12 +45,12 @@ import java.util.List;
* Since CBO plan does not contain the INSERT branches we focus on the SELECT
part of the plan in this rule.
* See also {@link CalcitePlanner}
*
- * FROM (select mv.ROW__ID, mv.a, mv.b from mv) mv
+ * FROM (select mv.ROW__ID, mv.a, mv.b, true as flag from mv) mv
* RIGHT OUTER JOIN (SELECT _source_.ROW__IS_DELETED,_source_.a, _source_.b
FROM _source_) source
* ON (mv.a <=> source.a AND mv.b <=> source.b)
* INSERT INTO TABLE mv_delete_delta
* SELECT mv.ROW__ID
- * WHERE source.ROW__IS__DELETED
+ * WHERE source.ROW__IS__DELETED AND flag
* INSERT INTO TABLE mv
* SELECT source.a, source.b
* WHERE NOT source.ROW__IS__DELETED
@@ -81,7 +80,7 @@ public class HiveJoinInsertDeleteIncrementalRewritingRule
extends RelOptRule {
// expressions for project operator
List<RexNode> projExprs = new ArrayList<>();
List<RexNode> joinConjs = new ArrayList<>();
- for (int leftPos = 0; leftPos < joinLeftInput.getRowType().getFieldCount()
- 1; leftPos++) {
+ for (int leftPos = 0; leftPos <
joinLeftInput.getRowType().getFieldCount(); leftPos++) {
RexNode leftRef = rexBuilder.makeInputRef(
joinLeftInput.getRowType().getFieldList().get(leftPos).getType(), leftPos);
RexNode rightRef = rexBuilder.makeInputRef(
@@ -95,12 +94,6 @@ public class HiveJoinInsertDeleteIncrementalRewritingRule
extends RelOptRule {
RexNode joinCond = RexUtil.composeConjunction(rexBuilder, joinConjs);
- int rowIsDeletedIdx = joinRightInput.getRowType().getFieldCount() - 1;
- RexNode rowIsDeleted = rexBuilder.makeInputRef(
-
joinRightInput.getRowType().getFieldList().get(rowIsDeletedIdx).getType(),
- joinLeftInput.getRowType().getFieldCount() + rowIsDeletedIdx);
- projExprs.add(rowIsDeleted);
-
// 3) Build plan
RelNode newNode = call.builder()
.push(union.getInput(1))
@@ -152,6 +145,7 @@ public class HiveJoinInsertDeleteIncrementalRewritingRule
extends RelOptRule {
}
private RelNode createFilter(HiveJoin join) {
+ RexBuilder rexBuilder = relBuilder.getRexBuilder();
// This should be a Scan on the MV
RelNode leftInput = join.getLeft();
@@ -161,34 +155,56 @@ public class HiveJoinInsertDeleteIncrementalRewritingRule
extends RelOptRule {
RelNode tmpJoin = visitChild(join, 1, rightInput);
RelNode newRightInput = tmpJoin.getInput(1);
+ List<RexNode> leftProjects = new
ArrayList<>(leftInput.getRowType().getFieldCount() + 1);
+ List<String> leftProjectNames = new
ArrayList<>(leftInput.getRowType().getFieldCount() + 1);
+ for (int i = 0; i < leftInput.getRowType().getFieldCount(); ++i) {
+ RelDataTypeField relDataTypeField =
leftInput.getRowType().getFieldList().get(i);
+ leftProjects.add(rexBuilder.makeInputRef(relDataTypeField.getType(),
i));
+ leftProjectNames.add(relDataTypeField.getName());
+ }
+ List<RexNode> projects = new ArrayList<>(leftProjects.size() +
newRightInput.getRowType().getFieldCount());
+ projects.addAll(leftProjects);
+ List<String> projectNames = new ArrayList<>(leftProjects.size() +
newRightInput.getRowType().getFieldCount());
+ projectNames.addAll(leftProjectNames);
+
+ leftProjects.add(rexBuilder.makeLiteral(true));
+ leftProjectNames.add("flag");
+
+ leftInput = relBuilder
+ .push(leftInput)
+ .project(leftProjects, leftProjectNames)
+ .build();
+
+ // Create input ref to flag. It is used in filter condition later.
+ int flagIndex = leftProjects.size() - 1;
+ RexNode flagNode = rexBuilder.makeInputRef(
+ leftInput.getRowType().getFieldList().get(flagIndex).getType(),
flagIndex);
+
// Create input ref to rowIsDeleteColumn. It is used in filter condition
later.
RelDataType newRowType = newRightInput.getRowType();
int rowIsDeletedIdx = newRowType.getFieldCount() - 1;
- RexBuilder rexBuilder = relBuilder.getRexBuilder();
RexNode rowIsDeleted = rexBuilder.makeInputRef(
- newRowType.getFieldList().get(rowIsDeletedIdx).getType(),
- leftInput.getRowType().getFieldCount() + rowIsDeletedIdx);
+ newRowType.getFieldList().get(rowIsDeletedIdx).getType(),
+ leftInput.getRowType().getFieldCount() + rowIsDeletedIdx);
+
+ RexNode deleteBranchFilter =
rexBuilder.makeCall(SqlStdOperatorTable.AND, flagNode, rowIsDeleted);
+ RexNode insertBranchFilter =
rexBuilder.makeCall(SqlStdOperatorTable.NOT, rowIsDeleted);
- List<RexNode> projects = new ArrayList<>(newRowType.getFieldCount());
- List<String> projectNames = new ArrayList<>(newRowType.getFieldCount());
- for (int i = 0; i < leftInput.getRowType().getFieldCount(); ++i) {
- RelDataTypeField relDataTypeField =
leftInput.getRowType().getFieldList().get(i);
- projects.add(rexBuilder.makeInputRef(relDataTypeField.getType(), i));
- projectNames.add(relDataTypeField.getName());
- }
for (int i = 0; i < newRowType.getFieldCount() - 1; ++i) {
RelDataTypeField relDataTypeField = newRowType.getFieldList().get(i);
projects.add(rexBuilder.makeInputRef(relDataTypeField.getType(),
leftInput.getRowType().getFieldCount() + i));
projectNames.add(relDataTypeField.getName());
}
+ RexNode newJoinCondition = new
InputRefShifter(leftInput.getRowType().getFieldCount() - 1, relBuilder)
+ .apply(join.getCondition());
+
// Create new Top Right Join and a Filter. The filter condition is used
in CalcitePlanner.fixUpASTJoinIncrementalRebuild().
return relBuilder
.push(leftInput)
.push(newRightInput)
- .join(join.getJoinType(), join.getCondition())
- .filter(rexBuilder.makeCall(SqlStdOperatorTable.OR,
- rowIsDeleted,
rexBuilder.makeCall(SqlStdOperatorTable.NOT, rowIsDeleted)))
+ .join(join.getJoinType(), newJoinCondition)
+ .filter(rexBuilder.makeCall(SqlStdOperatorTable.OR,
deleteBranchFilter, insertBranchFilter))
.project(projects, projectNames)
.build();
}
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveRowIsDeletedPropagator.java
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveRowIsDeletedPropagator.java
index 9537acd16a4..8562d742511 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveRowIsDeletedPropagator.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveRowIsDeletedPropagator.java
@@ -174,31 +174,6 @@ public class HiveRowIsDeletedPropagator extends
HiveRelShuttleImpl {
.build();
}
- private static class InputRefShifter extends RexShuttle {
- private final int startIndex;
- private final RelBuilder relBuilder;
-
- private InputRefShifter(int startIndex, RelBuilder relBuilder) {
- this.startIndex = startIndex;
- this.relBuilder = relBuilder;
- }
-
- /**
- * Shift input reference index by one if the referenced column index is
higher or equals with the startIndex.
- * @param inputRef - {@link RexInputRef} to transform
- * @return new {@link RexInputRef} if the referenced column index is
higher or equals with the startIndex,
- * original otherwise
- */
- @Override
- public RexNode visitInputRef(RexInputRef inputRef) {
- if (inputRef.getIndex() >= startIndex) {
- RexBuilder rexBuilder = relBuilder.getRexBuilder();
- return rexBuilder.makeInputRef(inputRef.getType(), inputRef.getIndex()
+ 1);
- }
- return inputRef;
- }
- }
-
private void populateProjects(RexBuilder rexBuilder, RelDataType
inputRowType,
List<RexNode> projects, List<String>
projectNames) {
populateProjects(rexBuilder, inputRowType, 0,
inputRowType.getFieldCount(), projects, projectNames);
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/InputRefShifter.java
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/InputRefShifter.java
new file mode 100644
index 00000000000..a9d7639c0c2
--- /dev/null
+++
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/InputRefShifter.java
@@ -0,0 +1,49 @@
+/*
+ * 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.calcite.rules.views;
+
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexShuttle;
+import org.apache.calcite.tools.RelBuilder;
+
+public class InputRefShifter extends RexShuttle {
+ private final int startIndex;
+ private final RelBuilder relBuilder;
+
+ InputRefShifter(int startIndex, RelBuilder relBuilder) {
+ this.startIndex = startIndex;
+ this.relBuilder = relBuilder;
+ }
+
+ /**
+ * Shift input reference index by one if the referenced column index is
higher or equals with the startIndex.
+ * @param inputRef - {@link RexInputRef} to transform
+ * @return new {@link RexInputRef} if the referenced column index is higher
or equals with the startIndex,
+ * original otherwise
+ */
+ @Override
+ public RexNode visitInputRef(RexInputRef inputRef) {
+ if (inputRef.getIndex() >= startIndex) {
+ RexBuilder rexBuilder = relBuilder.getRexBuilder();
+ return rexBuilder.makeInputRef(inputRef.getType(), inputRef.getIndex() +
1);
+ }
+ return inputRef;
+ }
+}
diff --git
a/ql/src/test/queries/clientpositive/materialized_view_join_rebuild.q
b/ql/src/test/queries/clientpositive/materialized_view_join_rebuild.q
new file mode 100644
index 00000000000..b104c2b637c
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/materialized_view_join_rebuild.q
@@ -0,0 +1,33 @@
+-- Test Incremental rebuild of materialized view without aggregate when source
tables have
+-- delete operations since last rebuild.
+-- The view projects only one column.
+
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+create table cmv_basetable_n6 (a int, b varchar(256), c decimal(10,2), d int)
stored as orc TBLPROPERTIES ('transactional'='true');
+
+insert into cmv_basetable_n6 values
+ (1, 'alfred', 10.30, 2),
+ (2, 'bob', 3.14, 3),
+ (2, 'bonnie', 172342.2, 3),
+ (3, 'calvin', 978.76, 3),
+ (3, 'charlie', 9.8, 1);
+
+create table cmv_basetable_2_n3 (a int, b varchar(256), c decimal(10,2), d
int) stored as orc TBLPROPERTIES ('transactional'='true');
+
+insert into cmv_basetable_2_n3 values
+ (1, 'alfred', 10.30, 2),
+ (3, 'calvin', 978.76, 3);
+
+CREATE MATERIALIZED VIEW cmv_mat_view_n6
+ TBLPROPERTIES ('transactional'='true') AS
+ SELECT cmv_basetable_n6.a
+ FROM cmv_basetable_n6 JOIN cmv_basetable_2_n3 ON (cmv_basetable_n6.a =
cmv_basetable_2_n3.a)
+ WHERE cmv_basetable_2_n3.c > 10.0;
+
+DELETE from cmv_basetable_2_n3 WHERE a=1;
+
+ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD;
+
+SELECT * FROM cmv_mat_view_n6;
diff --git
a/ql/src/test/queries/clientpositive/materialized_view_repeated_rebuild.q
b/ql/src/test/queries/clientpositive/materialized_view_repeated_rebuild.q
new file mode 100644
index 00000000000..8fec80b3d2d
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/materialized_view_repeated_rebuild.q
@@ -0,0 +1,37 @@
+-- Test Incremental rebuild of materialized view without aggregate when source
tables have
+-- 1) delete operations since last rebuild.
+-- 2) delete records with the same join key from the other joined table
+
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+create table cmv_basetable_n6 (a int, b varchar(256), c decimal(10,2), d int)
stored as orc TBLPROPERTIES ('transactional'='true');
+
+insert into cmv_basetable_n6 values
+ (1, 'alfred', 10.30, 2),
+ (2, 'bob', 3.14, 3),
+ (2, 'bonnie', 172342.2, 3),
+ (3, 'calvin', 978.76, 3),
+ (3, 'charlie', 9.8, 1);
+
+create table cmv_basetable_2_n3 (a int, b varchar(256), c decimal(10,2), d
int) stored as orc TBLPROPERTIES ('transactional'='true');
+
+insert into cmv_basetable_2_n3 values
+ (1, 'alfred', 10.30, 2),
+ (3, 'calvin', 978.76, 3);
+
+CREATE MATERIALIZED VIEW cmv_mat_view_n6
+ TBLPROPERTIES ('transactional'='true') AS
+ SELECT cmv_basetable_n6.a, cmv_basetable_2_n3.c
+ FROM cmv_basetable_n6 JOIN cmv_basetable_2_n3 ON (cmv_basetable_n6.a =
cmv_basetable_2_n3.a)
+ WHERE cmv_basetable_2_n3.c > 10.0;
+
+DELETE from cmv_basetable_2_n3 WHERE a=1;
+
+ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD;
+
+DELETE FROM cmv_basetable_n6 WHERE a=1;
+
+ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD;
+
+SELECT * FROM cmv_mat_view_n6;
diff --git
a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_5.q.out
b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_5.q.out
index 482c113239b..6c6bf7c1b6e 100644
---
a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_5.q.out
+++
b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_5.q.out
@@ -532,18 +532,18 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: default.cmv_mat_view_n6
- Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE
Column stats: COMPLETE
+ Statistics: Num rows: 5 Data size: 580 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: a (type: int), ROW__ID (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 5 Data size: 400 Basic stats:
COMPLETE Column stats: COMPLETE
+ expressions: a (type: int), c (type: decimal(10,2)), true
(type: boolean), ROW__ID (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ outputColumnNames: _col0, _col1, _col2, _col3
+ Statistics: Num rows: 5 Data size: 980 Basic stats:
COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
- Statistics: Num rows: 5 Data size: 400 Basic stats:
COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ key expressions: _col0 (type: int), _col1 (type:
decimal(10,2))
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: int), _col1
(type: decimal(10,2))
+ Statistics: Num rows: 5 Data size: 980 Basic stats:
COMPLETE Column stats: COMPLETE
+ value expressions: _col2 (type: boolean), _col3 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
Execution mode: llap
LLAP IO: may be used (ACID table)
Map 5
@@ -601,16 +601,16 @@ STAGE PLANS:
condition map:
Right Outer Join 0 to 1
keys:
- 0 _col0 (type: int)
- 1 _col0 (type: int)
- nullSafes: [true]
- outputColumnNames: _col1, _col2, _col3, _col4
- Statistics: Num rows: 6 Data size: 1176 Basic stats: COMPLETE
Column stats: COMPLETE
+ 0 _col0 (type: int), _col1 (type: decimal(10,2))
+ 1 _col0 (type: int), _col1 (type: decimal(10,2))
+ nullSafes: [true, true]
+ outputColumnNames: _col2, _col3, _col4, _col5, _col6
+ Statistics: Num rows: 5 Data size: 920 Basic stats: COMPLETE
Column stats: COMPLETE
Filter Operator
- predicate: _col4 (type: boolean)
- Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE
Column stats: COMPLETE
+ predicate: (_col2 and _col6) (type: boolean)
+ Statistics: Num rows: 1 Data size: 200 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: _col1 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ expressions: _col3 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 76 Basic stats:
COMPLETE Column stats: COMPLETE
Reduce Output Operator
@@ -620,10 +620,10 @@ STAGE PLANS:
Map-reduce partition columns: UDFToInteger(_col0) (type:
int)
Statistics: Num rows: 1 Data size: 76 Basic stats:
COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (not _col4) (type: boolean)
- Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE
Column stats: COMPLETE
+ predicate: (not _col6) (type: boolean)
+ Statistics: Num rows: 1 Data size: 200 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: _col2 (type: int), _col3 (type: decimal(10,2))
+ expressions: _col4 (type: int), _col5 (type: decimal(10,2))
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 116 Basic stats:
COMPLETE Column stats: COMPLETE
File Output Operator
@@ -701,12 +701,12 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE
Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ key expressions: _col0 (type: int), _col1 (type:
decimal(10,2))
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: int), _col1
(type: decimal(10,2))
Statistics: Num rows: 2 Data size: 240 Basic stats:
COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: decimal(10,2)), _col2
(type: boolean)
+ value expressions: _col2 (type: boolean)
Stage: Stage-3
Dependency Collection
@@ -872,18 +872,18 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: default.cmv_mat_view_n6
- Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE
Column stats: COMPLETE
+ Statistics: Num rows: 6 Data size: 696 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: a (type: int), ROW__ID (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 6 Data size: 480 Basic stats:
COMPLETE Column stats: COMPLETE
+ expressions: a (type: int), c (type: decimal(10,2)), true
(type: boolean), ROW__ID (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ outputColumnNames: _col0, _col1, _col2, _col3
+ Statistics: Num rows: 6 Data size: 1176 Basic stats:
COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
- Statistics: Num rows: 6 Data size: 480 Basic stats:
COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ key expressions: _col0 (type: int), _col1 (type:
decimal(10,2))
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: int), _col1
(type: decimal(10,2))
+ Statistics: Num rows: 6 Data size: 1176 Basic stats:
COMPLETE Column stats: COMPLETE
+ value expressions: _col2 (type: boolean), _col3 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
Execution mode: llap
LLAP IO: may be used (ACID table)
Map 5
@@ -941,29 +941,29 @@ STAGE PLANS:
condition map:
Right Outer Join 0 to 1
keys:
- 0 _col0 (type: int)
- 1 _col0 (type: int)
- nullSafes: [true]
- outputColumnNames: _col1, _col2, _col3, _col4
- Statistics: Num rows: 10 Data size: 1960 Basic stats: COMPLETE
Column stats: COMPLETE
+ 0 _col0 (type: int), _col1 (type: decimal(10,2))
+ 1 _col0 (type: int), _col1 (type: decimal(10,2))
+ nullSafes: [true, true]
+ outputColumnNames: _col2, _col3, _col4, _col5, _col6
+ Statistics: Num rows: 9 Data size: 1640 Basic stats: COMPLETE
Column stats: COMPLETE
Filter Operator
- predicate: _col4 (type: boolean)
- Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE
Column stats: COMPLETE
+ predicate: (_col2 and _col6) (type: boolean)
+ Statistics: Num rows: 2 Data size: 400 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: _col1 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ expressions: _col3 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
outputColumnNames: _col0
- Statistics: Num rows: 1 Data size: 76 Basic stats:
COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 2 Data size: 152 Basic stats:
COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col0 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
null sort order: z
sort order: +
Map-reduce partition columns: UDFToInteger(_col0) (type:
int)
- Statistics: Num rows: 1 Data size: 76 Basic stats:
COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 2 Data size: 152 Basic stats:
COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (not _col4) (type: boolean)
- Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE
Column stats: COMPLETE
+ predicate: (not _col6) (type: boolean)
+ Statistics: Num rows: 1 Data size: 200 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: _col2 (type: int), _col3 (type: decimal(10,2))
+ expressions: _col4 (type: int), _col5 (type: decimal(10,2))
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 116 Basic stats:
COMPLETE Column stats: COMPLETE
File Output Operator
@@ -996,10 +996,10 @@ STAGE PLANS:
Select Operator
expressions: KEY.reducesinkkey0 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
outputColumnNames: _col0
- Statistics: Num rows: 1 Data size: 76 Basic stats: COMPLETE
Column stats: COMPLETE
+ Statistics: Num rows: 2 Data size: 152 Basic stats: COMPLETE
Column stats: COMPLETE
File Output Operator
compressed: false
- Statistics: Num rows: 1 Data size: 76 Basic stats: COMPLETE
Column stats: COMPLETE
+ Statistics: Num rows: 2 Data size: 152 Basic stats: COMPLETE
Column stats: COMPLETE
table:
input format:
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
output format:
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
@@ -1041,12 +1041,12 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 3 Data size: 360 Basic stats: COMPLETE
Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ key expressions: _col0 (type: int), _col1 (type:
decimal(10,2))
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: int), _col1
(type: decimal(10,2))
Statistics: Num rows: 3 Data size: 360 Basic stats:
COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: decimal(10,2)), _col2
(type: boolean)
+ value expressions: _col2 (type: boolean)
Stage: Stage-3
Dependency Collection
diff --git
a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_8.q.out
b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_8.q.out
index 6fa072efb47..7aee7df9de4 100644
---
a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_8.q.out
+++
b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_8.q.out
@@ -402,18 +402,18 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: default.cmv_mat_view_n6
- Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE
Column stats: COMPLETE
+ Statistics: Num rows: 5 Data size: 580 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: a (type: int), ROW__ID (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 5 Data size: 400 Basic stats:
COMPLETE Column stats: COMPLETE
+ expressions: a (type: int), c (type: decimal(10,2)), true
(type: boolean), ROW__ID (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ outputColumnNames: _col0, _col1, _col2, _col3
+ Statistics: Num rows: 5 Data size: 980 Basic stats:
COMPLETE Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
- Statistics: Num rows: 5 Data size: 400 Basic stats:
COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ key expressions: _col0 (type: int), _col1 (type:
decimal(10,2))
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: int), _col1
(type: decimal(10,2))
+ Statistics: Num rows: 5 Data size: 980 Basic stats:
COMPLETE Column stats: COMPLETE
+ value expressions: _col2 (type: boolean), _col3 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
Execution mode: vectorized, llap
LLAP IO: may be used (ACID table)
Map 5
@@ -471,16 +471,16 @@ STAGE PLANS:
condition map:
Right Outer Join 0 to 1
keys:
- 0 _col0 (type: int)
- 1 _col0 (type: int)
- nullSafes: [true]
- outputColumnNames: _col1, _col2, _col3, _col4
- Statistics: Num rows: 2 Data size: 392 Basic stats: COMPLETE
Column stats: COMPLETE
+ 0 _col0 (type: int), _col1 (type: decimal(10,2))
+ 1 _col0 (type: int), _col1 (type: decimal(10,2))
+ nullSafes: [true, true]
+ outputColumnNames: _col2, _col3, _col4, _col5, _col6
+ Statistics: Num rows: 2 Data size: 400 Basic stats: COMPLETE
Column stats: COMPLETE
Filter Operator
- predicate: _col4 (type: boolean)
- Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE
Column stats: COMPLETE
+ predicate: (_col2 and _col6) (type: boolean)
+ Statistics: Num rows: 1 Data size: 200 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: _col1 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
+ expressions: _col3 (type:
struct<writeid:bigint,bucketid:int,rowid:bigint>)
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 76 Basic stats:
COMPLETE Column stats: COMPLETE
Reduce Output Operator
@@ -490,10 +490,10 @@ STAGE PLANS:
Map-reduce partition columns: UDFToInteger(_col0) (type:
int)
Statistics: Num rows: 1 Data size: 76 Basic stats:
COMPLETE Column stats: COMPLETE
Filter Operator
- predicate: (not _col4) (type: boolean)
- Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE
Column stats: COMPLETE
+ predicate: (not _col6) (type: boolean)
+ Statistics: Num rows: 1 Data size: 200 Basic stats: COMPLETE
Column stats: COMPLETE
Select Operator
- expressions: _col2 (type: int), _col3 (type: decimal(10,2))
+ expressions: _col4 (type: int), _col5 (type: decimal(10,2))
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 116 Basic stats:
COMPLETE Column stats: COMPLETE
File Output Operator
@@ -571,12 +571,12 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 1 Data size: 120 Basic stats: COMPLETE
Column stats: COMPLETE
Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
+ key expressions: _col0 (type: int), _col1 (type:
decimal(10,2))
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: int), _col1
(type: decimal(10,2))
Statistics: Num rows: 1 Data size: 120 Basic stats:
COMPLETE Column stats: COMPLETE
- value expressions: _col1 (type: decimal(10,2)), _col2
(type: boolean)
+ value expressions: _col2 (type: boolean)
Stage: Stage-3
Dependency Collection
diff --git
a/ql/src/test/results/clientpositive/llap/materialized_view_join_rebuild.q.out
b/ql/src/test/results/clientpositive/llap/materialized_view_join_rebuild.q.out
new file mode 100644
index 00000000000..9f66625aaa2
--- /dev/null
+++
b/ql/src/test/results/clientpositive/llap/materialized_view_join_rebuild.q.out
@@ -0,0 +1,108 @@
+PREHOOK: query: create table cmv_basetable_n6 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@cmv_basetable_n6
+POSTHOOK: query: create table cmv_basetable_n6 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@cmv_basetable_n6
+PREHOOK: query: insert into cmv_basetable_n6 values
+ (1, 'alfred', 10.30, 2),
+ (2, 'bob', 3.14, 3),
+ (2, 'bonnie', 172342.2, 3),
+ (3, 'calvin', 978.76, 3),
+ (3, 'charlie', 9.8, 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@cmv_basetable_n6
+POSTHOOK: query: insert into cmv_basetable_n6 values
+ (1, 'alfred', 10.30, 2),
+ (2, 'bob', 3.14, 3),
+ (2, 'bonnie', 172342.2, 3),
+ (3, 'calvin', 978.76, 3),
+ (3, 'charlie', 9.8, 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@cmv_basetable_n6
+POSTHOOK: Lineage: cmv_basetable_n6.a SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_n6.b SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_n6.c SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_n6.d SCRIPT []
+PREHOOK: query: create table cmv_basetable_2_n3 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: query: create table cmv_basetable_2_n3 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@cmv_basetable_2_n3
+PREHOOK: query: insert into cmv_basetable_2_n3 values
+ (1, 'alfred', 10.30, 2),
+ (3, 'calvin', 978.76, 3)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: query: insert into cmv_basetable_2_n3 values
+ (1, 'alfred', 10.30, 2),
+ (3, 'calvin', 978.76, 3)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: Lineage: cmv_basetable_2_n3.a SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_2_n3.b SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_2_n3.c SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_2_n3.d SCRIPT []
+PREHOOK: query: CREATE MATERIALIZED VIEW cmv_mat_view_n6
+ TBLPROPERTIES ('transactional'='true') AS
+ SELECT cmv_basetable_n6.a
+ FROM cmv_basetable_n6 JOIN cmv_basetable_2_n3 ON (cmv_basetable_n6.a =
cmv_basetable_2_n3.a)
+ WHERE cmv_basetable_2_n3.c > 10.0
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@cmv_basetable_2_n3
+PREHOOK: Input: default@cmv_basetable_n6
+PREHOOK: Output: database:default
+PREHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: query: CREATE MATERIALIZED VIEW cmv_mat_view_n6
+ TBLPROPERTIES ('transactional'='true') AS
+ SELECT cmv_basetable_n6.a
+ FROM cmv_basetable_n6 JOIN cmv_basetable_2_n3 ON (cmv_basetable_n6.a =
cmv_basetable_2_n3.a)
+ WHERE cmv_basetable_2_n3.c > 10.0
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@cmv_basetable_2_n3
+POSTHOOK: Input: default@cmv_basetable_n6
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Lineage: cmv_mat_view_n6.a SIMPLE
[(cmv_basetable_n6)cmv_basetable_n6.FieldSchema(name:a, type:int,
comment:null), ]
+PREHOOK: query: DELETE from cmv_basetable_2_n3 WHERE a=1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cmv_basetable_2_n3
+PREHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: query: DELETE from cmv_basetable_2_n3 WHERE a=1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cmv_basetable_2_n3
+POSTHOOK: Output: default@cmv_basetable_2_n3
+PREHOOK: query: ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD
+PREHOOK: type: ALTER_MATERIALIZED_VIEW_REBUILD
+PREHOOK: Input: default@cmv_basetable_2_n3
+PREHOOK: Input: default@cmv_basetable_n6
+PREHOOK: Input: default@cmv_mat_view_n6
+PREHOOK: Output: default@cmv_mat_view_n6
+PREHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: query: ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD
+POSTHOOK: type: ALTER_MATERIALIZED_VIEW_REBUILD
+POSTHOOK: Input: default@cmv_basetable_2_n3
+POSTHOOK: Input: default@cmv_basetable_n6
+POSTHOOK: Input: default@cmv_mat_view_n6
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Lineage: cmv_mat_view_n6.a SIMPLE
[(cmv_basetable_n6)cmv_basetable_n6.FieldSchema(name:a, type:int,
comment:null), ]
+PREHOOK: query: SELECT * FROM cmv_mat_view_n6
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cmv_mat_view_n6
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM cmv_mat_view_n6
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cmv_mat_view_n6
+#### A masked pattern was here ####
+3
+3
diff --git
a/ql/src/test/results/clientpositive/llap/materialized_view_repeated_rebuild.q.out
b/ql/src/test/results/clientpositive/llap/materialized_view_repeated_rebuild.q.out
new file mode 100644
index 00000000000..9739f87e96e
--- /dev/null
+++
b/ql/src/test/results/clientpositive/llap/materialized_view_repeated_rebuild.q.out
@@ -0,0 +1,134 @@
+PREHOOK: query: create table cmv_basetable_n6 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@cmv_basetable_n6
+POSTHOOK: query: create table cmv_basetable_n6 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@cmv_basetable_n6
+PREHOOK: query: insert into cmv_basetable_n6 values
+ (1, 'alfred', 10.30, 2),
+ (2, 'bob', 3.14, 3),
+ (2, 'bonnie', 172342.2, 3),
+ (3, 'calvin', 978.76, 3),
+ (3, 'charlie', 9.8, 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@cmv_basetable_n6
+POSTHOOK: query: insert into cmv_basetable_n6 values
+ (1, 'alfred', 10.30, 2),
+ (2, 'bob', 3.14, 3),
+ (2, 'bonnie', 172342.2, 3),
+ (3, 'calvin', 978.76, 3),
+ (3, 'charlie', 9.8, 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@cmv_basetable_n6
+POSTHOOK: Lineage: cmv_basetable_n6.a SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_n6.b SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_n6.c SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_n6.d SCRIPT []
+PREHOOK: query: create table cmv_basetable_2_n3 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: query: create table cmv_basetable_2_n3 (a int, b varchar(256), c
decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@cmv_basetable_2_n3
+PREHOOK: query: insert into cmv_basetable_2_n3 values
+ (1, 'alfred', 10.30, 2),
+ (3, 'calvin', 978.76, 3)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: query: insert into cmv_basetable_2_n3 values
+ (1, 'alfred', 10.30, 2),
+ (3, 'calvin', 978.76, 3)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: Lineage: cmv_basetable_2_n3.a SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_2_n3.b SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_2_n3.c SCRIPT []
+POSTHOOK: Lineage: cmv_basetable_2_n3.d SCRIPT []
+PREHOOK: query: CREATE MATERIALIZED VIEW cmv_mat_view_n6
+ TBLPROPERTIES ('transactional'='true') AS
+ SELECT cmv_basetable_n6.a, cmv_basetable_2_n3.c
+ FROM cmv_basetable_n6 JOIN cmv_basetable_2_n3 ON (cmv_basetable_n6.a =
cmv_basetable_2_n3.a)
+ WHERE cmv_basetable_2_n3.c > 10.0
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@cmv_basetable_2_n3
+PREHOOK: Input: default@cmv_basetable_n6
+PREHOOK: Output: database:default
+PREHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: query: CREATE MATERIALIZED VIEW cmv_mat_view_n6
+ TBLPROPERTIES ('transactional'='true') AS
+ SELECT cmv_basetable_n6.a, cmv_basetable_2_n3.c
+ FROM cmv_basetable_n6 JOIN cmv_basetable_2_n3 ON (cmv_basetable_n6.a =
cmv_basetable_2_n3.a)
+ WHERE cmv_basetable_2_n3.c > 10.0
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@cmv_basetable_2_n3
+POSTHOOK: Input: default@cmv_basetable_n6
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Lineage: cmv_mat_view_n6.a SIMPLE
[(cmv_basetable_n6)cmv_basetable_n6.FieldSchema(name:a, type:int,
comment:null), ]
+POSTHOOK: Lineage: cmv_mat_view_n6.c SIMPLE
[(cmv_basetable_2_n3)cmv_basetable_2_n3.FieldSchema(name:c, type:decimal(10,2),
comment:null), ]
+PREHOOK: query: DELETE from cmv_basetable_2_n3 WHERE a=1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cmv_basetable_2_n3
+PREHOOK: Output: default@cmv_basetable_2_n3
+POSTHOOK: query: DELETE from cmv_basetable_2_n3 WHERE a=1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cmv_basetable_2_n3
+POSTHOOK: Output: default@cmv_basetable_2_n3
+PREHOOK: query: ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD
+PREHOOK: type: ALTER_MATERIALIZED_VIEW_REBUILD
+PREHOOK: Input: default@cmv_basetable_2_n3
+PREHOOK: Input: default@cmv_basetable_n6
+PREHOOK: Input: default@cmv_mat_view_n6
+PREHOOK: Output: default@cmv_mat_view_n6
+PREHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: query: ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD
+POSTHOOK: type: ALTER_MATERIALIZED_VIEW_REBUILD
+POSTHOOK: Input: default@cmv_basetable_2_n3
+POSTHOOK: Input: default@cmv_basetable_n6
+POSTHOOK: Input: default@cmv_mat_view_n6
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Lineage: cmv_mat_view_n6.a SIMPLE
[(cmv_basetable_n6)cmv_basetable_n6.FieldSchema(name:a, type:int,
comment:null), ]
+POSTHOOK: Lineage: cmv_mat_view_n6.c SIMPLE
[(cmv_basetable_2_n3)cmv_basetable_2_n3.FieldSchema(name:c, type:decimal(10,2),
comment:null), ]
+PREHOOK: query: DELETE FROM cmv_basetable_n6 WHERE a=1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cmv_basetable_n6
+PREHOOK: Output: default@cmv_basetable_n6
+POSTHOOK: query: DELETE FROM cmv_basetable_n6 WHERE a=1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cmv_basetable_n6
+POSTHOOK: Output: default@cmv_basetable_n6
+PREHOOK: query: ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD
+PREHOOK: type: ALTER_MATERIALIZED_VIEW_REBUILD
+PREHOOK: Input: default@cmv_basetable_2_n3
+PREHOOK: Input: default@cmv_basetable_n6
+PREHOOK: Input: default@cmv_mat_view_n6
+PREHOOK: Output: default@cmv_mat_view_n6
+PREHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: query: ALTER MATERIALIZED VIEW cmv_mat_view_n6 REBUILD
+POSTHOOK: type: ALTER_MATERIALIZED_VIEW_REBUILD
+POSTHOOK: Input: default@cmv_basetable_2_n3
+POSTHOOK: Input: default@cmv_basetable_n6
+POSTHOOK: Input: default@cmv_mat_view_n6
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Output: default@cmv_mat_view_n6
+POSTHOOK: Lineage: cmv_mat_view_n6.a SIMPLE
[(cmv_basetable_n6)cmv_basetable_n6.FieldSchema(name:a, type:int,
comment:null), ]
+POSTHOOK: Lineage: cmv_mat_view_n6.c SIMPLE
[(cmv_basetable_2_n3)cmv_basetable_2_n3.FieldSchema(name:c, type:decimal(10,2),
comment:null), ]
+PREHOOK: query: SELECT * FROM cmv_mat_view_n6
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cmv_mat_view_n6
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM cmv_mat_view_n6
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cmv_mat_view_n6
+#### A masked pattern was here ####
+3 978.76
+3 978.76