From: | Justin Pryzby <pryzby(at)telsasoft(dot)com> |
---|---|
To: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | pg17.3 PQescapeIdentifier() ignores len |
Date: | 2025-02-13 16:51:27 |
Message-ID: | Z64jD3u46gObCo1p@pryzbyj2023 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I found errors in our sql log after upgrading to 17.3.
error_severity | ERROR
message | schema "rptcache.44e3955c33bb79f55750897da0c5ab1fa2004af1_20250214" does not exist
query | copy "rptcache.44e3955c33bb79f55750897da0c5ab1fa2004af1_20250214"."44e3955c33bb79f55750897da0c5ab1fa2004af1_20250214" from stdin
The copy command is from pygresql's inserttable(), which does:
do {
t = strchr(s, '.');
if (!t)
t = s + strlen(s);
table = PQescapeIdentifier(self->cnx, s, (size_t)(t - s));
fprintf(stderr, "table %s len %ld => %s\n", s, t-s, table);
if (bufpt < bufmax)
bufpt += snprintf(bufpt, (size_t)(bufmax - bufpt), "%s", table);
PQfreemem(table);
s = t;
if (*s && bufpt < bufmax)
*bufpt++ = *s++;
} while (*s);
The fprintf suggests that since 5dc1e42b4 PQescapeIdentifier ignores its len.
python3 -c "import pg; db=pg.DB('postgres'); db.inserttable('child.a000000000000', [1])")
table child.a000000000000 len 5 => "child.a000000000000"
table a000000000000 len 13 => "a000000000000"
--
Justin
From | Date | Subject | |
---|---|---|---|
Next Message | Melanie Plageman | 2025-02-13 16:52:13 | Re: BitmapHeapScan streaming read user and prelim refactoring |
Previous Message | Dmitry Dolgov | 2025-02-13 16:50:09 | Re: pg_stat_statements and "IN" conditions |