Обсуждение: COMMENT ON INDEX silently fails

Поиск
Список
Период
Сортировка

COMMENT ON INDEX silently fails

От
Michael Herold
Дата:
The statement

COMMENT ON INDEX object_name IS '...'

does not fail if object_name is a table constraint. However, it does
not seem to have any effect.

I think the statement should either fail or create the respective
comment.

Re: COMMENT ON INDEX silently fails

От
Tom Lane
Дата:
Michael Herold <quabla@hemio.de> writes:
> The statement
> COMMENT ON INDEX object_name IS '...'
> does not fail if object_name is a table constraint. However, it does
> not seem to have any effect.

Sure it does.

regression=# create table foo (f1 int primary key);
CREATE TABLE
regression=# \d foo
      Table "public.foo"
 Column |  Type   | Modifiers
--------+---------+-----------
 f1     | integer | not null
Indexes:
    "foo_pkey" PRIMARY KEY, btree (f1)

regression=# select * from pg_description where objoid = 'foo_pkey'::regclass;
 objoid | classoid | objsubid | description
--------+----------+----------+-------------
(0 rows)

regression=# comment on index foo_pkey is 'test comment';
COMMENT
regression=# select * from pg_description where objoid = 'foo_pkey'::regclass;
 objoid | classoid | objsubid | description
--------+----------+----------+--------------
 478892 |     1259 |        0 | test comment
(1 row)

I suspect you were expecting the comment to be displayed in some place it
isn't, but that's hard to discuss intelligently when you didn't say where
you expected it to show up.  It is there in, eg, \di+ output:

regression=# \di+ foo_pkey
                            List of relations
 Schema |   Name   | Type  |  Owner   | Table |    Size    | Description
--------+----------+-------+----------+-------+------------+--------------
 public | foo_pkey | index | postgres | foo   | 8192 bytes | test comment
(1 row)


            regards, tom lane

Re: COMMENT ON INDEX silently fails

От
David Fetter
Дата:
On Fri, Sep 30, 2016 at 08:49:01AM -0400, Tom Lane wrote:
> Michael Herold <quabla@hemio.de> writes:
> > The statement
> > COMMENT ON INDEX object_name IS '...'
> > does not fail if object_name is a table constraint. However, it does
> > not seem to have any effect.
>
> Sure it does.
>
> regression=# create table foo (f1 int primary key);
> CREATE TABLE
> regression=# \d foo
>       Table "public.foo"
>  Column |  Type   | Modifiers
> --------+---------+-----------
>  f1     | integer | not null
> Indexes:
>     "foo_pkey" PRIMARY KEY, btree (f1)
>
> regression=# select * from pg_description where objoid = 'foo_pkey'::regclass;
>  objoid | classoid | objsubid | description
> --------+----------+----------+-------------
> (0 rows)
>
> regression=# comment on index foo_pkey is 'test comment';
> COMMENT
> regression=# select * from pg_description where objoid = 'foo_pkey'::regclass;
>  objoid | classoid | objsubid | description
> --------+----------+----------+--------------
>  478892 |     1259 |        0 | test comment
> (1 row)
>
> I suspect you were expecting the comment to be displayed in some place it
> isn't, but that's hard to discuss intelligently when you didn't say where
> you expected it to show up.  It is there in, eg, \di+ output:
>
> regression=# \di+ foo_pkey
>                             List of relations
>  Schema |   Name   | Type  |  Owner   | Table |    Size    | Description
> --------+----------+-------+----------+-------+------------+--------------
>  public | foo_pkey | index | postgres | foo   | 8192 bytes | test comment
> (1 row)

It's not in the \df+ output, where a reasonable person could expect it
to show up.  Is this worth a patch for 10?

Best,
David.
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david(dot)fetter(at)gmail(dot)com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

Re: COMMENT ON INDEX silently fails

От
Michael Herold
Дата:
> Sure it does.

Okay, correct phrasing would be: It has unexpected effects.

> I suspect you were expecting the comment to be displayed in some
> place it
> isn't, but that's hard to discuss intelligently when you didn't say
> where
> you expected it to show up.

create table foo (f1 int primary key);
comment on index foo_pkey is 'test comment';
comment on constraint foo_pkey on foo is 'test comment 2';

# \di+
                           List of relations
Schema |   Name   | Type  |  Owner   | Table |    Size    | Description
--------+----------+-------+----------+-------+------------+--------------
public | foo_pkey | index | postgres | foo   | 8192 bytes | test comment
(1 row)

# SELECT * FROM pg_description WHERE description LIKE 'test com%';
objoid | classoid | objsubid |  description
--------+----------+----------+----------------
123732 |     1259 |        0 | test comment
123733 |     2606 |        0 | test comment 2
(2 rows)

$ pgAdmin III

Before `comment on constraint` the textarea for comment is empty and no
statement for comment in SQL pane.

Afterwards it is using 'test comment 2'.

Best,
Michael

Re: COMMENT ON INDEX silently fails

От
Tom Lane
Дата:
David Fetter <david@fetter.org> writes:
> It's not in the \df+ output, where a reasonable person could expect it
> to show up.  Is this worth a patch for 10?

Uh, what?  This is an index we're talking about, not a function.

            regards, tom lane

Re: COMMENT ON INDEX silently fails

От
Tom Lane
Дата:
Michael Herold <quabla@hemio.de> writes:
>> I suspect you were expecting the comment to be displayed in some place
>> it isn't, but that's hard to discuss intelligently when you didn't say
>> where you expected it to show up.

> $ pgAdmin III
> Before `comment on constraint` the textarea for comment is empty and no
> statement for comment in SQL pane.
> Afterwards it is using 'test comment 2'.

Well, you should take that up with the pgAdmin crew, but I'd note that
a comment on a constraint and a comment on the index underlying the
constraint are two different things.

            regards, tom lane

Re: COMMENT ON INDEX silently fails

От
Michael Herold
Дата:
On Fri, Sep 30, 2016 at 9:36 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Well, you should take that up with the pgAdmin crew, but I'd note that
> a comment on a constraint and a comment on the index underlying the
> constraint are two different things.

Seems like pgAdmin is hiding this on purpose, which makes kind of sense.

Seems like I missed "PostgreSQL automatically creates an index for each
unique constraint and primary key constraint to enforce uniqueness."

No Bugs here.

Best,
Michael