Em 15/10/08, Leandro DUTRA<[EMAIL PROTECTED]> escreveu:
> 2008/10/15 Osvaldo Kussama <[EMAIL PROTECTED]>:
>
>> Verifique que o PostgreSQL considera a ordem de criação do tipo:
>>
>> bdteste=# SELECT pe.enumlabel AS pais FROM pg_type pt JOIN pg_enum pe
>> ON pt.oid = pe.enumtypid WHERE pt.typname = 'paises';
>>  pais
>> ------
>>  BR
>>  PT
>>  FR
>>  US
>>  JP
>> (5 registros)
>>
>> Se no lugar do enum tivessemos criado uma tabela auxiliar, com uma
>> chave estrangeira,  o resultado seria diferente.
>
> Faltou o 'ORDER BY pe.enumlabel'... esse comportamento sem o ORDER BY
> não é garantido, e poderia mudar sem aviso.
>
> Na verdade, desconfio que aí é função mais dos OIDs.
>


Não é uma questão de ORDER BY e sim da ordem com que os elementos
aparecem na lista de criação do tipo. Como coloquei 'PT' antes de 'FR'
ele é considerado menor:

bdteste=# SELECT 'PT' > 'FR';   -- comparação de strings
 ?column?
----------
 t
(1 registro)

bdteste=# SELECT 'PT'::paises > 'FR'::paises;   -- comparação do tipo enum
 ?column?
----------
 f
(1 registro)

É só um detalhe para prestarmos atenção e não sermos pegos de surpresa.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a