You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2018/01/25 22:10:31 UTC
hive git commit: HIVE-18519 : do not create materialized CTEs with
ACID/MM (Sergey Shelukhin, reviewed by Eugene Koifman)
Repository: hive
Updated Branches:
refs/heads/master a4bad8b3c -> 948684a7e
HIVE-18519 : do not create materialized CTEs with ACID/MM (Sergey Shelukhin, reviewed by Eugene Koifman)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/948684a7
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/948684a7
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/948684a7
Branch: refs/heads/master
Commit: 948684a7e18e95bc9a1a990fd58cb7e790570749
Parents: a4bad8b
Author: sergey <se...@apache.org>
Authored: Thu Jan 25 14:04:40 2018 -0800
Committer: sergey <se...@apache.org>
Committed: Thu Jan 25 14:04:40 2018 -0800
----------------------------------------------------------------------
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/948684a7/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 28e1041..83dfb47 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -268,6 +268,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
public static final String VALUES_TMP_TABLE_NAME_PREFIX = "Values__Tmp__Table__";
+ /** Marks the temporary table created for a serialized CTE. The table is scoped to the query. */
static final String MATERIALIZATION_MARKER = "$MATERIALIZATION";
private HashMap<TableScanOperator, ExprNodeDesc> opToPartPruner;
@@ -12059,7 +12060,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
*/
private Map<String, String> addDefaultProperties(
Map<String, String> tblProp, boolean isExt, StorageFormat storageFormat,
- String qualifiedTableName, List<Order> sortCols) {
+ String qualifiedTableName, List<Order> sortCols, boolean isMaterialization) {
Map<String, String> retValue;
if (tblProp == null) {
retValue = new HashMap<String, String>();
@@ -12083,15 +12084,15 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
HiveConf.getBoolVar(conf, ConfVars.HIVE_SUPPORT_CONCURRENCY) &&
DbTxnManager.class.getCanonicalName().equals(HiveConf.getVar(conf, ConfVars.HIVE_TXN_MANAGER));
if ((makeInsertOnly || makeAcid)
- && !isExt && StringUtils.isBlank(storageFormat.getStorageHandler())
+ && !isExt && !isMaterialization && StringUtils.isBlank(storageFormat.getStorageHandler())
//don't overwrite user choice if transactional attribute is explicitly set
&& !retValue.containsKey(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL)) {
- if(makeInsertOnly) {
+ if (makeInsertOnly) {
retValue.put(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL, "true");
retValue.put(hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES,
TransactionalValidationListener.INSERTONLY_TRANSACTIONAL_PROPERTY);
}
- if(makeAcid) {
+ if (makeAcid) {
/*for CTAS, TransactionalValidationListener.makeAcid() runs to late to make table Acid
so the initial write ends up running as non-acid...*/
try {
@@ -12341,7 +12342,8 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
switch (command_type) {
case CREATE_TABLE: // REGULAR CREATE TABLE DDL
- tblProps = addDefaultProperties(tblProps, isExt, storageFormat, dbDotTab, sortCols);
+ tblProps = addDefaultProperties(
+ tblProps, isExt, storageFormat, dbDotTab, sortCols, isMaterialization);
CreateTableDesc crtTblDesc = new CreateTableDesc(dbDotTab, isExt, isTemporary, cols, partCols,
bucketCols, sortCols, numBuckets, rowFormatParams.fieldDelim,
@@ -12362,7 +12364,8 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
break;
case CTLT: // create table like <tbl_name>
- tblProps = addDefaultProperties(tblProps, isExt, storageFormat, dbDotTab, sortCols);
+ tblProps = addDefaultProperties(
+ tblProps, isExt, storageFormat, dbDotTab, sortCols, isMaterialization);
if (isTemporary) {
Table likeTable = getTable(likeTableName, false);
@@ -12439,7 +12442,8 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
}
}
- tblProps = addDefaultProperties(tblProps, isExt, storageFormat, dbDotTab, sortCols);
+ tblProps = addDefaultProperties(
+ tblProps, isExt, storageFormat, dbDotTab, sortCols, isMaterialization);
tableDesc = new CreateTableDesc(qualifiedTabName[0], dbDotTab, isExt, isTemporary, cols,
partCols, bucketCols, sortCols, numBuckets, rowFormatParams.fieldDelim,
rowFormatParams.fieldEscape, rowFormatParams.collItemDelim, rowFormatParams.mapKeyDelim,