Eu contribuí para a implementação do tipo XML no PostgreSQL e provavelmente escrevi a maior parte da documentação que você está citando.
Há uma série de razões pelas quais isso é atualmente o que é:
- O padrão SQL não especifica nenhum operador de comparação para o tipo
xml
. - Na época em que a implementação foi iniciada, o XML canônico não era amplamente usado e entendido (pelo menos pelas pessoas envolvidas, sem dúvida).
- Existem certas limitações em que a canonização de XML não funciona. Embora isso raramente seja visto na prática, isso resultaria na situação em que alguns valores de um tipo de dados não podem ser comparados, o que levaria a problemas com a indexação, por exemplo. (O valor NaN dos tipos de ponto flutuante é atribuído a uma posição de ordenação por motivos semelhantes.)
- Ainda é discutível se a comparação por canonização é apropriada para todos os usos e o que os usuários sempre desejam.
Uma implementação de uma função de canonização de XML para uso opcional certamente seria bem-vinda. Na verdade, gostaria de ver um
xmlcanonical
separado tipo, mas isso daria um pouco mais de trabalho.