Hi,
We cannot to declare variable with referenced type on other composite variable. This limit is probably artificial, because any composite type is any type too in PostgreSQL.
The issue:
referencing on composite variables doesn't work
do $$ declare x int; y x%type; begin end; $$; -- ok
do $$ declare x pg_class; y x%type; begin end; $$; -- invalid type name "x%type"
do $$ declare x pg_class; y x%rowtype; begin end; $$; -- relation "x" does not exist
The %ROWTYPE needs a record in pg_class. Probably we should not to change it. The change can bring a compatibility issues. So there are two possibilities:
1. %TYPE can be used for any kind of variables. This behave will be consistent with polymorphic parameters - we have "anyelement", and we have not "anyrow".
2. introduce new keyword - %RECTYPE .. it can work, but there will be gap between polymorphic parameters.
Comments, notices?
Regards
Pavel