private List<OrcSplit> generateSplitsFromStripes(boolean[] includeStripe) throws IOException {
      List<OrcSplit> splits = new ArrayList<>(stripes.size());
      // if we didn't have predicate pushdown, read everything
      if (includeStripe == null) {
        includeStripe = new boolean[stripes.size()];
        Arrays.fill(includeStripe, true);
      }

      OffsetAndLength current = new OffsetAndLength();
      int idx = -1;
      for (StripeInformation stripe : stripes) {
        idx++;

        if (!includeStripe[idx]) {
          // create split for the previous unfinished stripe
          if (current.offset != -1) {
            splits.add(createSplit(current.offset, current.length, orcTail));
            current.offset = -1;
          }
          continue;
        }

        current = generateOrUpdateSplit(
            splits, current, stripe.getOffset(), stripe.getLength(), orcTail);
      }
      generateLastSplit(splits, current, orcTail);

      // Add uncovered ACID delta splits.
      splits.addAll(deltaSplits);
      return splits;
    }
Divide the adjacent stripes in the file into input splits based on the
block size and the configured minimum and maximum sizes.
ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java