Applied.  Thanks for the report.

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

Bruce Momjian wrote:
> Robert Haas wrote:
> > On Fri, Nov 27, 2009 at 1:42 AM, Peter Eisentraut <pete...@gmx.net> wrote:
> > > On tor, 2009-11-26 at 22:59 -0500, Robert Haas wrote:
> > >> ISTM that if you run psql with "-f -", you shouldn't expect to get an
> > >> interactive shell. ?Rather, you should expect psql to do whatever it
> > >> normally does when given -f somefilename, except using stdin rather
> > >> than the file. ?After all, you could have left out -f altogether if
> > >> you'd wanted the interactive behavior. ?But then IJWH.
> > >
> > > But by that logic, psql < file should also set interactive mode.
> > 
> > Those two cases are not symmetrical.  If you're reading from something
> > other than a terminal, you certainly don't want interactive mode.  If
> > you ARE reading from a terminal, you might nevertheless want
> > non-interactive mode.  And you CERTAINLY might want -1 when reading a
> > pipe, as when you do this:
> > 
> > ssh otherhost pg_dump | psql -1 -f -
> > 
> > Currently, this silently fails to deliver the expected behavior.
> 
> You are right --- there is definitely something wrong with that code.  I
> tried to find out why it was coded that way but that code hasn't changed
> since 2000 or 2001.  My guess is that is was OK then, but when we added
> "-1" we didn't think about its placement.
> 
> I think the proper, consistent fix is to check for "-" inside
> process_file(), rather than earlier.  The attached patch accomplishes
> this.  The code still goes into interactive mode, though:
> 
>       $ psql -f - test
>       test=>
> 
> Should that prompt not appear?  Seems OK to me.
> 
> -- 
>   Bruce Momjian  <br...@momjian.us>        http://momjian.us
>   EnterpriseDB                             http://enterprisedb.com
> 
>   + If your life is a hard drive, Christ can be your backup. +

[ text/x-diff is unsupported, treating like TEXT/PLAIN ]

> Index: src/bin/psql/command.c
> ===================================================================
> RCS file: /cvsroot/pgsql/src/bin/psql/command.c,v
> retrieving revision 1.211
> diff -c -c -r1.211 command.c
> *** src/bin/psql/command.c    22 Nov 2009 05:20:41 -0000      1.211
> --- src/bin/psql/command.c    30 Nov 2009 13:47:17 -0000
> ***************
> *** 1691,1698 ****
>       if (!filename)
>               return EXIT_FAILURE;
>   
> !     canonicalize_path(filename);
> !     fd = fopen(filename, PG_BINARY_R);
>   
>       if (!fd)
>       {
> --- 1691,1703 ----
>       if (!filename)
>               return EXIT_FAILURE;
>   
> !     if (strcmp(filename, "-") != 0)
> !     {
> !             canonicalize_path(filename);
> !             fd = fopen(filename, PG_BINARY_R);
> !     }
> !     else
> !             fd = stdin;
>   
>       if (!fd)
>       {
> Index: src/bin/psql/startup.c
> ===================================================================
> RCS file: /cvsroot/pgsql/src/bin/psql/startup.c,v
> retrieving revision 1.156
> diff -c -c -r1.156 startup.c
> *** src/bin/psql/startup.c    5 Apr 2009 04:19:58 -0000       1.156
> --- src/bin/psql/startup.c    30 Nov 2009 13:47:17 -0000
> ***************
> *** 225,231 ****
>       /*
>        * process file given by -f
>        */
> !     if (options.action == ACT_FILE && strcmp(options.action_string, "-") != 
> 0)
>       {
>               if (!options.no_psqlrc)
>                       process_psqlrc(argv[0]);
> --- 225,231 ----
>       /*
>        * process file given by -f
>        */
> !     if (options.action == ACT_FILE)
>       {
>               if (!options.no_psqlrc)
>                       process_psqlrc(argv[0]);

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

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

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

Reply via email to