comment doesn't accept expressions returning text

From: Michael Glaesemann <grzm(at)myrealbox(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: comment doesn't accept expressions returning text
Date: 2005-11-24 02:03:19
Message-ID: 1B5664AF-9973-4137-84E5-9DE26BFB2546@myrealbox.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I've been trying to be better at documentation in general and have
been trying to take advantage of PostgreSQL's COMMENT ON
functionality to provide a little more information in the DDL itself.
I usually write my DDL in a text file and load it into the database
using psql. To make it (a little) easier to write comments, I'd like
to write the comment text as it's own paragraph so I don't have to
worry about accidently deleting the opening and closing quotes.

For example:

create table foo (foo_id integer primary key);
comment on table foo is $$
This is a comment for table foo.
$$;

Of course, this comment includes a new line at the beginning and end
of the comment.

test=# select relname, description
test-# from pg_description
test-# join pg_class on (pg_class.oid = pg_description.objoid)
test-# where relname = 'foo';
relname | description
---------+-------------
foo |
This is a comment for table foo.

(1 row)

It would be nice to be able to strip those out using TRIM (or some
other function). However, this doesn't appear to work, as COMMENT ON
throws a syntax error as soon as it runs into anything that isn't a
pure text string. Examples below.

Would there be any objection to allowing any text-returning
expression in this case? If not, what would be involved in allowing
this? I'm interested in contributing the change if it's something
that's considered worthwhile.

Michael Glaesemann
grzm myrealbox com

test=# select version();

version
------------------------------------------------------------------------
----------------------------------------------------------------------
PostgreSQL 8.1.0 on powerpc-apple-darwin8.3.0, compiled by GCC
powerpc-apple-darwin8-gcc-4.0.0 (GCC) 4.0.0 (Apple Computer, Inc.
build 5026)
(1 row)

test=# create table foo (foo_id integer primary key);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"foo_pkey" for table "foo"
CREATE TABLE
test=# comment on table foo is trim('*', '***This is just an
example***');
ERROR: syntax error at or near "trim" at character 25
LINE 1: comment on table foo is trim('*', '***This is just an exampl...
^
test=# comment on table foo is (trim('*', '***This is just an
example***'));
ERROR: syntax error at or near "(" at character 25
LINE 1: comment on table foo is (trim('*', '***This is just an examp...
^
test=# comment on table foo is 'This is just' || ' an example';
ERROR: syntax error at or near "||" at character 40
LINE 1: comment on table foo is 'This is just' || ' an example';
^
test=# comment on table foo is ('This is just' || ' an example');
ERROR: syntax error at or near "(" at character 25
LINE 1: comment on table foo is ('This is just' || ' an example');

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Glaesemann 2005-11-24 03:01:07 Re: comment doesn't accept expressions returning text
Previous Message Christopher Kings-Lynne 2005-11-24 01:24:06 Re: MS SQL Server compatibility functions