generated constraint name

Started by PG Bug reporting formabout 1 year ago9 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/17/ddl-alter.html
Description:

url:
https://www.postgresql.org/docs/current/ddl-alter.html#DDL-ALTER-REMOVING-A-CONSTRAINT

(If you are dealing with a generated constraint name like $2, don't forget
that you'll need to double-quote it to make it a valid identifier.)

If I have a constraint with the name $2, are there other constraints with
names $1, $3 ... ?

#2David G. Johnston
david.g.johnston@gmail.com
In reply to: PG Bug reporting form (#1)
Re: generated constraint name

On Sunday, April 6, 2025, PG Doc comments form <noreply@postgresql.org>
wrote:

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/17/ddl-alter.html
Description:

url:
https://www.postgresql.org/docs/current/ddl-alter.html#
DDL-ALTER-REMOVING-A-CONSTRAINT

(If you are dealing with a generated constraint name like $2, don't forget
that you'll need to double-quote it to make it a valid identifier.)

If I have a constraint with the name $2, are there other constraints with
names $1, $3 ... ?

I feel like that whole parenthetical should just go away. The point of the
comment is to remind the user of how identifier values work with respect to
mandatory double quoting. The name itself, other than having a $, has no
special importance.

David J.

#3Yaroslav Saburov
y.saburov@gmail.com
In reply to: David G. Johnston (#2)
Re: generated constraint name

You do not provide the output of the table description, but write that the system generated the name $2

Show quoted text

7 квіт. 2025 р. о 16:34 David G. Johnston <david.g.johnston@gmail.com> пише:

On Sunday, April 6, 2025, PG Doc comments form <noreply@postgresql.org> wrote:

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/17/ddl-alter.html
Description:

url:
https://www.postgresql.org/docs/current/ddl-alter.html#DDL-ALTER-REMOVING-A-CONSTRAINT

(If you are dealing with a generated constraint name like $2, don't forget
that you'll need to double-quote it to make it a valid identifier.)

If I have a constraint with the name $2, are there other constraints with
names $1, $3 ... ?

I feel like that whole parenthetical should just go away. The point of the comment is to remind the user of how identifier values work with respect to mandatory double quoting. The name itself, other than having a $, has no special importance.

David J.

#4Peter Eisentraut
peter_e@gmx.net
In reply to: David G. Johnston (#2)
Re: generated constraint name

On 07.04.25 15:34, David G. Johnston wrote:

On Sunday, April 6, 2025, PG Doc comments form <noreply@postgresql.org
<mailto:noreply@postgresql.org>> wrote:

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/17/ddl-alter.html <https://
www.postgresql.org/docs/17/ddl-alter.html>
Description:

url:
https://www.postgresql.org/docs/current/ddl-alter.html#DDL-ALTER-
REMOVING-A-CONSTRAINT <https://www.postgresql.org/docs/current/ddl-
alter.html#DDL-ALTER-REMOVING-A-CONSTRAINT>

(If you are dealing with a generated constraint name like $2, don't
forget
that you'll need to double-quote it to make it a valid identifier.)

If I have a constraint with the name $2, are there other constraints
with
names $1, $3 ... ?

I feel like that whole parenthetical should just go away.  The point of
the comment is to remind the user of how identifier values work with
respect to mandatory double quoting.  The name itself, other than having
a $, has no special importance.

I think generated constraint names were generally "$1", "$2", etc. at
some point, instead of the more readable ones you get today. But this
must be ancient.

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#4)
Re: generated constraint name

Peter Eisentraut <peter@eisentraut.org> writes:

On 07.04.25 15:34, David G. Johnston wrote:

I feel like that whole parenthetical should just go away. The point of
the comment is to remind the user of how identifier values work with
respect to mandatory double quoting. The name itself, other than having
a $, has no special importance.

I think generated constraint names were generally "$1", "$2", etc. at
some point, instead of the more readable ones you get today. But this
must be ancient.

Good point. A bit of git-blame'ing shows that this documentation
wording appeared in e560dd353 of 2003-11-05, but we changed the
generation rule to not be "$n" in 45616f5bb of 2004-06-10.
(Oddly, I moved this documentation text around in 2005 without
noticing it was obsolete; or perhaps I did realize that but figured
it was still applicable to versions in the field.)

I concur with David that we should just drop the para. It's merely
confusing now. If you have a generated constraint name, it won't
require double-quoting unless your table or column name does, and
if they do you are doubtless already quite familiar with how
quoting works.

regards, tom lane

#6Yaroslav Saburov
y.saburov@gmail.com
In reply to: Tom Lane (#5)
Re: generated constraint name

Thank you all.

In order not to open a new thread, (small clarification)

On the tutorial-agg page in the code example

SELECT city FROM weather WHERE temp_lo = max(temp_lo); WRONG

you need to add a comment before WRONG

Show quoted text

10 квіт. 2025 р. о 18:13 Tom Lane <tgl@sss.pgh.pa.us> пише:

Peter Eisentraut <peter@eisentraut.org> writes:

On 07.04.25 15:34, David G. Johnston wrote:
I feel like that whole parenthetical should just go away. The point of
the comment is to remind the user of how identifier values work with
respect to mandatory double quoting. The name itself, other than having
a $, has no special importance.

I think generated constraint names were generally "$1", "$2", etc. at
some point, instead of the more readable ones you get today. But this
must be ancient.

Good point. A bit of git-blame'ing shows that this documentation
wording appeared in e560dd353 of 2003-11-05, but we changed the
generation rule to not be "$n" in 45616f5bb of 2004-06-10.
(Oddly, I moved this documentation text around in 2005 without
noticing it was obsolete; or perhaps I did realize that but figured
it was still applicable to versions in the field.)

I concur with David that we should just drop the para. It's merely
confusing now. If you have a generated constraint name, it won't
require double-quoting unless your table or column name does, and
if they do you are doubtless already quite familiar with how
quoting works.

regards, tom lane

#7Euler Taveira
euler@eulerto.com
In reply to: Yaroslav Saburov (#6)
Re: generated constraint name

On Fri, Apr 11, 2025, at 5:32 AM, Yaroslav Saburov wrote:

Thank you all.

In order not to open a new thread, (small clarification)

Don't be afraid to open a new thread. Indeed, a new topic (even if it is
minimal) deserves a new thread.

On the tutorial-agg page in the code example

SELECT city FROM weather WHERE temp_lo = max(temp_lo); WRONG

you need to add a comment before WRONG

If you consider that that query is correct and it fails in the "wrong" then you
made the point.

postgres-# select 1; wrong
ERROR: syntax error at or near "WRONG"
LINE 1: WRONG
^

However, the query is not correct and it fails before processing the second
statement (wrong) so it doesn't matter much in this case. Even after saying
that, I agree with you that this annotation without the comment characters
don't make much sense.

postgres=# SELECT city FROM weather WHERE temp_lo = max(temp_lo); WRONG
ERROR: aggregate functions are not allowed in WHERE
LINE 1: SELECT city FROM weather WHERE temp_lo = max(temp_lo);
^

--
Euler Taveira
EDB https://www.enterprisedb.com/

Attachments:

tutorial.patchtext/x-patch; name=tutorial.patchDownload+1-1
#8Robert Treat
xzilla@users.sourceforge.net
In reply to: Euler Taveira (#7)
Re: generated constraint name

On Fri, Apr 11, 2025 at 8:45 AM Euler Taveira <euler@eulerto.com> wrote:

On Fri, Apr 11, 2025, at 5:32 AM, Yaroslav Saburov wrote:
On the tutorial-agg page in the code example

SELECT city FROM weather WHERE temp_lo = max(temp_lo); WRONG

you need to add a comment before WRONG

If you consider that that query is correct and it fails in the "wrong" then you
made the point.

postgres-# select 1; wrong
ERROR: syntax error at or near "WRONG"
LINE 1: WRONG
^

However, the query is not correct and it fails before processing the second
statement (wrong) so it doesn't matter much in this case. Even after saying
that, I agree with you that this annotation without the comment characters
don't make much sense.

postgres=# SELECT city FROM weather WHERE temp_lo = max(temp_lo); WRONG
ERROR: aggregate functions are not allowed in WHERE
LINE 1: SELECT city FROM weather WHERE temp_lo = max(temp_lo);
^

While this was a small change, I do think it was an improvement, so
bumping Euler's suggested patch as I think it got lost in the other
discussion.

Robert Treat
https://xzilla.net

#9Peter Eisentraut
peter_e@gmx.net
In reply to: Robert Treat (#8)
Re: generated constraint name

On 24.04.25 17:13, Robert Treat wrote:

On Fri, Apr 11, 2025 at 8:45 AM Euler Taveira <euler@eulerto.com> wrote:

On Fri, Apr 11, 2025, at 5:32 AM, Yaroslav Saburov wrote:
On the tutorial-agg page in the code example

SELECT city FROM weather WHERE temp_lo = max(temp_lo); WRONG

you need to add a comment before WRONG

If you consider that that query is correct and it fails in the "wrong" then you
made the point.

postgres-# select 1; wrong
ERROR: syntax error at or near "WRONG"
LINE 1: WRONG
^

However, the query is not correct and it fails before processing the second
statement (wrong) so it doesn't matter much in this case. Even after saying
that, I agree with you that this annotation without the comment characters
don't make much sense.

postgres=# SELECT city FROM weather WHERE temp_lo = max(temp_lo); WRONG
ERROR: aggregate functions are not allowed in WHERE
LINE 1: SELECT city FROM weather WHERE temp_lo = max(temp_lo);
^

While this was a small change, I do think it was an improvement, so
bumping Euler's suggested patch as I think it got lost in the other
discussion.

Committed. Thanks for the reminder/review.