Re: XML test error on Arch Linux

From: Erik Wienhold <ewie(at)ewie(dot)name>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Frank Streitzig <fstreitzig(at)gmx(dot)net>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: XML test error on Arch Linux
Date: 2024-07-09 16:20:46
Message-ID: 01832172-47ac-489e-befd-ae328cfd06cf@ewie.name
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2024-07-07 22:43 +0200, Tom Lane wrote:
> As far as the errcontext changes go: I think we have to just bite
> the bullet and accept them. It looks like 2.13 has a completely
> different mechanism than prior versions for deciding when to issue
> XML_ERR_NOT_WELL_BALANCED. And it's not even clear that it's wrong;
> for example, in our first failing case
>
> DETAIL: line 1: xmlParseEntityRef: no name
> <invalidentity>&</invalidentity>
> ^
> -line 1: chunk is not well balanced
> -<invalidentity>&</invalidentity>
> - ^
>
> it's kind of hard to argue that the chunk isn't well-balanced.
>
> So we can either suppress errdetails from the expected output,
> or set up an additional expected-file. I'm leaning to the
> "\set VERBOSITY terse" solution.

+1 for \set VERBOSITY terse as a last resort.

But it looks to me as if "chunk is not well balanced" is just noise
because libxml2 reports more specific errors before that. For example:

SELECT xmlparse(content '<twoerrors>&idontexist;</unbalanced>');
ERROR: invalid XML content
DETAIL: line 1: Entity 'idontexist' not defined
<twoerrors>&idontexist;</unbalanced>
^
line 1: Opening and ending tag mismatch: twoerrors line 1 and unbalanced
<twoerrors>&idontexist;</unbalanced>
^
line 1: chunk is not well balanced
<twoerrors>&idontexist;</unbalanced>
^

Here, "Opening and ending tag mismatch" already covers the unbalanced
closing tag.

So how about just ignoring XML_ERR_NOT_WELL_BALANCED like in the
attached? This also adds test cases for an unclosed tag because I
wanted to see if I can trigger just "chunk is not well balanced", but
without success.

SELECT xmlparse(content '<unclosed>');
ERROR: invalid XML content
DETAIL: line 1: Premature end of data in tag unclosed line 1
<unclosed>
^
line 1: chunk is not well balanced
<unclosed>
^

libxml2 2.13 doesn't report "chunk ..." here either.

There's also this more explicit test case for unbalanced tags:

<parent><child></parent></child>

But I'm not sure if that's really necessary if we already have:

<twoerrors>&idontexist;</unbalanced>

The error messages are the same, except for the additional entity error.

--
Erik

Attachment Content-Type Size
suppress-noisy-error.patch text/x-diff 4.4 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2024-07-09 16:23:34 Re: Should we work around msvc failing to compile tab-complete.c?
Previous Message Antonin Houska 2024-07-09 16:03:29 Re: why there is not VACUUM FULL CONCURRENTLY?