Thread: Proposal: psql force prompting on notty

Proposal: psql force prompting on notty

From
Michael Mauger
Date:
I'm the maintainer of sql.el in GNU Emacs.  On both the Mac OS X
and the Windows/Cygwin platform we've had reports that psql run
under Emacs does not issue a prompt for commands.

I did a little research and it appears that the cause is that
pset.notty is being set to false because stdin/stdout are not
a tty (pgsql-server/src/bin/psql/startup.c).  I'd like to
propose that an option be added to the psql command line to
override the detection of the tty and force the prompting for
commands on stdin.

I believe the attached patch should add the option -I to psql
and force the prompt to appear as if it were an interactive
session regardless of the state of stdin/stdout.  I do not
have a configuration available to properly test this however.

Please be sure to include me in any replies since I do not
subscribe to this list.  TIA.

-- Michael

__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com--- pgsql-server/src/bin/psql/startup.c    29 Sep 2003 18:21:33 -0000    1.80
+++ pgsql-server/src/bin/psql/startup.c    01 Nov 2003 06:10:42 -0000
@@ -322,6 +322,7 @@
         {"field-separator", required_argument, NULL, 'F'},
         {"host", required_argument, NULL, 'h'},
         {"html", no_argument, NULL, 'H'},
+        {"interactive", no_argument, NULL, 'I'},
         {"list", no_argument, NULL, 'l'},
         {"no-readline", no_argument, NULL, 'n'},
         {"output", required_argument, NULL, 'o'},
@@ -352,7 +353,7 @@

     memset(options, 0, sizeof *options);

-    while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:Hlno:p:P:qR:sStT:uU:v:VWxX?",
+    while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlMno:p:P:qR:sStT:uU:v:VWxX?",
                             long_options, &optindex)) != -1)
     {
         switch (c)
@@ -395,7 +396,10 @@
             case 'H':
                 pset.popt.topt.format = PRINT_HTML;
                 break;
+            case 'I':
+                pset.notty = 0;
+                break;
             case 'l':
                 options->action = ACT_LIST_DB;
                 break;
--- pgsql-server/src/bin/psql/help.c    02 Oct 2003 06:39:31 -0000    1.81
+++ pgsql-server/src/bin/psql/help.c    01 Nov 2003 06:29:50 -0000
@@ -103,6 +103,7 @@
     puts(_("  -a              echo all input from script"));
     puts(_("  -e              echo commands sent to server"));
     puts(_("  -E              display queries that internal commands generate"));
+    puts(_("  -I              force interactive prompting for input"));
     puts(_("  -q              run quietly (no messages, only query output)"));
     puts(_("  -o FILENAME     send query results to file (or |pipe)"));
     puts(_("  -n              disable enhanced command line editing (readline)"));

Re: Proposal: psql force prompting on notty

From
Peter Eisentraut
Date:
Michael Mauger writes:

> I'm the maintainer of sql.el in GNU Emacs.  On both the Mac OS X
> and the Windows/Cygwin platform we've had reports that psql run
> under Emacs does not issue a prompt for commands.

Why can't you make the Emacs session behave like a terminal for psql?

-- 
Peter Eisentraut   peter_e@gmx.net



Re: Proposal: psql force prompting on notty

From
Peter Eisentraut
Date:
Michael Mauger writes:

> Emacs is not a Cygwin (Un*x emulation on Windows) executable (like psql
> is)

Why don't you use the native Windows version of psql?

-- 
Peter Eisentraut   peter_e@gmx.net



Re: Proposal: psql force prompting on notty

From
Michael Mauger
Date:
--- Peter Eisentraut <peter_e@gmx.net> wrote:
> Michael Mauger writes:
> 
> > Emacs is not a Cygwin (Un*x emulation on Windows) executable (like
> > psql is)
> 
> Why don't you use the native Windows version of psql?
> 

The Cygwin setup program makes pre-built binaries of postgres readily
available on Windows.  (In fact, using this version is encouraged in the
Postgres for Windows installation notes.)  A native Windows version would
not work either since the isatty() implementation there will only
recognize a Command Prompt window as a tty.

-- Michael

__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com


Re: Proposal: psql force prompting on notty

From
Michael Mauger
Date:
--- Peter Eisentraut <peter_e@gmx.net> wrote:
> Michael Mauger writes:
> 
> > I'm the maintainer of sql.el in GNU Emacs.  On both the Mac OS X
> > and the Windows/Cygwin platform we've had reports that psql run
> > under Emacs does not issue a prompt for commands.
> 
> Why can't you make the Emacs session behave like a terminal for psql?
> 

Discussion on emacs-devel indicates that there are some known issues with
pty support on the Mac OS X port which are being addressed.  The problem
however does still exist on the Windows platform.  

Emacs is not a Cygwin (Un*x emulation on Windows) executable (like psql
is) so it is not setting the psql process up in a way that cygwin
recognizes as being a pty-like environment.  Thus the isatty() on stdin
and stdout are returning false when run under Emacs.  

My proposed patch is small and overrides psql's detection of it's
environment when the user knows better.  

-- Michael

__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com


Re: Proposal: psql force prompting on notty

From
Michael Mauger
Date:
--- Michael Mauger <mmaug@yahoo.com> wrote:
> --- Peter Eisentraut <peter_e@gmx.net> wrote:
> > Michael Mauger writes:
> > >
> > > Emacs is not a Cygwin (Un*x emulation on Windows) executable (like
> > > psql is)
> > 
> > Why don't you use the native Windows version of psql?
> > 
> 
> The Cygwin setup program makes pre-built binaries of postgres 
> readily available on Windows.  (In fact, using this version is 
> encouraged in the Postgres for Windows installation notes.)  A 
> native Windows version would not work either since the isatty() 
> implementation there will only recognize a Command Prompt 
> window as a tty.
> 

Are there further concerns with this patch?

--- pgsql-server/src/bin/psql/startup.c    29 Sep 2003 18:21:33 -0000    1.80
+++ pgsql-server/src/bin/psql/startup.c    01 Nov 2003 06:10:42 -0000
@@ -322,6 +322,7 @@        {"field-separator", required_argument, NULL, 'F'},        {"host", required_argument, NULL,
'h'},       {"html", no_argument, NULL, 'H'},
 
+        {"interactive", no_argument, NULL, 'I'},        {"list", no_argument, NULL, 'l'},        {"no-readline",
no_argument,NULL, 'n'},        {"output", required_argument, NULL, 'o'},
 
@@ -352,7 +353,7 @@
    memset(options, 0, sizeof *options);

-    while ((c = getopt_long(argc, argv,
"aAc:d:eEf:F:h:Hlno:p:P:qR:sStT:uU:v:VWxX?",
+    while ((c = getopt_long(argc, argv,
"aAc:d:eEf:F:h:HIlno:p:P:qR:sStT:uU:v:VWxX?",                            long_options, &optindex)) != -1)    {
switch(c)
 
@@ -395,7 +396,10 @@            case 'H':                pset.popt.topt.format = PRINT_HTML;                break;
+            case 'I':
+                pset.notty = 0;
+                break;            case 'l':                options->action = ACT_LIST_DB;                break;
--- pgsql-server/src/bin/psql/help.c    02 Oct 2003 06:39:31 -0000    1.81
+++ pgsql-server/src/bin/psql/help.c    01 Nov 2003 06:29:50 -0000
@@ -103,6 +103,7 @@    puts(_("  -a              echo all input from script"));    puts(_("  -e              echo
commandssent to server"));    puts(_("  -E              display queries that internal commands
 
generate"));
+    puts(_("  -I              force interactive prompting for input"));    puts(_("  -q              run quietly (no
messages,only query
 
output)"));    puts(_("  -o FILENAME     send query results to file (or |pipe)"));    puts(_("  -n              disable
enhancedcommand line editing
 
(readline)"));


__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree


Re: Proposal: psql force prompting on notty

From
Bruce Momjian
Date:
No, just getting to it now.  Sorry.

---------------------------------------------------------------------------

Michael Mauger wrote:
> --- Michael Mauger <mmaug@yahoo.com> wrote:
> > --- Peter Eisentraut <peter_e@gmx.net> wrote:
> > > Michael Mauger writes:
> > > >
> > > > Emacs is not a Cygwin (Un*x emulation on Windows) executable (like
> > > > psql is)
> > > 
> > > Why don't you use the native Windows version of psql?
> > > 
> > 
> > The Cygwin setup program makes pre-built binaries of postgres 
> > readily available on Windows.  (In fact, using this version is 
> > encouraged in the Postgres for Windows installation notes.)  A 
> > native Windows version would not work either since the isatty() 
> > implementation there will only recognize a Command Prompt 
> > window as a tty.
> > 
> 
> Are there further concerns with this patch?
> 
> --- pgsql-server/src/bin/psql/startup.c    29 Sep 2003 18:21:33 -0000    1.80
> +++ pgsql-server/src/bin/psql/startup.c    01 Nov 2003 06:10:42 -0000
> @@ -322,6 +322,7 @@
>          {"field-separator", required_argument, NULL, 'F'},
>          {"host", required_argument, NULL, 'h'},
>          {"html", no_argument, NULL, 'H'},
> +        {"interactive", no_argument, NULL, 'I'},
>          {"list", no_argument, NULL, 'l'},
>          {"no-readline", no_argument, NULL, 'n'},
>          {"output", required_argument, NULL, 'o'},
> @@ -352,7 +353,7 @@
> 
>      memset(options, 0, sizeof *options);
> 
> -    while ((c = getopt_long(argc, argv,
> "aAc:d:eEf:F:h:Hlno:p:P:qR:sStT:uU:v:VWxX?",
> +    while ((c = getopt_long(argc, argv,
> "aAc:d:eEf:F:h:HIlno:p:P:qR:sStT:uU:v:VWxX?",
>                              long_options, &optindex)) != -1)
>      {
>          switch (c)
> @@ -395,7 +396,10 @@
>              case 'H':
>                  pset.popt.topt.format = PRINT_HTML;
>                  break;
> +            case 'I':
> +                pset.notty = 0;
> +                break;
>              case 'l':
>                  options->action = ACT_LIST_DB;
>                  break;
> --- pgsql-server/src/bin/psql/help.c    02 Oct 2003 06:39:31 -0000    1.81
> +++ pgsql-server/src/bin/psql/help.c    01 Nov 2003 06:29:50 -0000
> @@ -103,6 +103,7 @@
>      puts(_("  -a              echo all input from script"));
>      puts(_("  -e              echo commands sent to server"));
>      puts(_("  -E              display queries that internal commands
> generate"));
> +    puts(_("  -I              force interactive prompting for input"));
>      puts(_("  -q              run quietly (no messages, only query
> output)"));
>      puts(_("  -o FILENAME     send query results to file (or |pipe)"));
>      puts(_("  -n              disable enhanced command line editing
> (readline)"));
> 
> 
> __________________________________
> Do you Yahoo!?
> Protect your identity with Yahoo! Mail AddressGuard
> http://antispam.yahoo.com/whatsnewfree
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Proposal: psql force prompting on notty

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
>> Are there further concerns with this patch?

> No, just getting to it now.  Sorry.

Peter didn't agree with this patch, and I have to concur with him
that the need for it is unproven.

Given that it is certainly not going into 7.4 at this late date,
I think Michael will be wanting to look for another solution anyway...
        regards, tom lane


Re: Proposal: psql force prompting on notty

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> >> Are there further concerns with this patch?
> 
> > No, just getting to it now.  Sorry.
> 
> Peter didn't agree with this patch, and I have to concur with him
> that the need for it is unproven.
> 
> Given that it is certainly not going into 7.4 at this late date,
> I think Michael will be wanting to look for another solution anyway...

Yea, certainly not 7.4.  I am not sure he has any other ideas about a
solution, though.  I will try to make him a test binary soon and see how
that works --- maybe we can make it an option that only shows up on
Win32.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073