void copyColumn(ColumnVector destination,
                  ColumnVector source,
                  int sourceOffset,
                  int length) {
    if (source.getClass() == LongColumnVector.class) {
      copyLongColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == DoubleColumnVector.class) {
      copyDoubleColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == BytesColumnVector.class) {
      copyBytesColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == TimestampColumnVector.class) {
      copyTimestampColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == DecimalColumnVector.class) {
      copyDecimalColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == StructColumnVector.class) {
      copyStructColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == UnionColumnVector.class) {
      copyUnionColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == ListColumnVector.class) {
      copyListColumn(destination, source, sourceOffset, length);
    } else if (source.getClass() == MapColumnVector.class) {
      copyMapColumn(destination, source, sourceOffset, length);
    }
  }
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