Re: pg_plan_advice: fix parsing underscore in numbers

Поиск
Список
Период
Сортировка
Искать
От
Chao Li
Тема
Re: pg_plan_advice: fix parsing underscore in numbers
Дата
в 23:53:09
Msg-id
4CC6F6E9-3D19-4765-85D6-F9DA2075877C@gmail.com
Список
Дерево обсуждения
pg_plan_advice: fix parsing underscore in numbers Chao Li <li.evan.chao@gmail.com>


> On Jul 17, 2026, at 18:16, Daniel Gustafsson  wrote:
> 
> 
>> The attached patch fixes this by using pg_strtoint32_safe() in the same way as the core scanner.
> 
> Yes, but I think we need a bit more since we otherwise accept this case:
> 
> postgres=# set pg_plan_advice.advice = 'SEQ_SCAN(x#1_0_)';
> SET
> postgres=# explain (plan_advice) select 1;
>                QUERY PLAN
> ------------------------------------------
> Result  (cost=0.00..0.01 rows=1 width=4)
> Supplied Plan Advice:
>   SEQ_SCAN(x#10) /* not matched */
>   SEQ_SCAN(_) /* not matched */
> Generated Plan Advice:
>   NO_GATHER("*RESULT*")
> (6 rows)
> 
> If we also match on integerjunk like in the attached v2 we instead get the
> below which I think is more correct:
> 
> postgres=# set pg_plan_advice.advice = 'SEQ_SCAN(x#1_0_)';
> ERROR:  invalid value for parameter "pg_plan_advice.advice": "SEQ_SCAN(x#1_0_)"
> DETAIL:  Could not parse advice: trailing junk after numeric literal at or near "1_0_"
> 
> AFAICT this shouldn't break parsing for any legitimate cases, but I've only had
> a quick look (the tests still pass though).
> 
> --
> Daniel Gustafsson
> 
> 

Agreed, v2 is more correct. I missed the integerjunk part.

I also added a test case for 1_0_. There is already a syntax-error section in the test script, so I added the case there.

PFA v3, which only adds this test case.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/




В списке pgsql-hackers по дате отправления
От: Melanie Plageman
Дата:
От: Peter Geoghegan
Дата:
Сообщение: Re: index prefetching
FAQ