diff --git data/files/grad2.avsc data/files/grad2.avsc new file mode 100644 index 0000000000000000000000000000000000000000..44f797ff49e51548e4afad9c862b6470f7b78ef4 --- /dev/null +++ data/files/grad2.avsc @@ -0,0 +1,9 @@ +{"namespace": "devmode", +"type": "record", +"name": "gradinfo", +"fields": [ +{"name": "colX", "type": "string"}, +{"name": "colY", "type": "string"}, +{"name": "colZ", "type": "double"} +] +} diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 20c2c3294ab638b0d5284b9d24865f901ab6d033..663520671b547d862a93356ffc51fe3de079149d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -112,6 +112,7 @@ import org.apache.hadoop.hive.metastore.api.WMResourcePlanStatus; import org.apache.hadoop.hive.metastore.api.WMTrigger; import org.apache.hadoop.hive.metastore.api.WMValidateResourcePlanResponse; +import org.apache.hadoop.hive.metastore.conf.MetastoreConf; import org.apache.hadoop.hive.metastore.txn.TxnStore; import org.apache.hadoop.hive.metastore.utils.MetaStoreUtils; import org.apache.hadoop.hive.ql.CompilationOpContext; @@ -460,6 +461,8 @@ public int execute(DriverContext driverContext) { return archive(db, simpleDesc, driverContext); } else if (simpleDesc.getType() == AlterTableTypes.UNARCHIVE) { return unarchive(db, simpleDesc); + } else if (simpleDesc.getType() == AlterTableTypes.UPDATECOLUMNS) { + return updateColumns(db, simpleDesc); } else if (simpleDesc.getType() == AlterTableTypes.COMPACT) { return compact(db, simpleDesc); } @@ -4583,6 +4586,31 @@ private int addConstraints(Hive db, AlterTableDesc alterTbl) return 0; } + private int updateColumns(Hive db, AlterTableSimpleDesc alterTbl) + throws HiveException { + String tableName = alterTbl.getTableName(); + Table tbl = db.getTable(tableName); + String serializationLib = tbl.getSd().getSerdeInfo().getSerializationLib(); + if (MetastoreConf.getStringCollection(conf, + MetastoreConf.ConfVars.SERDES_USING_METASTORE_FOR_SCHEMA).contains(serializationLib)) { + throw new HiveException(tableName + " has serde " + serializationLib + " for which schema " + + "is already handled by HMS."); + } + Deserializer deserializer = tbl.getDeserializer(true); + try { + LOG.info("Updating metastore columns for table: {}", tableName); + final List fields = HiveMetaStoreUtils.getFieldsFromDeserializer( + tbl.getTableName(), deserializer); + tbl.setFields(fields); + db.alterTable(tbl.getTableName(), tbl, true, null); + } catch (org.apache.hadoop.hive.serde2.SerDeException | MetaException e) { + LOG.error("alter table update columns: {}", e); + throw new HiveException(e, ErrorMsg.GENERIC_ERROR); + } + + return 0; + } + /** * Drop a given table or some partitions. DropTableDesc is currently used for both. * diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index b766791ebc85ce45c59183dd752459c455edeb35..fe19470f25f4ec9721f684fed75594984553f1a6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -363,6 +363,8 @@ public void analyzeInternal(ASTNode input) throws SemanticException { analyzeAlterTableDropConstraint(ast, tableName); } else if(ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_ADDCONSTRAINT) { analyzeAlterTableAddConstraint(ast, tableName); + } else if(ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_UPDATECOLUMNS) { + analyzeAlterTableUpdateColumns(ast, tableName); } break; } @@ -2398,6 +2400,14 @@ private void analyzeAlterTableAddConstraint(ASTNode ast, String tableName) alterTblDesc), conf)); } + private void analyzeAlterTableUpdateColumns(ASTNode ast, String tableName) + throws SemanticException { + AlterTableSimpleDesc alterTblDesc = new AlterTableSimpleDesc(tableName, null, AlterTableTypes.UPDATECOLUMNS); + + rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), + alterTblDesc), conf)); + } + static HashMap getProps(ASTNode prop) { // Must be deterministic order map for consistent q-test output across Java versions HashMap mapProp = new LinkedHashMap(); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 907362312da329010dcde53d8fb6f5790f022fbd..c51dd5f718e3242ef48cc024218bc77372f1d7f2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -189,6 +189,7 @@ TOK_ALTERTABLE_CLUSTER_SORT; TOK_ALTERTABLE_COMPACT; TOK_ALTERTABLE_DROPCONSTRAINT; TOK_ALTERTABLE_ADDCONSTRAINT; +TOK_ALTERTABLE_UPDATECOLUMNS; TOK_ALTERINDEX_REBUILD; TOK_ALTERINDEX_PROPERTIES; TOK_MSCK; @@ -1209,6 +1210,7 @@ alterTableStatementSuffix | alterStatementPartitionKeyType | alterStatementSuffixDropConstraint | alterStatementSuffixAddConstraint + | alterStatementSuffixUpdateColumns | partitionSpec? alterTblPartitionStatementSuffix -> alterTblPartitionStatementSuffix partitionSpec? ; @@ -1321,6 +1323,13 @@ alterStatementSuffixAddConstraint -> ^(TOK_ALTERTABLE_ADDCONSTRAINT alterConstraintWithName) ; +alterStatementSuffixUpdateColumns +@init { pushMsg("update columns statement", state); } +@after { popMsg(state); } + : KW_UPDATE KW_COLUMNS + -> ^(TOK_ALTERTABLE_UPDATECOLUMNS) + ; + alterStatementSuffixDropConstraint @init { pushMsg("drop constraint statement", state); } @after { popMsg(state); } diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java index 2e1f50e641c297914831ec1e4de2c6304408cca1..82fa8e0bb8f447ee29a12ef62253e62b3b300a77 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java @@ -66,6 +66,7 @@ HiveOperation.ALTERTABLE_EXCHANGEPARTITION); commandType.put(HiveParser.TOK_ALTERTABLE_DROPCONSTRAINT, HiveOperation.ALTERTABLE_DROPCONSTRAINT); commandType.put(HiveParser.TOK_ALTERTABLE_ADDCONSTRAINT, HiveOperation.ALTERTABLE_ADDCONSTRAINT); + commandType.put(HiveParser.TOK_ALTERTABLE_UPDATECOLUMNS, HiveOperation.ALTERTABLE_UPDATECOLUMNS); commandType.put(HiveParser.TOK_SHOWDATABASES, HiveOperation.SHOWDATABASES); commandType.put(HiveParser.TOK_SHOWTABLES, HiveOperation.SHOWTABLES); commandType.put(HiveParser.TOK_SHOWCOLUMNS, HiveOperation.SHOWCOLUMNS); @@ -247,6 +248,7 @@ private static BaseSemanticAnalyzer getInternal(QueryState queryState, ASTNode t case HiveParser.TOK_ALTERTABLE_SKEWED: case HiveParser.TOK_ALTERTABLE_DROPCONSTRAINT: case HiveParser.TOK_ALTERTABLE_ADDCONSTRAINT: + case HiveParser.TOK_ALTERTABLE_UPDATECOLUMNS: queryState.setCommandType(commandType.get(child.getType())); return new DDLSemanticAnalyzer(queryState); } diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java index 00c038110793335c0fe9eb5fde00d07d4d59aeff..88fcbf0417d9d7fe78fc4350099ba8ecac9fc1d4 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java @@ -64,7 +64,8 @@ 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"), + UPDATECOLUMNS("update columns"); ; private final String name; diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java index 3938bd5ae878ebe9cf897bc78edd15f005f025cd..8ae3ce596fc343490888cebea1267f2d73797259 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java @@ -132,6 +132,8 @@ new Privilege[]{Privilege.ALTER_METADATA}, null), ALTERTABLE_ADDCONSTRAINT("ALTERTABLE_ADDCONSTRAINT", new Privilege[]{Privilege.ALTER_METADATA}, null), + ALTERTABLE_UPDATECOLUMNS("ALTERTABLE_UPDATECOLUMNS", + new Privilege[]{Privilege.ALTER_METADATA}, null), ALTERVIEW_RENAME("ALTERVIEW_RENAME", new Privilege[] {Privilege.ALTER_METADATA}, null), ALTERVIEW_AS("ALTERVIEW_AS", new Privilege[] {Privilege.ALTER_METADATA}, null), ALTERTABLE_COMPACT("ALTERTABLE_COMPACT", new Privilege[]{Privilege.SELECT}, new Privilege[]{Privilege.ALTER_DATA}), diff --git ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java index 5d6905a4e650a01eaeb10d85759ab1ced01d9b1b..60599f3206bf6a35eec0cf1f826740b93f09f4d1 100644 --- ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java +++ ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java @@ -130,6 +130,7 @@ ALTERVIEW_AS, ALTER_MATERIALIZED_VIEW_REWRITE, ALTERTABLE_COMPACT, + ALTERTABLE_UPDATECOLUMNS, SHOW_COMPACTIONS, SHOW_TRANSACTIONS, ABORT_TRANSACTIONS, diff --git ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java index a55e66b4b67bad99996495f88abffc4366be3df8..e408ea4175b9b974d79d45d0ac132da932b608fd 100644 --- ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java +++ ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java @@ -233,6 +233,8 @@ public HivePrivilegeObjectType getObjectType() { op2Priv.put(HiveOperationType.ALTERTBLPART_SKEWED_LOCATION, PrivRequirement.newIOPrivRequirement (OWNER_PRIV_AR, INS_SEL_DEL_NOGRANT_AR)); op2Priv.put(HiveOperationType.ALTERTABLE_COMPACT, PrivRequirement.newIOPrivRequirement +(OWNER_PRIV_AR, OWNER_PRIV_AR)); + op2Priv.put(HiveOperationType.ALTERTABLE_UPDATECOLUMNS, PrivRequirement.newIOPrivRequirement (OWNER_PRIV_AR, OWNER_PRIV_AR)); op2Priv.put(HiveOperationType.TRUNCATETABLE, PrivRequirement.newIOPrivRequirement (OWNER_PRIV_AR, OWNER_PRIV_AR)); diff --git ql/src/test/queries/clientnegative/hms_using_serde_alter_table_update_columns.q ql/src/test/queries/clientnegative/hms_using_serde_alter_table_update_columns.q new file mode 100644 index 0000000000000000000000000000000000000000..e323d1ca84bf95402dae45d73d3fb29584c545d3 --- /dev/null +++ ql/src/test/queries/clientnegative/hms_using_serde_alter_table_update_columns.q @@ -0,0 +1,6 @@ +-- verify that for HMS using serde's UPDATE COLUMNS returns error + +CREATE TABLE hmsserdetable (name string) STORED AS PARQUET; +DESCRIBE hmsserdetable; + +ALTER TABLE hmsserdetable UPDATE COLUMNS; \ No newline at end of file diff --git ql/src/test/queries/clientpositive/avro_alter_table_update_columns.q ql/src/test/queries/clientpositive/avro_alter_table_update_columns.q new file mode 100644 index 0000000000000000000000000000000000000000..a6f211ea8833d1f5f1cddb6c45a55922668f4237 --- /dev/null +++ ql/src/test/queries/clientpositive/avro_alter_table_update_columns.q @@ -0,0 +1,66 @@ +-- verify schema changes introduced in avro.schema.literal/url sync with HMS if ALTER TABLE UPDATE COLUMNS is called + +CREATE TABLE avro_extschema_literal + STORED AS AVRO + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"number", "type":"int" }, + { "name":"first_name", "type":"string" }, + { "name":"last_name", "type":"string" } + ] }'); +DESCRIBE avro_extschema_literal; + +ALTER TABLE avro_extschema_literal SET + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"newCol", "type":"int" } + ] }'); +DESCRIBE avro_extschema_literal; + +ALTER TABLE avro_extschema_literal UNSET TBLPROPERTIES ('avro.schema.literal'); +DESCRIBE avro_extschema_literal; + +ALTER TABLE avro_extschema_literal SET + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"newCol", "type":"int" } + ] }'); +ALTER TABLE avro_extschema_literal UPDATE COLUMNS; +DESCRIBE avro_extschema_literal; + +ALTER TABLE avro_extschema_literal UNSET TBLPROPERTIES ('avro.schema.literal'); +DESCRIBE avro_extschema_literal; + +dfs -cp ${system:hive.root}data/files/grad.avsc ${system:test.tmp.dir}/; +dfs -cp ${system:hive.root}data/files/grad2.avsc ${system:test.tmp.dir}/; + + +CREATE TABLE avro_extschema_url + STORED AS AVRO + TBLPROPERTIES ('avro.schema.url'='${system:test.tmp.dir}/grad.avsc'); +DESCRIBE avro_extschema_url; + +ALTER TABLE avro_extschema_url SET + TBLPROPERTIES ('avro.schema.url'='${system:test.tmp.dir}/grad2.avsc'); +DESCRIBE avro_extschema_url; + +ALTER TABLE avro_extschema_url UNSET TBLPROPERTIES ('avro.schema.url'); +DESCRIBE avro_extschema_url; + + +ALTER TABLE avro_extschema_url SET + TBLPROPERTIES ('avro.schema.url'='${system:test.tmp.dir}/grad2.avsc'); +ALTER TABLE avro_extschema_url UPDATE COLUMNS; +DESCRIBE avro_extschema_url; + +ALTER TABLE avro_extschema_url UNSET TBLPROPERTIES ('avro.schema.url'); +DESCRIBE avro_extschema_url; \ No newline at end of file diff --git ql/src/test/results/clientnegative/hms_using_serde_alter_table_update_columns.q.out ql/src/test/results/clientnegative/hms_using_serde_alter_table_update_columns.q.out new file mode 100644 index 0000000000000000000000000000000000000000..7c82270698d2f607ccf51e66c817a17a448b3871 --- /dev/null +++ ql/src/test/results/clientnegative/hms_using_serde_alter_table_update_columns.q.out @@ -0,0 +1,18 @@ +PREHOOK: query: CREATE TABLE hmsserdetable (name string) STORED AS PARQUET +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@hmsserdetable +POSTHOOK: query: CREATE TABLE hmsserdetable (name string) STORED AS PARQUET +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hmsserdetable +PREHOOK: query: DESCRIBE hmsserdetable +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@hmsserdetable +POSTHOOK: query: DESCRIBE hmsserdetable +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@hmsserdetable +name string +PREHOOK: query: ALTER TABLE hmsserdetable UPDATE COLUMNS +PREHOOK: type: ALTERTABLE_UPDATECOLUMNS +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. default.hmsserdetable has serde org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe for which schema is already handled by HMS. diff --git ql/src/test/results/clientpositive/avro_alter_table_update_columns.q.out ql/src/test/results/clientpositive/avro_alter_table_update_columns.q.out new file mode 100644 index 0000000000000000000000000000000000000000..35eeacfa9e42888230f4bba652c9b13f15dbe299 --- /dev/null +++ ql/src/test/results/clientpositive/avro_alter_table_update_columns.q.out @@ -0,0 +1,234 @@ +PREHOOK: query: CREATE TABLE avro_extschema_literal + STORED AS AVRO + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"number", "type":"int" }, + { "name":"first_name", "type":"string" }, + { "name":"last_name", "type":"string" } + ] }') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@avro_extschema_literal +POSTHOOK: query: CREATE TABLE avro_extschema_literal + STORED AS AVRO + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"number", "type":"int" }, + { "name":"first_name", "type":"string" }, + { "name":"last_name", "type":"string" } + ] }') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@avro_extschema_literal +PREHOOK: query: DESCRIBE avro_extschema_literal +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_literal +POSTHOOK: query: DESCRIBE avro_extschema_literal +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_literal +number int +first_name string +last_name string +PREHOOK: query: ALTER TABLE avro_extschema_literal SET + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"newCol", "type":"int" } + ] }') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_literal +PREHOOK: Output: default@avro_extschema_literal +POSTHOOK: query: ALTER TABLE avro_extschema_literal SET + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"newCol", "type":"int" } + ] }') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_literal +POSTHOOK: Output: default@avro_extschema_literal +PREHOOK: query: DESCRIBE avro_extschema_literal +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_literal +POSTHOOK: query: DESCRIBE avro_extschema_literal +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_literal +newcol int +PREHOOK: query: ALTER TABLE avro_extschema_literal UNSET TBLPROPERTIES ('avro.schema.literal') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_literal +PREHOOK: Output: default@avro_extschema_literal +POSTHOOK: query: ALTER TABLE avro_extschema_literal UNSET TBLPROPERTIES ('avro.schema.literal') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_literal +POSTHOOK: Output: default@avro_extschema_literal +PREHOOK: query: DESCRIBE avro_extschema_literal +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_literal +POSTHOOK: query: DESCRIBE avro_extschema_literal +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_literal +number int +first_name string +last_name string +PREHOOK: query: ALTER TABLE avro_extschema_literal SET + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"newCol", "type":"int" } + ] }') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_literal +PREHOOK: Output: default@avro_extschema_literal +POSTHOOK: query: ALTER TABLE avro_extschema_literal SET + TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "ext_schema", + "type": "record", + "fields": [ + { "name":"newCol", "type":"int" } + ] }') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_literal +POSTHOOK: Output: default@avro_extschema_literal +PREHOOK: query: ALTER TABLE avro_extschema_literal UPDATE COLUMNS +PREHOOK: type: ALTERTABLE_UPDATECOLUMNS +POSTHOOK: query: ALTER TABLE avro_extschema_literal UPDATE COLUMNS +POSTHOOK: type: ALTERTABLE_UPDATECOLUMNS +PREHOOK: query: DESCRIBE avro_extschema_literal +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_literal +POSTHOOK: query: DESCRIBE avro_extschema_literal +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_literal +newcol int +PREHOOK: query: ALTER TABLE avro_extschema_literal UNSET TBLPROPERTIES ('avro.schema.literal') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_literal +PREHOOK: Output: default@avro_extschema_literal +POSTHOOK: query: ALTER TABLE avro_extschema_literal UNSET TBLPROPERTIES ('avro.schema.literal') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_literal +POSTHOOK: Output: default@avro_extschema_literal +PREHOOK: query: DESCRIBE avro_extschema_literal +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_literal +POSTHOOK: query: DESCRIBE avro_extschema_literal +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_literal +newcol int +PREHOOK: query: CREATE TABLE avro_extschema_url + STORED AS AVRO +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@avro_extschema_url +POSTHOOK: query: CREATE TABLE avro_extschema_url + STORED AS AVRO +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@avro_extschema_url +PREHOOK: query: DESCRIBE avro_extschema_url +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_url +POSTHOOK: query: DESCRIBE avro_extschema_url +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_url +col1 string +col2 string +col3 double +col4 string +col5 string +col6 int +PREHOOK: query: ALTER TABLE avro_extschema_url SET +#### A masked pattern was here #### +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_url +PREHOOK: Output: default@avro_extschema_url +POSTHOOK: query: ALTER TABLE avro_extschema_url SET +#### A masked pattern was here #### +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_url +POSTHOOK: Output: default@avro_extschema_url +PREHOOK: query: DESCRIBE avro_extschema_url +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_url +POSTHOOK: query: DESCRIBE avro_extschema_url +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_url +colx string +coly string +colz double +PREHOOK: query: ALTER TABLE avro_extschema_url UNSET TBLPROPERTIES ('avro.schema.url') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_url +PREHOOK: Output: default@avro_extschema_url +POSTHOOK: query: ALTER TABLE avro_extschema_url UNSET TBLPROPERTIES ('avro.schema.url') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_url +POSTHOOK: Output: default@avro_extschema_url +PREHOOK: query: DESCRIBE avro_extschema_url +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_url +POSTHOOK: query: DESCRIBE avro_extschema_url +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_url +col1 string +col2 string +col3 double +col4 string +col5 string +col6 int +PREHOOK: query: ALTER TABLE avro_extschema_url SET +#### A masked pattern was here #### +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_url +PREHOOK: Output: default@avro_extschema_url +POSTHOOK: query: ALTER TABLE avro_extschema_url SET +#### A masked pattern was here #### +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_url +POSTHOOK: Output: default@avro_extschema_url +PREHOOK: query: ALTER TABLE avro_extschema_url UPDATE COLUMNS +PREHOOK: type: ALTERTABLE_UPDATECOLUMNS +POSTHOOK: query: ALTER TABLE avro_extschema_url UPDATE COLUMNS +POSTHOOK: type: ALTERTABLE_UPDATECOLUMNS +PREHOOK: query: DESCRIBE avro_extschema_url +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_url +POSTHOOK: query: DESCRIBE avro_extschema_url +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_url +colx string +coly string +colz double +PREHOOK: query: ALTER TABLE avro_extschema_url UNSET TBLPROPERTIES ('avro.schema.url') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@avro_extschema_url +PREHOOK: Output: default@avro_extschema_url +POSTHOOK: query: ALTER TABLE avro_extschema_url UNSET TBLPROPERTIES ('avro.schema.url') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@avro_extschema_url +POSTHOOK: Output: default@avro_extschema_url +PREHOOK: query: DESCRIBE avro_extschema_url +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@avro_extschema_url +POSTHOOK: query: DESCRIBE avro_extschema_url +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@avro_extschema_url +colx string +coly string +colz double