Commit f8513610 authored by Bruce Momjian's avatar Bruce Momjian

pg_upgrade: pass username to analyze script

If -U (user) is specified, pass the username into the created analyze
script.
Per request from Ray Stell
parent e029275c
...@@ -459,6 +459,13 @@ void ...@@ -459,6 +459,13 @@ void
create_script_for_cluster_analyze(char **analyze_script_file_name) create_script_for_cluster_analyze(char **analyze_script_file_name)
{ {
FILE *script = NULL; FILE *script = NULL;
char *user_specification = "";
if (os_info.user_specified)
{
user_specification = pg_malloc(strlen(os_info.user) + 7);
sprintf(user_specification, "-U \"%s\" ", os_info.user);
}
*analyze_script_file_name = pg_malloc(MAXPGPATH); *analyze_script_file_name = pg_malloc(MAXPGPATH);
...@@ -501,7 +508,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name) ...@@ -501,7 +508,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "echo %sthis script and run:%s\n", fprintf(script, "echo %sthis script and run:%s\n",
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "echo %s \"%s/vacuumdb\" --all %s%s\n", ECHO_QUOTE, new_cluster.bindir, fprintf(script, "echo %s \"%s/vacuumdb\" %s--all %s%s\n", ECHO_QUOTE,
new_cluster.bindir, user_specification,
/* Did we copy the free space files? */ /* Did we copy the free space files? */
(GET_MAJOR_VERSION(old_cluster.major_version) >= 804) ? (GET_MAJOR_VERSION(old_cluster.major_version) >= 804) ?
"--analyze-only" : "--analyze", ECHO_QUOTE); "--analyze-only" : "--analyze", ECHO_QUOTE);
...@@ -522,7 +530,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name) ...@@ -522,7 +530,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "echo %s--------------------------------------------------%s\n", fprintf(script, "echo %s--------------------------------------------------%s\n",
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "\"%s/vacuumdb\" --all --analyze-only\n", new_cluster.bindir); fprintf(script, "\"%s/vacuumdb\" %s--all --analyze-only\n",
new_cluster.bindir, user_specification);
fprintf(script, "echo%s\n", ECHO_BLANK); fprintf(script, "echo%s\n", ECHO_BLANK);
fprintf(script, "echo %sThe server is now available with minimal optimizer statistics.%s\n", fprintf(script, "echo %sThe server is now available with minimal optimizer statistics.%s\n",
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
...@@ -543,7 +552,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name) ...@@ -543,7 +552,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "echo %s---------------------------------------------------%s\n", fprintf(script, "echo %s---------------------------------------------------%s\n",
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "\"%s/vacuumdb\" --all --analyze-only\n", new_cluster.bindir); fprintf(script, "\"%s/vacuumdb\" %s--all --analyze-only\n",
new_cluster.bindir, user_specification);
fprintf(script, "echo%s\n\n", ECHO_BLANK); fprintf(script, "echo%s\n\n", ECHO_BLANK);
#ifndef WIN32 #ifndef WIN32
...@@ -556,7 +566,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name) ...@@ -556,7 +566,8 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "echo %s-------------------------------------------------------------%s\n", fprintf(script, "echo %s-------------------------------------------------------------%s\n",
ECHO_QUOTE, ECHO_QUOTE); ECHO_QUOTE, ECHO_QUOTE);
fprintf(script, "\"%s/vacuumdb\" --all %s\n", new_cluster.bindir, fprintf(script, "\"%s/vacuumdb\" %s--all %s\n", new_cluster.bindir,
user_specification,
/* Did we copy the free space files? */ /* Did we copy the free space files? */
(GET_MAJOR_VERSION(old_cluster.major_version) >= 804) ? (GET_MAJOR_VERSION(old_cluster.major_version) >= 804) ?
"--analyze-only" : "--analyze"); "--analyze-only" : "--analyze");
...@@ -573,6 +584,9 @@ create_script_for_cluster_analyze(char **analyze_script_file_name) ...@@ -573,6 +584,9 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
*analyze_script_file_name, getErrorText(errno)); *analyze_script_file_name, getErrorText(errno));
#endif #endif
if (os_info.user_specified)
pg_free(user_specification);
check_ok(); check_ok();
} }
......
...@@ -172,6 +172,7 @@ parseCommandLine(int argc, char *argv[]) ...@@ -172,6 +172,7 @@ parseCommandLine(int argc, char *argv[])
case 'U': case 'U':
pg_free(os_info.user); pg_free(os_info.user);
os_info.user = pg_strdup(optarg); os_info.user = pg_strdup(optarg);
os_info.user_specified = true;
/* /*
* Push the user name into the environment so pre-9.1 * Push the user name into the environment so pre-9.1
......
...@@ -291,6 +291,7 @@ typedef struct ...@@ -291,6 +291,7 @@ typedef struct
const char *progname; /* complete pathname for this program */ const char *progname; /* complete pathname for this program */
char *exec_path; /* full path to my executable */ char *exec_path; /* full path to my executable */
char *user; /* username for clusters */ char *user; /* username for clusters */
bool user_specified; /* user specified on command-line */
char **old_tablespaces; /* tablespaces */ char **old_tablespaces; /* tablespaces */
int num_old_tablespaces; int num_old_tablespaces;
char **libraries; /* loadable libraries */ char **libraries; /* loadable libraries */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment