Jag bidrog till implementeringen av XML-typ i PostgreSQL och skrev förmodligen det mesta av dokumentationen du citerar.
Det finns ett antal anledningar till att det är som det är för närvarande:
- SQL-standarden anger ingen jämförelseoperator för typen
xml
. - När implementeringen startade användes och förstods inte kanonisk XML (åtminstone av de inblandade, utan tvekan).
- Det finns vissa begränsningar där XML-kanonisering inte fungerar. Även om dessa kanske sällan ses i praktiken, skulle detta leda till situationen där vissa värden av en datatyp inte kan jämföras, vilket skulle leda till problem med indexering till exempel. (NaN-värdet för flyttalstyper tilldelas en beställningsposition av liknande skäl.)
- Det är fortfarande diskutabelt om jämförelse med kanonisering är lämplig för alla användningsområden och vad användarna alltid vill ha.
En implementering av en XML-kanoniseringsfunktion för valfri användning skulle verkligen vara välkommen. Jag skulle faktiskt vilja se en separat xmlcanonical
typ, men det skulle vara lite mer jobb.