BUG #12108: Documentation: Limitation of shell types not mentioned

Started by Ondřej Boudaover 11 years ago2 messagesbugs
Jump to latest
#1Ondřej Bouda
bouda@edookit.com

The following bug has been logged on the website:

Bug reference: 12108
Logged by: Ondřej Bouda
Email address: bouda@edookit.com
PostgreSQL version: 9.3.5
Operating system: Windows 7
Description:

According to an older discussion [1]http://postgresql.nabble.com/Chicken-egg-problem-with-range-types-td5717030.html, shell types may only be used by
functions implemented in C. Indeed, in current versions, functions in, e.g.,
SQL or PL/pgSQL cannot be defined if an argument type or the return type is
just a shell type.

This is not mentioned in the documentation, however. On the contrary, the
CREATE TYPE documentation suggests creating a shell type as the "tricky" way
to define a range type with a canonical function. Neither CREATE FUNCTION
documentation mentions such a limitation. Thus, when implementing an SQL or
PL/pgSQL prototype for some new canonical function, one gets stuck on an
unexpected error.

I suggest mentioning the limitation on the CREATE TYPE page, in the
paragraph saying how to specify the canonical function.

Regards,
Ondřej Bouda

[1]: http://postgresql.nabble.com/Chicken-egg-problem-with-range-types-td5717030.html
http://postgresql.nabble.com/Chicken-egg-problem-with-range-types-td5717030.html

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

#2Bruce Momjian
bruce@momjian.us
In reply to: Ondřej Bouda (#1)
Re: BUG #12108: Documentation: Limitation of shell types not mentioned

On Mon, Dec 1, 2014 at 12:34:48AM +0000, bouda@edookit.com wrote:

The following bug has been logged on the website:

Bug reference: 12108
Logged by: Ondřej Bouda
Email address: bouda@edookit.com
PostgreSQL version: 9.3.5
Operating system: Windows 7
Description:

According to an older discussion [1], shell types may only be used by
functions implemented in C. Indeed, in current versions, functions in, e.g.,
SQL or PL/pgSQL cannot be defined if an argument type or the return type is
just a shell type.

This is not mentioned in the documentation, however. On the contrary, the
CREATE TYPE documentation suggests creating a shell type as the "tricky" way
to define a range type with a canonical function. Neither CREATE FUNCTION
documentation mentions such a limitation. Thus, when implementing an SQL or
PL/pgSQL prototype for some new canonical function, one gets stuck on an
unexpected error.

I suggest mentioning the limitation on the CREATE TYPE page, in the
paragraph saying how to specify the canonical function.

I have update the docs with the attached patch. I also noticed that
there is a sentence down at the bottom saying:

Also, to avoid accidentally cluttering the catalogs with shell types as
a result of simple typos in function definitions, a shell type will only
be made this way when the input function is written in C.

I think this explains why only C functions are supported.

Let me know if you have any additional suggestions.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ Everyone has their own god. +

Attachments:

shell.difftext/x-diff; charset=us-asciiDownload+2-2