On Wed, Sep 2, 2020 at 7:35 AM Andres Freund <and...@anarazel.de> wrote:
> Hi, > > on a regular basis I remember a builtin function's name, or can figure it > out > using \df etc, but can't remember the argument order. A typical example is > regexp_*, where I never remember whether the pattern or the input string > comes > first. > > Unfortunatly \df does not really help with that: > > =# \df regexp_split_to_table > > ┌────────────┬───────────────────────┬──────────────────┬─────────────────────┬──────┐ > │ Schema │ Name │ Result data type │ Argument data > types │ Type │ > > ├────────────┼───────────────────────┼──────────────────┼─────────────────────┼──────┤ > │ pg_catalog │ regexp_split_to_table │ SETOF text │ text, text > │ func │ > │ pg_catalog │ regexp_split_to_table │ SETOF text │ text, text, > text │ func │ > > └────────────┴───────────────────────┴──────────────────┴─────────────────────┴──────┘ > > If the parameters were named however, it'd be clear: > > =# CREATE OR REPLACE FUNCTION pg_catalog.regexp_split_to_table(string > text, pattern text) > RETURNS SETOF text > LANGUAGE internal > IMMUTABLE PARALLEL SAFE STRICT > AS $function$regexp_split_to_table_no_flags$function$ > > =# \df regexp_split_to_table > > ┌────────────┬───────────────────────┬──────────────────┬──────────────────────────┬──────┐ > │ Schema │ Name │ Result data type │ Argument data > types │ Type │ > > ├────────────┼───────────────────────┼──────────────────┼──────────────────────────┼──────┤ > │ pg_catalog │ regexp_split_to_table │ SETOF text │ string text, > pattern text │ func │ > │ pg_catalog │ regexp_split_to_table │ SETOF text │ text, text, > text │ func │ > > └────────────┴───────────────────────┴──────────────────┴──────────────────────────┴──────┘ > > (I intentionally left the three parameter version unchanged, to show the > difference) > > > In the docs we already name the parameters using SQL like syntax, see [1]. > How > about we actually do so for at least the more common / complicated > functions? > +many I find myself in the same situation a lot. I've never realized that's an implementation detail and not something fundamental preventing the parameters from being named in the built-in functions. -- Alex