Ik heb bijgedragen aan de implementatie van het XML-type in PostgreSQL en heb waarschijnlijk de meeste documentatie geschreven die u aanhaalt.
Er zijn een aantal redenen waarom dit momenteel is zoals het is:
- De SQL-standaard specificeert geen vergelijkingsoperator voor type
xml
. - Op het moment dat de implementatie werd gestart, werd Canonical XML niet veel gebruikt en begrepen (althans door de betrokken mensen, aantoonbaar).
- Er zijn bepaalde beperkingen waar XML-canonicalisering niet werkt. Hoewel deze in de praktijk misschien zelden worden gezien, zou dit de situatie opleveren waarin sommige waarden van een gegevenstype niet kunnen worden vergeleken, wat bijvoorbeeld zou leiden tot problemen met indexeren. (De NaN-waarde van typen met drijvende komma krijgt om soortgelijke redenen een bestelpositie.)
- Het is nog steeds de vraag of vergelijking door canonicalisering geschikt is voor alle toepassingen en wat gebruikers altijd willen.
Een implementatie van een XML-canonicaliseringsfunctie voor optioneel gebruik zou zeker welkom zijn. Ik zou eigenlijk graag een aparte xmlcanonical
. willen zien typen, maar dat zou nogal wat meer werk zijn.