diff --git standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java index 4508e054dc..31e70a7131 100644 --- standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java +++ standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java @@ -1860,6 +1860,44 @@ public void testCreateTableSettingId() throws Exception { } } + @Test public void testAlterTableRenameBucketedColumn() throws Exception { + String dbName = "alterTblDb"; + String tblName = "altertbl"; + + try { + client.dropTable(dbName, tblName); + silentDropDatabase(dbName); + + new DatabaseBuilder().setName(dbName).create(client, conf); + + ArrayList origCols = new ArrayList<>(2); + origCols.add(new FieldSchema("originalColName", ColumnType.STRING_TYPE_NAME, "")); + origCols.add(new FieldSchema("income", ColumnType.INT_TYPE_NAME, "")); + Table origTbl = new TableBuilder().setDbName(dbName).setTableName(tblName).setCols(origCols) + .setBucketCols(Lists.newArrayList("originalColName")).build(conf); + client.createTable(origTbl); + + // rename column, is bucketedCols updated? + ArrayList colsUpdated = new ArrayList<>(origCols); + colsUpdated.set(0, new FieldSchema("updatedColName", ColumnType.STRING_TYPE_NAME, "")); + Table tblUpdated = client.getTable(dbName, tblName); + tblUpdated.getSd().setCols(colsUpdated); + client.alter_table(dbName, tblName, tblUpdated); + + Table resultTbl = client.getTable(dbName, tblUpdated.getTableName()); + assertEquals("Num bucketed columns is not 1 ", 1, resultTbl.getSd().getBucketCols().size()); + assertEquals("Bucketed column names incorrect", colsUpdated.get(0).getName(), + resultTbl.getSd().getBucketCols().get(0)); + + } catch (Exception e) { + System.err.println(StringUtils.stringifyException(e)); + System.err.println("testSimpleTable() failed."); + throw e; + } finally { + silentDropDatabase(dbName); + } + } + @Test public void testAlterTable() throws Exception { String dbName = "alterdb";