@Test
  public void testAcidTableStreamingBISplitGeneration() throws Exception {
    List<OrcSplit> result = null;
    List<MockFile> files = new LinkedList<>();

    // 1 complete delta file + 1 incomplete where more rows were committed than written to disk
    // (1000) + (15/95)
    files.addAll(mockDeltaWithSideFileForStreaming("delta_0000001_0000010_0000", 1000, 1000));
    files.addAll(mockDeltaWithSideFileForStreaming("delta_0000011_0000020_0000", 15, 95));
    result = splitsForStreamingAcidTable(files);
    files.clear();
    assertEquals(1000, result.get(0).getLength());
    assertEquals(15, result.get(1).getLength());

    // 1 incomplete delta with 2 complete and 1 incomplete blocks: (1000 + 1000 + 500/800)
    files.addAll(mockDeltaWithSideFileForStreaming("delta_0000021_0000030_0000", 2500, 2800));
    result = splitsForStreamingAcidTable(files);
    files.clear();
    assertEquals(1000, result.get(0).getLength());
    assertEquals(1000, result.get(1).getLength());
    assertEquals(500, result.get(2).getLength());

    // 1 complete delta but shorter flush_length - though I think this is almost impossible
    files.addAll(mockDeltaWithSideFileForStreaming("delta_0000021_0000030_0000", 1000, 450));
    result = splitsForStreamingAcidTable(files);
    files.clear();
    assertEquals(450, result.get(0).getLength());

  }
Test column projection when using ACID.
ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java