Re: Missing [NO] INDENT flag in XMLSerialize backward parsing

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Michael Paquier <michael@paquier.xyz>, Jim Jones <jim.jones@uni-muenster.de>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Pavel Stehule <pavel.stehule@gmail.com>
Date: 2025-02-21T09:36:07Z
Lists: pgsql-hackers
On 2025-02-21 Fr 1:31 AM, Michael Paquier wrote:
> On Thu, Feb 20, 2025 at 02:27:42PM +0100, Jim Jones wrote:
>> This patch adds the missing [NO] INDENT flag to XMLSerialize backward
>> parsing.
>         if (xexpr->op == IS_XMLSERIALIZE)
> +      {
>             appendStringInfo(buf, " AS %s",
>                              format_type_with_typemod(xexpr->type,
>                                                       xexpr->typmod));
> +          if (xexpr->indent)
> +              appendStringInfoString(buf, " INDENT");
> +          else
> +              appendStringInfoString(buf, " NO INDENT");
> +      }
>
> Good catch, we are forgetting this option in ruleutils.c.  Will fix
> down to v16 where this option has been introduced as you are
> proposing, with NO INDENT showing up in the default case.  The three
> expected outputs look OK as written..



The fix has broken cross version upgrade test. Maybe we need to filter 
out NO INDENT in releases prior to 16 in AdjustUpgrade.pm?


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com




Commits

  1. Fix cross-version upgrades with XMLSERIALIZE(NO INDENT)

  2. Add missing deparsing of [NO] IDENT to XMLSERIALIZE()