Return type bug in functions

Started by Christopher Kings-Lynneover 22 years ago2 messages
#1Christopher Kings-Lynne
chriskl@familyhealth.com.au

Hi Guys,

What's with this:

test=# create function foo() returns integer as 'select 1;' language
'sql';
CREATE FUNCTION
test=# create function foo2() returns "integer" as 'select 1;' language
'sql';
ERROR: Type "integer" does not exist

Why can't you quote return types? Isn't that inconsistent with the rest
of Postgres? Also, what about user-defined types that have spaces,
japanese characters, etc.?

Noticed this while working on phpPgAdmin...

Chris

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Christopher Kings-Lynne (#1)
Re: Return type bug in functions

Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:

test=# create function foo() returns integer as 'select 1;' language
'sql';
CREATE FUNCTION
test=# create function foo2() returns "integer" as 'select 1;' language
'sql';
ERROR: Type "integer" does not exist

Why can't you quote return types?

Because "integer" is not the actual internal name of the type.

Isn't that inconsistent with the rest of Postgres?

No; you can't quote it anywhere else either. Nor can you quote it in
the SQL standard: INTEGER is a key word, not an identifier.

regards, tom lane