Re: Allow escape in application_name
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: masao.fujii@oss.nttdata.com
Cc: kuroda.hayato@fujitsu.com, houzj.fnst@fujitsu.com,
ikedamsh@oss.nttdata.com, pgsql-hackers@lists.postgresql.org,
tgl@sss.pgh.pa.us
Date: 2021-10-12T06:42:23Z
Lists: pgsql-hackers
At Tue, 12 Oct 2021 15:06:11 +0900 (JST), Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote in
> "%4%5%6%7p" is converted to "57p". Do we need to imitate that bug
> with this patch?
So.. I try to describe the behavior for exhaustive patterns..
current:
A. "^-?[0-9]+.*" : returns valid padding. p goes after the last digit.
B. "^[^0-9-].*" : padding = 0, p doesn't advance.
C. "^-[^0-9].*" : padding = 0, p advances by 1 byte.
D. "^-" : padding = 0, p advances by 1 byte.
(if *p == 0 then breaks)
I think the patterns covers the all possibilities.
If we code as the following:
if (*p == '-' ? isdigit(p[1]) : isdigit(p[0]))
{
char *endptr;
padding = strtol(p, &endptr, 10);
Assert(endptr > p);
if (*endptr == '\0')
break;
p = endptr;
}
else
padding = 0;
A. "^-?[0-9]+.*" : same to the current
B. "^[^0-9-].*" : same to the current
C. "^-[^0-9].*" : padding = 0, p doesn't advance.
D. "^-" : padding = 0, p doesn't advance.
If we wan to make the behaviors C and D same with the current, the
else clause should be like the follows, but I don't think we need to
do that.
else
{
padding = 0;
if (*p == '-')
p++;
}
regards.
--
Kyotaro Horiguchi
NTT Open Source Software Center
Commits
-
postgres_fdw: Add regression test for postgres_fdw.application_name GUC.
- 353aa01687b5 15.0 landed
-
postgres_fdw: Allow postgres_fdw.application_name to include escape sequences.
- 6e0cb3dec10e 15.0 landed
-
doc: Add note about postgres_fdw.application_name.
- 58e2e6eb67fe 15.0 landed
-
postgres_fdw: Revert unstable tests for postgres_fdw.application_name.
- 98dbef90eb29 15.0 landed
-
postgres_fdw: Allow application_name of remote connection to be set via GUC.
- 449ab6350526 15.0 landed