Thread: New psql input mode problems

New psql input mode problems

From
Keith Parks
Date:
Hi all,

I was wondering why all the regression tests failed for me so i ran one
in the interactive mode.


mtcc:[/usr/local/pgsql/src/test/regress](73)% /usr/local/pgsql/bin/psql 
regression
Welcome to psql, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms      \h for help with SQL commands      \? for help on internal slash commands
    \g or terminate with semicolon to execute query      \q to quit
 

regression=> \i sql/boolean.sql 

regression=>

I got nothing onscreen and no work was done.

After some digging I found that in non interactive mode psql
stops processing a file as soon as it gets to a blank line.

This seems to be where it goes wrong. (mainloop.c)

/* No more input.  Time to quit, or \i done */
if (line == NULL || (!pset->cur_cmd_interactive && *line == '\0'))

When a blank line is encountered in the input 
line = gets_fromFile(source);
returns an empty string ('\0') and terminates the processing.

with the if clause reduced to checking for line == NULL psql
does the work but fails badly due to the differences between
results and expected. (comments, QUERY:, echo processing)

Is the intention to modify expected to agree with the new
results output, or fix psql to output in the expected format?

Keith.



Re: [HACKERS] New psql input mode problems

From
Bruce Momjian
Date:
> Hi all,
> 
> I was wondering why all the regression tests failed for me so i ran one
> in the interactive mode.
> 
> 
> mtcc:[/usr/local/pgsql/src/test/regress](73)% /usr/local/pgsql/bin/psql 
> regression
> Welcome to psql, the PostgreSQL interactive terminal.
> 
> Type:  \copyright for distribution terms
>        \h for help with SQL commands
>        \? for help on internal slash commands
>        \g or terminate with semicolon to execute query
>        \q to quit
> 
> regression=> \i sql/boolean.sql 
> 
> regression=>
> 
> I got nothing onscreen and no work was done.
> 
> After some digging I found that in non interactive mode psql
> stops processing a file as soon as it gets to a blank line.
> 
> This seems to be where it goes wrong. (mainloop.c)
> 
> /* No more input.  Time to quit, or \i done */
> if (line == NULL || (!pset->cur_cmd_interactive && *line == '\0'))
> 
> When a blank line is encountered in the input 
> 
>     line = gets_fromFile(source);
>     
> returns an empty string ('\0') and terminates the processing.
> 
> with the if clause reduced to checking for line == NULL psql
> does the work but fails badly due to the differences between
> results and expected. (comments, QUERY:, echo processing)

> 
> Is the intention to modify expected to agree with the new
> results output, or fix psql to output in the expected format?

Good question.  We need to know if people like the current output
format, or the old one better?

Looks like your change in testing just for NULL is correct, and I will
apply a patch.

--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [HACKERS] New psql input mode problems

From
Peter Eisentraut
Date:
On Sun, 7 Nov 1999, Bruce Momjian wrote:

> > Hi all,
> > 
> > I was wondering why all the regression tests failed for me so i ran one
> > in the interactive mode.

I warned y'all about this. Too late now ;)

> > After some digging I found that in non interactive mode psql
> > stops processing a file as soon as it gets to a blank line.
> > 
> > This seems to be where it goes wrong. (mainloop.c)
> > 
> > /* No more input.  Time to quit, or \i done */
> > if (line == NULL || (!pset->cur_cmd_interactive && *line == '\0'))

This line was there in the old source as well.

> > 
> > When a blank line is encountered in the input 
> > 
> >     line = gets_fromFile(source);
> >     
> > returns an empty string ('\0') and terminates the processing.

Same in the old one.

> > 
> > with the if clause reduced to checking for line == NULL psql
> > does the work but fails badly due to the differences between
> > results and expected. (comments, QUERY:, echo processing)

As I said, that part was not my idea. I'll look into that though.

> 
> > 
> > Is the intention to modify expected to agree with the new
> > results output, or fix psql to output in the expected format?

How about using the old psql for regression testing?

> 
> Good question.  We need to know if people like the current output
> format, or the old one better?

I send in several examples. If no one comments, that's silent approval.
I am really hesitant to put in a compatibility format, but I might just do
that until new regression tests are out and you ask me to.

> 
> Looks like your change in testing just for NULL is correct, and I will
> apply a patch.
> 


-- 
Peter Eisentraut                  Sernanders vaeg 10:115
peter_e@gmx.net                   75262 Uppsala
http://yi.org/peter-e/            Sweden