Thread: Re: add function argument name to substring and substr

Re: add function argument name to substring and substr

From
"David G. Johnston"
Date:
On Tue, Jan 21, 2025 at 11:21 PM jian he <jian.universality@gmail.com> wrote:
hi.

attached patch add function argument name to function substring and substr
you can see the visual changes.
mater behavior:

\df substring
                             List of functions
   Schema   |   Name    | Result data type |   Argument data types   | Type
------------+-----------+------------------+-------------------------+------
 pg_catalog | substring | bit              | bit, integer            | func
 pg_catalog | substring | bit              | bit, integer, integer   | func
 pg_catalog | substring | bytea         | bytea, integer          | func
 pg_catalog | substring | bytea         | bytea, integer, integer | func
 pg_catalog | substring | text             | text, integer           | func
 pg_catalog | substring | text             | text, integer, integer  | func
 pg_catalog | substring | text             | text, text              | func
 pg_catalog | substring | text             | text, text, text        | func

with patch
                                          List of functions
   Schema   |   Name    | Result data type |               Argument
data types                | Type
------------+-----------+------------------+--------------------------------------------------+------
 pg_catalog | substring | bit              | bits bit, start integer
                       | func
 pg_catalog | substring | bit              | bits bit, start integer,
count integer           | func
 pg_catalog | substring | bytea         | bytes bytea, start integer
                    | func
 pg_catalog | substring | bytea         | bytes bytea, start integer,
count integer        | func
 pg_catalog | substring | text             | string text, pattern text
                       | func
 pg_catalog | substring | text             | string text, pattern
text, escape_character text | func
 pg_catalog | substring | text             | string text, start
integer                       | func
 pg_catalog | substring | text             | string text, start
integer, count integer        | func

I did the same change to the function substr.
since 9.7.2. SIMILAR TO Regular Expressions we use
substring(string, pattern, escape-character)
so i refactor the substring function argument name to
substring(string text, pattern text, escape_character text).

we can make it as ``substring(string text, pattern text, escape text).``
then in 9.7.2, we need to change the substring synopsis section.


 
one thing I am not sure is about
9.4. String Functions and Operators
Table 9.9. SQL String Functions and Operators.
Do we need entries for substring related functions?

current signature
substring ( string text [ FROM start integer ] [ FOR count integer ] )
is kind of different from
substring(string text, start integer, count integer).
since the previous one can allow keywords "FROM", "FOR", the latter one won't.


Table 9.9 limits itself to those functions defined in the SQL standard; which are basically the ones that use keywords instead of commas.

The substring(string, start, count) function you note is already covered in Table 9.10 but we spell it substr(...)

I don't think adding yet more spellings of this same function is warranted or desirable at this point.  I'd maybe add a note if substring(,,,) works to substr saying that substring is a valid alias.  I could be convinced to just document though.

David J.