SELECT
#
Les règles des sections précédentes auront pour résultat
d'assigner les types de données autres que unknown
à toutes
les expressions dans la requête SQL, à l'exception des littéraux de type
non spécifié apparaissant en tant que colonne de sortie dans une commande
SELECT
. Par exemple, dans :
SELECT 'Hello World';
rien ne permet d'identifier quel devrait être le type du litteral chaîne
de caractères. Dans ce cas, PostgreSQL résoudra
le type du littéral en type text
.
Lorsque le SELECT
fait partie d'une construction
UNION
(ou INTERSECT
EXCEPT
) ou lorsqu'il apparaît dans un
INSERT ... SELECT
, cette règle n'est pas appliquée,
car les règles des sections précédentes ont priorité. Le type d'un littéral
au type non spécifié peut être choisi d'après l'autre partie
d'un UNION
dans le premier cas, ou d'après la colonne
de destination dans le second cas.
Dans ce but, les listes RETURNING
sont traitées de la
même manière que les retours de SELECT
.
Avant la version 10 de PostgreSQL, cette règle
n'existait pas, et les littéraux aux types non spécifiés dans la sortie d'un
SELECT
étaient de type unknown
. Suite à plusieurs
conséquences néfastes, ce comportement a été modifié.