Jeg bidrog til implementeringen af XML-typen i PostgreSQL og skrev sandsynligvis det meste af den dokumentation, du citerer.
Der er en række grunde til, at det er sådan, det er i øjeblikket:
- SQL-standarden angiver ingen sammenligningsoperator for typen
xml
. - På det tidspunkt, hvor implementeringen blev startet, var Canonical XML ikke udbredt og forstået (i det mindste af de involverede personer, velsagtens).
- Der er visse begrænsninger, hvor XML-kanonisering ikke virker. Selvom disse måske sjældent ses i praksis, ville dette give den situation, hvor nogle værdier af en datatype ikke kan sammenlignes, hvilket vil føre til problemer med f.eks. indeksering. (NaN-værdien for flydende kommatyper tildeles en bestillingsposition af lignende årsager.)
- Det kan stadig diskuteres, om sammenligning ved kanonisering er passende for alle anvendelser, og hvad brugerne altid ønsker.
En implementering af en XML-kanoniseringsfunktion til valgfri brug ville bestemt være velkommen. Jeg vil faktisk gerne se en separat xmlcanonical
type, men det ville være en del mere arbejde.