mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
In pg_upgrade, remove dependency on pg_config, as that might not be in
the non-development install. Instead, use the LOAD mechanism to check for the pg_upgrade_support shared object, like we do for other shared object checks. Backpatch to 9.1. Report from Àlvaro
This commit is contained in:
@ -20,7 +20,6 @@ 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);
|
||||
static void check_for_support_lib(ClusterInfo *cluster);
|
||||
static void get_bin_version(ClusterInfo *cluster);
|
||||
|
||||
|
||||
@ -265,8 +264,6 @@ check_cluster_versions(void)
|
||||
void
|
||||
check_cluster_compatibility(bool live_check)
|
||||
{
|
||||
check_for_support_lib(&new_cluster);
|
||||
|
||||
/* get/check pg_control data of servers */
|
||||
get_control_data(&old_cluster, live_check);
|
||||
get_control_data(&new_cluster, false);
|
||||
@ -836,45 +833,6 @@ check_for_reg_data_type_usage(ClusterInfo *cluster)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Test pg_upgrade_support.so is in the proper place. We cannot copy it
|
||||
* ourselves because install directories are typically root-owned.
|
||||
*/
|
||||
static void
|
||||
check_for_support_lib(ClusterInfo *cluster)
|
||||
{
|
||||
char cmd[MAXPGPATH];
|
||||
char libdir[MAX_STRING];
|
||||
char libfile[MAXPGPATH];
|
||||
FILE *lib_test;
|
||||
FILE *output;
|
||||
|
||||
snprintf(cmd, sizeof(cmd), "\"%s/pg_config\" --pkglibdir", cluster->bindir);
|
||||
|
||||
if ((output = popen(cmd, "r")) == NULL ||
|
||||
fgets(libdir, sizeof(libdir), output) == NULL)
|
||||
pg_log(PG_FATAL, "Could not get pkglibdir data using %s: %s\n",
|
||||
cmd, getErrorText(errno));
|
||||
|
||||
|
||||
pclose(output);
|
||||
|
||||
/* Remove trailing newline */
|
||||
if (strchr(libdir, '\n') != NULL)
|
||||
*strchr(libdir, '\n') = '\0';
|
||||
|
||||
snprintf(libfile, sizeof(libfile), "%s/pg_upgrade_support%s", libdir,
|
||||
DLSUFFIX);
|
||||
|
||||
if ((lib_test = fopen(libfile, "r")) == NULL)
|
||||
pg_log(PG_FATAL,
|
||||
"The pg_upgrade_support module must be created and installed in the %s cluster.\n",
|
||||
CLUSTER_NAME(cluster));
|
||||
|
||||
fclose(lib_test);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
get_bin_version(ClusterInfo *cluster)
|
||||
{
|
||||
|
Reference in New Issue
Block a user