提交 07d17a73 编写于 作者: B Bruce Momjian

In pg_upgrade, check there are no prepared transactions.

上级 8cfd59dd
......@@ -16,6 +16,7 @@ static void check_old_cluster_has_new_cluster_dbs(void);
static void check_locale_and_encoding(ControlData *oldctrl,
ControlData *newctrl);
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_reg_data_type_usage(ClusterInfo *cluster);
......@@ -65,6 +66,7 @@ check_old_cluster(bool live_check,
* Check for various failure cases
*/
check_is_super_user(&old_cluster);
check_for_prepared_transactions(&old_cluster);
check_for_reg_data_type_usage(&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);
check_new_cluster_is_empty();
check_for_prepared_transactions(&new_cluster);
check_old_cluster_has_new_cluster_dbs();
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()
*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册