Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6dd9584

Browse files
committed
Improve pg_upgrade's status display
Pg_upgrade displays file names during copy and database names duringdump/restore. Andrew Dunstan identified three bugs:* long file names were being truncated to 60 _leading_ characters, which often do not change for long file names* file names were truncated to 60 characters in log files* carriage returns were being output to log filesThis commit fixes these --- it prints 60 _trailing_ characters to thestatus display, and full path names without carriage returns to logfiles. It also suppresses status output to the log file unless verbosemode is used.
1 parentef754fb commit6dd9584

File tree

5 files changed

+30
-20
lines changed

5 files changed

+30
-20
lines changed

‎contrib/pg_upgrade/dump.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ generate_old_dump(void)
3636
charfile_name[MAXPGPATH];
3737
DbInfo*old_db=&old_cluster.dbarr.dbs[dbnum];
3838

39-
pg_log(PG_REPORT,OVERWRITE_MESSAGE,old_db->db_name);
39+
pg_log(PG_STATUS,"%s",old_db->db_name);
4040
snprintf(file_name,sizeof(file_name),DB_DUMP_FILE_MASK,old_db->db_oid);
4141

4242
exec_prog(RESTORE_LOG_FILE,NULL, true,

‎contrib/pg_upgrade/pg_upgrade.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ create_new_objects(void)
310310
charfile_name[MAXPGPATH];
311311
DbInfo*old_db=&old_cluster.dbarr.dbs[dbnum];
312312

313-
pg_log(PG_REPORT,OVERWRITE_MESSAGE,old_db->db_name);
313+
pg_log(PG_STATUS,"%s",old_db->db_name);
314314
snprintf(file_name,sizeof(file_name),DB_DUMP_FILE_MASK,old_db->db_oid);
315315

316316
/*

‎contrib/pg_upgrade/pg_upgrade.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@
2424

2525
#defineMIGRATOR_API_VERSION1
2626

27-
#defineMESSAGE_WIDTH"60"
27+
#defineMESSAGE_WIDTH60
2828

29-
#defineOVERWRITE_MESSAGE" %-" MESSAGE_WIDTH "." MESSAGE_WIDTH "s\r"
3029
#defineGET_MAJOR_VERSION(v)((v) / 100)
3130

3231
/* contains both global db information and CREATE DATABASE commands */
@@ -208,6 +207,7 @@ typedef enum
208207
typedefenum
209208
{
210209
PG_VERBOSE,
210+
PG_STATUS,
211211
PG_REPORT,
212212
PG_WARNING,
213213
PG_FATAL

‎contrib/pg_upgrade/relfilenode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ transfer_relfile(pageCnvCtx *pageConverter, FileNameMap *map,
213213
unlink(new_file);
214214

215215
/* Copying files might take some time, so give feedback. */
216-
pg_log(PG_REPORT,OVERWRITE_MESSAGE,old_file);
216+
pg_log(PG_STATUS,"%s",old_file);
217217

218218
if ((user_opts.transfer_mode==TRANSFER_MODE_LINK)&& (pageConverter!=NULL))
219219
pg_log(PG_FATAL,"This upgrade requires page-by-page conversion, "

‎contrib/pg_upgrade/util.c

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ prep_status(const char *fmt,...)
7575
if (strlen(message)>0&&message[strlen(message)-1]=='\n')
7676
pg_log(PG_REPORT,"%s",message);
7777
else
78-
pg_log(PG_REPORT,"%-"MESSAGE_WIDTH"s",message);
78+
/* trim strings that don't end in a newline */
79+
pg_log(PG_REPORT,"%-*s",MESSAGE_WIDTH,message);
7980
}
8081

8182

@@ -89,22 +90,16 @@ pg_log(eLogType type, char *fmt,...)
8990
vsnprintf(message,sizeof(message),fmt,args);
9091
va_end(args);
9192

92-
/* PG_VERBOSEis only output in verbose mode */
93+
/* PG_VERBOSEand PG_STATUS are only output in verbose mode */
9394
/* fopen() on log_opts.internal might have failed, so check it */
94-
if ((type!=PG_VERBOSE||log_opts.verbose)&&log_opts.internal!=NULL)
95+
if (((type!=PG_VERBOSE&&type!=PG_STATUS)||log_opts.verbose)&&
96+
log_opts.internal!=NULL)
9597
{
96-
/*
97-
* There's nothing much we can do about it if fwrite fails, but some
98-
* platforms declare fwrite with warn_unused_result. Do a little
99-
* dance with casting to void to shut up the compiler in such cases.
100-
*/
101-
size_trc;
102-
103-
rc=fwrite(message,strlen(message),1,log_opts.internal);
104-
/* if we are using OVERWRITE_MESSAGE, add newline to log file */
105-
if (strchr(message,'\r')!=NULL)
106-
rc=fwrite("\n",1,1,log_opts.internal);
107-
(void)rc;
98+
if (type==PG_STATUS)
99+
/* status messages need two leading spaces and a newline */
100+
fprintf(log_opts.internal," %s\n",message);
101+
else
102+
fprintf(log_opts.internal,"%s",message);
108103
fflush(log_opts.internal);
109104
}
110105

@@ -115,6 +110,21 @@ pg_log(eLogType type, char *fmt,...)
115110
printf("%s",_(message));
116111
break;
117112

113+
casePG_STATUS:
114+
/* for output to a display, do leading truncation and append \r */
115+
if (isatty(fileno(stdout)))
116+
/* -2 because we use a 2-space indent */
117+
printf(" %s%-*.*s\r",
118+
/* prefix with "..." if we do leading truncation */
119+
strlen(message) <=MESSAGE_WIDTH-2 ?"" :"...",
120+
MESSAGE_WIDTH-2,MESSAGE_WIDTH-2,
121+
/* optional leading truncation */
122+
strlen(message) <=MESSAGE_WIDTH-2 ?message :
123+
message+strlen(message)-MESSAGE_WIDTH+3+2);
124+
else
125+
printf(" %s\n",_(message));
126+
break;
127+
118128
casePG_REPORT:
119129
casePG_WARNING:
120130
printf("%s",_(message));

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp