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 cfece77..11c359a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -963,9 +963,22 @@ private int alterIndex(Hive db, AlterIndexDesc alterIndex) throws HiveException } if (baseParts != null) { for (Partition p : baseParts) { - FileSystem fs = p.getDataLocation().getFileSystem(db.getConf()); - FileStatus fss = fs.getFileStatus(p.getDataLocation()); - basePartTs.put(p.getSpec(), fss.getModificationTime()); + Path dataLocation = p.getDataLocation(); + FileSystem fs = dataLocation.getFileSystem(db.getConf()); + Long lastModificationTime = null; + FileStatus[] parts = fs.listStatus(dataLocation, FileUtils.HIDDEN_FILES_PATH_FILTER); + if (parts != null && parts.length > 0) { + for (FileStatus status : parts) { + if (lastModificationTime == null + || status.getModificationTime() > lastModificationTime) { + lastModificationTime = status.getModificationTime(); + } + } + } else { + FileStatus fss = fs.getFileStatus(p.getDataLocation()); + lastModificationTime = fss.getModificationTime(); + } + basePartTs.put(p.getSpec(), lastModificationTime); } } } else {