Krisztian Kasa created HIVE-24822:
-------------------------------------
Summary: Materialized View rebuild loses materializationTime
property value
Key: HIVE-24822
URL: https://issues.apache.org/jira/browse/HIVE-24822
Project: Hive
Issue Type: Bug
Reporter: Krisztian Kasa
Assignee: Krisztian Kasa
Materialized View rebuild like
{code}
alter materialized view mat1 rebuild;
{code}
updates the CreationMetadata of a org.apache.hadoop.hive.ql.metadata.Table
object of the materialized view but it does not copy the materializationTime
property value from the original CreationMetadata object and updates the entry
in the MaterializedViewCache:
{code}
} else if (desc.isUpdateCreationMetadata()) {
// We need to update the status of the creation signature
Table mvTable = context.getDb().getTable(desc.getName());
CreationMetadata cm = new
CreationMetadata(MetaStoreUtils.getDefaultCatalog(context.getConf()),
mvTable.getDbName(), mvTable.getTableName(),
ImmutableSet.copyOf(mvTable.getCreationMetadata().getTablesUsed()));
cm.setValidTxnList(context.getConf().get(ValidTxnWriteIdList.VALID_TABLES_WRITEIDS_KEY));
context.getDb().updateCreationMetadata(mvTable.getDbName(),
mvTable.getTableName(), cm);
mvTable.setCreationMetadata(cm);
HiveMaterializedViewsRegistry.get().createMaterializedView(context.getDb().getConf(),
mvTable);
}
{code}
Later when loading Materializetions using
{code}
Hive.getValidMaterializedViews(List<Table> materializedViewTables ...)
{code}
the materialization stored in the cache and in the metastore will be not the
same because of the lost materializationTime.
Cache tried to be refreshed
{code}
HiveMaterializedViewsRegistry.get().refreshMaterializedView(conf, null,
materializedViewTable);
{code}
by passing null as oldMaterializedViewTable which leads to NullPointerException
and CBO failure because the registry expect a non null oldMaterializedViewTable
value:
It may drops the old MV in Metastore and also tries to update the cache.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)