protected BinaryData readBinary() throws IOException {

    String s = readString();

    if (s == null) {
      return null;
    }

    BinaryData data = scanner.convertToBinary(s);

    return data;
  }
  protected IntervalSecondData readDaySecondInterval(Type type) throws IOException {

    String s = readString();

    if (s == null) {
      return null;
    }

    s = s.trim();

    if (s.length() == 0) {
      return null;
    }

    return (IntervalSecondData) scanner.newInterval(s, (IntervalType) type);
  }
  protected Object readOther() throws IOException {

    String s = readString();

    if (s == null) {
      return null;
    }

    BinaryData data = scanner.convertToBinary(s);

    if (data.length(null) == 0) {
      return null;
    }

    return new JavaObjectData(data.getBytes());
  }
  protected TimestampData readTimestamp(Type type) throws IOException {

    String s = readString();

    if (s == null) {
      return null;
    }

    s = s.trim();

    if (s.length() == 0) {
      return null;
    }

    return scanner.newTimestamp(s);
  }