docs: @Override
  	public Row nextRecord(Row row) throws IOException {
  		try {
  			if (!hasNext) {
  				return null;
  			}
  			for (int pos = 0; pos < row.getArity(); pos++) {
  				row.setField(pos, resultSet.getObject(pos + 1));
  			}
  			//update hasNext after we've read the record
  			hasNext = resultSet.next();
  			return row;
  		} catch (SQLException se) {
  			throw new IOException("Couldn't read data - " + se.getMessage(), se);
  		} catch (NullPointerException npe) {
  			throw new IOException("Couldn't access resultSet", npe);
  		}
  	}