diff --git metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java index 86565a4..c9faffc 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java @@ -776,7 +776,10 @@ private void updatePartColumnStats(RawStore msdb, String dbName, String tableNam return; } if (oldPartition.getSd() != null && newPart.getSd() != null) { - List oldCols = oldPartition.getSd().getCols(); + List oldCols = oldPartition.getSd().getCols(); + if (oldCols == null) { + oldCols = new ArrayList<>(); + } if (!MetaStoreUtils.areSameColumns(oldCols, newPart.getSd().getCols())) { updatePartColumnStatsForAlterColumns(msdb, oldPartition, oldPartName, partVals, oldCols, newPart); } diff --git metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java index 9ea6ac4..97cb3e6 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java @@ -641,7 +641,9 @@ static boolean isCascadeNeededInAlterTable(Table oldTable, Table newTable) { } static boolean areSameColumns(List oldCols, List newCols) { - if (oldCols.size() != newCols.size()) { + if (oldCols == null || newCols == null) { + return oldCols == newCols; + } else if (oldCols.size() != newCols.size()) { return false; } else { for (int i = 0; i < oldCols.size(); i++) { @@ -682,7 +684,7 @@ static private boolean areColTypesCompatible(String oldType, String newType) { * validate column type * * if it is predefined, yes. otherwise no - * @param name + * @param type * @return */ static public String validateColumnType(String type) {