From commits-return-33883-archive-asf-public=cust-asf.ponee.io@hive.apache.org Wed May 30 15:24:17 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 2BAA5180676 for ; Wed, 30 May 2018 15:24:16 +0200 (CEST) Received: (qmail 58234 invoked by uid 500); 30 May 2018 13:24:16 -0000 Mailing-List: contact commits-help@hive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hive-dev@hive.apache.org Delivered-To: mailing list commits@hive.apache.org Received: (qmail 58222 invoked by uid 99); 30 May 2018 13:24:16 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 May 2018 13:24:16 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 0C09EE0AD2; Wed, 30 May 2018 13:24:16 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: spena@apache.org To: commits@hive.apache.org Date: Wed, 30 May 2018 13:24:16 -0000 Message-Id: <18eea744458f42969aff6d267f8b76c1@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/6] hive git commit: HIVE-19374: Parse and process ALTER TABLE SET OWNER command syntax (Sergio Pena, reviewed by Vihang Karajgaonkar) Repository: hive Updated Branches: refs/heads/branch-2 d988d4aef -> fbee8fef6 HIVE-19374: Parse and process ALTER TABLE SET OWNER command syntax (Sergio Pena, reviewed by Vihang Karajgaonkar) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fbee8fef Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fbee8fef Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fbee8fef Branch: refs/heads/branch-2 Commit: fbee8fef69cde550f2676c9b8bde68368cfe5f89 Parents: 72f75d3 Author: Sergio Pena Authored: Wed May 9 22:37:09 2018 -0700 Committer: Sergio Pena Committed: Wed May 30 08:21:12 2018 -0500 ---------------------------------------------------------------------- .../org/apache/hadoop/hive/ql/exec/DDLTask.java | 5 +++++ .../apache/hadoop/hive/ql/metadata/Table.java | 15 +++++++++++++ .../formatting/JsonMetaDataFormatter.java | 1 + .../formatting/MetaDataFormatUtils.java | 1 + .../hive/ql/parse/DDLSemanticAnalyzer.java | 19 ++++++++++++++++- .../apache/hadoop/hive/ql/parse/HiveParser.g | 8 +++++++ .../hive/ql/parse/SemanticAnalyzerFactory.java | 2 ++ .../hadoop/hive/ql/plan/AlterTableDesc.java | 22 +++++++++++++++++++- .../hadoop/hive/ql/plan/HiveOperation.java | 1 + .../authorization/plugin/HiveOperationType.java | 1 + .../plugin/sqlstd/Operation2Privilege.java | 2 ++ .../beeline/escape_comments.q.out | 6 ++++-- 12 files changed, 79 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index e9c0625..af97703 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -4073,6 +4073,11 @@ public class DDLTask extends Task implements Serializable { } tbl.setStoredAsSubDirectories(alterTbl.isStoredAsSubDirectories()); + } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.OWNER) { + if (alterTbl.getOwnerPrincipal() != null) { + tbl.setOwner(alterTbl.getOwnerPrincipal().getName()); + tbl.setOwnerType(alterTbl.getOwnerPrincipal().getType()); + } } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ALTERSKEWEDLOCATION) { // process location one-by-one Map,String> locMaps = alterTbl.getSkewedLocations(); http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java index e0e57c6..5adb612 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java @@ -40,6 +40,7 @@ import org.apache.hadoop.hive.metastore.TableType; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.metastore.api.Order; +import org.apache.hadoop.hive.metastore.api.PrincipalType; import org.apache.hadoop.hive.metastore.api.SerDeInfo; import org.apache.hadoop.hive.metastore.api.SkewedInfo; import org.apache.hadoop.hive.metastore.api.StorageDescriptor; @@ -723,6 +724,12 @@ public class Table implements Serializable { } /** + * @return The owner type of the table. + * @see org.apache.hadoop.hive.metastore.api.Table#getOwnerType() + */ + public PrincipalType getOwnerType() { return tTable.getOwnerType(); } + + /** * @return The table parameters. * @see org.apache.hadoop.hive.metastore.api.Table#getParameters() */ @@ -747,6 +754,14 @@ public class Table implements Serializable { } /** + * @param ownerType + * @see org.apache.hadoop.hive.metastore.api.Table#setOwnerType(org.apache.hadoop.hive.metastore.api.PrincipalType) + */ + public void setOwnerType(PrincipalType ownerType) { + tTable.setOwnerType(ownerType); + } + + /** * @param retention * @see org.apache.hadoop.hive.metastore.api.Table#setRetention(int) */ http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java index 3315806..b8348fc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/JsonMetaDataFormatter.java @@ -189,6 +189,7 @@ public class JsonMetaDataFormatter implements MetaDataFormatter { MapBuilder builder = MapBuilder.create(); builder.put("tableName", tbl.getTableName()); + builder.put("ownerType", (tbl.getOwnerType() != null) ? tbl.getOwnerType().name() : "null"); builder.put("owner", tbl.getOwner()); builder.put("location", tblLoc); builder.put("inputFormat", inputFormattCls); http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java index f73c610..44cd06e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java @@ -432,6 +432,7 @@ public final class MetaDataFormatUtils { private static void getTableMetaDataInformation(StringBuilder tableInfo, Table tbl, boolean isOutputPadded) { formatOutput("Database:", tbl.getDbName(), tableInfo); + formatOutput("OwnerType:", (tbl.getOwnerType() != null) ? tbl.getOwnerType().name() : "null", tableInfo); formatOutput("Owner:", tbl.getOwner(), tableInfo); formatOutput("CreateTime:", formatDate(tbl.getTTable().getCreateTime()), tableInfo); formatOutput("LastAccessTime:", formatDate(tbl.getTTable().getLastAccessTime()), tableInfo); http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index b215095..0a5ca7c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -323,7 +323,9 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { } else if(ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_DROPCONSTRAINT) { analyzeAlterTableDropConstraint(ast, tableName); } else if(ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_ADDCONSTRAINT) { - analyzeAlterTableAddConstraint(ast, tableName); + analyzeAlterTableAddConstraint(ast, tableName); + } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_OWNER) { + analyzeAlterTableOwner(ast, tableName); } break; } @@ -1560,6 +1562,21 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { } } + private void analyzeAlterTableOwner(ASTNode ast, String tableName) throws SemanticException { + PrincipalDesc ownerPrincipal = AuthorizationParseUtils.getPrincipalDesc((ASTNode) ast.getChild(0)); + + if (ownerPrincipal.getType() == null) { + throw new SemanticException("Owner type can't be null in alter table set owner command"); + } + + if (ownerPrincipal.getName() == null) { + throw new SemanticException("Owner name can't be null in alter table set owner command"); + } + + AlterTableDesc alterTblDesc = new AlterTableDesc(tableName, ownerPrincipal); + rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc), conf)); + } + private void analyzeAlterTableLocation(ASTNode ast, String tableName, HashMap partSpec) throws SemanticException { http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 024b5d3..0d27899 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -188,6 +188,7 @@ TOK_ALTERTABLE_DROPCONSTRAINT; TOK_ALTERTABLE_ADDCONSTRAINT; TOK_ALTERINDEX_REBUILD; TOK_ALTERINDEX_PROPERTIES; +TOK_ALTERTABLE_OWNER; TOK_MSCK; TOK_SHOWDATABASES; TOK_SHOWTABLES; @@ -1141,6 +1142,7 @@ alterTableStatementSuffix | alterStatementSuffixDropConstraint | alterStatementSuffixAddConstraint | partitionSpec? alterTblPartitionStatementSuffix -> alterTblPartitionStatementSuffix partitionSpec? + | alterStatementSuffixSetOwner ; alterTblPartitionStatementSuffix @@ -1472,6 +1474,12 @@ alterStatementSuffixCompact -> ^(TOK_ALTERTABLE_COMPACT $compactType blocking? tableProperties?) ; +alterStatementSuffixSetOwner +@init { pushMsg("alter table set owner", state); } +@after { popMsg(state); } + : KW_SET KW_OWNER principalName + -> ^(TOK_ALTERTABLE_OWNER principalName) + ; fileFormat @init { pushMsg("file format specification", state); } http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java index 9686ca3..3f3c861 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java @@ -96,6 +96,7 @@ public final class SemanticAnalyzerFactory { commandType.put(HiveParser.TOK_ALTERVIEW_DROPPROPERTIES, HiveOperation.ALTERVIEW_PROPERTIES); commandType.put(HiveParser.TOK_ALTERVIEW_ADDPARTS, HiveOperation.ALTERTABLE_ADDPARTS); commandType.put(HiveParser.TOK_ALTERVIEW_DROPPARTS, HiveOperation.ALTERTABLE_DROPPARTS); + commandType.put(HiveParser.TOK_ALTERTABLE_OWNER, HiveOperation.ALTERTABLE_OWNER); commandType.put(HiveParser.TOK_ALTERVIEW_RENAME, HiveOperation.ALTERVIEW_RENAME); commandType.put(HiveParser.TOK_ALTERVIEW, HiveOperation.ALTERVIEW_AS); commandType.put(HiveParser.TOK_QUERY, HiveOperation.QUERY); @@ -213,6 +214,7 @@ public final class SemanticAnalyzerFactory { case HiveParser.TOK_ALTERTABLE_DROPPROPERTIES: case HiveParser.TOK_ALTERTABLE_EXCHANGEPARTITION: case HiveParser.TOK_ALTERTABLE_SKEWED: + case HiveParser.TOK_ALTERTABLE_OWNER: case HiveParser.TOK_ALTERTABLE_DROPCONSTRAINT: case HiveParser.TOK_ALTERTABLE_ADDCONSTRAINT: queryState.setCommandType(commandType.get(child.getType())); http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java index b83c16d..6508e4b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java @@ -58,7 +58,8 @@ public class AlterTableDesc extends DDLDesc implements Serializable { DROPPARTITION("drop partition"), RENAMEPARTITION("rename partition"), ADDSKEWEDBY("add skew column"), ALTERSKEWEDLOCATION("alter skew location"), ALTERBUCKETNUM("alter bucket number"), ALTERPARTITION("alter partition"), COMPACT("compact"), - TRUNCATE("truncate"), MERGEFILES("merge files"), DROPCONSTRAINT("drop constraint"), ADDCONSTRAINT("add constraint"); + TRUNCATE("truncate"), MERGEFILES("merge files"), DROPCONSTRAINT("drop constraint"), ADDCONSTRAINT("add constraint"), + OWNER("set owner"); ; private final String name; @@ -121,6 +122,7 @@ public class AlterTableDesc extends DDLDesc implements Serializable { String dropConstraintName; List primaryKeyCols; List foreignKeyCols; + PrincipalDesc ownerPrincipal; public AlterTableDesc() { } @@ -281,6 +283,24 @@ public class AlterTableDesc extends DDLDesc implements Serializable { op = AlterTableTypes.ADDCONSTRAINT; } + public AlterTableDesc(String tableName, PrincipalDesc ownerPrincipal) { + op = AlterTableTypes.OWNER; + this.oldName = tableName; + this.ownerPrincipal = ownerPrincipal; + } + + /** + * @param ownerPrincipal the owner principal of the table + */ + public void setOwnerPrincipal(PrincipalDesc ownerPrincipal) { + this.ownerPrincipal = ownerPrincipal; + } + + @Explain(displayName="owner") + public PrincipalDesc getOwnerPrincipal() { + return this.ownerPrincipal; + } + @Explain(displayName = "new columns", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED }) public List getNewColsString() { return Utilities.getFieldSchemaString(getNewCols()); http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java index 57bf0f7..5b5e94d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java @@ -48,6 +48,7 @@ public enum HiveOperation { ALTERTABLE_ARCHIVE("ALTERTABLE_ARCHIVE", new Privilege[]{Privilege.ALTER_DATA}, null), ALTERTABLE_UNARCHIVE("ALTERTABLE_UNARCHIVE", new Privilege[]{Privilege.ALTER_DATA}, null), ALTERTABLE_PROPERTIES("ALTERTABLE_PROPERTIES", new Privilege[]{Privilege.ALTER_METADATA}, null), + ALTERTABLE_OWNER("ALTERTABLE_OWNER", null, null), ALTERTABLE_SERIALIZER("ALTERTABLE_SERIALIZER", new Privilege[]{Privilege.ALTER_METADATA}, null), ALTERPARTITION_SERIALIZER("ALTERPARTITION_SERIALIZER", new Privilege[]{Privilege.ALTER_METADATA}, null), ALTERTABLE_SERDEPROPERTIES("ALTERTABLE_SERDEPROPERTIES", new Privilege[]{Privilege.ALTER_METADATA}, null), http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java index 330f9ac..7e6342b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java @@ -50,6 +50,7 @@ public enum HiveOperationType { ALTERTABLE_ARCHIVE, ALTERTABLE_UNARCHIVE, ALTERTABLE_PROPERTIES, + ALTERTABLE_OWNER, ALTERTABLE_SERIALIZER, ALTERTABLE_PARTCOLTYPE, ALTERTABLE_DROPCONSTRAINT, http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java index e8cdc9a..26a49d1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java @@ -194,6 +194,8 @@ public class Operation2Privilege { (OWNER_PRIV_AR, OWNER_PRIV_AR)); op2Priv.put(HiveOperationType.ALTERTABLE_PROPERTIES, PrivRequirement.newIOPrivRequirement (OWNER_PRIV_AR, OWNER_PRIV_AR)); + op2Priv.put(HiveOperationType.ALTERTABLE_OWNER, PrivRequirement.newIOPrivRequirement +(OWNER_PRIV_AR, OWNER_PRIV_AR)); op2Priv.put(HiveOperationType.ALTERTABLE_SERIALIZER, PrivRequirement.newIOPrivRequirement (OWNER_PRIV_AR, OWNER_PRIV_AR)); op2Priv.put(HiveOperationType.ALTERTABLE_PARTCOLTYPE, PrivRequirement.newIOPrivRequirement http://git-wip-us.apache.org/repos/asf/hive/blob/fbee8fef/ql/src/test/results/clientpositive/beeline/escape_comments.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/beeline/escape_comments.q.out b/ql/src/test/results/clientpositive/beeline/escape_comments.q.out index 726213a..e7cfc9a 100644 --- a/ql/src/test/results/clientpositive/beeline/escape_comments.q.out +++ b/ql/src/test/results/clientpositive/beeline/escape_comments.q.out @@ -220,6 +220,7 @@ Shutting down query describe formatted escape_comments_tbl1 '','NULL','NULL' '# Detailed Table Information','NULL','NULL' 'Database: ','escape_comments_db ','NULL' +'OwnerType: ','USER ','NULL' 'Owner: ','user ','NULL' 'CreateTime: ','!!TIMESTAMP!!','NULL' 'LastAccessTime: ','UNKNOWN ','NULL' @@ -246,7 +247,7 @@ Shutting down query describe formatted escape_comments_tbl1 'Sort Columns: ','[] ','NULL' 'Storage Desc Params:','NULL','NULL' '','serialization.format','1 ' -37 rows selected +38 rows selected >>> describe pretty escape_comments_tbl1; Acquired the compile lock. Compiling commandqueryId=(!!{queryId}!!): describe pretty escape_comments_tbl1 @@ -348,6 +349,7 @@ Shutting down query describe formatted escape_comments_view1 '','NULL','NULL' '# Detailed Table Information','NULL','NULL' 'Database: ','escape_comments_db ','NULL' +'OwnerType: ','USER ','NULL' 'Owner: ','user ','NULL' 'CreateTime: ','!!TIMESTAMP!!','NULL' 'LastAccessTime: ','UNKNOWN ','NULL' @@ -370,7 +372,7 @@ Shutting down query describe formatted escape_comments_view1 'View Original Text: ','select col1 from escape_comments_tbl1','NULL' 'View Expanded Text: ','SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1`','NULL' 'View Rewrite Enabled:','No ','NULL' -28 rows selected +29 rows selected >>> show formatted index on escape_comments_tbl1; Acquired the compile lock. Compiling commandqueryId=(!!{queryId}!!): show formatted index on escape_comments_tbl1