Re: psql tests hangs
От | Tom Lane |
---|---|
Тема | Re: psql tests hangs |
Дата | |
Msg-id | 1555488.1683918527@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: psql tests hangs (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: psql tests hangs
|
Список | pgsql-hackers |
I wrote: > Pavel Stehule <pavel.stehule@gmail.com> writes: >> Except for testing, using pager in non-interactive mode makes no sense. > Agreed. Let's solve this by inserting isatty tests in psql, rather > than hacking the test environment. Here's a proposed patch for this. I noticed that another memo the PSQL_WATCH_PAGER patch had not gotten was the lesson learned in commit 18f8f784c, namely that it's a good idea to ignore empty or all-blank settings. regards, tom lane diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 97f7d97220..607a57715a 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -5197,14 +5197,20 @@ do_watch(PQExpBuffer query_buf, double sleep, int iter) /* * For \watch, we ignore the size of the result and always use the pager - * if PSQL_WATCH_PAGER is set. We also ignore the regular PSQL_PAGER or - * PAGER environment variables, because traditional pagers probably won't - * be very useful for showing a stream of results. + * as long as we're talking to a terminal and "\pset pager" is enabled. + * However, we'll only use the pager identified by PSQL_WATCH_PAGER. We + * ignore the regular PSQL_PAGER or PAGER environment variables, because + * traditional pagers probably won't be very useful for showing a stream + * of results. */ #ifndef WIN32 pagerprog = getenv("PSQL_WATCH_PAGER"); + /* if variable is empty or all-white-space, don't use pager */ + if (pagerprog && strspn(pagerprog, " \t\r\n") == strlen(pagerprog)) + pagerprog = NULL; #endif - if (pagerprog && myopt.topt.pager) + if (pagerprog && myopt.topt.pager && + isatty(fileno(stdin)) && isatty(fileno(stdout))) { fflush(NULL); disable_sigpipe_trap();
В списке pgsql-hackers по дате отправления: