text: CREATE OR REPLACE FUNCTION cs_parse_url(
      v_url IN VARCHAR,
      v_host OUT VARCHAR,  -- This will be passed back
      v_path OUT VARCHAR,  -- This one too
      v_query OUT VARCHAR) -- And this one
  AS $$
  DECLARE
      a_pos1 INTEGER;
      a_pos2 INTEGER;
  BEGIN
      v_host := NULL;
      v_path := NULL;
      v_query := NULL;
      a_pos1 := instr(v_url, '//');
  
      IF a_pos1 = 0 THEN
          RETURN;
      END IF;
      a_pos2 := instr(v_url, '/', a_pos1 + 2);
      IF a_pos2 = 0 THEN
          v_host := substr(v_url, a_pos1 + 2);
          v_path := '/';
          RETURN;
      END IF;
  
      v_host := substr(v_url, a_pos1 + 2, a_pos2 - a_pos1 - 2);
      a_pos1 := instr(v_url, '?', a_pos2 + 1);
  
      IF a_pos1 = 0 THEN
          v_path := substr(v_url, a_pos2);
          RETURN;
      END IF;
  
      v_path := substr(v_url, a_pos2, a_pos1 - a_pos2);
      v_query := substr(v_url, a_pos1 + 1);
  END;
  $$ LANGUAGE plpgsql;
  