Название ключевого слова в postgresql - PullRequest
1 голос
/ 25 июля 2011

Почему это работает или, что еще лучше, что оно представляет (замените таблицу на существующую)

select table.name from table

и где это задокументировано (postgresql)?

Ответы [ 2 ]

3 голосов
/ 25 июля 2011
select table.name from table

эквивалентно

select name(table) from table

, что, поскольку name является типом, эквивалентно

select cast(table as name) from table

Первая table является переменной строки, содержащейвсе столбцы из соответствующей таблицы, поэтому вы получите текстовое представление строки.

Это прямо не задокументировано, так как это комбинация нескольких неясных функций (некоторые из которых восходят к PostQUEL).Фактически, это использование было запрещено в PostgreSQL 9.1 (см. примечания к выпуску в разделе «Кастинг»).

1 голос
/ 25 июля 2011

Тип имени документируется в строковых типах. Скрытые столбцы документированы (от головы до головы) в разделе системных каталогов или во внутренних органах.

Вы можете увидеть скрытые столбцы в pg_attribute. Их числа отрицательны:

select attum, attname
from pg_attribute
where attrelid = 'yourtable'::regclass

Это должно раскрыть xmin, xmax, ctid, oid (где применимо) и т. Д. Может ли это также дать имя? (Я не могу проверить на iPad.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...