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  (Pavel Stehule <pavel.stehule@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: Greg Stark
Дата:
Сообщение: Re: Should CSV parsing be stricter about mid-field quotes?
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: psql tests hangs