Wednesday, February 15, 2017

That Guy From Delhi: Custom pg_dumpall now works with AWS RDS Postgres

That Guy From Delhi: Custom pg_dumpall now works with AWS RDS Postgres: While trying to work with AWS RDS Postgres, it was interesting to see pg_dumpall failing to dump databases at all! Delving further, for ob...



diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index 6d8d723..74c85a2 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -601,13 +601,13 @@ dropRoles(PGconn *conn)
  if (server_version >= 90600)
   res = executeQuery(conn,
          "SELECT rolname "
-         "FROM pg_authid "
+         "FROM pg_roles "
          "WHERE rolname !~ '^pg_' "
          "ORDER BY 1");
  else if (server_version >= 80100)
   res = executeQuery(conn,
          "SELECT rolname "
-         "FROM pg_authid "
+         "FROM pg_roles "
          "ORDER BY 1");
  else
   res = executeQuery(conn,
@@ -1304,7 +1304,7 @@ dumpCreateDB(PGconn *conn)
  if (server_version >= 90600)
   res = executeQuery(conn,
          "SELECT datname, "
-         "coalesce(rolname, (select rolname from pg_authid where oid=(select datdba from pg_database where datname='template0'))), "
+         "coalesce(rolname, (select rolname from pg_roles where oid=(select datdba from pg_database where datname='template0'))), "
          "pg_encoding_to_char(d.encoding), "
          "datcollate, datctype, datfrozenxid, datminmxid, "
          "datistemplate, "
@@ -1318,40 +1318,40 @@ dumpCreateDB(PGconn *conn)
          "AS rdatacl, "
          "datconnlimit, "
          "(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
-     "FROM pg_database d LEFT JOIN pg_authid u ON (datdba = u.oid) "
+     "FROM pg_database d LEFT JOIN pg_roles u ON (datdba = u.oid) "
          "WHERE datallowconn ORDER BY 1");
  else if (server_version >= 90300)
   res = executeQuery(conn,
          "SELECT datname, "
-         "coalesce(rolname, (select rolname from pg_authid where oid=(select datdba from pg_database where datname='template0'))), "
+         "coalesce(rolname, (select rolname from pg_roles where oid=(select datdba from pg_database where datname='template0'))), "
          "pg_encoding_to_char(d.encoding), "
          "datcollate, datctype, datfrozenxid, datminmxid, "
          "datistemplate, datacl, '' as rdatacl, "
          "datconnlimit, "
          "(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
-     "FROM pg_database d LEFT JOIN pg_authid u ON (datdba = u.oid) "
+     "FROM pg_database d LEFT JOIN pg_roles u ON (datdba = u.oid) "
          "WHERE datallowconn ORDER BY 1");
  else if (server_version >= 80400)
   res = executeQuery(conn,
          "SELECT datname, "
-         "coalesce(rolname, (select rolname from pg_authid where oid=(select datdba from pg_database where datname='template0'))), "
+         "coalesce(rolname, (select rolname from pg_roles where oid=(select datdba from pg_database where datname='template0'))), "
          "pg_encoding_to_char(d.encoding), "
        "datcollate, datctype, datfrozenxid, 0 AS datminmxid, "
          "datistemplate, datacl, '' as rdatacl, "
          "datconnlimit, "
          "(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
-     "FROM pg_database d LEFT JOIN pg_authid u ON (datdba = u.oid) "
+     "FROM pg_database d LEFT JOIN pg_roles u ON (datdba = u.oid) "
          "WHERE datallowconn ORDER BY 1");
  else if (server_version >= 80100)
   res = executeQuery(conn,
          "SELECT datname, "
-         "coalesce(rolname, (select rolname from pg_authid where oid=(select datdba from pg_database where datname='template0'))), "
+         "coalesce(rolname, (select rolname from pg_roles where oid=(select datdba from pg_database where datname='template0'))), "
          "pg_encoding_to_char(d.encoding), "
          "null::text AS datcollate, null::text AS datctype, datfrozenxid, 0 AS datminmxid, "
          "datistemplate, datacl, '' as rdatacl, "
          "datconnlimit, "
          "(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
-     "FROM pg_database d LEFT JOIN pg_authid u ON (datdba = u.oid) "
+     "FROM pg_database d LEFT JOIN pg_roles u ON (datdba = u.oid) "
          "WHERE datallowconn ORDER BY 1");
  else
   res = executeQuery(conn,
@@ -1601,8 +1601,8 @@ dumpDbRoleConfig(PGconn *conn)
  int   i;
 
  printfPQExpBuffer(buf, "SELECT rolname, datname, unnest(setconfig) "
-       "FROM pg_db_role_setting, pg_authid, pg_database "
-    "WHERE setrole = pg_authid.oid AND setdatabase = pg_database.oid");
+       "FROM pg_db_role_setting, pg_roles, pg_database "
+    "WHERE setrole = pg_roles.oid AND setdatabase = pg_database.oid");
  res = executeQuery(conn, buf->data);
 
  if (PQntuples(res) > 0)

No comments: