In pg_upgrade, check there are no prepared transactions.
This commit is contained in:
parent
8cfd59dd65
commit
07d17a73ec
@ -16,6 +16,7 @@ static void check_old_cluster_has_new_cluster_dbs(void);
|
|||||||
static void check_locale_and_encoding(ControlData *oldctrl,
|
static void check_locale_and_encoding(ControlData *oldctrl,
|
||||||
ControlData *newctrl);
|
ControlData *newctrl);
|
||||||
static void check_is_super_user(ClusterInfo *cluster);
|
static void check_is_super_user(ClusterInfo *cluster);
|
||||||
|
static void check_for_prepared_transactions(ClusterInfo *cluster);
|
||||||
static void check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster);
|
static void check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster);
|
||||||
static void check_for_reg_data_type_usage(ClusterInfo *cluster);
|
static void check_for_reg_data_type_usage(ClusterInfo *cluster);
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ check_old_cluster(bool live_check,
|
|||||||
* Check for various failure cases
|
* Check for various failure cases
|
||||||
*/
|
*/
|
||||||
check_is_super_user(&old_cluster);
|
check_is_super_user(&old_cluster);
|
||||||
|
check_for_prepared_transactions(&old_cluster);
|
||||||
check_for_reg_data_type_usage(&old_cluster);
|
check_for_reg_data_type_usage(&old_cluster);
|
||||||
check_for_isn_and_int8_passing_mismatch(&old_cluster);
|
check_for_isn_and_int8_passing_mismatch(&old_cluster);
|
||||||
|
|
||||||
@ -117,6 +119,7 @@ check_new_cluster(void)
|
|||||||
get_db_and_rel_infos(&new_cluster);
|
get_db_and_rel_infos(&new_cluster);
|
||||||
|
|
||||||
check_new_cluster_is_empty();
|
check_new_cluster_is_empty();
|
||||||
|
check_for_prepared_transactions(&new_cluster);
|
||||||
check_old_cluster_has_new_cluster_dbs();
|
check_old_cluster_has_new_cluster_dbs();
|
||||||
|
|
||||||
check_loadable_libraries();
|
check_loadable_libraries();
|
||||||
@ -506,6 +509,36 @@ check_is_super_user(ClusterInfo *cluster)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check_for_prepared_transactions()
|
||||||
|
*
|
||||||
|
* Make sure there are no prepared transactions because the storage format
|
||||||
|
* might have changed.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
check_for_prepared_transactions(ClusterInfo *cluster)
|
||||||
|
{
|
||||||
|
PGresult *res;
|
||||||
|
PGconn *conn = connectToServer(cluster, "template1");
|
||||||
|
|
||||||
|
prep_status("Checking for prepared transactions");
|
||||||
|
|
||||||
|
res = executeQueryOrDie(conn,
|
||||||
|
"SELECT * "
|
||||||
|
"FROM pg_catalog.pg_prepared_xact()");
|
||||||
|
|
||||||
|
if (PQntuples(res) != 0)
|
||||||
|
pg_log(PG_FATAL, "The %s cluster contains prepared transactions\n",
|
||||||
|
CLUSTER_NAME(cluster));
|
||||||
|
|
||||||
|
PQclear(res);
|
||||||
|
|
||||||
|
PQfinish(conn);
|
||||||
|
|
||||||
|
check_ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check_for_isn_and_int8_passing_mismatch()
|
* check_for_isn_and_int8_passing_mismatch()
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user