Conditional history length test removed.

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

Bruce Momjian wrote:
> 
> Also, in this line from psql/mainloop.c:
> 
>   312         if (scan_result == PSCAN_BACKSLASH && history_buf->len != 0)
> 
> Is the "history_buf->len != 0" test necessary?
> 
> ---------------------------------------------------------------------------
> 
> pgman wrote:
> > Sergey E. Koposov wrote:
> > > On Sun, 4 Jun 2006, Bruce Momjian wrote:
> > > 
> > > > Sergey E. Koposov wrote:
> > > >> Hello,
> > > >>
> > > >> I'm sending the patch fixing the \r bug:
> > > >
> > > > Funny, I just applied a simpler fix for the \r bug.  Please review it.
> > > > Thanks.
> > > >
> > > 
> > > It is simpler, because it behaves differently.
> > > Your patch for the case:
> > > wsdb=# select 
> > > wsdb-# \r
> > > Query buffer reset (cleared).
> > > 
> > > puts in the history two elements ("\r" and "select")
> > > 
> > > Mine puts only "\r", just because 
> > > <quote>  \r             reset (clear) the query buffer</quote>
> > > and I think that's reasonable, but I don't insist...
> > 
> > I think I like the fact there two separate entries, so we are OK.
> > 
> > > > I am confused by the \e bug.  I just tried 8.1.X and it seems to behave
> > > > the same as CVS HEAD.  What exactly should it do?
> > > >
> > > 
> > > It is not actually a bug, I think it's a Tom's habit. 
> > > In 8.1.x if  you type for example  in the editor "select 1+" and exit from
> > > it, the "select 1+" string will be already in the history. But in CVS HEAD
> > > it will be saved internally, but it won't be shown in the history until 
> > > the
> > > user finishes the command with ';'. And there is really no need for
> > > correcting that, I think.
> > 
> > Thanks, that was clear.  The attached patch fixes it.  It is a little
> > larger than usual because I changed the name of the boolean and reversed
> > its usage.  It now works like it did in 8.1.X.
> > 
> > -- 
> >   Bruce Momjian   http://candle.pha.pa.us
> >   EnterpriseDB    http://www.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/mainloop.c
> > ===================================================================
> > RCS file: /cvsroot/pgsql/src/bin/psql/mainloop.c,v
> > retrieving revision 1.75
> > diff -c -c -r1.75 mainloop.c
> > *** src/bin/psql/mainloop.c 4 Jun 2006 04:35:55 -0000       1.75
> > --- src/bin/psql/mainloop.c 5 Jun 2006 03:50:11 -0000
> > ***************
> > *** 41,47 ****
> >     char       *line;                       /* current line of input */
> >     int                     added_nl_pos;
> >     bool            success;
> > !   bool            first_query_scan;
> >     
> >     volatile int successResult = EXIT_SUCCESS;
> >     volatile backslashResult slashCmdStatus = PSQL_CMD_UNKNOWN;
> > --- 41,47 ----
> >     char       *line;                       /* current line of input */
> >     int                     added_nl_pos;
> >     bool            success;
> > !   bool            line_saved_in_history;
> >     
> >     volatile int successResult = EXIT_SUCCESS;
> >     volatile backslashResult slashCmdStatus = PSQL_CMD_UNKNOWN;
> > ***************
> > *** 80,85 ****
> > --- 80,87 ----
> >     /* main loop to get queries and execute them */
> >     while (successResult == EXIT_SUCCESS)
> >     {
> > +           line_saved_in_history = false;
> > + 
> >             /*
> >              * Welcome code for Control-C
> >              */
> > ***************
> > *** 154,159 ****
> > --- 156,163 ----
> >                              */
> >                             pg_write_history(history_buf->data);
> >                             pg_clear_history(history_buf);
> > +                           pg_write_history(line);
> > +                           line_saved_in_history = true;
> >                     }
> >             }
> >             /* otherwise, get another line */
> > ***************
> > *** 226,232 ****
> >              */
> >             psql_scan_setup(scan_state, line, strlen(line));
> >             success = true;
> > -           first_query_scan = true;
> >             
> >             while (success || !die_on_error)
> >             {
> > --- 230,235 ----
> > ***************
> > *** 303,319 ****
> >                      *      down here so we can check for \g and other 
> > 'execute'
> >                      *      backslash commands, which should be appended.
> >                      */
> > !                   if (first_query_scan && pset.cur_cmd_interactive)
> >                     {
> >                             /* Sending a command (PSQL_CMD_SEND) zeros the 
> > length */
> >                             if (scan_result == PSCAN_BACKSLASH && 
> > history_buf->len != 0)
> >                                     pg_write_history(line);
> >                             else
> >                                     pg_append_history(line, history_buf);
> >                     }
> >   
> > -                   first_query_scan = false;
> > - 
> >                     /* fall out of loop on \q or if lexer reached EOL */
> >                     if (slashCmdStatus == PSQL_CMD_TERMINATE ||
> >                             scan_result == PSCAN_INCOMPLETE ||
> > --- 306,321 ----
> >                      *      down here so we can check for \g and other 
> > 'execute'
> >                      *      backslash commands, which should be appended.
> >                      */
> > !                   if (!line_saved_in_history && pset.cur_cmd_interactive)
> >                     {
> >                             /* Sending a command (PSQL_CMD_SEND) zeros the 
> > length */
> >                             if (scan_result == PSCAN_BACKSLASH && 
> > history_buf->len != 0)
> >                                     pg_write_history(line);
> >                             else
> >                                     pg_append_history(line, history_buf);
> > +                           line_saved_in_history = true;
> >                     }
> >   
> >                     /* fall out of loop on \q or if lexer reached EOL */
> >                     if (slashCmdStatus == PSQL_CMD_TERMINATE ||
> >                             scan_result == PSCAN_INCOMPLETE ||
> 
> -- 
>   Bruce Momjian   http://candle.pha.pa.us
>   EnterpriseDB    http://www.enterprisedb.com
> 
>   + If your life is a hard drive, Christ can be your backup. +
> 

-- 
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

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

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to