From 1078f7e6275b094c80093f3f03e036d486c675e4 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Wed, 8 Apr 2009 19:02:37 +0000 Subject: [PATCH] Quote string literals correctly in the new CREATE SERVER statements and binary upgrade UPDATE statements. --- src/bin/pg_dump/pg_dump.c | 34 +++++++++++++++++++++------------- src/bin/pg_dump/pg_dumpall.c | 6 ++++-- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 0e2bbcf791..55d306cf35 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -1734,8 +1734,10 @@ dumpDatabase(Archive *AH) appendPQExpBuffer(creaQry, "\n-- For binary upgrade, set datfrozenxid.\n"); appendPQExpBuffer(creaQry, "UPDATE pg_database\n" "SET datfrozenxid = '%u'\n" - "WHERE datname = '%s';\n", - frozenxid, datname); + "WHERE datname = ", + frozenxid); + appendStringLiteralAH(creaQry, datname, AH); + appendPQExpBuffer(creaQry, ";\n"); } appendPQExpBuffer(delQry, "DROP DATABASE %s;\n", @@ -9396,9 +9398,15 @@ dumpForeignServer(Archive *fout, ForeignServerInfo *srvinfo) appendPQExpBuffer(q, "CREATE SERVER %s", fmtId(srvinfo->dobj.name)); if (srvinfo->srvtype && strlen(srvinfo->srvtype) > 0) - appendPQExpBuffer(q, " TYPE '%s'", srvinfo->srvtype); + { + appendPQExpBuffer(q, " TYPE "); + appendStringLiteralAH(q, srvinfo->srvtype, fout); + } if (srvinfo->srvversion && strlen(srvinfo->srvversion) > 0) - appendPQExpBuffer(q, " VERSION '%s'", srvinfo->srvversion); + { + appendPQExpBuffer(q, " VERSION "); + appendStringLiteralAH(q, srvinfo->srvversion, fout); + } appendPQExpBuffer(q, " FOREIGN DATA WRAPPER "); appendPQExpBuffer(q, "%s", fmtId(fdwname)); @@ -9891,23 +9899,23 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) " WHERE relnamespace = " "(SELECT oid FROM pg_namespace " "WHERE nspname = CURRENT_SCHEMA)\n" - " AND relname = '%s'\n" - " );\n", + " AND relname = ", tbinfo->attlen[j], tbinfo->attalign[j], - tbinfo->attnames[j], - tbinfo->dobj.name); + tbinfo->attnames[j]); + appendStringLiteralAH(q, tbinfo->dobj.name, fout); + appendPQExpBuffer(q, "\n );\n"); } } appendPQExpBuffer(q, "\n-- For binary upgrade, set relfrozenxid.\n"); appendPQExpBuffer(q, "UPDATE pg_class\n" "SET relfrozenxid = '%u'\n" - "WHERE relname = '%s'\n" - " AND relnamespace = " + "WHERE relname = ", + tbinfo->frozenxid); + appendStringLiteralAH(q, tbinfo->dobj.name, fout); + appendPQExpBuffer(q, "\n AND relnamespace = " "(SELECT oid FROM pg_namespace " - "WHERE nspname = CURRENT_SCHEMA);\n", - tbinfo->frozenxid, - tbinfo->dobj.name); + "WHERE nspname = CURRENT_SCHEMA);\n"); } /* Loop dumping statistics and storage statements */ diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 889e7280a9..5c38ba068c 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -1088,8 +1088,10 @@ dumpCreateDB(PGconn *conn) appendPQExpBuffer(buf, "\n-- For binary upgrade, set datfrozenxid.\n"); appendPQExpBuffer(buf, "UPDATE pg_database\n" "SET datfrozenxid = '%u'\n" - "WHERE datname = '%s';\n", - dbfrozenxid, fdbname); + "WHERE datname = ", + dbfrozenxid); + appendStringLiteralConn(buf, dbname, conn); + appendPQExpBuffer(buf, ";\n"); } } -- 2.39.5