code: private void readMetadata() throws SQLException {
      if (valid) {
        return;
      }
  
      String[] metaInfos = queryMetaInfos(isFunction);
      String paramList = metaInfos[0];
      String functionReturn = metaInfos[1];
  
      parseParamList(isFunction, paramList);
  
      // parse type of the return value (for functions)
      if (isFunction) {
        parseFunctionReturnParam(functionReturn);
      }
  
    }
docs: Read procedure metadata from mysql.proc table(column param_list).
  
  @throws SQLException if data doesn't correspond.