private static boolean determineSplitIncludes(
      StripeData slice, boolean[] splitIncludes, boolean[] writerIncludes) {
    ColumnEncoding[] cacheEncodings = slice.getEncodings();
    assert cacheEncodings != null;
    boolean hasAllData = true;
    for (int colIx = 0; colIx < cacheEncodings.length; ++colIx) {
      if (!splitIncludes[colIx]) continue;
      if ((cacheEncodings[colIx] != null) != (slice.getData()[colIx] != null)) {
        throw new AssertionError("Inconsistent cache slice " + slice);
      }
      if (cacheEncodings[colIx] != null) {
        splitIncludes[colIx] = false;
      } else {
        hasAllData = false;
      }
    }
    if (LlapIoImpl.CACHE_LOGGER.isTraceEnabled()) {
      LlapIoImpl.LOG.trace("Includes accounting for cached data: before " + DebugUtils.toString(
        writerIncludes) + ", after " + DebugUtils.toString(splitIncludes));
    }
    return hasAllData;
  }
For !doesSourceHaveIncludes case, stores global column IDs to verify writer columns.
For doesSourceHaveIncludes case, stores source column IDs used to map things.
llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/SerDeEncodedDataReader.java