Re: the '::' cast doesn't work in the FROM clause

Поиск
Список
Период
Сортировка
От Kevin Grittner
Тема Re: the '::' cast doesn't work in the FROM clause
Дата
Msg-id 4E5B5BFD02000025000407F6@gw.wicourts.gov
обсуждение исходный текст
Ответ на Re: the '::' cast doesn't work in the FROM clause  (Alexey Klyukin <alexk@commandprompt.com>)
Ответы Re: the '::' cast doesn't work in the FROM clause  ("Kevin Grittner" <Kevin.Grittner@wicourts.gov>)
Список pgsql-bugs
Alexey Klyukin <alexk@commandprompt.com> wrote:
> On Aug 29, 2011, at 5:02 PM, Kevin Grittner wrote:
>
>> Alexey Klyukin <alexk@commandprompt.com> wrote:
>>
>>> Function calls can appear in the FROM clause. (This is
>>> especially useful for functions that return result sets, but any
>>> function can be used.) This acts as though its output were
>>> created as a temporary table for the duration of this single
>>> SELECT command.
>>
>> It doesn't say that operators which provide equivalent
>> functionality to functions can also be used.
>
> I agree, but why is it possible to use the type casting with CAST
> there?

Because the syntax is that of a function, which is allowed.

> Doesn't this break the promise of equivalency between the
> 'CAST .. ' and '::'?

No.  Equivalent functionality doesn't imply that the different
syntax forms can be used in the same places; just that they do the
same thing when used.   This is hardly unique to casting.
Comparison of two text values is done through the texteq function.

test=# select val from texteq('a', 'a') as val;
 val
-----
 t
(1 row)

test=# select val from 'a' = 'a' as val;
ERROR:  syntax error at or near "'a'"
LINE 1: select val from 'a' = 'a' as val;
                        ^
test=# select val from (select 'a' = 'a') as val;
 val
-----
 (t)
(1 row)

> select val from CAST(random() as integer) as val;
>  val
> -----
>    1
> (1 row)

Right.  A function is allowed as a from_item.  Arbitrary expressions
using operators which happen to provide equivalent services are not.

-Kevin

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

Предыдущее
От: Alexey Klyukin
Дата:
Сообщение: Re: the '::' cast doesn't work in the FROM clause
Следующее
От: "Kevin Grittner"
Дата:
Сообщение: Re: the '::' cast doesn't work in the FROM clause