Reference function arguments by name

Started by Erwin Brandstetteralmost 13 years ago8 messagesdocs
Jump to latest
#1Erwin Brandstetter
brandstetter@falter.at

Hi!

The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html

argname

The name of an argument. Some languages (currently only PL/pgSQL)
let you use the name in the function body. For other languages the
name of an input argument is just extra documentation, so far as
the function itself is concerned; but you can use input argument
names when calling a function to improve readability (see Section
4.3
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html&gt;).
In any case, the name of an output argument is significant,
because it defines the column name in the result row type. (If you
omit the name for an output argument, the system will choose a
default column name.)

This has changed in version 9.2. SQL functions can reference the name. Ergo:

s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)

I tested it and it's /correctly /documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS

Arguments of a SQL function can be referenced in the function body

using either names or numbers.

Regards
Erwin

#2Sian Mountbatten
poenikatu@fastmail.co.uk
In reply to: Erwin Brandstetter (#1)
Re: Reference function arguments by name

On 2013-05-09 21:46, Erwin Brandstetter wrote:

Hi!

The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html

argname

The name of an argument. Some languages (currently only PL/pgSQL)
let you use the name in the function body. For other languages
the name of an input argument is just extra documentation, so far
as the function itself is concerned; but you can use input
argument names when calling a function to improve readability
(see Section 4.3
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html&gt;).
In any case, the name of an output argument is significant,
because it defines the column name in the result row type. (If
you omit the name for an output argument, the system will choose
a default column name.)

This has changed in version 9.2. SQL functions can reference the name.
Ergo:

s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)

I tested it and it's /correctly /documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS

Arguments of a SQL function can be referenced in the function body

using either names or numbers.

Regards
Erwin

It looks strongly that you people are of the opinion that "the code
documents
itself". That is a myth produced by lazy software developers who cannot
document
their code properly. You ought to be using Cweb for C code. Have a look at
the code for SQLite to see how comments in C can be used to provide decent
documentation

Fortunately, I do not use C. I prefer a HIGH-level language :-)

--
Sian Mountbatten
Algol 68 Specialist

#3Erwin Brandstetter
brandstetter@falter.at
In reply to: Sian Mountbatten (#2)
Re: Reference function arguments by name

On 11.05.2013 10:13, Sian Mountbatten wrote:

On 2013-05-09 21:46, Erwin Brandstetter wrote:

Hi!

The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html

argname

The name of an argument. Some languages (currently only
PL/pgSQL) let you use the name in the function body. For other
languages the name of an input argument is just extra
documentation, so far as the function itself is concerned; but
you can use input argument names when calling a function to
improve readability (see Section 4.3
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html&gt;).
In any case, the name of an output argument is significant,
because it defines the column name in the result row type. (If
you omit the name for an output argument, the system will choose
a default column name.)

This has changed in version 9.2. SQL functions can reference the
name. Ergo:

s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)

I tested it and it's /correctly /documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS

Arguments of a SQL function can be referenced in the function body

using either names or numbers.

Regards
Erwin

It looks strongly that you people are of the opinion that "the code
documents
itself". That is a myth produced by lazy software developers who
cannot document
their code properly. You ought to be using Cweb for C code. Have a look at
the code for SQLite to see how comments in C can be used to provide decent
documentation

Fortunately, I do not use C. I prefer a HIGH-level language :-)

This reply seems unrelated.

Regards
Erwin

#4Sian Mountbatten
poenikatu@fastmail.co.uk
In reply to: Erwin Brandstetter (#3)
Re: Reference function arguments by name

On 2013-05-11 09:20, Erwin Brandstetter wrote:

On 11.05.2013 10:13, Sian Mountbatten wrote:

On 2013-05-09 21:46, Erwin Brandstetter wrote:

Hi!

The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html

argname

The name of an argument. Some languages (currently only
PL/pgSQL) let you use the name in the function body. For other
languages the name of an input argument is just extra
documentation, so far as the function itself is concerned; but
you can use input argument names when calling a function to
improve readability (see Section 4.3
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html&gt;).
In any case, the name of an output argument is significant,
because it defines the column name in the result row type. (If
you omit the name for an output argument, the system will
choose a default column name.)

This has changed in version 9.2. SQL functions can reference the
name. Ergo:

s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)

I tested it and it's /correctly /documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS

Arguments of a SQL function can be referenced in the function body

using either names or numbers.

Regards
Erwin

It looks strongly that you people are of the opinion that "the code
documents
itself". That is a myth produced by lazy software developers who
cannot document
their code properly. You ought to be using Cweb for C code. Have a
look at
the code for SQLite to see how comments in C can be used to provide
decent
documentation

Fortunately, I do not use C. I prefer a HIGH-level language :-)

This reply seems unrelated.

Regards
Erwin

The point is that documentation of the code always takes 2nd place. Why
argue about readability when the only help you give to anybody who is
unfortunate enough to have to maintain your software are names of variables?
It doesn't matter a damn whether you put names in or out of a function.
What matters is what help do you give your hapless maintainers?

Sincerely

--
Sian Mountbatten
Algol 68 Specialist

#5Erik Rijkers
er@xs4all.nl
In reply to: Erwin Brandstetter (#1)
Re: Reference function arguments by name

On Thu, May 9, 2013 22:46, Erwin Brandstetter wrote:

This has changed in version 9.2. SQL functions can reference the name. Ergo:

s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)

Here is the patch (don't feed them Battenbergs).

Attachments:

sql-createfunction.diffapplication/octet-stream; name=sql-createfunction.diffDownload+1-1
#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Erwin Brandstetter (#1)
Re: Reference function arguments by name

Erwin Brandstetter <brandstetter@falter.at> writes:

The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html

The name of an argument. Some languages (currently only PL/pgSQL)
let you use the name in the function body. For other languages the

This has changed in version 9.2. SQL functions can reference the name.

Ah, this comment got missed when updating the docs for that feature.
Fixed, thanks for spotting it!

regards, tom lane

--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs

#7Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#6)
Re: Reference function arguments by name

On Sat, 2013-05-11 at 12:10 -0400, Tom Lane wrote:

Erwin Brandstetter <brandstetter@falter.at> writes:

The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html

The name of an argument. Some languages (currently only PL/pgSQL)
let you use the name in the function body. For other languages the

This has changed in version 9.2. SQL functions can reference the name.

Ah, this comment got missed when updating the docs for that feature.
Fixed, thanks for spotting it!

According to https://wiki.postgresql.org/wiki/PL_Matrix, several other
languages support named parameters. Maybe the parenthetical remark
should be removed altogether.

--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs

#8Peter Eisentraut
peter_e@gmx.net
In reply to: Peter Eisentraut (#7)
Re: Reference function arguments by name

On Mon, 2013-06-17 at 23:15 -0400, Peter Eisentraut wrote:

On Sat, 2013-05-11 at 12:10 -0400, Tom Lane wrote:

Erwin Brandstetter <brandstetter@falter.at> writes:

The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html

The name of an argument. Some languages (currently only PL/pgSQL)
let you use the name in the function body. For other languages the

This has changed in version 9.2. SQL functions can reference the name.

Ah, this comment got missed when updating the docs for that feature.
Fixed, thanks for spotting it!

According to https://wiki.postgresql.org/wiki/PL_Matrix, several other
languages support named parameters. Maybe the parenthetical remark
should be removed altogether.

Fixed, and also updated the equally wrong claim in 8.4...9.1 that only
PL/pgSQL supports this.

--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs