You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2018/08/07 18:36:12 UTC
[2/2] hive git commit: HIVE-19408: Improve show materialized views
statement to show more information about invalidation (Jesus Camacho
Rodriguez, reviewed by Ashutosh Chauhan)
HIVE-19408: Improve show materialized views statement to show more information about invalidation (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/3ce97c90
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3ce97c90
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3ce97c90
Branch: refs/heads/master
Commit: 3ce97c907156b26dc5acbf7e88915f42b319859d
Parents: 5391651
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Tue Aug 7 00:32:22 2018 -0700
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Tue Aug 7 11:35:42 2018 -0700
----------------------------------------------------------------------
.../plugin/TestHiveAuthorizerShowFilters.java | 8 +-
.../test/resources/testconfiguration.properties | 1 +
.../org/apache/hadoop/hive/ql/exec/DDLTask.java | 53 +++-
.../apache/hadoop/hive/ql/metadata/Hive.java | 149 +++++-----
.../ql/metadata/SessionHiveMetaStoreClient.java | 42 +++
.../apache/hadoop/hive/ql/metadata/Table.java | 14 +
.../formatting/JsonMetaDataFormatter.java | 48 +++
.../formatting/MetaDataFormatUtils.java | 12 +-
.../metadata/formatting/MetaDataFormatter.java | 8 +
.../formatting/TextMetaDataFormatter.java | 58 +++-
.../hadoop/hive/ql/plan/ShowTablesDesc.java | 25 +-
.../test/queries/clientpositive/create_view.q | 1 +
...rialized_view_create_rewrite_time_window_2.q | 45 +++
.../clientpositive/show_materialized_views.q | 16 +-
ql/src/test/queries/clientpositive/temp_table.q | 2 +-
.../alter_view_as_select_with_partition.q.out | 5 +-
.../clientpositive/alter_view_as_select.q.out | 15 +-
.../clientpositive/alter_view_col_type.q.out | 10 +-
.../beeline/escape_comments.q.out | 5 +-
.../clientpositive/create_or_replace_view.q.out | 25 +-
.../results/clientpositive/create_view.q.out | 74 ++---
.../create_view_defaultformats.q.out | 10 +-
.../create_view_partitioned.q.out | 15 +-
.../clientpositive/create_view_translate.q.out | 10 +-
.../clientpositive/dbtxnmgr_query5.q.out | 1 -
.../clientpositive/escape_comments.q.out | 5 +-
.../llap/materialized_view_create.q.out | 18 +-
.../materialized_view_create_rewrite_4.q.out | 27 +-
.../materialized_view_create_rewrite_5.q.out | 9 +-
...alized_view_create_rewrite_time_window.q.out | 27 +-
...ized_view_create_rewrite_time_window_2.q.out | 291 +++++++++++++++++++
.../llap/materialized_view_describe.q.out | 36 ++-
.../llap/materialized_view_partitioned.q.out | 9 +-
.../llap/selectDistinctStar.q.out | 10 +-
.../clientpositive/llap/temp_table.q.out | 30 +-
.../clientpositive/named_column_join.q.out | 10 +-
.../show_materialized_views.q.out | 251 ++++++++++++++--
.../clientpositive/spark/temp_table.q.out | 30 +-
.../clientpositive/unicode_comments.q.out | 5 +-
.../clientpositive/union_pos_alias.q.out | 5 +-
.../results/clientpositive/view_alias.q.out | 30 +-
.../test/results/clientpositive/view_cbo.q.out | 50 ++--
42 files changed, 1144 insertions(+), 351 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerShowFilters.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerShowFilters.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerShowFilters.java
index d69696c..76d1fb5 100644
--- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerShowFilters.java
+++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerShowFilters.java
@@ -62,8 +62,8 @@ public class TestHiveAuthorizerShowFilters {
static final List<String> AllTables = getSortedList(tableName1, tableName2);
static final List<String> AllDbs = getSortedList("default", dbName1, dbName2);
- private static List<HivePrivilegeObject> filterArguments = null;
- private static List<HivePrivilegeObject> filteredResults = new ArrayList<HivePrivilegeObject>();
+ private static List<HivePrivilegeObject> filterArguments = new ArrayList<>();
+ private static List<HivePrivilegeObject> filteredResults = new ArrayList<>();
/**
* This factory creates a mocked HiveAuthorizer class. The mocked class is
@@ -78,7 +78,7 @@ public class TestHiveAuthorizerShowFilters {
public List<HivePrivilegeObject> filterListCmdObjects(List<HivePrivilegeObject> listObjs,
HiveAuthzContext context) throws HiveAuthzPluginException, HiveAccessControlException {
// capture arguments in static
- filterArguments = listObjs;
+ filterArguments.addAll(listObjs);
// return static variable with results, if it is set to some set of
// values
// otherwise return the arguments
@@ -137,7 +137,7 @@ public class TestHiveAuthorizerShowFilters {
@Before
public void setup() {
- filterArguments = null;
+ filterArguments.clear();
filteredResults.clear();
}
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index f51ff06..7259bd5 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -557,6 +557,7 @@ minillaplocal.query.files=\
materialized_view_create_rewrite_multi_db.q,\
materialized_view_create_rewrite_rebuild_dummy.q,\
materialized_view_create_rewrite_time_window.q,\
+ materialized_view_create_rewrite_time_window_2.q,\
materialized_view_create_rewrite.q,\
materialized_view_create_rewrite_2.q,\
materialized_view_create_rewrite_3.q,\
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/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 939ef36..accd7f1 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
@@ -49,6 +49,7 @@ import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -64,6 +65,7 @@ import org.apache.hadoop.fs.FsShell;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.common.FileUtils;
import org.apache.hadoop.hive.common.StatsSetupConst;
+import org.apache.hadoop.hive.common.ValidTxnList;
import org.apache.hadoop.hive.common.ValidTxnWriteIdList;
import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.conf.Constants;
@@ -2776,6 +2778,7 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
private int showTablesOrViews(Hive db, ShowTablesDesc showDesc) throws HiveException {
// get the tables/views for the desired pattern - populate the output stream
List<String> tablesOrViews = null;
+ List<Table> materializedViews = null;
String dbName = showDesc.getDbName();
String pattern = showDesc.getPattern(); // if null, all tables/views are returned
@@ -2787,8 +2790,21 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
}
LOG.debug("pattern: {}", pattern);
- tablesOrViews = db.getTablesByType(dbName, pattern, type);
- LOG.debug("Found {} tables/view(s) matching the SHOW TABLES/VIEWS statement.", tablesOrViews.size());
+ if (type == null) {
+ tablesOrViews = new ArrayList<>();
+ tablesOrViews.addAll(db.getTablesByType(dbName, pattern, TableType.MANAGED_TABLE));
+ tablesOrViews.addAll(db.getTablesByType(dbName, pattern, TableType.EXTERNAL_TABLE));
+ LOG.debug("Found {} table(s) matching the SHOW TABLES statement.", tablesOrViews.size());
+ } else if (type == TableType.MATERIALIZED_VIEW) {
+ materializedViews = new ArrayList<>();
+ materializedViews.addAll(db.getAllMaterializedViewObjects(dbName));
+ LOG.debug("Found {} materialized view(s) matching the SHOW MATERIALIZED VIEWS statement.", materializedViews.size());
+ } else if (type == TableType.VIRTUAL_VIEW) {
+ tablesOrViews = db.getTablesByType(dbName, pattern, type);
+ LOG.debug("Found {} view(s) matching the SHOW VIEWS statement.", tablesOrViews.size());
+ } else {
+ throw new HiveException("Option not recognized in SHOW TABLES/VIEWS/MATERIALIZED VIEWS");
+ }
// write the results in the file
DataOutputStream outStream = null;
@@ -2796,11 +2812,15 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
Path resFile = new Path(resultsFile);
FileSystem fs = resFile.getFileSystem(conf);
outStream = fs.create(resFile);
-
- SortedSet<String> sortedSet = new TreeSet<String>(tablesOrViews);
- formatter.showTables(outStream, sortedSet);
+ // Sort by name and print
+ if (tablesOrViews != null) {
+ SortedSet<String> sortedSet = new TreeSet<String>(tablesOrViews);
+ formatter.showTables(outStream, sortedSet);
+ } else {
+ Collections.sort(materializedViews, Comparator.comparing(Table::getTableName));
+ formatter.showMaterializedViews(outStream, materializedViews);
+ }
outStream.close();
- outStream = null;
} catch (Exception e) {
throw new HiveException(e, ErrorMsg.GENERIC_ERROR, "in database" + dbName);
} finally {
@@ -3735,13 +3755,28 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
storageHandlerInfo = db.getStorageHandlerInfo(tbl);
}
fixDecimalColumnTypeName(cols);
+ // Information for materialized views
+ if (tbl.isMaterializedView()) {
+ final String validTxnsList = db.getConf().get(ValidTxnList.VALID_TXNS_KEY);
+ if (validTxnsList != null) {
+ final List<String> tablesUsed =
+ new ArrayList<>(tbl.getCreationMetadata().getTablesUsed());
+ final ValidTxnWriteIdList currentTxnWriteIds =
+ SessionState.get().getTxnMgr().getValidWriteIds(tablesUsed, validTxnsList);
+ final long defaultTimeWindow =
+ HiveConf.getTimeVar(db.getConf(), HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_TIME_WINDOW,
+ TimeUnit.MILLISECONDS);
+ tbl.setOutdatedForRewriting(Hive.isOutdatedMaterializedView(tbl,
+ currentTxnWriteIds, defaultTimeWindow, tablesUsed, false));
+ }
+ }
// In case the query is served by HiveServer2, don't pad it with spaces,
// as HiveServer2 output is consumed by JDBC/ODBC clients.
boolean isOutputPadded = !SessionState.get().isHiveServerQuery();
formatter.describeTable(outStream, colPath, tableName, tbl, part,
- cols, descTbl.isFormatted(), descTbl.isExt(),
- isOutputPadded, colStats,
- pkInfo, fkInfo, ukInfo, nnInfo, dInfo, cInfo, storageHandlerInfo);
+ cols, descTbl.isFormatted(), descTbl.isExt(), isOutputPadded,
+ colStats, pkInfo, fkInfo, ukInfo, nnInfo, dInfo, cInfo,
+ storageHandlerInfo);
LOG.debug("DDLTask: written data for {}", tableName);
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index 239a606..2a36043 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -1425,82 +1425,21 @@ public class Hive {
HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_INCREMENTAL);
final boolean tryIncrementalRebuild =
HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REBUILD_INCREMENTAL);
- final long defaultDiff =
+ final long defaultTimeWindow =
HiveConf.getTimeVar(conf, HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_TIME_WINDOW,
TimeUnit.MILLISECONDS);
- final long currentTime = System.currentTimeMillis();
try {
// Final result
List<RelOptMaterialization> result = new ArrayList<>();
List<Table> materializedViewTables = getTableObjects(dbName, materializedViewNames);
for (Table materializedViewTable : materializedViewTables) {
- // Check if materialization defined its own invalidation time window
- String timeWindowString = materializedViewTable.getProperty(MATERIALIZED_VIEW_REWRITING_TIME_WINDOW);
- long diff = org.apache.commons.lang.StringUtils.isEmpty(timeWindowString) ? defaultDiff :
- HiveConf.toTime(timeWindowString,
- HiveConf.getDefaultTimeUnit(HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_TIME_WINDOW),
- TimeUnit.MILLISECONDS);
- CreationMetadata creationMetadata = materializedViewTable.getCreationMetadata();
- boolean outdated = false;
- if (diff < 0L) {
- // We only consider the materialized view to be outdated if forceOutdated = true, i.e.,
- // if it is a rebuild. Otherwise, it passed the test and we use it as it is.
- outdated = forceMVContentsUpToDate;
- } else {
- // Check whether the materialized view is invalidated
- if (forceMVContentsUpToDate || diff == 0L || creationMetadata.getMaterializationTime() < currentTime - diff) {
- if (currentTxnWriteIds == null) {
- LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
- " ignored for rewriting as we could not obtain current txn ids");
- continue;
- }
- if (creationMetadata.getValidTxnList() == null ||
- creationMetadata.getValidTxnList().isEmpty()) {
- LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
- " ignored for rewriting as we could not obtain materialization txn ids");
- continue;
- }
- boolean ignore = false;
- ValidTxnWriteIdList mvTxnWriteIds = new ValidTxnWriteIdList(
- creationMetadata.getValidTxnList());
- for (String qName : tablesUsed) {
- // Note. If the materialized view does not contain a table that is contained in the query,
- // we do not need to check whether that specific table is outdated or not. If a rewriting
- // is produced in those cases, it is because that additional table is joined with the
- // existing tables with an append-columns only join, i.e., PK-FK + not null.
- if (!creationMetadata.getTablesUsed().contains(qName)) {
- continue;
- }
- ValidWriteIdList tableCurrentWriteIds = currentTxnWriteIds.getTableValidWriteIdList(qName);
- if (tableCurrentWriteIds == null) {
- // Uses non-transactional table, cannot be considered
- LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
- " ignored for rewriting as it is outdated and cannot be considered for " +
- " rewriting because it uses non-transactional table " + qName);
- ignore = true;
- break;
- }
- ValidWriteIdList tableWriteIds = mvTxnWriteIds.getTableValidWriteIdList(qName);
- if (tableWriteIds == null) {
- // This should not happen, but we ignore for safety
- LOG.warn("Materialized view " + materializedViewTable.getFullyQualifiedName() +
- " ignored for rewriting as details about txn ids for table " + qName +
- " could not be found in " + mvTxnWriteIds);
- ignore = true;
- break;
- }
- if (!outdated && !TxnIdUtils.checkEquivalentWriteIds(tableCurrentWriteIds, tableWriteIds)) {
- LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
- " contents are outdated");
- outdated = true;
- }
- }
- if (ignore) {
- continue;
- }
- }
+ final Boolean outdated = isOutdatedMaterializedView(materializedViewTable, currentTxnWriteIds,
+ defaultTimeWindow, tablesUsed, forceMVContentsUpToDate);
+ if (outdated == null) {
+ continue;
}
+ final CreationMetadata creationMetadata = materializedViewTable.getCreationMetadata();
if (outdated) {
// The MV is outdated, see whether we should consider it for rewriting or not
boolean ignore = false;
@@ -1587,6 +1526,82 @@ public class Hive {
}
/**
+ * Utility method that returns whether a materialized view is outdated (true), not outdated
+ * (false), or it cannot be determined (null). The latest case may happen e.g. when the
+ * materialized view definition uses external tables.
+ */
+ public static Boolean isOutdatedMaterializedView(Table materializedViewTable, final ValidTxnWriteIdList currentTxnWriteIds,
+ long defaultTimeWindow, List<String> tablesUsed, boolean forceMVContentsUpToDate) {
+ // Check if materialization defined its own invalidation time window
+ String timeWindowString = materializedViewTable.getProperty(MATERIALIZED_VIEW_REWRITING_TIME_WINDOW);
+ long timeWindow = org.apache.commons.lang.StringUtils.isEmpty(timeWindowString) ? defaultTimeWindow :
+ HiveConf.toTime(timeWindowString,
+ HiveConf.getDefaultTimeUnit(HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_TIME_WINDOW),
+ TimeUnit.MILLISECONDS);
+ CreationMetadata creationMetadata = materializedViewTable.getCreationMetadata();
+ boolean outdated = false;
+ if (timeWindow < 0L) {
+ // We only consider the materialized view to be outdated if forceOutdated = true, i.e.,
+ // if it is a rebuild. Otherwise, it passed the test and we use it as it is.
+ outdated = forceMVContentsUpToDate;
+ } else {
+ // Check whether the materialized view is invalidated
+ if (forceMVContentsUpToDate || timeWindow == 0L || creationMetadata.getMaterializationTime() < System.currentTimeMillis() - timeWindow) {
+ if (currentTxnWriteIds == null) {
+ LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
+ " ignored for rewriting as we could not obtain current txn ids");
+ return null;
+ }
+ if (creationMetadata.getValidTxnList() == null ||
+ creationMetadata.getValidTxnList().isEmpty()) {
+ LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
+ " ignored for rewriting as we could not obtain materialization txn ids");
+ return null;
+ }
+ boolean ignore = false;
+ ValidTxnWriteIdList mvTxnWriteIds = new ValidTxnWriteIdList(
+ creationMetadata.getValidTxnList());
+ for (String qName : tablesUsed) {
+ // Note. If the materialized view does not contain a table that is contained in the query,
+ // we do not need to check whether that specific table is outdated or not. If a rewriting
+ // is produced in those cases, it is because that additional table is joined with the
+ // existing tables with an append-columns only join, i.e., PK-FK + not null.
+ if (!creationMetadata.getTablesUsed().contains(qName)) {
+ continue;
+ }
+ ValidWriteIdList tableCurrentWriteIds = currentTxnWriteIds.getTableValidWriteIdList(qName);
+ if (tableCurrentWriteIds == null) {
+ // Uses non-transactional table, cannot be considered
+ LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
+ " ignored for rewriting as it is outdated and cannot be considered for " +
+ " rewriting because it uses non-transactional table " + qName);
+ ignore = true;
+ break;
+ }
+ ValidWriteIdList tableWriteIds = mvTxnWriteIds.getTableValidWriteIdList(qName);
+ if (tableWriteIds == null) {
+ // This should not happen, but we ignore for safety
+ LOG.warn("Materialized view " + materializedViewTable.getFullyQualifiedName() +
+ " ignored for rewriting as details about txn ids for table " + qName +
+ " could not be found in " + mvTxnWriteIds);
+ ignore = true;
+ break;
+ }
+ if (!outdated && !TxnIdUtils.checkEquivalentWriteIds(tableCurrentWriteIds, tableWriteIds)) {
+ LOG.debug("Materialized view " + materializedViewTable.getFullyQualifiedName() +
+ " contents are outdated");
+ outdated = true;
+ }
+ }
+ if (ignore) {
+ return null;
+ }
+ }
+ }
+ return outdated;
+ }
+
+ /**
* Method to enrich the materialization query contained in the input with
* its invalidation.
*/
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java
index 3240f2d..a2b57fb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -40,6 +41,7 @@ import org.apache.hadoop.hive.io.HdfsUtils;
import org.apache.hadoop.hive.metastore.HiveMetaHookLoader;
import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
import org.apache.hadoop.hive.metastore.IMetaStoreClient;
+import org.apache.hadoop.hive.metastore.TableType;
import org.apache.hadoop.hive.metastore.Warehouse;
import org.apache.hadoop.hive.metastore.api.AlreadyExistsException;
import org.apache.hadoop.hive.metastore.api.ColumnStatistics;
@@ -245,6 +247,46 @@ public class SessionHiveMetaStoreClient extends HiveMetaStoreClient implements I
}
@Override
+ public List<String> getTables(String dbname, String tablePattern, TableType tableType) throws MetaException {
+ List<String> tableNames = super.getTables(dbname, tablePattern, tableType);
+
+ if (tableType == TableType.MANAGED_TABLE || tableType == TableType.EXTERNAL_TABLE) {
+ // May need to merge with list of temp tables
+ dbname = dbname.toLowerCase();
+ tablePattern = tablePattern.toLowerCase();
+ Map<String, Table> tables = getTempTablesForDatabase(dbname, tablePattern);
+ if (tables == null || tables.size() == 0) {
+ return tableNames;
+ }
+ tablePattern = tablePattern.replaceAll("\\*", ".*");
+ Pattern pattern = Pattern.compile(tablePattern);
+ Matcher matcher = pattern.matcher("");
+ Set<String> combinedTableNames = new HashSet<String>();
+ combinedTableNames.addAll(tableNames);
+ for (Entry<String, Table> tableData : tables.entrySet()) {
+ matcher.reset(tableData.getKey());
+ if (matcher.matches()) {
+ if (tableData.getValue().getTableType() == tableType) {
+ // If tableType is the same that we are requesting,
+ // add table the the list
+ combinedTableNames.add(tableData.getKey());
+ } else {
+ // If tableType is not the same that we are requesting,
+ // remove it in case it was added before, as temp table
+ // overrides original table
+ combinedTableNames.remove(tableData.getKey());
+ }
+ }
+ }
+ // Combine/sort temp and normal table results
+ tableNames = new ArrayList<>(combinedTableNames);
+ Collections.sort(tableNames);
+ }
+
+ return tableNames;
+ }
+
+ @Override
public List<TableMeta> getTableMeta(String dbPatterns, String tablePatterns, List<String> tableTypes)
throws MetaException {
List<TableMeta> tableMetas = super.getTableMeta(dbPatterns, tablePatterns, tableTypes);
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
index 03b0269..9e0cea7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
@@ -105,6 +105,10 @@ public class Table implements Serializable {
private transient boolean materializedTable;
+ /** Note: This is set only for describe table purposes, it cannot be used to verify whether
+ * a materialization is up-to-date or not. */
+ private transient Boolean outdatedForRewritingMaterializedView;
+
/**
* Used only for serialization.
*/
@@ -1091,4 +1095,14 @@ public class Table implements Serializable {
public String getCatalogName() {
return this.tTable.getCatName();
}
+
+ public void setOutdatedForRewriting(Boolean validForRewritingMaterializedView) {
+ this.outdatedForRewritingMaterializedView = validForRewritingMaterializedView;
+ }
+
+ /** Note: This is set only for describe table purposes, it cannot be used to verify whether
+ * a materialization is up-to-date or not. */
+ public Boolean isOutdatedForRewriting() {
+ return outdatedForRewritingMaterializedView;
+ }
};
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java
index df0a237..4c4f9c1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java
@@ -28,9 +28,11 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.hive.ql.session.SessionState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.hadoop.fs.FileStatus;
@@ -57,6 +59,8 @@ import org.apache.hadoop.hive.ql.metadata.UniqueConstraint;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.ObjectMapper;
+import static org.apache.hadoop.hive.conf.Constants.MATERIALIZED_VIEW_REWRITING_TIME_WINDOW;
+
/**
* Format table and index information for machine readability using
* json.
@@ -109,6 +113,50 @@ public class JsonMetaDataFormatter implements MetaDataFormatter {
}
/**
+ * Show a list of materialized views.
+ */
+ @Override
+ public void showMaterializedViews(DataOutputStream out, List<Table> materializedViews)
+ throws HiveException {
+ if (materializedViews.isEmpty()) {
+ // Nothing to do
+ return;
+ }
+
+ MapBuilder builder = MapBuilder.create();
+ ArrayList<Map<String, Object>> res = new ArrayList<Map<String, Object>>();
+ for (Table mv : materializedViews) {
+ final String mvName = mv.getTableName();
+ final String rewriteEnabled = mv.isRewriteEnabled() ? "Yes" : "No";
+ // Currently, we only support manual refresh
+ // TODO: Update whenever we have other modes
+ final String refreshMode = "Manual refresh";
+ final String timeWindowString = mv.getProperty(MATERIALIZED_VIEW_REWRITING_TIME_WINDOW);
+ final String mode;
+ if (!org.apache.commons.lang.StringUtils.isEmpty(timeWindowString)) {
+ long time = HiveConf.toTime(timeWindowString,
+ HiveConf.getDefaultTimeUnit(HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_TIME_WINDOW),
+ TimeUnit.MINUTES);
+ if (time > 0L) {
+ mode = refreshMode + " (Valid for " + time + "min)";
+ } else if (time == 0L) {
+ mode = refreshMode + " (Valid until source tables modified)";
+ } else {
+ mode = refreshMode + " (Valid always)";
+ }
+ } else {
+ mode = refreshMode;
+ }
+ res.add(builder
+ .put("MV Name", mvName)
+ .put("Rewriting Enabled", rewriteEnabled)
+ .put("Mode", mode)
+ .build());
+ }
+ asJson(out, builder.put("materialized views", res).build());
+ }
+
+ /**
* Describe table.
*/
@Override
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java
index 36cd46a..4180dc4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java
@@ -360,7 +360,7 @@ public final class MetaDataFormatUtils {
getStorageDescriptorInfo(tableInfo, table.getTTable().getSd());
if (table.isView() || table.isMaterializedView()) {
- tableInfo.append(LINE_DELIM).append("# View Information").append(LINE_DELIM);
+ tableInfo.append(LINE_DELIM).append(table.isView() ? "# View Information" : "# Materialized View Information").append(LINE_DELIM);
getViewInfo(tableInfo, table);
}
@@ -368,9 +368,13 @@ public final class MetaDataFormatUtils {
}
private static void getViewInfo(StringBuilder tableInfo, Table tbl) {
- formatOutput("View Original Text:", tbl.getViewOriginalText(), tableInfo);
- formatOutput("View Expanded Text:", tbl.getViewExpandedText(), tableInfo);
- formatOutput("View Rewrite Enabled:", tbl.isRewriteEnabled() ? "Yes" : "No", tableInfo);
+ formatOutput("Original Query:", tbl.getViewOriginalText(), tableInfo);
+ formatOutput("Expanded Query:", tbl.getViewExpandedText(), tableInfo);
+ if (tbl.isMaterializedView()) {
+ formatOutput("Rewrite Enabled:", tbl.isRewriteEnabled() ? "Yes" : "No", tableInfo);
+ formatOutput("Outdated for Rewriting:", tbl.isOutdatedForRewriting() == null ? "Unknown"
+ : tbl.isOutdatedForRewriting() ? "Yes" : "No", tableInfo);
+ }
}
private static void getStorageDescriptorInfo(StringBuilder tableInfo,
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatter.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatter.java
index d15016c..936a808 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatter.java
@@ -20,10 +20,12 @@ package org.apache.hadoop.hive.ql.metadata.formatting;
import java.io.DataOutputStream;
import java.io.OutputStream;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.annotation.Nullable;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj;
import org.apache.hadoop.hive.metastore.api.FieldSchema;
@@ -69,6 +71,12 @@ public interface MetaDataFormatter {
throws HiveException;
/**
+ * Show a list of materialized views.
+ */
+ public void showMaterializedViews(DataOutputStream out, List<Table> materializedViews)
+ throws HiveException;
+
+ /**
* Describe table.
* @param out
* @param colPath
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java
index 705365b..2ff1d94 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java
@@ -27,9 +27,12 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import org.apache.hadoop.hive.conf.Constants;
import org.apache.hadoop.hive.metastore.utils.MetaStoreUtils;
import org.apache.hadoop.hive.ql.metadata.StorageHandlerInfo;
+import org.apache.hadoop.hive.ql.plan.DescTableDesc;
import org.apache.hive.common.util.HiveStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,6 +61,8 @@ import org.apache.hadoop.hive.ql.metadata.Table;
import org.apache.hadoop.hive.ql.metadata.UniqueConstraint;
import org.apache.hadoop.hive.ql.session.SessionState;
+import static org.apache.hadoop.hive.conf.Constants.MATERIALIZED_VIEW_REWRITING_TIME_WINDOW;
+
/**
* Format table and index information for human readability using
* simple lines of text.
@@ -106,14 +111,14 @@ class TextMetaDataFormatter implements MetaDataFormatter {
} catch (Exception e) {
throw new HiveException(e);
}
- }
+ }
+
/**
* Show a list of tables.
*/
@Override
public void showTables(DataOutputStream out, Set<String> tables)
- throws HiveException
- {
+ throws HiveException {
Iterator<String> iterTbls = tables.iterator();
try {
@@ -125,7 +130,54 @@ class TextMetaDataFormatter implements MetaDataFormatter {
} catch (IOException e) {
throw new HiveException(e);
}
+ }
+
+ /**
+ * Show a list of materialized views.
+ */
+ @Override
+ public void showMaterializedViews(DataOutputStream out, List<Table> materializedViews)
+ throws HiveException {
+ if (materializedViews.isEmpty()) {
+ // Nothing to do
+ return;
+ }
+
+ try {
+ TextMetaDataTable mdt = new TextMetaDataTable();
+ mdt.addRow("# MV Name", "Rewriting Enabled", "Mode");
+ for (Table mv : materializedViews) {
+ final String mvName = mv.getTableName();
+ final String rewriteEnabled = mv.isRewriteEnabled() ? "Yes" : "No";
+ // Currently, we only support manual refresh
+ // TODO: Update whenever we have other modes
+ final String refreshMode = "Manual refresh";
+ final String timeWindowString = mv.getProperty(MATERIALIZED_VIEW_REWRITING_TIME_WINDOW);
+ final String mode;
+ if (!org.apache.commons.lang.StringUtils.isEmpty(timeWindowString)) {
+ long time = HiveConf.toTime(timeWindowString,
+ HiveConf.getDefaultTimeUnit(HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_TIME_WINDOW),
+ TimeUnit.MINUTES);
+ if (time > 0L) {
+ mode = refreshMode + " (Valid for " + time + "min)";
+ } else if (time == 0L) {
+ mode = refreshMode + " (Valid until source tables modified)";
+ } else {
+ mode = refreshMode + " (Valid always)";
+ }
+ } else {
+ mode = refreshMode;
+ }
+ mdt.addRow(mvName, rewriteEnabled, mode);
}
+ // In case the query is served by HiveServer2, don't pad it with spaces,
+ // as HiveServer2 output is consumed by JDBC/ODBC clients.
+ out.write(mdt.renderTable(!SessionState.get().isHiveServerQuery()).getBytes("UTF-8"));
+ out.write(terminator);
+ } catch (IOException e) {
+ throw new HiveException(e);
+ }
+ }
@Override
public void describeTable(DataOutputStream outStream, String colPath,
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowTablesDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowTablesDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowTablesDesc.java
index bf80345..1c16252 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowTablesDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowTablesDesc.java
@@ -32,25 +32,38 @@ import org.apache.hadoop.hive.ql.plan.Explain.Level;
@Explain(displayName = "Show Tables", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
public class ShowTablesDesc extends DDLDesc implements Serializable {
private static final long serialVersionUID = 1L;
- String pattern;
- String dbName;
- String resFile;
- TableType type;
+
/**
* table name for the result of show tables.
*/
private static final String table = "show";
+
+ /**
+ * thrift ddl for the result of show tables.
+ */
+ private static final String TABLES_VIEWS_SCHEMA = "tab_name#string";
+
/**
* thrift ddl for the result of show tables.
*/
- private static final String schema = "tab_name#string";
+ private static final String MATERIALIZED_VIEWS_SCHEMA =
+ "mv_name,rewrite_enabled,mode#string:string:string";
+
+
+ String pattern;
+ String dbName;
+ String resFile;
+ TableType type;
public String getTable() {
return table;
}
public String getSchema() {
- return schema;
+ if (type != null && type == TableType.MATERIALIZED_VIEW) {
+ return MATERIALIZED_VIEWS_SCHEMA;
+ }
+ return TABLES_VIEWS_SCHEMA;
}
public ShowTablesDesc() {
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/queries/clientpositive/create_view.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/create_view.q b/ql/src/test/queries/clientpositive/create_view.q
index 3d66cbc..dce2866 100644
--- a/ql/src/test/queries/clientpositive/create_view.q
+++ b/ql/src/test/queries/clientpositive/create_view.q
@@ -42,6 +42,7 @@ EXPLAIN
SELECT * from view2 where key=18;
SHOW TABLES 'view.*';
+SHOW VIEWS 'view.*';
DESCRIBE view1;
DESCRIBE EXTENDED view1;
DESCRIBE FORMATTED view1;
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/queries/clientpositive/materialized_view_create_rewrite_time_window_2.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/materialized_view_create_rewrite_time_window_2.q b/ql/src/test/queries/clientpositive/materialized_view_create_rewrite_time_window_2.q
new file mode 100644
index 0000000..6873673
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/materialized_view_create_rewrite_time_window_2.q
@@ -0,0 +1,45 @@
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+set hive.strict.checks.cartesian.product=false;
+
+create table cmv_basetable_n100 (a int, b varchar(256), c decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true');
+insert into cmv_basetable_n100 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);
+analyze table cmv_basetable_n100 compute statistics for columns;
+
+create table cmv_basetable_2_n100 (a int, b varchar(256), c decimal(10,2), d int) stored as orc TBLPROPERTIES ('transactional'='true');
+insert into cmv_basetable_2_n100 values
+ (1, 'alfred', 10.30, 2),
+ (3, 'calvin', 978.76, 3);
+analyze table cmv_basetable_2_n100 compute statistics for columns;
+
+-- CREATE MATERIALIZED VIEW
+CREATE MATERIALIZED VIEW cmv_mat_view_n300 AS
+ SELECT cmv_basetable_n100.a, cmv_basetable_2_n100.c
+ FROM cmv_basetable_n100 JOIN cmv_basetable_2_n100 ON (cmv_basetable_n100.a = cmv_basetable_2_n100.a)
+ WHERE cmv_basetable_2_n100.c > 10.0
+ GROUP BY cmv_basetable_n100.a, cmv_basetable_2_n100.c;
+
+-- OUTDATED: NO
+DESCRIBE FORMATTED cmv_mat_view_n300;
+
+insert into cmv_basetable_2_n100 values
+ (3, 'charlie', 15.8, 1);
+analyze table cmv_basetable_2_n100 compute statistics for columns;
+
+-- OUTDATED: YES
+DESCRIBE FORMATTED cmv_mat_view_n300;
+
+-- REBUILD
+ALTER MATERIALIZED VIEW cmv_mat_view_n300 REBUILD;
+
+-- OUTDATED: NO
+DESCRIBE FORMATTED cmv_mat_view_n300;
+
+drop materialized view cmv_mat_view_n300;
+drop table cmv_basetable_n100;
+drop table cmv_basetable_2_n100;
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/queries/clientpositive/show_materialized_views.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/show_materialized_views.q b/ql/src/test/queries/clientpositive/show_materialized_views.q
index f8d49d6..7c91b2e 100644
--- a/ql/src/test/queries/clientpositive/show_materialized_views.q
+++ b/ql/src/test/queries/clientpositive/show_materialized_views.q
@@ -11,9 +11,11 @@ CREATE TABLE shtb_test1(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING)
STORED AS ORC TBLPROPERTIES ('transactional'='true');
CREATE MATERIALIZED VIEW shtb_test1_view1 DISABLE REWRITE AS
SELECT * FROM shtb_test1 where KEY > 1000 and KEY < 2000;
-CREATE MATERIALIZED VIEW shtb_test1_view2 AS
+CREATE MATERIALIZED VIEW shtb_test1_view2
+TBLPROPERTIES ('rewriting.time.window' = '-1min') AS
SELECT * FROM shtb_test1 where KEY > 100 and KEY < 200;
-CREATE MATERIALIZED VIEW shtb_full_view2 AS
+CREATE MATERIALIZED VIEW shtb_full_view2
+TBLPROPERTIES ('rewriting.time.window' = '5min') AS
SELECT * FROM shtb_test1;
USE test2;
@@ -42,16 +44,22 @@ SHOW MATERIALIZED VIEWS FROM test2;
SHOW MATERIALIZED VIEWS IN test1;
SHOW MATERIALIZED VIEWS IN default;
SHOW MATERIALIZED VIEWS IN test1 "shtb_test_*";
+DESCRIBE FORMATTED test1.shtb_full_view2;
+DESCRIBE FORMATTED test1.shtb_test1_view1;
+DESCRIBE FORMATTED test1.shtb_test1_view2;
SHOW MATERIALIZED VIEWS IN test2 LIKE "nomatch";
-- SHOW MATERIALIZED VIEWS from a database with a name that requires escaping
CREATE DATABASE `database`;
USE `database`;
-CREATE TABLE foo_n0(a INT);
-CREATE VIEW fooview AS
+CREATE TABLE foo_n0(a INT)
+STORED AS ORC TBLPROPERTIES ('transactional'='true');
+CREATE MATERIALIZED VIEW fooview
+TBLPROPERTIES ('rewriting.time.window' = '0min') AS
SELECT * FROM foo_n0;
USE default;
SHOW MATERIALIZED VIEWS FROM `database` LIKE "fooview";
+DESCRIBE FORMATTED `database`.`fooview`;
DROP MATERIALIZED VIEW fooview;
DROP TABLE foo_n0;
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/queries/clientpositive/temp_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/temp_table.q b/ql/src/test/queries/clientpositive/temp_table.q
index 4990223..f462f70 100644
--- a/ql/src/test/queries/clientpositive/temp_table.q
+++ b/ql/src/test/queries/clientpositive/temp_table.q
@@ -8,7 +8,7 @@ EXPLAIN CREATE TEMPORARY TABLE bar AS SELECT * FROM src WHERE key % 2 = 1;
CREATE TEMPORARY TABLE bar AS SELECT * FROM src WHERE key % 2 = 1;
DESCRIBE foo;
-DESCRIBE bar;
+DESCRIBE FORMATTED bar;
explain select * from foo order by key limit 10;
select * from foo order by key limit 10;
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientnegative/alter_view_as_select_with_partition.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/alter_view_as_select_with_partition.q.out b/ql/src/test/results/clientnegative/alter_view_as_select_with_partition.q.out
index 90c3d02..5261a3b 100644
--- a/ql/src/test/results/clientnegative/alter_view_as_select_with_partition.q.out
+++ b/ql/src/test/results/clientnegative/alter_view_as_select_with_partition.q.out
@@ -69,12 +69,11 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT key, value
+Original Query: SELECT key, value
FROM src
WHERE key=86
-View Expanded Text: SELECT `src`.`key`, `src`.`value`
+Expanded Query: SELECT `src`.`key`, `src`.`value`
FROM `default`.`src`
WHERE `src`.`key`=86
-View Rewrite Enabled: No
FAILED: SemanticException [Error 10217]: Cannot replace a view with CREATE VIEW or REPLACE VIEW or ALTER VIEW AS SELECT if the view has partitions
The following view has partition, it could not be replaced: default.testViewPart
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/alter_view_as_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/alter_view_as_select.q.out b/ql/src/test/results/clientpositive/alter_view_as_select.q.out
index 425b527..b024443 100644
--- a/ql/src/test/results/clientpositive/alter_view_as_select.q.out
+++ b/ql/src/test/results/clientpositive/alter_view_as_select.q.out
@@ -49,9 +49,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT * FROM srcpart
-View Expanded Text: SELECT `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` FROM `default`.`srcpart`
-View Rewrite Enabled: No
+Original Query: SELECT * FROM srcpart
+Expanded Query: SELECT `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` FROM `default`.`srcpart`
PREHOOK: query: ALTER VIEW tv.testView AS SELECT value FROM src WHERE key=86
PREHOOK: type: CREATEVIEW
PREHOOK: Input: default@src
@@ -90,9 +89,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT value FROM src WHERE key=86
-View Expanded Text: SELECT `src`.`value` FROM `default`.`src` WHERE `src`.`key`=86
-View Rewrite Enabled: No
+Original Query: SELECT value FROM src WHERE key=86
+Expanded Query: SELECT `src`.`value` FROM `default`.`src` WHERE `src`.`key`=86
PREHOOK: query: ALTER VIEW tv.testView AS
SELECT * FROM src
WHERE key > 80 AND key < 100
@@ -140,15 +138,14 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT * FROM src
+Original Query: SELECT * FROM src
WHERE key > 80 AND key < 100
ORDER BY key, value
LIMIT 10
-View Expanded Text: SELECT `src`.`key`, `src`.`value` FROM `default`.`src`
+Expanded Query: SELECT `src`.`key`, `src`.`value` FROM `default`.`src`
WHERE `src`.`key` > 80 AND `src`.`key` < 100
ORDER BY `src`.`key`, `src`.`value`
LIMIT 10
-View Rewrite Enabled: No
PREHOOK: query: DROP VIEW tv.testView
PREHOOK: type: DROPVIEW
PREHOOK: Input: tv@testview
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/alter_view_col_type.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/alter_view_col_type.q.out b/ql/src/test/results/clientpositive/alter_view_col_type.q.out
index c829400..2d1d2ab 100644
--- a/ql/src/test/results/clientpositive/alter_view_col_type.q.out
+++ b/ql/src/test/results/clientpositive/alter_view_col_type.q.out
@@ -102,9 +102,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select c1, c2 from at1
-View Expanded Text: select `at1`.`c1`, `at1`.`c2` from `default`.`at1`
-View Rewrite Enabled: No
+Original Query: select c1, c2 from at1
+Expanded Query: select `at1`.`c1`, `at1`.`c2` from `default`.`at1`
PREHOOK: query: select * from av1
PREHOOK: type: QUERY
PREHOOK: Input: default@at1
@@ -159,9 +158,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select c2, c3 from at1
-View Expanded Text: select `at1`.`c2`, `at1`.`c3` from `default`.`at1`
-View Rewrite Enabled: No
+Original Query: select c2, c3 from at1
+Expanded Query: select `at1`.`c2`, `at1`.`c3` from `default`.`at1`
PREHOOK: query: select * from av1
PREHOOK: type: QUERY
PREHOOK: Input: default@at1
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/beeline/escape_comments.q.out b/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
index 7890561..ac919e1 100644
--- a/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
+++ b/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
@@ -162,9 +162,8 @@ Bucket Columns: [] NULL
Sort Columns: [] NULL
NULL NULL
# View Information NULL NULL
-View Original Text: select col1 from escape_comments_tbl1 NULL
-View Expanded Text: SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1` NULL
-View Rewrite Enabled: No NULL
+Original Query: select col1 from escape_comments_tbl1 NULL
+Expanded Query: SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1` NULL
PREHOOK: query: drop database escape_comments_db cascade
PREHOOK: type: DROPDATABASE
PREHOOK: Input: database:escape_comments_db
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/create_or_replace_view.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_or_replace_view.q.out b/ql/src/test/results/clientpositive/create_or_replace_view.q.out
index 5871434..8f8d912 100644
--- a/ql/src/test/results/clientpositive/create_or_replace_view.q.out
+++ b/ql/src/test/results/clientpositive/create_or_replace_view.q.out
@@ -49,9 +49,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select * from srcpart
-View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
-View Rewrite Enabled: No
+Original Query: select * from srcpart
+Expanded Query: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
PREHOOK: query: create or replace view vt.v partitioned on (ds, hr) as select * from srcpart
PREHOOK: type: CREATEVIEW
PREHOOK: Input: default@srcpart
@@ -143,9 +142,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select * from srcpart
-View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
-View Rewrite Enabled: No
+Original Query: select * from srcpart
+Expanded Query: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
PREHOOK: query: show partitions vt.v
PREHOOK: type: SHOWPARTITIONS
PREHOOK: Input: vt@v
@@ -240,9 +238,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select value, ds, hr from srcpart
-View Expanded Text: select `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
-View Rewrite Enabled: No
+Original Query: select value, ds, hr from srcpart
+Expanded Query: select `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
PREHOOK: query: show partitions vt.v
PREHOOK: type: SHOWPARTITIONS
PREHOOK: Input: vt@v
@@ -314,9 +311,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select key, value, ds, hr from srcpart
-View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
-View Rewrite Enabled: No
+Original Query: select key, value, ds, hr from srcpart
+Expanded Query: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
PREHOOK: query: show partitions vt.v
PREHOOK: type: SHOWPARTITIONS
PREHOOK: Input: vt@v
@@ -411,9 +407,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select * from srcpart
-View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
-View Rewrite Enabled: No
+Original Query: select * from srcpart
+Expanded Query: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart`
PREHOOK: query: drop view vt.v
PREHOOK: type: DROPVIEW
PREHOOK: Input: vt@v
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/create_view.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_view.q.out b/ql/src/test/results/clientpositive/create_view.q.out
index b5b7bfb..d2c516f 100644
--- a/ql/src/test/results/clientpositive/create_view.q.out
+++ b/ql/src/test/results/clientpositive/create_view.q.out
@@ -221,6 +221,10 @@ PREHOOK: Input: database:default
POSTHOOK: query: SHOW TABLES 'view.*'
POSTHOOK: type: SHOWTABLES
POSTHOOK: Input: database:default
+PREHOOK: query: SHOW VIEWS 'view.*'
+PREHOOK: type: SHOWVIEWS
+POSTHOOK: query: SHOW VIEWS 'view.*'
+POSTHOOK: type: SHOWVIEWS
view1
view2
view3
@@ -268,9 +272,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT value FROM src WHERE key=86
-View Expanded Text: SELECT `src`.`value` FROM `default`.`src` WHERE `src`.`key`=86
-View Rewrite Enabled: No
+Original Query: SELECT value FROM src WHERE key=86
+Expanded Query: SELECT `src`.`value` FROM `default`.`src` WHERE `src`.`key`=86
PREHOOK: query: DESCRIBE view2
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@view2
@@ -318,9 +321,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT * FROM src
-View Expanded Text: SELECT `src`.`key`, `src`.`value` FROM `default`.`src`
-View Rewrite Enabled: No
+Original Query: SELECT * FROM src
+Expanded Query: SELECT `src`.`key`, `src`.`value` FROM `default`.`src`
PREHOOK: query: DESCRIBE view3
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@view3
@@ -366,9 +368,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT upper(value) FROM src WHERE key=86
-View Expanded Text: SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `default.view3`
-View Rewrite Enabled: No
+Original Query: SELECT upper(value) FROM src WHERE key=86
+Expanded Query: SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `default.view3`
PREHOOK: query: ALTER VIEW view3 SET TBLPROPERTIES ("biggest" = "loser")
PREHOOK: type: ALTERVIEW_PROPERTIES
PREHOOK: Input: default@view3
@@ -416,9 +417,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT upper(value) FROM src WHERE key=86
-View Expanded Text: SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `default.view3`
-View Rewrite Enabled: No
+Original Query: SELECT upper(value) FROM src WHERE key=86
+Expanded Query: SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `default.view3`
PREHOOK: query: CREATE TABLE table1_n4 (key int)
PREHOOK: type: CREATETABLE
PREHOOK: Output: database:default
@@ -758,11 +758,10 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT test_translate('abc', 'a', 'b')
+Original Query: SELECT test_translate('abc', 'a', 'b')
FROM table1_n4
-View Expanded Text: SELECT `_c0` AS `c` FROM (SELECT `test_translate`('abc', 'a', 'b')
+Expanded Query: SELECT `_c0` AS `c` FROM (SELECT `test_translate`('abc', 'a', 'b')
FROM `default`.`table1_n4`) `default.view8`
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view8
PREHOOK: type: QUERY
PREHOOK: Input: default@table1_n4
@@ -834,11 +833,10 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT test_max(length(value))
+Original Query: SELECT test_max(length(value))
FROM src
-View Expanded Text: SELECT `_c0` AS `m` FROM (SELECT `test_max`(length(`src`.`value`))
+Expanded Query: SELECT `_c0` AS `m` FROM (SELECT `test_max`(length(`src`.`value`))
FROM `default`.`src`) `default.view9`
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view9
PREHOOK: type: QUERY
PREHOOK: Input: default@src
@@ -910,11 +908,10 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT test_max(length(value))
+Original Query: SELECT test_max(length(value))
FROM src
-View Expanded Text: SELECT `_c0` AS `m` FROM (SELECT `test_max`(length(`src`.`value`))
+Expanded Query: SELECT `_c0` AS `m` FROM (SELECT `test_max`(length(`src`.`value`))
FROM `default`.`src`) `default.view9`
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view9
PREHOOK: type: QUERY
PREHOOK: Input: default@src
@@ -979,9 +976,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT slurp.* FROM (SELECT * FROM src WHERE key=86) slurp
-View Expanded Text: SELECT `slurp`.`key`, `slurp`.`value` FROM (SELECT `src`.`key`, `src`.`value` FROM `default`.`src` WHERE `src`.`key`=86) `slurp`
-View Rewrite Enabled: No
+Original Query: SELECT slurp.* FROM (SELECT * FROM src WHERE key=86) slurp
+Expanded Query: SELECT `slurp`.`key`, `slurp`.`value` FROM (SELECT `src`.`key`, `src`.`value` FROM `default`.`src` WHERE `src`.`key`=86) `slurp`
PREHOOK: query: SELECT * FROM view10
PREHOOK: type: QUERY
PREHOOK: Input: default@src
@@ -1053,11 +1049,10 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT test_explode(array(1,2,3)) AS (boom)
+Original Query: SELECT test_explode(array(1,2,3)) AS (boom)
FROM table1_n4
-View Expanded Text: SELECT `test_explode`(array(1,2,3)) AS (`boom`)
+Expanded Query: SELECT `test_explode`(array(1,2,3)) AS (`boom`)
FROM `default`.`table1_n4`
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view11
PREHOOK: type: QUERY
PREHOOK: Input: default@table1_n4
@@ -1127,9 +1122,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol
-View Expanded Text: SELECT `src`.`key`, `src`.`value`, `mytable`.`mycol` FROM `default`.`src` LATERAL VIEW explode(array(1,2,3)) `myTable` AS `myCol`
-View Rewrite Enabled: No
+Original Query: SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol
+Expanded Query: SELECT `src`.`key`, `src`.`value`, `mytable`.`mycol` FROM `default`.`src` LATERAL VIEW explode(array(1,2,3)) `myTable` AS `myCol`
PREHOOK: query: SELECT * FROM view12
ORDER BY key ASC, myCol ASC LIMIT 1
PREHOOK: type: QUERY
@@ -1208,11 +1202,10 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT s.key
+Original Query: SELECT s.key
FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 ON key) s
-View Expanded Text: SELECT `s`.`key`
+Expanded Query: SELECT `s`.`key`
FROM `default`.`srcbucket` TABLESAMPLE (BUCKET 1 OUT OF 5 ON `key`) `s`
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view13
ORDER BY key LIMIT 12
PREHOOK: type: QUERY
@@ -1314,7 +1307,7 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT unionsrc1.key as k1, unionsrc1.value as v1,
+Original Query: SELECT unionsrc1.key as k1, unionsrc1.value as v1,
unionsrc2.key as k2, unionsrc2.value as v2
FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
UNION ALL
@@ -1324,7 +1317,7 @@ View Original Text: SELECT unionsrc1.key as k1, unionsrc1.value as v1,
UNION ALL
select s4.key as key, s4.value as value from src s4 where s4.key < 10) unionsrc2
ON (unionsrc1.key = unionsrc2.key)
-View Expanded Text: SELECT `unionsrc1`.`key` as `k1`, `unionsrc1`.`value` as `v1`,
+Expanded Query: SELECT `unionsrc1`.`key` as `k1`, `unionsrc1`.`value` as `v1`,
`unionsrc2`.`key` as `k2`, `unionsrc2`.`value` as `v2`
FROM (select 'tst1' as `key`, cast(count(1) as string) as `value` from `default`.`src` `s1`
UNION ALL
@@ -1334,7 +1327,6 @@ View Expanded Text: SELECT `unionsrc1`.`key` as `k1`, `unionsrc1`.`value` as `v
UNION ALL
select `s4`.`key` as `key`, `s4`.`value` as `value` from `default`.`src` `s4` where `s4`.`key` < 10) `unionsrc2`
ON (`unionsrc1`.`key` = `unionsrc2`.`key`)
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view14
ORDER BY k1
PREHOOK: type: QUERY
@@ -1427,13 +1419,12 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT key,COUNT(value) AS value_count
+Original Query: SELECT key,COUNT(value) AS value_count
FROM src
GROUP BY key
-View Expanded Text: SELECT `src`.`key`,COUNT(`src`.`value`) AS `value_count`
+Expanded Query: SELECT `src`.`key`,COUNT(`src`.`value`) AS `value_count`
FROM `default`.`src`
GROUP BY `src`.`key`
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view15
ORDER BY value_count DESC, key
LIMIT 10
@@ -1510,11 +1501,10 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT DISTINCT value
+Original Query: SELECT DISTINCT value
FROM src
-View Expanded Text: SELECT DISTINCT `src`.`value`
+Expanded Query: SELECT DISTINCT `src`.`value`
FROM `default`.`src`
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM view16
ORDER BY value
LIMIT 10
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/create_view_defaultformats.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_view_defaultformats.q.out b/ql/src/test/results/clientpositive/create_view_defaultformats.q.out
index b408c6e..28ca402 100644
--- a/ql/src/test/results/clientpositive/create_view_defaultformats.q.out
+++ b/ql/src/test/results/clientpositive/create_view_defaultformats.q.out
@@ -59,9 +59,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select * from src
-View Expanded Text: select `src`.`key`, `src`.`value` from `default`.`src`
-View Rewrite Enabled: No
+Original Query: select * from src
+Expanded Query: select `src`.`key`, `src`.`value` from `default`.`src`
PREHOOK: query: describe formatted rcsrc
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@rcsrc
@@ -91,9 +90,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select * from src
-View Expanded Text: select `src`.`key`, `src`.`value` from `default`.`src`
-View Rewrite Enabled: No
+Original Query: select * from src
+Expanded Query: select `src`.`key`, `src`.`value` from `default`.`src`
PREHOOK: query: select * from sfsrc where key = 100 limit 1
PREHOOK: type: QUERY
PREHOOK: Input: default@sfsrc
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/create_view_partitioned.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_view_partitioned.q.out b/ql/src/test/results/clientpositive/create_view_partitioned.q.out
index be1e19b..bd9cb3a 100644
--- a/ql/src/test/results/clientpositive/create_view_partitioned.q.out
+++ b/ql/src/test/results/clientpositive/create_view_partitioned.q.out
@@ -83,13 +83,12 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT key, value
+Original Query: SELECT key, value
FROM src
WHERE key=86
-View Expanded Text: SELECT `src`.`key`, `src`.`value`
+Expanded Query: SELECT `src`.`key`, `src`.`value`
FROM `default`.`src`
WHERE `src`.`key`=86
-View Rewrite Enabled: No
PREHOOK: query: SELECT * FROM vp1
PREHOOK: type: QUERY
PREHOOK: Input: default@src
@@ -283,9 +282,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT * FROM srcpart WHERE key < 10
-View Expanded Text: SELECT `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` FROM `default`.`srcpart` WHERE `srcpart`.`key` < 10
-View Rewrite Enabled: No
+Original Query: SELECT * FROM srcpart WHERE key < 10
+Expanded Query: SELECT `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` FROM `default`.`srcpart` WHERE `srcpart`.`key` < 10
PREHOOK: query: ALTER VIEW vp2 ADD PARTITION (hr='11') PARTITION (hr='12')
PREHOOK: type: ALTERTABLE_ADDPARTS
PREHOOK: Input: default@srcpart
@@ -399,13 +397,12 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: SELECT key, value
+Original Query: SELECT key, value
FROM src
WHERE key=86
-View Expanded Text: SELECT `key` AS `k`, `value` AS `v` FROM (SELECT `src`.`key`, `src`.`value`
+Expanded Query: SELECT `key` AS `k`, `value` AS `v` FROM (SELECT `src`.`key`, `src`.`value`
FROM `default`.`src`
WHERE `src`.`key`=86) `default.vp3`
-View Rewrite Enabled: No
PREHOOK: query: ALTER VIEW vp3
ADD PARTITION (v='val_86')
PREHOOK: type: ALTERTABLE_ADDPARTS
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/create_view_translate.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_view_translate.q.out b/ql/src/test/results/clientpositive/create_view_translate.q.out
index cb9e536..7a9863f 100644
--- a/ql/src/test/results/clientpositive/create_view_translate.q.out
+++ b/ql/src/test/results/clientpositive/create_view_translate.q.out
@@ -45,9 +45,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select cast(key as string) from src
-View Expanded Text: select `src`.`key` from `default`.`src`
-View Rewrite Enabled: No
+Original Query: select cast(key as string) from src
+Expanded Query: select `src`.`key` from `default`.`src`
PREHOOK: query: create view w as select key, value from (
select key, value from src
) a
@@ -93,13 +92,12 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select key, value from (
+Original Query: select key, value from (
select key, value from src
) a
-View Expanded Text: select `a`.`key`, `a`.`value` from (
+Expanded Query: select `a`.`key`, `a`.`value` from (
select `src`.`key`, `src`.`value` from `default`.`src`
) `a`
-View Rewrite Enabled: No
PREHOOK: query: drop view v_n7
PREHOOK: type: DROPVIEW
PREHOOK: Input: default@v_n7
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/dbtxnmgr_query5.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/dbtxnmgr_query5.q.out b/ql/src/test/results/clientpositive/dbtxnmgr_query5.q.out
index ea76a37..37ff3ec 100644
--- a/ql/src/test/results/clientpositive/dbtxnmgr_query5.q.out
+++ b/ql/src/test/results/clientpositive/dbtxnmgr_query5.q.out
@@ -43,7 +43,6 @@ POSTHOOK: query: show tables
POSTHOOK: type: SHOWTABLES
POSTHOOK: Input: database:foo
t1_n40
-v1_n3
PREHOOK: query: describe T1_n40
PREHOOK: type: DESCTABLE
PREHOOK: Input: foo@t1_n40
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/escape_comments.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/escape_comments.q.out b/ql/src/test/results/clientpositive/escape_comments.q.out
index 2eacf22..e29cfee 100644
--- a/ql/src/test/results/clientpositive/escape_comments.q.out
+++ b/ql/src/test/results/clientpositive/escape_comments.q.out
@@ -168,9 +168,8 @@ Bucket Columns: []
Sort Columns: []
# View Information
-View Original Text: select col1 from escape_comments_tbl1
-View Expanded Text: SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1`
-View Rewrite Enabled: No
+Original Query: select col1 from escape_comments_tbl1
+Expanded Query: SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1`
PREHOOK: query: drop database escape_comments_db cascade
PREHOOK: type: DROPDATABASE
PREHOOK: Input: database:escape_comments_db
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/llap/materialized_view_create.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_create.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_create.q.out
index 95f8966..36a3d8c 100644
--- a/ql/src/test/results/clientpositive/llap/materialized_view_create.q.out
+++ b/ql/src/test/results/clientpositive/llap/materialized_view_create.q.out
@@ -62,10 +62,11 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: select a, b, c from cmv_basetable_n4
-View Expanded Text: select `cmv_basetable_n4`.`a`, `cmv_basetable_n4`.`b`, `cmv_basetable_n4`.`c` from `default`.`cmv_basetable_n4`
-View Rewrite Enabled: No
+# Materialized View Information
+Original Query: select a, b, c from cmv_basetable_n4
+Expanded Query: select `cmv_basetable_n4`.`a`, `cmv_basetable_n4`.`b`, `cmv_basetable_n4`.`c` from `default`.`cmv_basetable_n4`
+Rewrite Enabled: No
+Outdated for Rewriting: Unknown
PREHOOK: query: select * from cmv_mat_view_n4
PREHOOK: type: QUERY
PREHOOK: Input: default@cmv_mat_view_n4
@@ -123,10 +124,11 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: select a, c from cmv_basetable_n4
-View Expanded Text: select `cmv_basetable_n4`.`a`, `cmv_basetable_n4`.`c` from `default`.`cmv_basetable_n4`
-View Rewrite Enabled: No
+# Materialized View Information
+Original Query: select a, c from cmv_basetable_n4
+Expanded Query: select `cmv_basetable_n4`.`a`, `cmv_basetable_n4`.`c` from `default`.`cmv_basetable_n4`
+Rewrite Enabled: No
+Outdated for Rewriting: Unknown
PREHOOK: query: select * from cmv_mat_view2_n1
PREHOOK: type: QUERY
PREHOOK: Input: default@cmv_mat_view2_n1
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_4.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_4.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_4.q.out
index 42bfa4b..fcd8466 100644
--- a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_4.q.out
+++ b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_4.q.out
@@ -284,16 +284,17 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: SELECT cmv_basetable_n5.a, cmv_basetable_2_n2.c, sum(cmv_basetable_2_n2.d)
+# Materialized View Information
+Original Query: SELECT cmv_basetable_n5.a, cmv_basetable_2_n2.c, sum(cmv_basetable_2_n2.d)
FROM cmv_basetable_n5 JOIN cmv_basetable_2_n2 ON (cmv_basetable_n5.a = cmv_basetable_2_n2.a)
WHERE cmv_basetable_2_n2.c > 10.0
GROUP BY cmv_basetable_n5.a, cmv_basetable_2_n2.c
-View Expanded Text: SELECT `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`, sum(`cmv_basetable_2_n2`.`d`)
+Expanded Query: SELECT `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`, sum(`cmv_basetable_2_n2`.`d`)
FROM `default`.`cmv_basetable_n5` JOIN `default`.`cmv_basetable_2_n2` ON (`cmv_basetable_n5`.`a` = `cmv_basetable_2_n2`.`a`)
WHERE `cmv_basetable_2_n2`.`c` > 10.0
GROUP BY `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`
-View Rewrite Enabled: No
+Rewrite Enabled: No
+Outdated for Rewriting: No
PREHOOK: query: EXPLAIN
SELECT cmv_basetable_n5.a, sum(cmv_basetable_2_n2.d)
FROM cmv_basetable_n5 join cmv_basetable_2_n2 ON (cmv_basetable_n5.a = cmv_basetable_2_n2.a)
@@ -513,16 +514,17 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: SELECT cmv_basetable_n5.a, cmv_basetable_2_n2.c, sum(cmv_basetable_2_n2.d)
+# Materialized View Information
+Original Query: SELECT cmv_basetable_n5.a, cmv_basetable_2_n2.c, sum(cmv_basetable_2_n2.d)
FROM cmv_basetable_n5 JOIN cmv_basetable_2_n2 ON (cmv_basetable_n5.a = cmv_basetable_2_n2.a)
WHERE cmv_basetable_2_n2.c > 10.0
GROUP BY cmv_basetable_n5.a, cmv_basetable_2_n2.c
-View Expanded Text: SELECT `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`, sum(`cmv_basetable_2_n2`.`d`)
+Expanded Query: SELECT `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`, sum(`cmv_basetable_2_n2`.`d`)
FROM `default`.`cmv_basetable_n5` JOIN `default`.`cmv_basetable_2_n2` ON (`cmv_basetable_n5`.`a` = `cmv_basetable_2_n2`.`a`)
WHERE `cmv_basetable_2_n2`.`c` > 10.0
GROUP BY `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`
-View Rewrite Enabled: Yes
+Rewrite Enabled: Yes
+Outdated for Rewriting: Yes
PREHOOK: query: EXPLAIN
SELECT cmv_basetable_n5.a, sum(cmv_basetable_2_n2.d)
FROM cmv_basetable_n5 join cmv_basetable_2_n2 ON (cmv_basetable_n5.a = cmv_basetable_2_n2.a)
@@ -964,16 +966,17 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: SELECT cmv_basetable_n5.a, cmv_basetable_2_n2.c, sum(cmv_basetable_2_n2.d)
+# Materialized View Information
+Original Query: SELECT cmv_basetable_n5.a, cmv_basetable_2_n2.c, sum(cmv_basetable_2_n2.d)
FROM cmv_basetable_n5 JOIN cmv_basetable_2_n2 ON (cmv_basetable_n5.a = cmv_basetable_2_n2.a)
WHERE cmv_basetable_2_n2.c > 10.0
GROUP BY cmv_basetable_n5.a, cmv_basetable_2_n2.c
-View Expanded Text: SELECT `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`, sum(`cmv_basetable_2_n2`.`d`)
+Expanded Query: SELECT `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`, sum(`cmv_basetable_2_n2`.`d`)
FROM `default`.`cmv_basetable_n5` JOIN `default`.`cmv_basetable_2_n2` ON (`cmv_basetable_n5`.`a` = `cmv_basetable_2_n2`.`a`)
WHERE `cmv_basetable_2_n2`.`c` > 10.0
GROUP BY `cmv_basetable_n5`.`a`, `cmv_basetable_2_n2`.`c`
-View Rewrite Enabled: Yes
+Rewrite Enabled: Yes
+Outdated for Rewriting: No
PREHOOK: query: EXPLAIN
SELECT cmv_basetable_n5.a, sum(cmv_basetable_2_n2.d)
FROM cmv_basetable_n5 join cmv_basetable_2_n2 ON (cmv_basetable_n5.a = cmv_basetable_2_n2.a)
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_5.q.out
----------------------------------------------------------------------
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 949f71b..5cb59ac 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
@@ -421,14 +421,15 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: SELECT cmv_basetable_n6.a, cmv_basetable_2_n3.c
+# Materialized View Information
+Original Query: 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
-View Expanded Text: SELECT `cmv_basetable_n6`.`a`, `cmv_basetable_2_n3`.`c`
+Expanded Query: SELECT `cmv_basetable_n6`.`a`, `cmv_basetable_2_n3`.`c`
FROM `default`.`cmv_basetable_n6` JOIN `default`.`cmv_basetable_2_n3` ON (`cmv_basetable_n6`.`a` = `cmv_basetable_2_n3`.`a`)
WHERE `cmv_basetable_2_n3`.`c` > 10.0
-View Rewrite Enabled: Yes
+Rewrite Enabled: Yes
+Outdated for Rewriting: No
PREHOOK: query: EXPLAIN
SELECT cmv_basetable_n6.a
FROM cmv_basetable_n6 join cmv_basetable_2_n3 ON (cmv_basetable_n6.a = cmv_basetable_2_n3.a)
http://git-wip-us.apache.org/repos/asf/hive/blob/3ce97c90/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_time_window.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_time_window.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_time_window.q.out
index 5b957bd..0601ea7 100644
--- a/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_time_window.q.out
+++ b/ql/src/test/results/clientpositive/llap/materialized_view_create_rewrite_time_window.q.out
@@ -269,16 +269,17 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: SELECT cmv_basetable_n3.a, cmv_basetable_2_n1.c
+# Materialized View Information
+Original Query: SELECT cmv_basetable_n3.a, cmv_basetable_2_n1.c
FROM cmv_basetable_n3 JOIN cmv_basetable_2_n1 ON (cmv_basetable_n3.a = cmv_basetable_2_n1.a)
WHERE cmv_basetable_2_n1.c > 10.0
GROUP BY cmv_basetable_n3.a, cmv_basetable_2_n1.c
-View Expanded Text: SELECT `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
+Expanded Query: SELECT `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
FROM `default`.`cmv_basetable_n3` JOIN `default`.`cmv_basetable_2_n1` ON (`cmv_basetable_n3`.`a` = `cmv_basetable_2_n1`.`a`)
WHERE `cmv_basetable_2_n1`.`c` > 10.0
GROUP BY `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
-View Rewrite Enabled: No
+Rewrite Enabled: No
+Outdated for Rewriting: No
PREHOOK: query: EXPLAIN
SELECT cmv_basetable_n3.a
FROM cmv_basetable_n3 join cmv_basetable_2_n1 ON (cmv_basetable_n3.a = cmv_basetable_2_n1.a)
@@ -493,16 +494,17 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: SELECT cmv_basetable_n3.a, cmv_basetable_2_n1.c
+# Materialized View Information
+Original Query: SELECT cmv_basetable_n3.a, cmv_basetable_2_n1.c
FROM cmv_basetable_n3 JOIN cmv_basetable_2_n1 ON (cmv_basetable_n3.a = cmv_basetable_2_n1.a)
WHERE cmv_basetable_2_n1.c > 10.0
GROUP BY cmv_basetable_n3.a, cmv_basetable_2_n1.c
-View Expanded Text: SELECT `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
+Expanded Query: SELECT `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
FROM `default`.`cmv_basetable_n3` JOIN `default`.`cmv_basetable_2_n1` ON (`cmv_basetable_n3`.`a` = `cmv_basetable_2_n1`.`a`)
WHERE `cmv_basetable_2_n1`.`c` > 10.0
GROUP BY `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
-View Rewrite Enabled: Yes
+Rewrite Enabled: Yes
+Outdated for Rewriting: No
PREHOOK: query: EXPLAIN
SELECT cmv_basetable_n3.a
FROM cmv_basetable_n3 join cmv_basetable_2_n1 ON (cmv_basetable_n3.a = cmv_basetable_2_n1.a)
@@ -799,16 +801,17 @@ Num Buckets: -1
Bucket Columns: []
Sort Columns: []
-# View Information
-View Original Text: SELECT cmv_basetable_n3.a, cmv_basetable_2_n1.c
+# Materialized View Information
+Original Query: SELECT cmv_basetable_n3.a, cmv_basetable_2_n1.c
FROM cmv_basetable_n3 JOIN cmv_basetable_2_n1 ON (cmv_basetable_n3.a = cmv_basetable_2_n1.a)
WHERE cmv_basetable_2_n1.c > 10.0
GROUP BY cmv_basetable_n3.a, cmv_basetable_2_n1.c
-View Expanded Text: SELECT `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
+Expanded Query: SELECT `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
FROM `default`.`cmv_basetable_n3` JOIN `default`.`cmv_basetable_2_n1` ON (`cmv_basetable_n3`.`a` = `cmv_basetable_2_n1`.`a`)
WHERE `cmv_basetable_2_n1`.`c` > 10.0
GROUP BY `cmv_basetable_n3`.`a`, `cmv_basetable_2_n1`.`c`
-View Rewrite Enabled: Yes
+Rewrite Enabled: Yes
+Outdated for Rewriting: No
PREHOOK: query: EXPLAIN
SELECT cmv_basetable_n3.a
FROM cmv_basetable_n3 join cmv_basetable_2_n1 ON (cmv_basetable_n3.a = cmv_basetable_2_n1.a)