docs: private long getFastLong(int columnIndex) throws SQLException, NumberFormatException {
  
      byte[] bytes = thisRow[columnIndex - 1];
  
      if (bytes.length == 0) {
        throw FAST_NUMBER_FAILED;
      }
  
      long val = 0;
      int start;
      boolean neg;
      if (bytes[0] == '-') {
        neg = true;
        start = 1;
        if (bytes.length == 1 || bytes.length > 19) {
          throw FAST_NUMBER_FAILED;
        }
      } else {
        start = 0;
        neg = false;
        if (bytes.length > 18) {
          throw FAST_NUMBER_FAILED;
        }
      }
  
      while (start < bytes.length) {
        byte b = bytes[start++];
        if (b < '0' || b > '9') {
          throw FAST_NUMBER_FAILED;
        }
  
        val *= 10;
        val += b - '0';
      }
  
      if (neg) {
        val = -val;
      }
  
      return val;
    }