PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie führt man einen kanonischen XML-Vergleich mit PostgreSQL durch?

Ich habe zur Implementierung des XML-Typs in PostgreSQL beigetragen und wahrscheinlich den größten Teil der Dokumentation geschrieben, die Sie zitieren.

Warum das derzeit so ist, hat mehrere Gründe:

  • Der SQL-Standard spezifiziert keinen Vergleichsoperator für den Typ xml .
  • Als mit der Implementierung begonnen wurde, war Canonical XML nicht weit verbreitet und wurde nicht verstanden (zumindest wohl von den beteiligten Personen).
  • Es gibt bestimmte Einschränkungen, bei denen die XML-Kanonisierung nicht funktioniert. Obwohl dies in der Praxis eher selten vorkommt, würde dies dazu führen, dass einige Werte eines Datentyps nicht verglichen werden können, was beispielsweise zu Problemen bei der Indizierung führen würde. (Dem NaN-Wert von Fließkommatypen wird aus ähnlichen Gründen eine Ordnungsposition zugewiesen.)
  • Es ist immer noch umstritten, ob der Vergleich durch Kanonisierung für alle Verwendungszwecke geeignet ist und was Benutzer immer wollen.

Eine Implementierung einer XML-Kanonisierungsfunktion zur optionalen Verwendung wäre sicherlich wünschenswert. Eigentlich würde ich gerne ein separates xmlcanonical sehen eingeben, aber das wäre ein ganzes Stück mehr Arbeit.