diff --git hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java index 763af9f..44847b4 100644 --- hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java +++ hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java @@ -1008,4 +1008,42 @@ public Boolean exec(Tuple tuple) throws IOException { } } + @Test + public void partialSchemaSepcification() throws Exception { + driver.run("drop table if exists T"); + String createTable = "create table T(a int, b int, c string, d string) stored as " + getStorageFormat(); + int retCode = driver.run(createTable).getResponseCode(); + if (retCode != 0) { + throw new IOException("Failed to create table."); + } + String[] inputData = {"1\t20\tstr1\tstr20", "2\t30\tstr2\tstr30", "3\t40\tstr3\tstr40", "4\t50\tstr4\tstr40"}; + HcatTestUtils.createTestDataFile(INPUT_FILE_NAME, inputData); + int lineNumber = 1; + PigServer ps = createPigServer(true); + logAndRegister(ps, "A1 = LOAD '" + INPUT_FILE_NAME + "' USING PigStorage() AS (a:int,b:int,c:chararray,d:chararray);", lineNumber++); + logAndRegister(ps, "ROW1 = FILTER A1 BY a == 1;", lineNumber++); + logAndRegister(ps, "ABC = FOREACH ROW1 GENERATE a,b,c;", lineNumber++); + logAndRegister(ps, "STORE ABC INTO 'T' USING " + HCatStorer.class.getName() + "();", lineNumber++); + driver.run("select * from T"); + ArrayList results = new ArrayList(); + driver.getResults(results); + Assert.assertEquals(1, results.size()); + + logAndRegister(ps, "ROW2 = FILTER A1 BY a == 2;", lineNumber++); + logAndRegister(ps, "ACB = FOREACH ROW2 GENERATE a,c,b;", lineNumber++); + logAndRegister(ps, "STORE ACB INTO 'T' USING " + HCatStorer.class.getName() + "();", lineNumber++); + driver.run("select * from T"); + results = new ArrayList(); + driver.getResults(results); + Assert.assertEquals(2, results.size()); + + logAndRegister(ps, "ROW3 = FILTER A1 BY a == 3;", lineNumber++); + logAndRegister(ps, "ABD = FOREACH ROW3 GENERATE a,b,d;", lineNumber++); + logAndRegister(ps, "STORE ABD INTO 'T' USING " + HCatStorer.class.getName() + "();", lineNumber); + driver.run("select * from T"); + results = new ArrayList(); + driver.getResults(results); + Assert.assertEquals(3, results.size()); + driver.run("drop table T"); + } }