To je známá matoucí "funkce" s trochou historie. Konkrétně byste mohli odkazovat na n-tice z tabulky jako celku s názvem tabulky a poté připojením .name
by vyvolalo name
funkce na nich (tj. bude to interpretováno jako select name(t) from t
).
V určitém okamžiku vývoje PostgreSQL 9 se to Istr trochu vyčistilo. Stále můžete select t from t
explicitně získat efekt řádků jako n-tic, ale nemůžete použít funkci stejným způsobem. Tedy na PostgreSQL 8.4.9 , toto:
create table t(id serial primary key, value text not null);
insert into t(value) values('foo');
select t.name from t;
vytváří bizarní:
name
---------
(1,foo)
(1 row)
ale dne 9.1.1 produkuje:
ERROR: column t.name does not exist
LINE 1: select t.name from t;
^
jak byste očekávali.
Abych konkrétně odpověděl na vaši otázku:name
je standardní typ v PostgreSQL (používá se v katalogu pro názvy tabulek atd.) a také některé standardní funkce pro převod věcí na name
typ. Ve skutečnosti to není vyhrazené, jen objekty, které tak existují, plus nějaká historická podivná syntaxe dělaly věci matoucími; a to bylo opraveno vývojáři v posledních verzích.