Re: pgsql: Non text modes for pg_dumpall, correspondingly change pg_restore
От | Andrew Dunstan |
---|---|
Тема | Re: pgsql: Non text modes for pg_dumpall, correspondingly change pg_restore |
Дата | |
Msg-id | 966de369-0109-42df-b250-42240ec20910@dunslane.net обсуждение исходный текст |
Ответ на | Re: pgsql: Non text modes for pg_dumpall, correspondingly change pg_restore (Mahendra Singh Thalor <mahi6run@gmail.com>) |
Список | pgsql-hackers |
On 2025-04-14 Mo 6:55 PM, Mahendra Singh Thalor wrote:
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -1053,15 +1053,19 @@ get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimpleOidStringList *dbn
while ((fgets(line, MAXPGPATH, pfile)) != NULL)
{
Oid db_oid = InvalidOid;
- char db_oid_str[MAXPGPATH + 1] = "";
char *dbname;
+ char *p = line;
/* Extract dboid. */
sscanf(line, "%u", &db_oid);
- sscanf(line, "%20s", db_oid_str);
+
+ while(isdigit(*p))
+ p++;
+
+ Assert(*p == ' ');
/* dbname is the rest of the line */
- dbname = line + strlen(db_oid_str) + 1;
+ dbname = ++p;
/* Remove \n from dbname. */
dbname[strlen(dbname) - 1] = '\0';
I don't think an Assert is the right thing here. It's for things that should not be possible, and won't trigger anything in a non-assertion build. This condition should cause a pg_fatal().
cheers
andrew
-- Andrew Dunstan EDB: https://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: