final boolean nextFromCurrentFile(OrcStruct next) throws IOException {
      if (getRecordReader().hasNext()) {
        //RecordReader.getRowNumber() produces a file-global row number even with PPD
        long nextRowId = getRecordReader().getRowNumber() + getRowIdOffset();
        // have to do initialization here, because the super's constructor
        // calls next and thus we need to initialize before our constructor
        // runs
        if (next == null) {
          nextRecord = new OrcStruct(OrcRecordUpdater.FIELDS);
          IntWritable operation =
              new IntWritable(OrcRecordUpdater.INSERT_OPERATION);
          nextRecord().setFieldValue(OrcRecordUpdater.OPERATION, operation);
          nextRecord().setFieldValue(OrcRecordUpdater.CURRENT_WRITEID,
              new LongWritable(writeId));
          nextRecord().setFieldValue(OrcRecordUpdater.ORIGINAL_WRITEID,
              new LongWritable(writeId));
          nextRecord().setFieldValue(OrcRecordUpdater.BUCKET,
              new IntWritable(bucketProperty));
          nextRecord().setFieldValue(OrcRecordUpdater.ROW_ID,
              new LongWritable(nextRowId));
          nextRecord().setFieldValue(OrcRecordUpdater.ROW,
              getRecordReader().next(null));
        } else {
          nextRecord = next;
          ((IntWritable) next.getFieldValue(OrcRecordUpdater.OPERATION))
              .set(OrcRecordUpdater.INSERT_OPERATION);
          ((LongWritable) next.getFieldValue(OrcRecordUpdater.ORIGINAL_WRITEID))
              .set(writeId);
          ((IntWritable) next.getFieldValue(OrcRecordUpdater.BUCKET))
              .set(bucketProperty);
          ((LongWritable) next.getFieldValue(OrcRecordUpdater.CURRENT_WRITEID))
              .set(writeId);
          ((LongWritable) next.getFieldValue(OrcRecordUpdater.ROW_ID))
              .set(nextRowId);
          nextRecord().setFieldValue(OrcRecordUpdater.ROW,
              getRecordReader().next(OrcRecordUpdater.getRow(next)));
        }
        key.setValues(writeId, bucketProperty, nextRowId, writeId, false);
        if (getMaxKey() != null && key.compareRow(getMaxKey()) > 0) {
          if (LOG.isDebugEnabled()) {
            LOG.debug("key " + key + " > maxkey " + getMaxKey());
          }
          return false;//reached End Of Split
        }
        return true;
      }
      return false;//reached EndOfFile
    }
The cumulative number of rows in all files of the logical bucket that precede the file
represented by {@link #getRecordReader()}
ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java