BUG #14001: pg_ctl error output empty/faulty

Started by Nonameabout 10 years ago4 messagesbugs
Jump to latest
#1Noname
doublem09@googlemail.com

The following bug has been logged on the website:

Bug reference: 14001
Logged by: Manuel Mathar
Email address: doublem09@googlemail.com
PostgreSQL version: 9.5.1
Operating system: Windows 7 (Enterprise), Windows 10
Description:

Error messages from pg_ctl can't be piped. Tested for 9.5.1, 9.5.0 and 9.3.5
on Windows 7 and 10.

For a simple "pg_ctl status" an error message concerning the missing "-D"
parameter should be expected. But when reading the standard error with
another program (tested with Qt's QProcess readAllStandardError) or piping
it into a file "pg_ctl status 2> out.txt" the result is empty.

Under Windows 10 error messages don't appear even in the command line (no
problem for Windows 7 here).
E.g. typing "pg_ctl status" in a cmd shell yields no output at all.

After a brief test it seems this can be fixed by correcting the negation
"if (!pgwin32_is_service())" to "if (pgwin32_is_service())" in pg_ctl.c
write_stderr(...).

Sorry if I misunderstood this or forgot important information. Feel free to
contact me if You have further questions.

Best regards,
Manuel Mathar

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Michael Paquier
michael@paquier.xyz
In reply to: Noname (#1)
Re: BUG #14001: pg_ctl error output empty/faulty

On Sat, Mar 5, 2016 at 9:00 PM, <doublem09@googlemail.com> wrote:

Under Windows 10 error messages don't appear even in the command line (no
problem for Windows 7 here).
E.g. typing "pg_ctl status" in a cmd shell yields no output at all.

After a brief test it seems this can be fixed by correcting the negation
"if (!pgwin32_is_service())" to "if (pgwin32_is_service())" in pg_ctl.c
write_stderr(...).

Indeed. I don't think that this oversight from a9676139 needs much comment...
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -216,7 +216,7 @@ write_stderr(const char *fmt,...)
     * On Win32, we print to stderr if running on a console, or write to
     * eventlog if running as a service
     */
-   if (!isatty(fileno(stderr)))    /* Running as a service */
+   if (!pgwin32_is_service())  /* Running as a service */
    {
Could somebody switch this condition? We should not write to the event
logs if this code is not run for a service.
-- 
Michael

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#2)
Re: BUG #14001: pg_ctl error output empty/faulty

Michael Paquier <michael.paquier@gmail.com> writes:

On Sat, Mar 5, 2016 at 9:00 PM, <doublem09@googlemail.com> wrote:

After a brief test it seems this can be fixed by correcting the negation
"if (!pgwin32_is_service())" to "if (pgwin32_is_service())" in pg_ctl.c
write_stderr(...).

Indeed. I don't think that this oversight from a9676139 needs much comment...
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -216,7 +216,7 @@ write_stderr(const char *fmt,...)
* On Win32, we print to stderr if running on a console, or write to
* eventlog if running as a service
*/
-   if (!isatty(fileno(stderr)))    /* Running as a service */
+   if (!pgwin32_is_service())  /* Running as a service */
{
Could somebody switch this condition? We should not write to the event
logs if this code is not run for a service.

Done.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#4Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#3)
Re: BUG #14001: pg_ctl error output empty/faulty

On Tue, Mar 8, 2016 at 12:41 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Michael Paquier <michael.paquier@gmail.com> writes:

On Sat, Mar 5, 2016 at 9:00 PM, <doublem09@googlemail.com> wrote:

After a brief test it seems this can be fixed by correcting the negation
"if (!pgwin32_is_service())" to "if (pgwin32_is_service())" in pg_ctl.c
write_stderr(...).

Indeed. I don't think that this oversight from a9676139 needs much comment...
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -216,7 +216,7 @@ write_stderr(const char *fmt,...)
* On Win32, we print to stderr if running on a console, or write to
* eventlog if running as a service
*/
-   if (!isatty(fileno(stderr)))    /* Running as a service */
+   if (!pgwin32_is_service())  /* Running as a service */
{
Could somebody switch this condition? We should not write to the event
logs if this code is not run for a service.

Done.

Thanks..
--
Michael

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs