Re: Assert failure in base_yyparse

From: Richard Guo <guofenglinux(at)gmail(dot)com>
To: Евгений Горбанев <gorbanyoves(at)basealt(dot)ru>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Assert failure in base_yyparse
Date: 2025-03-28 09:05:48
Message-ID: CAMbWs4-9Zde_MU8h-hvfGv6gpi98ZWUFTwESN3DaS0hzJECAww@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Mar 28, 2025 at 4:40 PM Евгений Горбанев <gorbanyoves(at)basealt(dot)ru> wrote:
> Got an assert failure when fuzzing the raw_parser function.
> The query to reproduce:
> SELECT xmltable.* FROM xmltest2, LATERAL xmltable('/d/r' PASSING x
> COLUMNS a int PATH '' || lower(_path) is_not_null|| 'c');
>
> If I understand correctly, is_not_null is considered as a valid keyword
> in xmltable, but it gets the type T_A_Expr.

> Prepared a patch to fix it, but there may be a better solution.

Nice catch. Yeah, is_not_null is a valid column option in xmltable.
In you example, the value of the is_not_null option is "|| 'c'", which
is interpreted as an A_Expr.

I wonder if the value's type should be checked earlier, rather than at
the last minute.

Also, I think IsA is a better choice for checking the node type.

Thanks
Richard

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2025-03-28 09:15:16 Re: Selectively invalidate caches in pgoutput module
Previous Message Hayato Kuroda (Fujitsu) 2025-03-28 09:02:29 RE: Fix 035_standby_logical_decoding.pl race conditions