void copyBytesColumn(ColumnVector destination,
                       ColumnVector source,
                       int sourceOffset,
                       int length) {
    BytesColumnVector castedSource = (BytesColumnVector) source;
    BytesColumnVector castedDestination = (BytesColumnVector) destination;
    castedDestination.isRepeating = castedSource.isRepeating;
    castedDestination.noNulls = castedSource.noNulls;
    if (source.isRepeating) {
      castedDestination.isNull[0] = castedSource.isNull[0];
      if (!castedSource.isNull[0]) {
        castedDestination.setVal(0, castedSource.vector[0],
            castedSource.start[0], castedSource.length[0]);
      }
    } else {
      if (!castedSource.noNulls) {
        for(int r=0; r < length; ++r) {
          castedDestination.isNull[r] = castedSource.isNull[sourceOffset + r];
          if (!castedDestination.isNull[r]) {
            castedDestination.setVal(r, castedSource.vector[sourceOffset + r],
                castedSource.start[sourceOffset + r],
                castedSource.length[sourceOffset + r]);
          }
        }
      } else {
        for (int r = 0; r < length; ++r) {
          castedDestination.setVal(r, castedSource.vector[sourceOffset + r],
              castedSource.start[sourceOffset + r],
              castedSource.length[sourceOffset + r]);
        }
      }
    }
  }
If the current batch is empty, get a new one.
@return true if we have rows available.
@throws IOException
ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java