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 c7fdd45 HIVE-25652: Add constraints in result of “SHOW CREATE TABLE ”
(Soumyakanti Das, reviewed by Krisztian Kasa)
c7fdd45 is described below
commit c7fdd459305f4bf6913dc4bed7e8df8c7bf9e458
Author: Soumyakanti Das <[email protected]>
AuthorDate: Sun Dec 5 23:23:46 2021 -0800
HIVE-25652: Add constraints in result of “SHOW CREATE TABLE ” (Soumyakanti
Das, reviewed by Krisztian Kasa)
---
.../create/show/ShowCreateTableOperation.java | 24 +-
.../desc/formatter/JsonDescTableFormatter.java | 12 +-
.../desc/formatter/TextDescTableFormatter.java | 28 +-
.../apache/hadoop/hive/ql/exec/DDLPlanUtils.java | 333 +++++++++++----------
.../apache/hadoop/hive/ql/exec/ExplainTask.java | 3 +-
.../hadoop/hive/ql/metadata/CheckConstraint.java | 56 +++-
.../hadoop/hive/ql/metadata/DefaultConstraint.java | 19 +-
.../hadoop/hive/ql/metadata/ForeignKeyInfo.java | 17 +-
.../org/apache/hadoop/hive/ql/metadata/Hive.java | 12 +-
.../hadoop/hive/ql/metadata/NotNullConstraint.java | 16 +-
.../hadoop/hive/ql/metadata/PrimaryKeyInfo.java | 46 ++-
.../hive/ql/metadata/TableConstraintsInfo.java | 12 +-
.../hadoop/hive/ql/metadata/UniqueConstraint.java | 17 +-
.../queries/clientpositive/show_create_table.q | 44 +++
.../llap/constraints_explain_ddl.q.out | 172 +++++------
.../clientpositive/llap/show_create_table.q.out | 163 ++++++++++
16 files changed, 663 insertions(+), 311 deletions(-)
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java
index 4788b65..456ba0b 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java
@@ -22,6 +22,13 @@ package org.apache.hadoop.hive.ql.ddl.table.create.show;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.ql.ddl.DDLOperation;
import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
@@ -45,9 +52,20 @@ public class ShowCreateTableOperation extends
DDLOperation<ShowCreateTableDesc>
try (DataOutputStream outStream = ShowUtils.getOutputStream(new
Path(desc.getResFile()), context)) {
Table table = context.getDb().getTable(desc.getDatabaseName(),
desc.getTableName());
DDLPlanUtils ddlObj = new DDLPlanUtils();
- String command = table.isView() ? ddlObj.getCreateViewCommand(table,
desc.isRelative())
- : ddlObj.getCreateTableCommand(table, desc.isRelative());
-
+ String command;
+ if (table.isView()) {
+ command = ddlObj.getCreateViewCommand(table, desc.isRelative());
+ } else {
+ List<String> commands = new ArrayList<>();
+ commands.add(ddlObj.getCreateTableCommand(table, desc.isRelative()));
+ String primaryKeyStmt =
ddlObj.getAlterTableStmtPrimaryKeyConstraint(table.getPrimaryKeyInfo());
+ if (primaryKeyStmt != null) {
+ commands.add(primaryKeyStmt);
+ }
+ commands.addAll(ddlObj.populateConstraints(table,
+ new HashSet<>(Collections.singletonList(table.getTableName()))));
+ command = String.join("\n", commands);
+ }
outStream.write(command.getBytes(StandardCharsets.UTF_8));
return 0;
} catch (IOException e) {
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/JsonDescTableFormatter.java
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/JsonDescTableFormatter.java
index 3318463..1444eb2 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/JsonDescTableFormatter.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/JsonDescTableFormatter.java
@@ -258,22 +258,22 @@ public class JsonDescTableFormatter extends
DescTableFormatter {
}).collect(Collectors.toList()));
}
}
- if (PrimaryKeyInfo.isPrimaryKeyInfoNotEmpty(table.getPrimaryKeyInfo())) {
+ if (PrimaryKeyInfo.isNotEmpty(table.getPrimaryKeyInfo())) {
builder.put("primaryKeyInfo", table.getPrimaryKeyInfo());
}
- if (ForeignKeyInfo.isForeignKeyInfoNotEmpty(table.getForeignKeyInfo())) {
+ if (ForeignKeyInfo.isNotEmpty(table.getForeignKeyInfo())) {
builder.put("foreignKeyInfo", table.getForeignKeyInfo());
}
- if (UniqueConstraint.isUniqueConstraintNotEmpty(table.getUniqueKeyInfo()))
{
+ if (UniqueConstraint.isNotEmpty(table.getUniqueKeyInfo())) {
builder.put("uniqueConstraintInfo", table.getUniqueKeyInfo());
}
- if
(NotNullConstraint.isNotNullConstraintNotEmpty(table.getNotNullConstraint())) {
+ if (NotNullConstraint.isNotEmpty(table.getNotNullConstraint())) {
builder.put("notNullConstraintInfo", table.getNotNullConstraint());
}
- if
(DefaultConstraint.isCheckConstraintNotEmpty(table.getDefaultConstraint())) {
+ if (DefaultConstraint.isNotEmpty(table.getDefaultConstraint())) {
builder.put("defaultConstraintInfo", table.getDefaultConstraint());
}
- if (CheckConstraint.isCheckConstraintNotEmpty(table.getCheckConstraint()))
{
+ if (CheckConstraint.isNotEmpty(table.getCheckConstraint())) {
builder.put("checkConstraintInfo", table.getCheckConstraint());
}
if (table.getStorageHandlerInfo() != null) {
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/TextDescTableFormatter.java
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/TextDescTableFormatter.java
index 1976849..a0d0ee8 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/TextDescTableFormatter.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/formatter/TextDescTableFormatter.java
@@ -389,27 +389,27 @@ class TextDescTableFormatter extends DescTableFormatter {
StringBuilder constraintsInfo = new
StringBuilder(DEFAULT_STRINGBUILDER_SIZE);
constraintsInfo.append(LINE_DELIM).append("#
Constraints").append(LINE_DELIM);
- if (PrimaryKeyInfo.isPrimaryKeyInfoNotEmpty(table.getPrimaryKeyInfo())) {
+ if (PrimaryKeyInfo.isNotEmpty(table.getPrimaryKeyInfo())) {
constraintsInfo.append(LINE_DELIM).append("# Primary
Key").append(LINE_DELIM);
getPrimaryKeyInformation(constraintsInfo, table.getPrimaryKeyInfo());
}
- if (ForeignKeyInfo.isForeignKeyInfoNotEmpty(table.getForeignKeyInfo())) {
+ if (ForeignKeyInfo.isNotEmpty(table.getForeignKeyInfo())) {
constraintsInfo.append(LINE_DELIM).append("# Foreign
Keys").append(LINE_DELIM);
getForeignKeysInformation(constraintsInfo, table.getForeignKeyInfo());
}
- if (UniqueConstraint.isUniqueConstraintNotEmpty(table.getUniqueKeyInfo()))
{
+ if (UniqueConstraint.isNotEmpty(table.getUniqueKeyInfo())) {
constraintsInfo.append(LINE_DELIM).append("# Unique
Constraints").append(LINE_DELIM);
getUniqueConstraintsInformation(constraintsInfo,
table.getUniqueKeyInfo());
}
- if
(NotNullConstraint.isNotNullConstraintNotEmpty(table.getNotNullConstraint())) {
+ if (NotNullConstraint.isNotEmpty(table.getNotNullConstraint())) {
constraintsInfo.append(LINE_DELIM).append("# Not Null
Constraints").append(LINE_DELIM);
getNotNullConstraintsInformation(constraintsInfo,
table.getNotNullConstraint());
}
- if
(DefaultConstraint.isCheckConstraintNotEmpty(table.getDefaultConstraint())) {
+ if (DefaultConstraint.isNotEmpty(table.getDefaultConstraint())) {
constraintsInfo.append(LINE_DELIM).append("# Default
Constraints").append(LINE_DELIM);
getDefaultConstraintsInformation(constraintsInfo,
table.getDefaultConstraint());
}
- if (CheckConstraint.isCheckConstraintNotEmpty(table.getCheckConstraint()))
{
+ if (CheckConstraint.isNotEmpty(table.getCheckConstraint())) {
constraintsInfo.append(LINE_DELIM).append("# Check
Constraints").append(LINE_DELIM);
getCheckConstraintsInformation(constraintsInfo,
table.getCheckConstraint());
}
@@ -529,8 +529,8 @@ class TextDescTableFormatter extends DescTableFormatter {
if (CollectionUtils.isNotEmpty(columns)) {
for (CheckConstraintCol column : columns) {
String[] fields = new String[2];
- fields[0] = "Column Name:" + column.colName;
- fields[1] = "Check Value:" + column.checkExpression;
+ fields[0] = "Column Name:" + column.getColName();
+ fields[1] = "Check Value:" + column.getCheckExpression();
formatOutput(fields, constraintsInfo);
}
}
@@ -559,27 +559,27 @@ class TextDescTableFormatter extends DescTableFormatter {
if (table.getTableConstraintsInfo().isTableConstraintsInfoNotEmpty()) {
out.write(("Constraints").getBytes(StandardCharsets.UTF_8));
out.write(Utilities.tabCode);
- if (PrimaryKeyInfo.isPrimaryKeyInfoNotEmpty(table.getPrimaryKeyInfo())) {
+ if (PrimaryKeyInfo.isNotEmpty(table.getPrimaryKeyInfo())) {
out.write(table.getPrimaryKeyInfo().toString().getBytes(StandardCharsets.UTF_8));
out.write(Utilities.newLineCode);
}
- if (ForeignKeyInfo.isForeignKeyInfoNotEmpty(table.getForeignKeyInfo())) {
+ if (ForeignKeyInfo.isNotEmpty(table.getForeignKeyInfo())) {
out.write(table.getForeignKeyInfo().toString().getBytes(StandardCharsets.UTF_8));
out.write(Utilities.newLineCode);
}
- if
(UniqueConstraint.isUniqueConstraintNotEmpty(table.getUniqueKeyInfo())) {
+ if (UniqueConstraint.isNotEmpty(table.getUniqueKeyInfo())) {
out.write(table.getUniqueKeyInfo().toString().getBytes(StandardCharsets.UTF_8));
out.write(Utilities.newLineCode);
}
- if
(NotNullConstraint.isNotNullConstraintNotEmpty(table.getNotNullConstraint())) {
+ if (NotNullConstraint.isNotEmpty(table.getNotNullConstraint())) {
out.write(table.getNotNullConstraint().toString().getBytes(StandardCharsets.UTF_8));
out.write(Utilities.newLineCode);
}
- if
(DefaultConstraint.isCheckConstraintNotEmpty(table.getDefaultConstraint())) {
+ if (DefaultConstraint.isNotEmpty(table.getDefaultConstraint())) {
out.write(table.getDefaultConstraint().toString().getBytes(StandardCharsets.UTF_8));
out.write(Utilities.newLineCode);
}
- if
(CheckConstraint.isCheckConstraintNotEmpty(table.getCheckConstraint())) {
+ if (CheckConstraint.isNotEmpty(table.getCheckConstraint())) {
out.write(table.getCheckConstraint().toString().getBytes(StandardCharsets.UTF_8));
out.write(Utilities.newLineCode);
}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLPlanUtils.java
b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLPlanUtils.java
index 7a7d2a5..bbd342a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLPlanUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLPlanUtils.java
@@ -52,6 +52,7 @@ import
org.apache.hadoop.hive.ql.metadata.DefaultConstraint.DefaultConstraintCol
import org.apache.hadoop.hive.ql.metadata.ForeignKeyInfo;
import org.apache.hadoop.hive.ql.metadata.Hive;
import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.metadata.HiveUtils;
import org.apache.hadoop.hive.ql.metadata.NotNullConstraint;
import org.apache.hadoop.hive.ql.metadata.Partition;
import org.apache.hadoop.hive.ql.metadata.PrimaryKeyInfo;
@@ -75,7 +76,6 @@ import java.util.Base64;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -115,6 +115,9 @@ public class DDLPlanUtils {
private static final String COL_TYPE = "COL_TYPE";
private static final String SQL = "SQL";
private static final String COMMENT_SQL = "COMMENT_SQL";
+ private static final String ENABLE = "ENABLE";
+ private static final String RELY = "RELY";
+ private static final String VALIDATE = "VALIDATE";
private static final String HIVE_DEFAULT_PARTITION =
"__HIVE_DEFAULT_PARTITION__";
private static final String BASE_64_VALUE = "BASE_64";
private static final String numNulls = "'numNulls'='";
@@ -131,89 +134,94 @@ public class DDLPlanUtils {
private static final String CREATE_DATABASE_STMT = "CREATE DATABASE IF NOT
EXISTS <" + DATABASE_NAME + ">;";
private final String CREATE_TABLE_TEMPLATE =
- "CREATE <" + TEMPORARY + "><" + EXTERNAL + ">TABLE <if(" + DATABASE_NAME
+ ")>`<" + DATABASE_NAME + ">`.<endif>"
- + "`<" + TABLE_NAME + ">`(\n" +
- "<" + LIST_COLUMNS + ">)\n" +
- "<" + COMMENT + ">\n" +
- "<" + PARTITIONS + ">\n" +
- "<" + PARTITIONS_BY_SPEC + ">\n" +
- "<" + BUCKETS + ">\n" +
- "<" + SKEWED + ">\n" +
- "<" + ROW_FORMAT + ">\n" +
- "<" + LOCATION_BLOCK + ">" +
- "TBLPROPERTIES (\n" +
- "<" + PROPERTIES + ">)";
+ "CREATE <" + TEMPORARY + "><" + EXTERNAL + ">TABLE <if(" + DATABASE_NAME +
")>`<" + DATABASE_NAME + ">`.<endif>"
+ + "`<" + TABLE_NAME + ">`(\n" +
+ "<" + LIST_COLUMNS + ">)\n" +
+ "<" + COMMENT + ">\n" +
+ "<" + PARTITIONS + ">\n" +
+ "<" + PARTITIONS_BY_SPEC + ">\n" +
+ "<" + BUCKETS + ">\n" +
+ "<" + SKEWED + ">\n" +
+ "<" + ROW_FORMAT + ">\n" +
+ "<" + LOCATION_BLOCK + ">" +
+ "TBLPROPERTIES (\n" +
+ "<" + PROPERTIES + ">)";
private static final String CREATE_VIEW_TEMPLATE =
- "CREATE VIEW <if(" + DATABASE_NAME + ")>`<" + DATABASE_NAME +
">`.<endif>`<" + TABLE_NAME +
- ">`<" + PARTITIONS + "> AS <" + SQL +">";
+ "CREATE VIEW <if(" + DATABASE_NAME + ")>`<" + DATABASE_NAME +
">`.<endif>`<" + TABLE_NAME +
+ ">`<" + PARTITIONS + "> AS <" + SQL + ">";
private final String CREATE_TABLE_TEMPLATE_LOCATION = "LOCATION\n" +
- "<" + LOCATION + ">\n";
+ "<" + LOCATION + ">\n";
private final Set<String> PROPERTIES_TO_IGNORE_AT_TBLPROPERTIES = Sets.union(
- ImmutableSet.of("TEMPORARY", "EXTERNAL", "comment",
"SORTBUCKETCOLSPREFIX", META_TABLE_STORAGE, TABLE_IS_CTAS, CTAS_LEGACY_CONFIG),
- new HashSet<String>(StatsSetupConst.TABLE_PARAMS_STATS_KEYS));
+ ImmutableSet.of("TEMPORARY", "EXTERNAL", "comment",
"SORTBUCKETCOLSPREFIX", META_TABLE_STORAGE, TABLE_IS_CTAS, CTAS_LEGACY_CONFIG),
+ new HashSet<String>(StatsSetupConst.TABLE_PARAMS_STATS_KEYS));
private final String ALTER_TABLE_CREATE_PARTITION = "<if(" + COMMENT_SQL +
")><" + COMMENT_SQL + "> <endif>" + "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME +
- "> ADD IF NOT EXISTS PARTITION (<" + PARTITION +
- ">);";
+ + DATABASE_NAME + ">.<" + TABLE_NAME +
+ "> ADD IF NOT EXISTS PARTITION (<" + PARTITION +
+ ">);";
private final String ALTER_TABLE_UPDATE_STATISTICS_TABLE_COLUMN = "ALTER
TABLE <"
- + DATABASE_NAME + ">.<" +
- TABLE_NAME + "> UPDATE STATISTICS FOR COLUMN <"
- + COLUMN_NAME + "> SET(<" + TBLPROPERTIES + "> );";
+ + DATABASE_NAME + ">.<" +
+ TABLE_NAME + "> UPDATE STATISTICS FOR COLUMN <"
+ + COLUMN_NAME + "> SET(<" + TBLPROPERTIES + "> );";
- private final String ALTER_TABLE_UPDATE_STATISTICS_PARTITION_COLUMN = "<if("
+ COMMENT_SQL + ")><" + COMMENT_SQL + "> <endif>" + "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME +
- "> PARTITION (<" + PARTITION_NAME +
- ">) UPDATE STATISTICS FOR COLUMN <"
- + COLUMN_NAME + "> SET(<" + TBLPROPERTIES + "> );";
+ private final String ALTER_TABLE_UPDATE_STATISTICS_PARTITION_COLUMN =
+ "<if(" + COMMENT_SQL + ")><" + COMMENT_SQL + "> <endif>" + "ALTER TABLE <"
+ + DATABASE_NAME + ">.<" + TABLE_NAME +
+ "> PARTITION (<" + PARTITION_NAME +
+ ">) UPDATE STATISTICS FOR COLUMN <"
+ + COLUMN_NAME + "> SET(<" + TBLPROPERTIES + "> );";
private final String ALTER_TABLE_UPDATE_STATISTICS_TABLE_BASIC = "ALTER
TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME +
- "> UPDATE STATISTICS SET(<" + TBLPROPERTIES + "> );";
+ + DATABASE_NAME + ">.<" + TABLE_NAME +
+ "> UPDATE STATISTICS SET(<" + TBLPROPERTIES + "> );";
- private final String ALTER_TABLE_UPDATE_STATISTICS_PARTITION_BASIC = "<if("
+ COMMENT_SQL + ")><" + COMMENT_SQL + "> <endif>" + "ALTER TABLE <"
+ private final String ALTER_TABLE_UPDATE_STATISTICS_PARTITION_BASIC =
+ "<if(" + COMMENT_SQL + ")><" + COMMENT_SQL + "> <endif>" + "ALTER TABLE <"
+ DATABASE_NAME + ">.<" + TABLE_NAME + "> PARTITION (<" +
PARTITION_NAME + ">) UPDATE STATISTICS SET(<" + TBLPROPERTIES + "> );";
private final String ALTER_TABLE_ADD_PRIMARY_KEY = "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME + "> ADD CONSTRAINT <" +
- CONSTRAINT_NAME + "> PRIMARY KEY (<" + COL_NAMES + ">) DISABLE
NOVALIDATE;";
+ + DATABASE_NAME + ">.<" + TABLE_NAME + "> ADD CONSTRAINT <" +
+ CONSTRAINT_NAME + "> PRIMARY KEY (<" + COL_NAMES + ">) <" + ENABLE + "> <"
+ VALIDATE + "> <" + RELY + ">;";
private final String ALTER_TABLE_ADD_FOREIGN_KEY = "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + CHILD_TABLE_NAME + "> ADD CONSTRAINT <"
- + CONSTRAINT_NAME + "> FOREIGN KEY (<" + CHILD_COL_NAME + ">) REFERENCES
<"
- + DATABASE_NAME_FR + ">.<" + PARENT_TABLE_NAME + ">(<" + PARENT_COL_NAME
+ ">) DISABLE NOVALIDATE RELY;";
+ + DATABASE_NAME + ">.<" + CHILD_TABLE_NAME + "> ADD CONSTRAINT <"
+ + CONSTRAINT_NAME + "> FOREIGN KEY (<" + CHILD_COL_NAME + ">) REFERENCES <"
+ + DATABASE_NAME_FR + ">.<" + PARENT_TABLE_NAME + ">(<" + PARENT_COL_NAME +
">) <"
+ + ENABLE + "> <" + VALIDATE + "> <" + RELY + ">;";
private final String ALTER_TABLE_ADD_UNIQUE_CONSTRAINT = "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME + "> ADD CONSTRAINT <" +
- CONSTRAINT_NAME + "> UNIQUE (<" + COLUMN_NAME + ">) DISABLE NOVALIDATE;";
+ + DATABASE_NAME + ">.<" + TABLE_NAME + "> ADD CONSTRAINT <" +
+ CONSTRAINT_NAME + "> UNIQUE (<" + COLUMN_NAME + ">) <" + ENABLE + "> <" +
VALIDATE + "> <" + RELY + ">;";
private final String ALTER_TABLE_ADD_CHECK_CONSTRAINT = "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME +
- "> ADD CONSTRAINT <" + CONSTRAINT_NAME + "> CHECK (<" +
- CHECK_EXPRESSION + ">) DISABLE;";
+ + DATABASE_NAME + ">.<" + TABLE_NAME +
+ "> ADD CONSTRAINT <" + CONSTRAINT_NAME + "> CHECK (<" +
+ CHECK_EXPRESSION + ">) <" + ENABLE + "> <" + VALIDATE + "> <" + RELY +
">;";
private final String ALTER_TABLE_ADD_NOT_NULL_CONSTRAINT = "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME + "> CHANGE COLUMN < "
- + COLUMN_NAME + "> <" + COLUMN_NAME +
- "> <" + COL_TYPE + "> CONSTRAINT <" + CONSTRAINT_NAME + "> NOT NULL
DISABLE;";
+ + DATABASE_NAME + ">.<" + TABLE_NAME + "> CHANGE COLUMN < "
+ + COLUMN_NAME + "> <" + COLUMN_NAME +
+ "> <" + COL_TYPE + "> CONSTRAINT <" + CONSTRAINT_NAME + "> NOT NULL <" +
ENABLE + "> <" + VALIDATE
+ + "> <" + RELY + ">;";
private final String ALTER_TABLE_ADD_DEFAULT_CONSTRAINT = "ALTER TABLE <"
- + DATABASE_NAME + ">.<" + TABLE_NAME + "> CHANGE COLUMN < "
- + COLUMN_NAME + "> <" + COLUMN_NAME +
- "> <" + COL_TYPE + "> CONSTRAINT <" + CONSTRAINT_NAME + "> DEFAULT <" +
DEFAULT_VALUE + "> DISABLE;";
+ + DATABASE_NAME + ">.<" + TABLE_NAME + "> CHANGE COLUMN < "
+ + COLUMN_NAME + "> <" + COLUMN_NAME +
+ "> <" + COL_TYPE + "> CONSTRAINT <" + CONSTRAINT_NAME + "> DEFAULT <" +
DEFAULT_VALUE + "> <"
+ + ENABLE + "> <" + VALIDATE + "> <" + RELY + ">;";
private final String EXIST_BIT_VECTORS = "-- BIT VECTORS PRESENT FOR <" +
DATABASE_NAME + ">.<" + TABLE_NAME + "> " +
- "FOR COLUMN <" + COLUMN_NAME + "> BUT THEY ARE NOT SUPPORTED YET. THE
BASE64 VALUE FOR THE BITVECTOR IS <" +
- BASE_64_VALUE +"> ";
+ "FOR COLUMN <" + COLUMN_NAME + "> BUT THEY ARE NOT SUPPORTED YET. THE
BASE64 VALUE FOR THE BITVECTOR IS <" +
+ BASE_64_VALUE + "> ";
private final String EXIST_BIT_VECTORS_PARTITIONED = "-- BIT VECTORS PRESENT
FOR <" + DATABASE_NAME + ">.<" +
- TABLE_NAME + "> PARTITION <" + PARTITION_NAME + "> FOR COLUMN <"
- + COLUMN_NAME + "> BUT THEY ARE NOT SUPPORTED YET.THE BASE64 VALUE FOR
THE BITVECTOR IS <" +
- BASE_64_VALUE +"> ";
+ TABLE_NAME + "> PARTITION <" + PARTITION_NAME + "> FOR COLUMN <"
+ + COLUMN_NAME + "> BUT THEY ARE NOT SUPPORTED YET.THE BASE64 VALUE FOR THE
BITVECTOR IS <" +
+ BASE_64_VALUE + "> ";
/**
* Returns the create database query for a give database name.
@@ -263,11 +271,10 @@ public class DDLPlanUtils {
return StringUtils.join(ptParam, ",");
}
- public boolean checkIfDefaultPartition(String pt){
- if(pt.contains(HIVE_DEFAULT_PARTITION)){
+ public boolean checkIfDefaultPartition(String pt) {
+ if (pt.contains(HIVE_DEFAULT_PARTITION)) {
return true;
- }
- else {
+ } else {
return false;
}
}
@@ -286,7 +293,7 @@ public class DDLPlanUtils {
command.add(DATABASE_NAME, tb.getDbName());
command.add(TABLE_NAME, tb.getTableName());
command.add(PARTITION, getPartitionActualName(pt));
- if(checkIfDefaultPartition(pt.getName())){
+ if (checkIfDefaultPartition(pt.getName())) {
command.add(COMMENT_SQL, "--");
}
return command.render();
@@ -366,11 +373,11 @@ public class DDLPlanUtils {
return;
}
DecimalColumnStatsData dc = cd.getDecimalStats();
- if(dc.isSetHighValue()) {
+ if (dc.isSetHighValue()) {
byte[] highValArr =
setByteArrayToLongSize(dc.getHighValue().getUnscaled());
ls.add(highValue + ByteBuffer.wrap(highValArr).getLong() + "E" +
dc.getHighValue().getScale() + "'");
}
- if(dc.isSetLowValue()) {
+ if (dc.isSetLowValue()) {
byte[] lowValArr =
setByteArrayToLongSize(dc.getLowValue().getUnscaled());
ls.add(lowValue + ByteBuffer.wrap(lowValArr).getLong() + "E" +
dc.getLowValue().getScale() + "'");
}
@@ -414,7 +421,7 @@ public class DDLPlanUtils {
return null;
}
- public String addAllColStats(ColumnStatisticsData columnStatisticsData){
+ public String addAllColStats(ColumnStatisticsData columnStatisticsData) {
List<String> temp = new ArrayList<>();
addBinaryStats(columnStatisticsData, temp);
addLongStats(columnStatisticsData, temp);
@@ -451,18 +458,18 @@ public class DDLPlanUtils {
* @param tbl
*/
public List<String> getAlterTableStmtTableStatsColsAll(Table tbl)
- throws HiveException {
+ throws HiveException {
List<String> alterTblStmt = new ArrayList<String>();
List<String> accessedColumns = getTableColumnNames(tbl);
List<ColumnStatisticsObj> tableColumnStatistics =
Hive.get().getTableColumnStatistics(tbl.getDbName(),
- tbl.getTableName(),
- accessedColumns,
- true);
+ tbl.getTableName(),
+ accessedColumns,
+ true);
ColumnStatisticsObj[] columnStatisticsObj =
tableColumnStatistics.toArray(new ColumnStatisticsObj[0]);
for (int i = 0; i < columnStatisticsObj.length; i++) {
alterTblStmt.add(getAlterTableStmtCol(columnStatisticsObj[i].getStatsData(),
- columnStatisticsObj[i].getColName(),
- tbl.getTableName(), tbl.getDbName()));
+ columnStatisticsObj[i].getColName(),
+ tbl.getTableName(), tbl.getDbName()));
String base64 = checkBitVectors(columnStatisticsObj[i].getStatsData());
if (base64 != null) {
ST command = new ST(EXIST_BIT_VECTORS);
@@ -487,14 +494,14 @@ public class DDLPlanUtils {
* @return
*/
public String getAlterTableStmtPartitionColStat(ColumnStatisticsData
columnStatisticsData, String colName,
- String tblName, String ptName, String dbName) {
+ String tblName, String
ptName, String dbName) {
ST command = new ST(ALTER_TABLE_UPDATE_STATISTICS_PARTITION_COLUMN);
command.add(DATABASE_NAME, dbName);
command.add(TABLE_NAME, tblName);
command.add(COLUMN_NAME, colName);
command.add(PARTITION_NAME, ptName);
command.add(TBLPROPERTIES, addAllColStats(columnStatisticsData));
- if(checkIfDefaultPartition(ptName)){
+ if (checkIfDefaultPartition(ptName)) {
command.add(COMMENT_SQL, "--");
}
return command.render();
@@ -510,17 +517,17 @@ public class DDLPlanUtils {
* @param dbName
*/
public List<String>
getAlterTableStmtPartitionStatsColsAll(List<ColumnStatisticsObj>
columnStatisticsObjList,
- String tblName,
- String ptName,
- String dbName) {
+ String tblName,
+ String ptName,
+ String dbName) {
List<String> alterTableStmt = new ArrayList<String>();
ColumnStatisticsObj[] columnStatisticsObj =
columnStatisticsObjList.toArray(new ColumnStatisticsObj[0]);
for (int i = 0; i < columnStatisticsObj.length; i++) {
alterTableStmt.add(getAlterTableStmtPartitionColStat(columnStatisticsObj[i].getStatsData(),
- columnStatisticsObj[i].getColName(),
- tblName,
- ptName,
- dbName));
+ columnStatisticsObj[i].getColName(),
+ tblName,
+ ptName,
+ dbName));
String base64 = checkBitVectors(columnStatisticsObj[i].getStatsData());
if (base64 != null) {
ST command = new ST(EXIST_BIT_VECTORS_PARTITIONED);
@@ -535,7 +542,7 @@ public class DDLPlanUtils {
return alterTableStmt;
}
- public String paramToValues(Map<String, String> parameters){
+ public String paramToValues(Map<String, String> parameters) {
List<String> paramsToValue = new ArrayList<>();
for (String s : req) {
String p = parameters.get(s);
@@ -560,15 +567,15 @@ public class DDLPlanUtils {
command.add(TABLE_NAME, pt.getTable().getTableName());
command.add(PARTITION_NAME, getPartitionActualName(pt));
command.add(TBLPROPERTIES, paramToValues(parameters));
- if(checkIfDefaultPartition(pt.getName())){
+ if (checkIfDefaultPartition(pt.getName())) {
command.add(COMMENT_SQL, "--");
}
return command.render();
}
public List<String> getDDLPlanForPartitionWithStats(Table table,
- Map<String, List<Partition>> tableToPartitionList
- ) throws MetaException,
HiveException {
+ Map<String,
List<Partition>> tableToPartitionList
+ ) throws MetaException, HiveException {
List<String> alterTableStmt = new ArrayList<String>();
String tableName = table.getTableName();
for (Partition pt : tableToPartitionList.get(tableName)) {
@@ -581,16 +588,16 @@ public class DDLPlanUtils {
List<String> columnNames = getTableColumnNames(table);
tableToPartitionList.get(tableName).stream().forEach(p ->
partNames.add(p.getName()));
Map<String, List<ColumnStatisticsObj>> partitionColStats =
- Hive.get().getPartitionColumnStatistics(databaseName,
- tableName, partNames, columnNames,
- true);
+ Hive.get().getPartitionColumnStatistics(databaseName,
+ tableName, partNames, columnNames,
+ true);
Map<String, String> partitionToActualName = new HashMap<>();
tableToPartitionList.get(tableName).stream().forEach(p ->
partitionToActualName.put(p.getName(),
- getPartitionActualName(p)));
+ getPartitionActualName(p)));
for (String partitionName : partitionColStats.keySet()) {
alterTableStmt.addAll(getAlterTableStmtPartitionStatsColsAll(partitionColStats.get(partitionName),
- tableName, partitionToActualName.get(partitionName),
- databaseName));
+ tableName, partitionToActualName.get(partitionName),
+ databaseName));
}
return alterTableStmt;
}
@@ -612,7 +619,7 @@ public class DDLPlanUtils {
}
public String getAlterTableStmtPrimaryKeyConstraint(PrimaryKeyInfo pr) {
- if (!PrimaryKeyInfo.isPrimaryKeyInfoNotEmpty(pr)) {
+ if (!PrimaryKeyInfo.isNotEmpty(pr)) {
return null;
}
ST command = new ST(ALTER_TABLE_ADD_PRIMARY_KEY);
@@ -620,19 +627,19 @@ public class DDLPlanUtils {
command.add(DATABASE_NAME, pr.getDatabaseName());
command.add(CONSTRAINT_NAME, pr.getConstraintName());
command.add(COL_NAMES, String.join(",", pr.getColNames().values()));
+ command.add(ENABLE, pr.getEnable());
+ command.add(VALIDATE, pr.getValidate());
+ command.add(RELY, pr.getRely());
return command.render();
}
public void getAlterTableStmtForeignKeyConstraint(ForeignKeyInfo fr,
List<String> constraints, Set<String> allTableNames) {
- if (!ForeignKeyInfo.isForeignKeyInfoNotEmpty(fr)) {
+ if (!ForeignKeyInfo.isNotEmpty(fr)) {
return;
}
Map<String, List<ForeignKeyInfo.ForeignKeyCol>> all = fr.getForeignKeys();
for (String key : all.keySet()) {
for (ForeignKeyInfo.ForeignKeyCol fkc : all.get(key)) {
- if (!allTableNames.contains(fkc.parentTableName)) {
- continue;
- }
ST command = new ST(ALTER_TABLE_ADD_FOREIGN_KEY);
command.add(CHILD_TABLE_NAME, fr.getChildTableName());
command.add(DATABASE_NAME, fr.getChildDatabaseName());
@@ -641,13 +648,16 @@ public class DDLPlanUtils {
command.add(DATABASE_NAME_FR, fkc.parentDatabaseName);
command.add(PARENT_TABLE_NAME, fkc.parentTableName);
command.add(PARENT_COL_NAME, fkc.parentColName);
+ command.add(ENABLE, fkc.enable);
+ command.add(VALIDATE, fkc.validate);
+ command.add(RELY, fkc.rely);
constraints.add(command.render());
}
}
}
public void getAlterTableStmtUniqueConstraint(UniqueConstraint uq,
List<String> constraints) {
- if (!UniqueConstraint.isUniqueConstraintNotEmpty(uq)) {
+ if (!UniqueConstraint.isNotEmpty(uq)) {
return;
}
Map<String, List<UniqueConstraint.UniqueConstraintCol>> uniqueConstraints
= uq.getUniqueConstraints();
@@ -661,12 +671,15 @@ public class DDLPlanUtils {
colNames.add(col.colName);
}
command.add(COLUMN_NAME, Joiner.on(",").join(colNames));
+ command.add(ENABLE, uniqueConstraints.get(key).get(0).enable);
+ command.add(VALIDATE, uniqueConstraints.get(key).get(0).validate);
+ command.add(RELY, uniqueConstraints.get(key).get(0).rely);
constraints.add(command.render());
}
}
public void getAlterTableStmtDefaultConstraint(DefaultConstraint dc, Table
tb, List<String> constraints) {
- if (!DefaultConstraint.isCheckConstraintNotEmpty(dc)) {
+ if (!DefaultConstraint.isNotEmpty(dc)) {
return;
}
Map<String, String> colType = getTableColumnsToType(tb);
@@ -680,13 +693,16 @@ public class DDLPlanUtils {
command.add(COLUMN_NAME, col.colName);
command.add(COL_TYPE, colType.get(col.colName));
command.add(DEFAULT_VALUE, col.defaultVal);
+ command.add(ENABLE, col.enable);
+ command.add(VALIDATE, col.validate);
+ command.add(RELY, col.rely);
constraints.add(command.render());
}
}
}
public void getAlterTableStmtCheckConstraint(CheckConstraint ck,
List<String> constraints) {
- if (!CheckConstraint.isCheckConstraintNotEmpty(ck)) {
+ if (!CheckConstraint.isNotEmpty(ck)) {
return;
}
Map<String, List<CheckConstraint.CheckConstraintCol>> checkConstraints =
ck.getCheckConstraints();
@@ -698,7 +714,10 @@ public class DDLPlanUtils {
command.add(DATABASE_NAME, ck.getDatabaseName());
command.add(TABLE_NAME, ck.getTableName());
command.add(CONSTRAINT_NAME, constraintName);
- command.add(CHECK_EXPRESSION, col.checkExpression);
+ command.add(CHECK_EXPRESSION, col.getCheckExpression());
+ command.add(ENABLE, col.getEnable());
+ command.add(VALIDATE, col.getValidate());
+ command.add(RELY, col.getRely());
constraints.add(command.render());
}
}
@@ -707,11 +726,12 @@ public class DDLPlanUtils {
public void getAlterTableStmtNotNullConstraint(NotNullConstraint nc, Table
tb, List<String> constraints) {
- if (!NotNullConstraint.isNotNullConstraintNotEmpty(nc)) {
+ if (!NotNullConstraint.isNotEmpty(nc)) {
return;
}
Map<String, String> colType = getTableColumnsToType(tb);
Map<String, String> notNullConstraints = nc.getNotNullConstraints();
+ Map<String, List<String>> enableValidateRely = nc.getEnableValidateRely();
for (String constraintName : notNullConstraints.keySet()) {
ST command = new ST(ALTER_TABLE_ADD_NOT_NULL_CONSTRAINT);
command.add(DATABASE_NAME, nc.getDatabaseName());
@@ -719,6 +739,9 @@ public class DDLPlanUtils {
command.add(COLUMN_NAME, notNullConstraints.get(constraintName));
command.add(COL_TYPE,
colType.get(notNullConstraints.get(constraintName)));
command.add(CONSTRAINT_NAME, constraintName);
+ command.add(ENABLE, enableValidateRely.get(constraintName).get(0));
+ command.add(VALIDATE, enableValidateRely.get(constraintName).get(1));
+ command.add(RELY, enableValidateRely.get(constraintName).get(2));
constraints.add(command.render());
}
}
@@ -738,9 +761,9 @@ public class DDLPlanUtils {
return constraints;
}
- public List<String> addExplainPlans(String sql){
+ public List<String> addExplainPlans(String sql) {
List<String> exp = new ArrayList<String>();
- for(String ex : explain_plans){
+ for (String ex : explain_plans) {
exp.add(sql.replaceAll("(?i)explain ddl", ex) + ";");
}
return exp;
@@ -770,7 +793,7 @@ public class DDLPlanUtils {
}
- public String getCreateTableCommand(Table table, boolean isRelative) {
+ public String getCreateTableCommand(Table table, boolean isRelative) throws
HiveException {
ST command = new ST(CREATE_TABLE_TEMPLATE);
if (!isRelative) {
@@ -800,7 +823,7 @@ public class DDLPlanUtils {
return table.getTableType() == TableType.EXTERNAL_TABLE ? "EXTERNAL " : "";
}
- private String getColumns(Table table) {
+ private String getColumns(Table table) throws HiveException {
List<String> columnDescs = new ArrayList<String>();
for (FieldSchema column : table.getCols()) {
String columnType =
formatType(TypeInfoUtils.getTypeInfoFromTypeString(column.getType()));
@@ -813,50 +836,52 @@ public class DDLPlanUtils {
return StringUtils.join(columnDescs, ", \n");
}
- /** Struct fields are identifiers, need to be put between ``. */
- private String formatType(TypeInfo typeInfo) {
+ /**
+ * Struct fields are identifiers, need to be put between ``.
+ */
+ private String formatType(TypeInfo typeInfo) throws HiveException {
switch (typeInfo.getCategory()) {
- case PRIMITIVE:
- return typeInfo.getTypeName();
- case STRUCT:
- StringBuilder structFormattedType = new StringBuilder();
-
- StructTypeInfo structTypeInfo = (StructTypeInfo)typeInfo;
- for (int i = 0; i < structTypeInfo.getAllStructFieldNames().size(); i++)
{
- if (structFormattedType.length() != 0) {
- structFormattedType.append(", ");
- }
+ case PRIMITIVE:
+ return typeInfo.getTypeName();
+ case STRUCT:
+ StringBuilder structFormattedType = new StringBuilder();
- String structElementName =
structTypeInfo.getAllStructFieldNames().get(i);
- String structElementType =
formatType(structTypeInfo.getAllStructFieldTypeInfos().get(i));
+ StructTypeInfo structTypeInfo = (StructTypeInfo) typeInfo;
+ for (int i = 0; i < structTypeInfo.getAllStructFieldNames().size();
i++) {
+ if (structFormattedType.length() != 0) {
+ structFormattedType.append(", ");
+ }
- structFormattedType.append("`" + structElementName + "`:" +
structElementType);
- }
- return "struct<" + structFormattedType.toString() + ">";
- case LIST:
- ListTypeInfo listTypeInfo = (ListTypeInfo)typeInfo;
- String elementType = formatType(listTypeInfo.getListElementTypeInfo());
- return "array<" + elementType + ">";
- case MAP:
- MapTypeInfo mapTypeInfo = (MapTypeInfo)typeInfo;
- String keyTypeInfo = mapTypeInfo.getMapKeyTypeInfo().getTypeName();
- String valueTypeInfo = formatType(mapTypeInfo.getMapValueTypeInfo());
- return "map<" + keyTypeInfo + "," + valueTypeInfo + ">";
- case UNION:
- StringBuilder unionFormattedType = new StringBuilder();
-
- UnionTypeInfo unionTypeInfo = (UnionTypeInfo)typeInfo;
- for (TypeInfo unionElementTypeInfo :
unionTypeInfo.getAllUnionObjectTypeInfos()) {
- if (unionFormattedType.length() != 0) {
- unionFormattedType.append(", ");
- }
+ String structElementName =
structTypeInfo.getAllStructFieldNames().get(i);
+ String structElementType =
formatType(structTypeInfo.getAllStructFieldTypeInfos().get(i));
- String unionElementType = formatType(unionElementTypeInfo);
- unionFormattedType.append(unionElementType);
- }
- return "uniontype<" + unionFormattedType.toString() + ">";
- default:
- throw new RuntimeException("Unknown type: " + typeInfo.getCategory());
+ structFormattedType.append("`" + structElementName + "`:" +
structElementType);
+ }
+ return "struct<" + structFormattedType.toString() + ">";
+ case LIST:
+ ListTypeInfo listTypeInfo = (ListTypeInfo) typeInfo;
+ String elementType = formatType(listTypeInfo.getListElementTypeInfo());
+ return "array<" + elementType + ">";
+ case MAP:
+ MapTypeInfo mapTypeInfo = (MapTypeInfo) typeInfo;
+ String keyTypeInfo = mapTypeInfo.getMapKeyTypeInfo().getTypeName();
+ String valueTypeInfo = formatType(mapTypeInfo.getMapValueTypeInfo());
+ return "map<" + keyTypeInfo + "," + valueTypeInfo + ">";
+ case UNION:
+ StringBuilder unionFormattedType = new StringBuilder();
+
+ UnionTypeInfo unionTypeInfo = (UnionTypeInfo) typeInfo;
+ for (TypeInfo unionElementTypeInfo :
unionTypeInfo.getAllUnionObjectTypeInfos()) {
+ if (unionFormattedType.length() != 0) {
+ unionFormattedType.append(", ");
+ }
+
+ String unionElementType = formatType(unionElementTypeInfo);
+ unionFormattedType.append(unionElementType);
+ }
+ return "uniontype<" + unionFormattedType.toString() + ">";
+ default:
+ throw new RuntimeException("Unknown type: " + typeInfo.getCategory());
}
}
@@ -871,7 +896,7 @@ public class DDLPlanUtils {
return "";
}
List<String> partitionCols = new ArrayList<String>();
- for(String col:table.getPartColNames()) {
+ for (String col : table.getPartColNames()) {
partitionCols.add('`' + col + '`');
}
return " PARTITIONED ON (" + StringUtils.join(partitionCols, ", ") + ")";
@@ -896,7 +921,7 @@ public class DDLPlanUtils {
private String getPartitionsBySpec(Table table) {
if (table.isNonNative() && table.getStorageHandler() != null &&
- table.getStorageHandler().supportsPartitionTransform()) {
+ table.getStorageHandler().supportsPartitionTransform()) {
List<PartitionTransformSpec> specs =
table.getStorageHandler().getPartitionTransformSpec(table);
if (specs.isEmpty()) {
return "";
@@ -907,8 +932,8 @@ public class DDLPlanUtils {
partitionTransforms.add(spec.getColumnName());
} else {
partitionTransforms.add(spec.getTransformType().name() + "(" +
- (spec.getTransformParam().isPresent() ?
spec.getTransformParam().get() + ", " : "") +
- spec.getColumnName() + ")");
+ (spec.getTransformParam().isPresent() ?
spec.getTransformParam().get() + ", " : "") +
+ spec.getColumnName() + ")");
}
}
return "PARTITIONED BY SPEC ( \n" +
StringUtils.join(partitionTransforms, ", \n") + ")";
@@ -950,8 +975,8 @@ public class DDLPlanUtils {
}
String skewed =
- "SKEWED BY (" + StringUtils.join(skewedInfo.getSkewedColNames(), ",")
+ ")\n" +
- " ON (" + StringUtils.join(columnValuesList, ",") + ")";
+ "SKEWED BY (" + StringUtils.join(skewedInfo.getSkewedColNames(), ",") +
")\n" +
+ " ON (" + StringUtils.join(columnValuesList, ",") + ")";
if (table.isStoredAsSubDirectories()) {
skewed += "\n STORED AS DIRECTORIES";
}
@@ -965,8 +990,8 @@ public class DDLPlanUtils {
SerDeInfo serdeInfo = sd.getSerdeInfo();
rowFormat
- .append("ROW FORMAT SERDE \n")
- .append(" '" +
HiveStringUtils.escapeHiveCommand(serdeInfo.getSerializationLib()) + "' \n");
+ .append("ROW FORMAT SERDE \n")
+ .append(" '" +
HiveStringUtils.escapeHiveCommand(serdeInfo.getSerializationLib()) + "' \n");
Map<String, String> serdeParams = serdeInfo.getParameters();
if (table.getStorageHandler() == null) {
@@ -979,8 +1004,8 @@ public class DDLPlanUtils {
rowFormat.append(" \n");
}
rowFormat
- .append("STORED AS INPUTFORMAT \n '" +
HiveStringUtils.escapeHiveCommand(sd.getInputFormat()) + "' \n")
- .append("OUTPUTFORMAT \n '" +
HiveStringUtils.escapeHiveCommand(sd.getOutputFormat()) + "'");
+ .append("STORED AS INPUTFORMAT \n '" +
HiveStringUtils.escapeHiveCommand(sd.getInputFormat()) + "' \n")
+ .append("OUTPUTFORMAT \n '" +
HiveStringUtils.escapeHiveCommand(sd.getOutputFormat()) + "'");
} else {
String metaTableStorage = table.getParameters().get(META_TABLE_STORAGE);
rowFormat.append("STORED BY \n '" +
HiveStringUtils.escapeHiveCommand(metaTableStorage) + "' \n");
@@ -997,13 +1022,13 @@ public class DDLPlanUtils {
List<String> serdeCols = new ArrayList<String>();
for (Entry<String, String> entry : sortedSerdeParams.entrySet()) {
serdeCols.add(" '" + entry.getKey() + "'='" +
-
HiveStringUtils.escapeUnicode(HiveStringUtils.escapeHiveCommand(entry.getValue()))
+ "'");
+
HiveStringUtils.escapeUnicode(HiveStringUtils.escapeHiveCommand(entry.getValue()))
+ "'");
}
builder
- .append("WITH SERDEPROPERTIES ( \n")
- .append(StringUtils.join(serdeCols, ", \n"))
- .append(')');
+ .append("WITH SERDEPROPERTIES ( \n")
+ .append(StringUtils.join(serdeCols, ", \n"))
+ .append(')');
}
private String getLocationBlock(Table table) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
index 423583d..c59f44f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
@@ -430,7 +430,8 @@ public class ExplainTask extends Task<ExplainWork>
implements Serializable {
return jsonObject;
}
- public void addCreateTableStatement(Table table, List<String>
tableCreateStmt , DDLPlanUtils ddlPlanUtils){
+ public void addCreateTableStatement(Table table, List<String>
tableCreateStmt , DDLPlanUtils ddlPlanUtils)
+ throws HiveException {
tableCreateStmt.add(ddlPlanUtils.getCreateTableCommand(table, false) +
";");
}
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/metadata/CheckConstraint.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/CheckConstraint.java
index 5eb986e..7649180 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/CheckConstraint.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/CheckConstraint.java
@@ -34,13 +34,40 @@ import
org.apache.hadoop.hive.metastore.api.SQLCheckConstraint;
@SuppressWarnings("serial")
public class CheckConstraint implements Serializable {
- public class CheckConstraintCol {
- public String colName;
- public String checkExpression;
-
- public CheckConstraintCol(String colName, String checkExpression) {
+ public static class CheckConstraintCol {
+ private final String colName;
+ private final String checkExpression;
+ private final String enable;
+ private final String validate;
+ private final String rely;
+
+ public CheckConstraintCol(String colName, String checkExpression, String
enable,
+ String validate, String rely) {
this.colName = colName;
- this.checkExpression= checkExpression;
+ this.checkExpression = checkExpression;
+ this.enable = enable;
+ this.validate = validate;
+ this.rely = rely;
+ }
+
+ public String getColName() {
+ return colName;
+ }
+
+ public String getCheckExpression() {
+ return checkExpression;
+ }
+
+ public String getEnable() {
+ return enable;
+ }
+
+ public String getValidate() {
+ return validate;
+ }
+
+ public String getRely() {
+ return rely;
}
}
@@ -56,7 +83,7 @@ public class CheckConstraint implements Serializable {
public CheckConstraint() {}
public CheckConstraint(List<SQLCheckConstraint> checkConstraintsList) {
- checkConstraints = new TreeMap<String, List<CheckConstraintCol>>();
+ checkConstraints = new TreeMap<>();
checkExpressionList = new ArrayList<>();
if (checkConstraintsList == null) {
return;
@@ -65,13 +92,16 @@ public class CheckConstraint implements Serializable {
this.tableName = checkConstraintsList.get(0).getTable_name();
this.databaseName= checkConstraintsList.get(0).getTable_db();
}
- for (SQLCheckConstraint uk : checkConstraintsList) {
- String colName = uk.getColumn_name();
- String check_expression = uk.getCheck_expression();
+ for (SQLCheckConstraint constraint : checkConstraintsList) {
+ String colName = constraint.getColumn_name();
+ String check_expression = constraint.getCheck_expression();
+ String enable = constraint.isEnable_cstr()? "ENABLE": "DISABLE";
+ String validate = constraint.isValidate_cstr()? "VALIDATE": "NOVALIDATE";
+ String rely = constraint.isRely_cstr()? "RELY": "NORELY";
checkExpressionList.add(check_expression);
CheckConstraintCol currCol = new CheckConstraintCol(
- colName, check_expression);
- String constraintName = uk.getDc_name();
+ colName, check_expression, enable, validate, rely);
+ String constraintName = constraint.getDc_name();
if (checkConstraints.containsKey(constraintName)) {
checkConstraints.get(constraintName).add(currCol);
} else {
@@ -119,7 +149,7 @@ public class CheckConstraint implements Serializable {
return sb.toString();
}
- public static boolean isCheckConstraintNotEmpty(CheckConstraint info) {
+ public static boolean isNotEmpty(CheckConstraint info) {
return info != null && !info.getCheckConstraints().isEmpty();
}
}
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/metadata/DefaultConstraint.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/DefaultConstraint.java
index c101f3d..c0d12ef 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/DefaultConstraint.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/DefaultConstraint.java
@@ -36,10 +36,16 @@ public class DefaultConstraint implements Serializable {
public class DefaultConstraintCol {
public String colName;
public String defaultVal;
+ public String enable;
+ public String validate;
+ public String rely;
- public DefaultConstraintCol(String colName, String defaultVal) {
+ public DefaultConstraintCol(String colName, String defaultVal, String
enable, String validate, String rely) {
this.colName = colName;
this.defaultVal = defaultVal;
+ this.enable = enable;
+ this.validate = validate;
+ this.rely = rely;
}
}
@@ -56,8 +62,8 @@ public class DefaultConstraint implements Serializable {
public DefaultConstraint(List<SQLDefaultConstraint> defaultConstraintList,
String tableName, String databaseName) {
this.tableName = tableName;
this.databaseName = databaseName;
- defaultConstraints = new TreeMap<String, List<DefaultConstraintCol>>();
- colNameToDefaultValueMap = new TreeMap<String, String>();
+ defaultConstraints = new TreeMap<>();
+ colNameToDefaultValueMap = new TreeMap<>();
if (defaultConstraintList == null) {
return;
}
@@ -67,8 +73,11 @@ public class DefaultConstraint implements Serializable {
String colName = uk.getColumn_name();
String defVal = uk.getDefault_value();
colNameToDefaultValueMap.put(colName, defVal);
+ String enable = uk.isEnable_cstr()? "ENABLE": "DISABLE";
+ String validate = uk.isValidate_cstr()? "VALIDATE": "NOVALIDATE";
+ String rely = uk.isRely_cstr()? "RELY": "NORELY";
DefaultConstraintCol currCol = new DefaultConstraintCol(
- colName, defVal);
+ colName, defVal, enable, validate, rely);
String constraintName = uk.getDc_name();
if (defaultConstraints.containsKey(constraintName)) {
defaultConstraints.get(constraintName).add(currCol);
@@ -119,7 +128,7 @@ public class DefaultConstraint implements Serializable {
return sb.toString();
}
- public static boolean isCheckConstraintNotEmpty(DefaultConstraint info) {
+ public static boolean isNotEmpty(DefaultConstraint info) {
return info != null && !info.getDefaultConstraints().isEmpty();
}
}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/ForeignKeyInfo.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/ForeignKeyInfo.java
index f2c978a..890edb2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/ForeignKeyInfo.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/ForeignKeyInfo.java
@@ -43,14 +43,20 @@ public class ForeignKeyInfo implements Serializable {
public String parentColName;
public String childColName;
public Integer position;
+ public String enable;
+ public String validate;
+ public String rely;
public ForeignKeyCol(String parentTableName, String parentDatabaseName,
String parentColName,
- String childColName, Integer position) {
+ String childColName, Integer position, String enable, String validate,
String rely) {
this.parentTableName = parentTableName;
this.parentDatabaseName = parentDatabaseName;
this.parentColName = parentColName;
this.childColName = childColName;
this.position = position;
+ this.enable = enable;
+ this.validate = validate;
+ this.rely = rely;
}
}
@@ -64,15 +70,18 @@ public class ForeignKeyInfo implements Serializable {
public ForeignKeyInfo(List<SQLForeignKey> fks, String childTableName, String
childDatabaseName) {
this.childTableName = childTableName;
this.childDatabaseName = childDatabaseName;
- foreignKeys = new TreeMap<String, List<ForeignKeyCol>>();
+ foreignKeys = new TreeMap<>();
if (fks == null) {
return;
}
for (SQLForeignKey fk : fks) {
if (fk.getFktable_db().equalsIgnoreCase(childDatabaseName) &&
fk.getFktable_name().equalsIgnoreCase(childTableName)) {
+ String enable = fk.isEnable_cstr()? "ENABLE": "DISABLE";
+ String validate = fk.isValidate_cstr()? "VALIDATE": "NOVALIDATE";
+ String rely = fk.isRely_cstr()? "RELY": "NORELY";
ForeignKeyCol currCol = new ForeignKeyCol(fk.getPktable_name(),
fk.getPktable_db(),
- fk.getPkcolumn_name(), fk.getFkcolumn_name(), fk.getKey_seq());
+ fk.getPkcolumn_name(), fk.getFkcolumn_name(), fk.getKey_seq(),
enable, validate, rely);
String constraintName = fk.getFk_name();
if (foreignKeys.containsKey(constraintName)) {
foreignKeys.get(constraintName).add(currCol);
@@ -134,7 +143,7 @@ public class ForeignKeyInfo implements Serializable {
return sb.toString();
}
- public static boolean isForeignKeyInfoNotEmpty(ForeignKeyInfo info) {
+ public static boolean isNotEmpty(ForeignKeyInfo info) {
return info != null && !info.getForeignKeys().isEmpty();
}
}
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 b5a8d36..aeaaf58 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
@@ -6058,33 +6058,33 @@ private void constructOneLBLocationMap(FileStatus fSta,
if (fetchReliable && tableConstraints != null) {
if (CollectionUtils.isNotEmpty(tableConstraints.getPrimaryKeys())) {
tableConstraints.setPrimaryKeys(
- tableConstraints.getPrimaryKeys().stream().filter(primaryKey ->
primaryKey.isRely_cstr())
+
tableConstraints.getPrimaryKeys().stream().filter(SQLPrimaryKey::isRely_cstr)
.collect(Collectors.toList()));
}
if (CollectionUtils.isNotEmpty(tableConstraints.getForeignKeys())) {
tableConstraints.setForeignKeys(
- tableConstraints.getForeignKeys().stream().filter(foreignKey ->
foreignKey.isRely_cstr())
+
tableConstraints.getForeignKeys().stream().filter(SQLForeignKey::isRely_cstr)
.collect(Collectors.toList()));
}
if
(CollectionUtils.isNotEmpty(tableConstraints.getUniqueConstraints())) {
tableConstraints.setUniqueConstraints(tableConstraints.getUniqueConstraints().stream()
- .filter(uniqueConstraint ->
uniqueConstraint.isRely_cstr()).collect(Collectors.toList()));
+
.filter(SQLUniqueConstraint::isRely_cstr).collect(Collectors.toList()));
}
if
(CollectionUtils.isNotEmpty(tableConstraints.getNotNullConstraints())) {
tableConstraints.setNotNullConstraints(tableConstraints.getNotNullConstraints().stream()
- .filter(notNullConstraint ->
notNullConstraint.isRely_cstr()).collect(Collectors.toList()));
+
.filter(SQLNotNullConstraint::isRely_cstr).collect(Collectors.toList()));
}
}
if (fetchEnabled && tableConstraints != null) {
if
(CollectionUtils.isNotEmpty(tableConstraints.getCheckConstraints())) {
tableConstraints.setCheckConstraints(
-
tableConstraints.getCheckConstraints().stream().filter(checkConstraint ->
checkConstraint.isEnable_cstr())
+
tableConstraints.getCheckConstraints().stream().filter(SQLCheckConstraint::isEnable_cstr)
.collect(Collectors.toList()));
}
if
(CollectionUtils.isNotEmpty(tableConstraints.getDefaultConstraints())) {
tableConstraints.setDefaultConstraints(tableConstraints.getDefaultConstraints().stream()
- .filter(defaultConstraint ->
defaultConstraint.isEnable_cstr()).collect(Collectors.toList()));
+
.filter(SQLDefaultConstraint::isEnable_cstr).collect(Collectors.toList()));
}
}
return new TableConstraintsInfo(new
PrimaryKeyInfo(tableConstraints.getPrimaryKeys(), tblName, dbName),
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/metadata/NotNullConstraint.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/NotNullConstraint.java
index 8b50b7c..43439dd 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/NotNullConstraint.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/NotNullConstraint.java
@@ -19,10 +19,12 @@
package org.apache.hadoop.hive.ql.metadata;
import java.io.Serializable;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
+import com.google.common.collect.ImmutableList;
import org.apache.hadoop.hive.metastore.api.SQLNotNullConstraint;
/**
@@ -36,19 +38,25 @@ public class NotNullConstraint implements Serializable {
Map<String, String> notNullConstraints;
String databaseName;
String tableName;
+ Map<String, List<String>> enableValidateRely;
public NotNullConstraint() {}
public NotNullConstraint(List<SQLNotNullConstraint> nns, String tableName,
String databaseName) {
this.databaseName = databaseName;
this.tableName = tableName;
- this.notNullConstraints = new TreeMap<String, String>();
+ this.notNullConstraints = new TreeMap<>();
+ enableValidateRely = new HashMap<>();
if (nns ==null) {
return;
}
for (SQLNotNullConstraint pk : nns) {
if (pk.getTable_db().equalsIgnoreCase(databaseName) &&
pk.getTable_name().equalsIgnoreCase(tableName)) {
+ String enable = pk.isEnable_cstr()? "ENABLE": "DISABLE";
+ String validate = pk.isValidate_cstr()? "VALIDATE": "NOVALIDATE";
+ String rely = pk.isRely_cstr()? "RELY": "NORELY";
+ enableValidateRely.put(pk.getNn_name(), ImmutableList.of(enable,
validate, rely));
notNullConstraints.put(pk.getNn_name(), pk.getColumn_name());
}
}
@@ -66,6 +74,10 @@ public class NotNullConstraint implements Serializable {
return notNullConstraints;
}
+ public Map<String, List<String>> getEnableValidateRely() {
+ return enableValidateRely;
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@@ -83,7 +95,7 @@ public class NotNullConstraint implements Serializable {
return sb.toString();
}
- public static boolean isNotNullConstraintNotEmpty(NotNullConstraint info) {
+ public static boolean isNotEmpty(NotNullConstraint info) {
return info != null && !info.getNotNullConstraints().isEmpty();
}
}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/PrimaryKeyInfo.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/PrimaryKeyInfo.java
index f9348c6..677b446 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/PrimaryKeyInfo.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/PrimaryKeyInfo.java
@@ -34,20 +34,28 @@ import org.apache.hadoop.hive.metastore.api.SQLPrimaryKey;
@SuppressWarnings("serial")
public class PrimaryKeyInfo implements Serializable {
- Map<Integer, String> colNames;
- String constraintName;
- String tableName;
- String databaseName;
+ private Map<Integer, String> colNames;
+ private String constraintName;
+ private String tableName;
+ private String databaseName;
+ private String enable;
+ private String validate;
+ private String rely;
public PrimaryKeyInfo() {}
public PrimaryKeyInfo(List<SQLPrimaryKey> pks, String tableName, String
databaseName) {
this.tableName = tableName;
this.databaseName = databaseName;
- this.colNames = new TreeMap<Integer, String>();
+ this.colNames = new TreeMap<>();
if (pks ==null) {
return;
}
+ if (!pks.isEmpty()) {
+ this.enable = pks.get(0).isEnable_cstr()? "ENABLE": "DISABLE";
+ this.validate = pks.get(0).isValidate_cstr()? "VALIDATE": "NOVALIDATE";
+ this.rely = pks.get(0).isRely_cstr()? "RELY": "NORELY";
+ }
for (SQLPrimaryKey pk : pks) {
if (pk.getTable_db().equalsIgnoreCase(databaseName) &&
pk.getTable_name().equalsIgnoreCase(tableName)) {
@@ -88,7 +96,31 @@ public class PrimaryKeyInfo implements Serializable {
public void setColNames(Map<Integer, String> colNames) {
this.colNames = colNames;
}
-
+
+ public String getEnable() {
+ return enable;
+ }
+
+ public void setEnable(String enable) {
+ this.enable = enable;
+ }
+
+ public String getValidate() {
+ return validate;
+ }
+
+ public void setValidate(String validate) {
+ this.validate = validate;
+ }
+
+ public String getRely() {
+ return rely;
+ }
+
+ public void setRely(String rely) {
+ this.rely = rely;
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@@ -104,7 +136,7 @@ public class PrimaryKeyInfo implements Serializable {
return sb.toString();
}
- public static boolean isPrimaryKeyInfoNotEmpty(PrimaryKeyInfo info) {
+ public static boolean isNotEmpty(PrimaryKeyInfo info) {
return info != null && !info.getColNames().isEmpty();
}
}
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/metadata/TableConstraintsInfo.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/TableConstraintsInfo.java
index 247098d..cfe2038 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/TableConstraintsInfo.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/TableConstraintsInfo.java
@@ -89,11 +89,11 @@ public class TableConstraintsInfo {
}
public boolean isTableConstraintsInfoNotEmpty() {
- return PrimaryKeyInfo.isPrimaryKeyInfoNotEmpty(this.getPrimaryKeyInfo())
|| ForeignKeyInfo
- .isForeignKeyInfoNotEmpty(this.getForeignKeyInfo()) || UniqueConstraint
- .isUniqueConstraintNotEmpty(this.getUniqueConstraint()) ||
NotNullConstraint
- .isNotNullConstraintNotEmpty(this.getNotNullConstraint()) ||
CheckConstraint
- .isCheckConstraintNotEmpty(this.getCheckConstraint()) ||
DefaultConstraint
- .isCheckConstraintNotEmpty(this.getDefaultConstraint());
+ return PrimaryKeyInfo.isNotEmpty(this.getPrimaryKeyInfo()) ||
+ ForeignKeyInfo.isNotEmpty(this.getForeignKeyInfo()) ||
+ UniqueConstraint.isNotEmpty(this.getUniqueConstraint()) ||
+ NotNullConstraint.isNotEmpty(this.getNotNullConstraint()) ||
+ CheckConstraint.isNotEmpty(this.getCheckConstraint()) ||
+ DefaultConstraint.isNotEmpty(this.getDefaultConstraint());
}
}
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/metadata/UniqueConstraint.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/UniqueConstraint.java
index 1fbe76d..502f3a5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/UniqueConstraint.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/UniqueConstraint.java
@@ -36,10 +36,16 @@ public class UniqueConstraint implements Serializable {
public class UniqueConstraintCol {
public String colName;
public Integer position;
+ public String enable;
+ public String validate;
+ public String rely;
- public UniqueConstraintCol(String colName, Integer position) {
+ public UniqueConstraintCol(String colName, Integer position, String
enable, String validate, String rely) {
this.colName = colName;
this.position = position;
+ this.enable = enable;
+ this.validate = validate;
+ this.rely = rely;
}
}
@@ -53,15 +59,18 @@ public class UniqueConstraint implements Serializable {
public UniqueConstraint(List<SQLUniqueConstraint> uks, String tableName,
String databaseName) {
this.tableName = tableName;
this.databaseName = databaseName;
- uniqueConstraints = new TreeMap<String, List<UniqueConstraintCol>>();
+ uniqueConstraints = new TreeMap<>();
if (uks == null) {
return;
}
for (SQLUniqueConstraint uk : uks) {
if (uk.getTable_db().equalsIgnoreCase(databaseName) &&
uk.getTable_name().equalsIgnoreCase(tableName)) {
+ String enable = uk.isEnable_cstr()? "ENABLE": "DISABLE";
+ String validate = uk.isValidate_cstr()? "VALIDATE": "NOVALIDATE";
+ String rely = uk.isRely_cstr()? "RELY": "NORELY";
UniqueConstraintCol currCol = new UniqueConstraintCol(
- uk.getColumn_name(), uk.getKey_seq());
+ uk.getColumn_name(), uk.getKey_seq(), enable, validate, rely);
String constraintName = uk.getUk_name();
if (uniqueConstraints.containsKey(constraintName)) {
uniqueConstraints.get(constraintName).add(currCol);
@@ -109,7 +118,7 @@ public class UniqueConstraint implements Serializable {
return sb.toString();
}
- public static boolean isUniqueConstraintNotEmpty(UniqueConstraint info) {
+ public static boolean isNotEmpty(UniqueConstraint info) {
return info != null && !info.getUniqueConstraints().isEmpty();
}
}
diff --git a/ql/src/test/queries/clientpositive/show_create_table.q
b/ql/src/test/queries/clientpositive/show_create_table.q
new file mode 100644
index 0000000..0262b1e1
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/show_create_table.q
@@ -0,0 +1,44 @@
+CREATE TABLE TEST(
+ col1 varchar(100) NOT NULL COMMENT "comment for column 1",
+ col2 timestamp DEFAULT CURRENT_TIMESTAMP() COMMENT "comment for column 2",
+ col3 decimal CHECK (col3 + col4 > 1) enable novalidate rely,
+ col4 decimal NOT NULL,
+ col5 varchar(100),
+ primary key(col1, col2) disable novalidate rely,
+ constraint c3_c4_check CHECK((col3 + col4)/(col3 - col4) > 3) enable
novalidate norely,
+ constraint c4_unique UNIQUE(col4) disable novalidate rely)
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';
+
+CREATE TABLE TEST2(
+ col varchar(100),
+ primary key(col) disable novalidate rely)
+ROW FORMAT SERDE
+'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';
+
+CREATE TABLE TEST3(
+ col1 varchar(100) COMMENT "comment",
+ col2 timestamp,
+ col3 varchar(100),
+ foreign key(col1, col2) references TEST(col1, col2) disable novalidate rely,
+ foreign key(col3) references TEST2(col) disable novalidate norely)
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';
+
+SHOW CREATE TABLE TEST;
+
+SHOW CREATE TABLE TEST2;
+
+SHOW CREATE TABLE TEST3;
diff --git
a/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out
b/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out
index c38adaa..28063e8 100644
--- a/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out
+++ b/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out
@@ -99,7 +99,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE;
+ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer_removal_n0 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -170,7 +170,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE;
+ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer_removal_n0 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -251,7 +251,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE;
+ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dates_removal_n0 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -334,7 +334,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE;
+ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dates_removal_n0 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -480,7 +480,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE;
+ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dates_removal_n0 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -626,7 +626,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE;
+ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dates_removal_n0 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -897,9 +897,9 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE;
+ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer_removal_n0 UPDATE STATISTICS
SET('numRows'='1','rawDataSize'='22' );
-ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE;
+ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dates_removal_n0 UPDATE STATISTICS
SET('numRows'='2','rawDataSize'='102' );
ALTER TABLE default.customer_removal_n0 UPDATE STATISTICS FOR COLUMN c_address
SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' );
-- BIT VECTORS PRESENT FOR default.customer_removal_n0 FOR COLUMN c_address
BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA
@@ -1107,7 +1107,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE;
+ALTER TABLE default.dates_removal_n0 ADD CONSTRAINT #### A masked pattern was
here #### PRIMARY KEY (d_datekey,d_id) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dates_removal_n0 UPDATE STATISTICS
SET('numRows'='2','rawDataSize'='102' );
ALTER TABLE default.dates_removal_n0 UPDATE STATISTICS FOR COLUMN d_date
SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' );
-- BIT VECTORS PRESENT FOR default.dates_removal_n0 FOR COLUMN d_date BUT THEY
ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA
@@ -1310,7 +1310,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE;
+ALTER TABLE default.customer_removal_n0 ADD CONSTRAINT #### A masked pattern
was here #### PRIMARY KEY (c_custkey) DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer_removal_n0 UPDATE STATISTICS
SET('numRows'='1','rawDataSize'='22' );
ALTER TABLE default.customer_removal_n0 UPDATE STATISTICS FOR COLUMN c_address
SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' );
-- BIT VECTORS PRESENT FOR default.customer_removal_n0 FOR COLUMN c_address
BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA
@@ -1496,7 +1496,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -1560,7 +1560,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -1625,7 +1625,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -1690,7 +1690,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -1819,7 +1819,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -1950,7 +1950,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -2100,7 +2100,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -2282,7 +2282,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -2350,7 +2350,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (key1) DISABLE NOVALIDATE RELY;
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='6','rawDataSize'='28' );
ALTER TABLE default.dest_g21 UPDATE STATISTICS FOR COLUMN key1
SET('lowValue'='1','highValue'='6','numNulls'='0','numDVs'='6' );
-- BIT VECTORS PRESENT FOR default.dest_g21 FOR COLUMN key1 BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAYGwfO+SIGmu+f//////wHC9+jHAf6diLP//////wG/9IJOg97xwAI=
@@ -2508,7 +2508,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.tconst UPDATE STATISTICS
SET('numRows'='3','rawDataSize'='25' );
-ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN d_year
SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' );
-- BIT VECTORS PRESENT FOR default.tconst FOR COLUMN d_year BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ==
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN i
SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' );
@@ -2637,7 +2637,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.tconst UPDATE STATISTICS
SET('numRows'='3','rawDataSize'='25' );
-ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN d_year
SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' );
-- BIT VECTORS PRESENT FOR default.tconst FOR COLUMN d_year BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ==
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN i
SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' );
@@ -2767,7 +2767,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.tconst UPDATE STATISTICS
SET('numRows'='3','rawDataSize'='25' );
-ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN d_year
SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' );
-- BIT VECTORS PRESENT FOR default.tconst FOR COLUMN d_year BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ==
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN i
SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' );
@@ -2896,7 +2896,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.tconst UPDATE STATISTICS
SET('numRows'='3','rawDataSize'='25' );
-ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN d_year
SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' );
-- BIT VECTORS PRESENT FOR default.tconst FOR COLUMN d_year BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ==
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN i
SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' );
@@ -3085,7 +3085,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.tconst UPDATE STATISTICS
SET('numRows'='3','rawDataSize'='25' );
-ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.tconst CHANGE COLUMN i i int CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN d_year
SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' );
-- BIT VECTORS PRESENT FOR default.tconst FOR COLUMN d_year BUT THEY ARE NOT
SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS
SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ==
ALTER TABLE default.tconst UPDATE STATISTICS FOR COLUMN i
SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' );
@@ -3284,8 +3284,8 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.dest_g21 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### UNIQUE (key1) DISABLE NOVALIDATE;
-ALTER TABLE default.dest_g21 CHANGE COLUMN key1 key1 int CONSTRAINT #### A
masked pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.dest_g21 ADD CONSTRAINT #### A masked pattern was here
#### UNIQUE (key1) DISABLE NOVALIDATE RELY;
+ALTER TABLE default.dest_g21 CHANGE COLUMN key1 key1 int CONSTRAINT #### A
masked pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
EXPLAIN select key1 from dest_g21 group by key1, value1;
@@ -3347,7 +3347,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.dest_g24 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.dest_g24 ADD CONSTRAINT #### A masked pattern was here
#### UNIQUE (key1) DISABLE NOVALIDATE;
+ALTER TABLE default.dest_g24 ADD CONSTRAINT #### A masked pattern was here
#### UNIQUE (key1) DISABLE NOVALIDATE RELY;
EXPLAIN select key1 from dest_g24 group by key1, value1;
@@ -3691,13 +3691,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -3975,13 +3975,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -4289,13 +4289,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -4684,13 +4684,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -5206,14 +5206,14 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.date_dim UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -5818,13 +5818,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -6110,13 +6110,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -6437,13 +6437,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -6761,13 +6761,13 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE;
+ALTER TABLE default.store_sales ADD CONSTRAINT pk_ss PRIMARY KEY
(ss_item_sk,ss_ticket_number) DISABLE NOVALIDATE RELY;
ALTER TABLE default.store_sales UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE;
+ALTER TABLE default.customer ADD CONSTRAINT pk_c PRIMARY KEY (c_customer_sk)
DISABLE NOVALIDATE RELY;
ALTER TABLE default.customer UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.store_sales ADD CONSTRAINT ss_c FOREIGN KEY
(ss_customer_sk) REFERENCES default.customer(c_customer_sk) DISABLE NOVALIDATE
RELY;
-ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE;
-ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE;
+ALTER TABLE default.customer ADD CONSTRAINT uk1 UNIQUE (c_customer_id) DISABLE
NOVALIDATE RELY;
+ALTER TABLE default.customer CHANGE COLUMN c_customer_id c_customer_id string
CONSTRAINT cid_nn NOT NULL DISABLE NOVALIDATE RELY;
@@ -7021,7 +7021,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.web_sales ADD CONSTRAINT pk1 PRIMARY KEY
(ws_order_number,ws_item_sk) DISABLE NOVALIDATE;
+ALTER TABLE default.web_sales ADD CONSTRAINT pk1 PRIMARY KEY
(ws_order_number,ws_item_sk) DISABLE NOVALIDATE RELY;
ALTER TABLE default.web_sales UPDATE STATISTICS
SET('numRows'='2','rawDataSize'='14' );
ALTER TABLE default.web_sales UPDATE STATISTICS FOR COLUMN ws_item_sk
SET('lowValue'='1','highValue'='1','numNulls'='0','numDVs'='1' );
-- BIT VECTORS PRESENT FOR default.web_sales FOR COLUMN ws_item_sk BUT THEY
ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBwfO+SA==
@@ -7686,7 +7686,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table7_n3 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (a) DISABLE NOVALIDATE;
+ALTER TABLE default.table7_n3 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (a) DISABLE NOVALIDATE RELY;
ALTER TABLE default.table7_n3 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -7795,7 +7795,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table9 ADD CONSTRAINT #### A masked pattern was here ####
PRIMARY KEY (a,b) DISABLE NOVALIDATE;
+ALTER TABLE default.table9 ADD CONSTRAINT #### A masked pattern was here ####
PRIMARY KEY (a,b) DISABLE NOVALIDATE RELY;
ALTER TABLE default.table9 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -7905,7 +7905,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table11 ADD CONSTRAINT pk11 PRIMARY KEY (a) DISABLE
NOVALIDATE;
+ALTER TABLE default.table11 ADD CONSTRAINT pk11 PRIMARY KEY (a) DISABLE
NOVALIDATE RELY;
ALTER TABLE default.table11 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -8016,7 +8016,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table13 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table13 CHANGE COLUMN a a string CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.table13 CHANGE COLUMN a a string CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
EXPLAIN select * from table13;
@@ -8070,7 +8070,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table14 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table14 CHANGE COLUMN a a string CONSTRAINT nn14_1 NOT
NULL DISABLE;
+ALTER TABLE default.table14 CHANGE COLUMN a a string CONSTRAINT nn14_1 NOT
NULL DISABLE NOVALIDATE RELY;
EXPLAIN select * from table14;
@@ -8232,7 +8232,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table17 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table17 ADD CONSTRAINT uk17_1 UNIQUE (a) DISABLE
NOVALIDATE;
+ALTER TABLE default.table17 ADD CONSTRAINT uk17_1 UNIQUE (a) DISABLE
NOVALIDATE RELY;
EXPLAIN select * from table17;
@@ -8287,7 +8287,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table18 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table18 ADD CONSTRAINT uk18_1 UNIQUE (b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table18 ADD CONSTRAINT uk18_1 UNIQUE (b) DISABLE
NOVALIDATE RELY;
EXPLAIN select * from table18;
@@ -8340,7 +8340,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table19 ADD CONSTRAINT pk19_1 PRIMARY KEY (b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table19 ADD CONSTRAINT pk19_1 PRIMARY KEY (b) DISABLE
NOVALIDATE RELY;
ALTER TABLE default.table19 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.table19 ADD CONSTRAINT fk19_2 FOREIGN KEY (a) REFERENCES
default.table19(b) DISABLE NOVALIDATE RELY;
@@ -8396,7 +8396,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table20 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table20 ADD CONSTRAINT uk20_1 UNIQUE (b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table20 ADD CONSTRAINT uk20_1 UNIQUE (b) DISABLE
NOVALIDATE RELY;
EXPLAIN select * from table20;
@@ -8883,7 +8883,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table7_n3 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (a) DISABLE NOVALIDATE;
+ALTER TABLE default.table7_n3 ADD CONSTRAINT #### A masked pattern was here
#### PRIMARY KEY (a) DISABLE NOVALIDATE RELY;
ALTER TABLE default.table7_n3 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -8992,7 +8992,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table9 ADD CONSTRAINT #### A masked pattern was here ####
PRIMARY KEY (a,b) DISABLE NOVALIDATE;
+ALTER TABLE default.table9 ADD CONSTRAINT #### A masked pattern was here ####
PRIMARY KEY (a,b) DISABLE NOVALIDATE RELY;
ALTER TABLE default.table9 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -9102,7 +9102,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table11 ADD CONSTRAINT pk11 PRIMARY KEY (a) DISABLE
NOVALIDATE;
+ALTER TABLE default.table11 ADD CONSTRAINT pk11 PRIMARY KEY (a) DISABLE
NOVALIDATE RELY;
ALTER TABLE default.table11 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -9213,7 +9213,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table13 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table13 CHANGE COLUMN a a string CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.table13 CHANGE COLUMN a a string CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
EXPLAIN select * from table13;
@@ -9267,7 +9267,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table14 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table14 CHANGE COLUMN a a string CONSTRAINT nn14_1 NOT
NULL DISABLE;
+ALTER TABLE default.table14 CHANGE COLUMN a a string CONSTRAINT nn14_1 NOT
NULL DISABLE NOVALIDATE RELY;
EXPLAIN select * from table14;
@@ -9429,7 +9429,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table17 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table17 ADD CONSTRAINT uk17_1 UNIQUE (a) DISABLE
NOVALIDATE;
+ALTER TABLE default.table17 ADD CONSTRAINT uk17_1 UNIQUE (a) DISABLE
NOVALIDATE RELY;
EXPLAIN select * from table17;
@@ -9484,7 +9484,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table18 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table18 ADD CONSTRAINT uk18_1 UNIQUE (b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table18 ADD CONSTRAINT uk18_1 UNIQUE (b) DISABLE
NOVALIDATE RELY;
EXPLAIN select * from table18;
@@ -9537,7 +9537,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table19 ADD CONSTRAINT pk19_1 PRIMARY KEY (b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table19 ADD CONSTRAINT pk19_1 PRIMARY KEY (b) DISABLE
NOVALIDATE RELY;
ALTER TABLE default.table19 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
ALTER TABLE default.table19 ADD CONSTRAINT fk19_2 FOREIGN KEY (a) REFERENCES
default.table19(b) DISABLE NOVALIDATE RELY;
@@ -9593,7 +9593,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table20 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table20 ADD CONSTRAINT uk20_1 UNIQUE (b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table20 ADD CONSTRAINT uk20_1 UNIQUE (b) DISABLE
NOVALIDATE RELY;
EXPLAIN select * from table20;
@@ -10678,7 +10678,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table3_n1 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-
+ALTER TABLE default.table3_n1 ADD CONSTRAINT fk1 FOREIGN KEY (x) REFERENCES
default.table2_n8(a) DISABLE NOVALIDATE RELY;
EXPLAIN select * from table3_n1;
@@ -10785,7 +10785,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table8 ADD CONSTRAINT pk8_2 PRIMARY KEY (a,b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table8 ADD CONSTRAINT pk8_2 PRIMARY KEY (a,b) DISABLE
NOVALIDATE RELY;
ALTER TABLE default.table8 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
@@ -11024,7 +11024,7 @@ TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
ALTER TABLE default.table13 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
-ALTER TABLE default.table13 CHANGE COLUMN a a string CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE;
+ALTER TABLE default.table13 CHANGE COLUMN a a string CONSTRAINT #### A masked
pattern was here #### NOT NULL DISABLE NOVALIDATE RELY;
EXPLAIN select * from table13;
@@ -11547,7 +11547,7 @@ LOCATION
TBLPROPERTIES (
'bucketing_version'='2',
#### A masked pattern was here ####
-ALTER TABLE default.table23 ADD CONSTRAINT pk23_1 PRIMARY KEY (b) DISABLE
NOVALIDATE;
+ALTER TABLE default.table23 ADD CONSTRAINT pk23_1 PRIMARY KEY (b) DISABLE
NOVALIDATE RELY;
ALTER TABLE default.table23 UPDATE STATISTICS
SET('numRows'='0','rawDataSize'='0' );
diff --git a/ql/src/test/results/clientpositive/llap/show_create_table.q.out
b/ql/src/test/results/clientpositive/llap/show_create_table.q.out
new file mode 100644
index 0000000..ef16c3f
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/show_create_table.q.out
@@ -0,0 +1,163 @@
+PREHOOK: query: CREATE TABLE TEST(
+ col1 varchar(100) NOT NULL COMMENT "comment for column 1",
+ col2 timestamp DEFAULT CURRENT_TIMESTAMP() COMMENT "comment for column 2",
+ col3 decimal CHECK (col3 + col4 > 1) enable novalidate rely,
+ col4 decimal NOT NULL,
+ col5 varchar(100),
+ primary key(col1, col2) disable novalidate rely,
+ constraint c3_c4_check CHECK((col3 + col4)/(col3 - col4) > 3) enable
novalidate norely,
+ constraint c4_unique UNIQUE(col4) disable novalidate rely)
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@TEST
+POSTHOOK: query: CREATE TABLE TEST(
+ col1 varchar(100) NOT NULL COMMENT "comment for column 1",
+ col2 timestamp DEFAULT CURRENT_TIMESTAMP() COMMENT "comment for column 2",
+ col3 decimal CHECK (col3 + col4 > 1) enable novalidate rely,
+ col4 decimal NOT NULL,
+ col5 varchar(100),
+ primary key(col1, col2) disable novalidate rely,
+ constraint c3_c4_check CHECK((col3 + col4)/(col3 - col4) > 3) enable
novalidate norely,
+ constraint c4_unique UNIQUE(col4) disable novalidate rely)
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@TEST
+PREHOOK: query: CREATE TABLE TEST2(
+ col varchar(100),
+ primary key(col) disable novalidate rely)
+ROW FORMAT SERDE
+'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@TEST2
+POSTHOOK: query: CREATE TABLE TEST2(
+ col varchar(100),
+ primary key(col) disable novalidate rely)
+ROW FORMAT SERDE
+'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@TEST2
+PREHOOK: query: CREATE TABLE TEST3(
+ col1 varchar(100) COMMENT "comment",
+ col2 timestamp,
+ col3 varchar(100),
+ foreign key(col1, col2) references TEST(col1, col2) disable novalidate rely,
+ foreign key(col3) references TEST2(col) disable novalidate norely)
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@TEST3
+POSTHOOK: query: CREATE TABLE TEST3(
+ col1 varchar(100) COMMENT "comment",
+ col2 timestamp,
+ col3 varchar(100),
+ foreign key(col1, col2) references TEST(col1, col2) disable novalidate rely,
+ foreign key(col3) references TEST2(col) disable novalidate norely)
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@TEST3
+PREHOOK: query: SHOW CREATE TABLE TEST
+PREHOOK: type: SHOW_CREATETABLE
+PREHOOK: Input: default@test
+POSTHOOK: query: SHOW CREATE TABLE TEST
+POSTHOOK: type: SHOW_CREATETABLE
+POSTHOOK: Input: default@test
+CREATE TABLE `test`(
+ `col1` varchar(100) COMMENT 'comment for column 1',
+ `col2` timestamp COMMENT 'comment for column 2',
+ `col3` decimal(10,0),
+ `col4` decimal(10,0),
+ `col5` varchar(100))
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+LOCATION
+#### A masked pattern was here ####
+TBLPROPERTIES (
+ 'bucketing_version'='2',
+#### A masked pattern was here ####
+ALTER TABLE default.test ADD CONSTRAINT #### A masked pattern was here ####
PRIMARY KEY (col1,col2) DISABLE NOVALIDATE RELY;
+ALTER TABLE default.test ADD CONSTRAINT c4_unique UNIQUE (col4) DISABLE
NOVALIDATE RELY;
+ALTER TABLE test.test CHANGE COLUMN col2 col2 timestamp CONSTRAINT DEFAULT
CURRENT_TIMESTAMP() ENABLE NOVALIDATE RELY;
+ALTER TABLE default.test ADD CONSTRAINT c3_c4_check CHECK ((col3 + col4)/(col3
- col4) > 3) ENABLE NOVALIDATE NORELY;
+ALTER TABLE default.test ADD CONSTRAINT #### A masked pattern was here ####
CHECK (col3 + col4 > 1) ENABLE NOVALIDATE RELY;
+ALTER TABLE default.test CHANGE COLUMN col1 col1 varchar(100) CONSTRAINT ####
A masked pattern was here #### NOT NULL ENABLE NOVALIDATE RELY;
+ALTER TABLE default.test CHANGE COLUMN col4 col4 decimal(10,0) CONSTRAINT ####
A masked pattern was here #### NOT NULL ENABLE NOVALIDATE RELY;
+PREHOOK: query: SHOW CREATE TABLE TEST2
+PREHOOK: type: SHOW_CREATETABLE
+PREHOOK: Input: default@test2
+POSTHOOK: query: SHOW CREATE TABLE TEST2
+POSTHOOK: type: SHOW_CREATETABLE
+POSTHOOK: Input: default@test2
+CREATE TABLE `test2`(
+ `col` varchar(100))
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+LOCATION
+#### A masked pattern was here ####
+TBLPROPERTIES (
+ 'bucketing_version'='2',
+#### A masked pattern was here ####
+ALTER TABLE default.test2 ADD CONSTRAINT #### A masked pattern was here ####
PRIMARY KEY (col) DISABLE NOVALIDATE RELY;
+PREHOOK: query: SHOW CREATE TABLE TEST3
+PREHOOK: type: SHOW_CREATETABLE
+PREHOOK: Input: default@test3
+POSTHOOK: query: SHOW CREATE TABLE TEST3
+POSTHOOK: type: SHOW_CREATETABLE
+POSTHOOK: Input: default@test3
+CREATE TABLE `test3`(
+ `col1` varchar(100) COMMENT 'comment',
+ `col2` timestamp,
+ `col3` varchar(100))
+ROW FORMAT SERDE
+ 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
+STORED AS INPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
+OUTPUTFORMAT
+ 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
+LOCATION
+#### A masked pattern was here ####
+TBLPROPERTIES (
+ 'bucketing_version'='2',
+#### A masked pattern was here ####
+ALTER TABLE default.test3 ADD CONSTRAINT #### A masked pattern was here ####
FOREIGN KEY (col1) REFERENCES default.test(col1) DISABLE NOVALIDATE RELY;
+ALTER TABLE default.test3 ADD CONSTRAINT #### A masked pattern was here ####
FOREIGN KEY (col2) REFERENCES default.test(col2) DISABLE NOVALIDATE RELY;