Re: [PATCH] Add CANONICAL option to xmlserialize
Jim Jones <jim.jones@uni-muenster.de>
From: Jim Jones <jim.jones@uni-muenster.de>
To: Pavel Stehule <pavel.stehule@gmail.com>
Cc: Chapman Flack <chap@anastigmatix.net>, vignesh C <vignesh21@gmail.com>,
Thomas Munro <thomas.munro@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Vik Fearing <vik@postgresfriends.org>
Date: 2024-08-27T11:57:24Z
Lists: pgsql-hackers
On 26.08.24 16:59, Pavel Stehule wrote: > > 1. what about behaviour of NO INDENT - the implementation is not too > old, so it can be changed if we want (I think), and it is better to do > early than too late While checking the feasibility of removing indentation with NO INDENT I may have found a bug in XMLSERIALIZE ... INDENT. xmlSaveToBuffer seems to ignore elements if there are whitespaces between them: SELECT xmlserialize(DOCUMENT '<foo><bar>42</bar></foo>' AS text INDENT); xmlserialize ----------------- <foo> + <bar>42</bar>+ </foo> + (1 row) SELECT xmlserialize(DOCUMENT '<foo> <bar>42</bar> </foo>'::xml AS text INDENT); xmlserialize ---------------------------- <foo> <bar>42</bar> </foo>+ (1 row) I'll take a look at it. Regarding removing indentation: yes, it would be possible with libxml2. The question is if it would be right to do so. > 2. Are we able to implement SQL/XML syntax with libxml2? > > 3. Are we able to implement Oracle syntax with libxml2? And there are > benefits other than higher possible compatibility? I guess it would be beneficial if you're migrating from oracle to postgres - or the other way around. It certainly wouldn't hurt, but so far I personally had little use for the oracle's extra xmlserialize features. > > 4. Can there be some possible collision (functionality, syntax) with > CANONICAL? I couldn't find anything in the SQL/XML spec that might refer to canonocal xml. > > 5. SQL/XML XMLSERIALIZE supports other target types than varchar. I > can imagine XMLSERIALIZE with CANONICAL to bytea (then we don't need > to force database encoding). Does it make sense? Are the results > comparable? | As of pg16 bytea is not supported. Currently type| can be |character|, |character varying|, or |text - also their other flavours like 'name'. | -- Jim