views:

187

answers:

2

There's xml data type in Postgres, I never used it before so I'd like to hear opinions. Downsides and upsides vs using regular varchar (or Text) column to store xml.

The text I'm going to store is xml, well-formed, UTF-8. No need to search by it (I've read searching by xml is slow).

This XML actually is data prepared for PDF generation with Apache FOP. XML can be generated dynamically from data found elsewhere (other Postgres tables), it's stored as is only so that I won't need to generate it twice. Kinda backup#2 for already generated PDF documents.

Anything else to know? Good practices, performance, maintenance, etc?

A: 

I haven't compared performance, but a good thing with using the XML-type is that you'll get the server to ensure the XML is well-formed. Perhaps later on you'll have use for any of the many XML-functions available.

Alex Brasetvik
+2  A: 

XML differs from TEXT only logically: first, the input is checked for validity, second, the XML type lack comparison operators so you cannot index it, compare, use in UNION or DISTINCT etc.

If you are not going to search against it using indexes and want to make an extra check for validity, then use XML safely.

Quassnoi
Note that you can work around the lack of comparison operators by casting to `text`, e.g. `create unique index foo on bar(cast(xmlcol as text))`.
Alex Brasetvik
`@Alex Brasetvik`: … or just store the column as `TEXT` and convert it to `XML` for `XML`-related purposes.
Quassnoi