10.6. Colunas de saída do SELECT #

As regras fornecidas nas seções anteriores resultam na atribuição de tipos de dados diferentes de unknown a todas as expressões em uma consulta SQL, exceto para literais de tipo de dados não especificado que aparecem como colunas de saída simples de uma instrução SELECT. Por exemplo, em

SELECT 'Hello World';

não há nada que permita identificar qual tipo de dados o literal cadeia de caracteres deve assumir. Nesta situação, o PostgreSQL voltará a resolver o tipo de dados do literal como text.

Quando o comando SELECT é um braço de uma construção UNION (ou INTERSECT ou EXCEPT), ou quando aparece dentro de INSERT ... SELECT, esta regra não é aplicada, uma vez que as regras fornecidas nas seções anteriores têm precedência. O tipo de dados de um literal de tipo de dados não especificado pode ser obtido do outro braço do UNION no primeiro caso, ou da coluna de destino no segundo caso.

As listas da cláusula RETURNING são tratadas da mesma maneira que as listas de saída do comando SELECT para esta finalidade.

Nota

Antes do PostgreSQL 10 esta regra não existia, e os literais de tipo de dados não especificado em uma lista de saída SELECT eram deixados como sendo do tipo de dados unknown. Isto teve várias consequências ruins, então foi mudado.