summaryrefslogtreecommitdiff
path: root/src/bin/pg_dump/pg_backup_db.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2020-11-06 15:48:21 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2020-11-06 15:48:21 -0500
commit9e98ddd16e0623fe3f993fdd6dd032af5be7da6c (patch)
tree510a6227c539357757a900edda7c72c87d3a3584 /src/bin/pg_dump/pg_backup_db.c
parent8b4121903c2d7deca4a7041af791ede46597f9dd (diff)
Revert "pg_dump: Lock all relations, not just plain tables".
Revert 403a3d91c, as well as the followup fix 7f4235032, in all branches. We need to think a bit harder about what the behavior of LOCK TABLE on views should be, and there's no time for that before next week's releases. We'll take another crack at this later. Discussion: https://postgr.es/m/16703-e348f58aab3cf6cc@postgresql.org
Diffstat (limited to 'src/bin/pg_dump/pg_backup_db.c')
-rw-r--r--src/bin/pg_dump/pg_backup_db.c67
1 files changed, 0 insertions, 67 deletions
diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c
index 9f57bdbf8b5..6559151f518 100644
--- a/src/bin/pg_dump/pg_backup_db.c
+++ b/src/bin/pg_dump/pg_backup_db.c
@@ -551,73 +551,6 @@ EndDBCopyMode(Archive *AHX, const char *tocEntryTag)
}
}
-/*
- * Does LOCK TABLE work on non-table relations on this server?
- *
- * Note: assumes it is called out of any transaction
- */
-bool
-IsLockTableGeneric(Archive *AHX)
-{
- ArchiveHandle *AH = (ArchiveHandle *) AHX;
- PGresult *res;
- char *sqlstate;
- bool retval;
-
- if (AHX->remoteVersion >= 140000)
- return true;
- else if (AHX->remoteVersion < 90500)
- return false;
-
- StartTransaction(AHX);
-
- /*
- * Try a LOCK TABLE on a well-known non-table catalog; WRONG_OBJECT_TYPE
- * tells us that this server doesn't support locking non-table rels, while
- * LOCK_NOT_AVAILABLE and INSUFFICIENT_PRIVILEGE tell us that it does.
- * Report anything else as a fatal problem.
- */
-#define ERRCODE_INSUFFICIENT_PRIVILEGE "42501"
-#define ERRCODE_WRONG_OBJECT_TYPE "42809"
-#define ERRCODE_LOCK_NOT_AVAILABLE "55P03"
- res = PQexec(AH->connection,
- "LOCK TABLE pg_catalog.pg_class_tblspc_relfilenode_index IN ACCESS SHARE MODE NOWAIT");
- switch (PQresultStatus(res))
- {
- case PGRES_COMMAND_OK:
- retval = true;
- break;
- case PGRES_FATAL_ERROR:
- sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE);
- if (sqlstate &&
- strcmp(sqlstate, ERRCODE_WRONG_OBJECT_TYPE) == 0)
- {
- retval = false;
- break;
- }
- else if (sqlstate &&
- (strcmp(sqlstate, ERRCODE_LOCK_NOT_AVAILABLE) == 0 ||
- strcmp(sqlstate, ERRCODE_INSUFFICIENT_PRIVILEGE) == 0))
- {
- retval = true;
- break;
- }
- /* else, falls through */
- default:
- warn_or_exit_horribly(AH, modulename,
- "LOCK TABLE failed for \"%s\": %s",
- "pg_catalog.pg_class_tblspc_relfilenode_index",
- PQerrorMessage(AH->connection));
- retval = false; /* not reached */
- break;
- }
- PQclear(res);
-
- CommitTransaction(AHX);
-
- return retval;
-}
-
void
StartTransaction(Archive *AHX)
{