docs: public T mapRow(ResultSet rs) throws SQLException {
      Map<String, Object> map = new HashMap<String, Object>();
      ResultSetMetaData metadata = rs.getMetaData();
  
      for (int i = 1; i <= metadata.getColumnCount(); ++i) {
        String label = metadata.getColumnLabel(i);
  
        final Object value;
        // calling getObject on a BLOB/CLOB produces weird results
        switch (metadata.getColumnType(i)) {
          case Types.BLOB:
            value = rs.getBytes(i);
            break;
          case Types.CLOB:
            value = rs.getString(i);
            break;
          default:
            value = rs.getObject(i);
        }
  
        // don't use table name extractor because we don't want aliased table name
        boolean overwrite = this.tableName != null && this.tableName.equals(metadata.getTableName(i));
        String tableName = TABLE_NAME_EXTRACTOR.getTableName(metadata, i);
        if (tableName != null && !tableName.isEmpty()) {
          String qualifiedName = tableName + "." + metadata.getColumnName(i);
          add(map, qualifiedName, value, overwrite);
        }
  
        add(map, label, value, overwrite);
      }
  
      return objectMapper.convertValue(map, type);
    }