diff --git itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java index 6efb334..5b4d747 100644 --- itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java +++ itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java @@ -273,6 +273,24 @@ public static void partitionTester(HiveMetaStoreClient client, HiveConf hiveConf } assertTrue("Partitions are not same", part.equals(part_get)); + // check null cols schemas for a partition + List vals6 = makeVals("2016-02-22 00:00:00", "16"); + Partition part6 = makePartitionObject(dbName, tblName, vals6, tbl, "/part5"); + part6.getSd().setCols(null); + // partition creation is allowed + LOG.info("Creating parting with null field schema" + part6); + client.add_partition(part6); + LOG.info("Listing partitions..."); + final List partitions = client.listPartitions(dbName, tblName, (short) -1); + boolean foundPart = false; + for (Partition p : partitions) { + if (p.getValues().equals(vals6)) { + assertNull(p.getSd().getCols()); + foundPart = true; + } + } + assertNotNull(foundPart); + String partName = "ds=" + FileUtils.escapePathName("2008-07-01 14:13:12") + "/hr=14"; String part2Name = "ds=" + FileUtils.escapePathName("2008-07-01 14:13:12") + "/hr=15"; String part3Name = "ds=" + FileUtils.escapePathName("2008-07-02 14:13:12") + "/hr=15"; @@ -306,7 +324,7 @@ public static void partitionTester(HiveMetaStoreClient client, HiveConf hiveConf partialVals.clear(); partialVals.add(""); partialNames = client.listPartitionNames(dbName, tblName, partialVals, (short) -1); - assertTrue("Should have returned 4 partition names", partialNames.size() == 4); + assertTrue("Should have returned 5 partition names", partialNames.size() == 5); assertTrue("Not all part names returned", partialNames.containsAll(partNames)); // Test partition listing with a partial spec - hr is specified but ds is not