Re: Please provide examples of rows from

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Please provide examples of rows from
Дата
Msg-id 20200920013846.GC22746@momjian.us
обсуждение исходный текст
Ответ на Re: Please provide examples of rows from  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Please provide examples of rows from
Список pgsql-docs
On Sat, Sep 19, 2020 at 08:49:53PM -0400, Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> >     test=> \df pg_get_keywords
> >                                                                        List of functions
> >        Schema   |      Name       | Result data type |                                      Argument data types
                                | Type
 
> >
------------+-----------------+------------------+-----------------------------------------------------------------------------------------------+------
> >      pg_catalog | pg_get_keywords | SETOF record     | OUT word text, OUT catcode "char", OUT barelabel boolean,
OUTcatdesc text, OUT baredesc text | func
 
> >     (1 row)
> 
> >     test=> select * from pg_get_keywords() AS f(word text);
> > -->    ERROR:  a column definition list is only allowed for functions returning "record"
> >     LINE 1: select * from pg_get_keywords() AS f(word text);
> 
> Yeah, this error message needs some help.  With a function having
> multiple OUT parameters, the prorettype is indeed "record", but
> the specific record type is implied by the OUT parameters so you
> do not need to (and can't) specify it in the query.
> 
> The point of the AS feature is to allow specifying the concrete
> record type for record-returning functions that don't have a
> predefined result record type, like dblink().
> 
> I think this error text was written before we had multiple OUT
> parameters, so it was okay at the time; but now it needs to be
> more precise.

OK, thanks.  It seems this area needs some work, in general. 
Unfortunately I don't see any system functions that return RECORD and
don't use OUT parameters, except dblink(), json(b)_to_record(),
json(b)_to_recordset(), and record_*.  This is going to be hard to
illustrate.  :-(  I did get this working:

    test=> select * FROM json_to_record('{"a": 1, "b": 2}'::json) as (b
    text);
     b
    ---
     2

but doing this to illustrate ROWS FROM is going to be complex.

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

  The usefulness of a cup is in its emptiness, Bruce Lee




В списке pgsql-docs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Please provide examples of rows from
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Please provide examples of rows from