pg17.3 PQescapeIdentifier() ignores len
От | Justin Pryzby |
---|---|
Тема | pg17.3 PQescapeIdentifier() ignores len |
Дата | |
Msg-id | Z64jD3u46gObCo1p@pryzbyj2023 обсуждение исходный текст |
Ответы |
Re: pg17.3 PQescapeIdentifier() ignores len
Re: pg17.3 PQescapeIdentifier() ignores len |
Список | 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
В списке pgsql-hackers по дате отправления: