Thread: BUG #13674: psql: \i from a script run through \e misparses SQL as \i arguments

BUG #13674: psql: \i from a script run through \e misparses SQL as \i arguments

From
postgresql@zr40.nl
Date:
The following bug has been logged on the website:

Bug reference:      13674
Logged by:          Matthijs van der Vleuten
Email address:      postgresql@zr40.nl
PostgreSQL version: 9.4.5
Operating system:   Mac OS X
Description:

Reproduction:

1. Create file a.sql with the following contents:

BEGIN;
\i b.sql
ROLLBACK;

2. Create an empty file b.sql (smallest reproduction; bug also occurs with
non-empty files)
3. In psql, execute: \e a.sql
4. In $EDITOR, save and exit

Actual output:

~/test % psql -Xe
psql (9.4.5)
Type "help" for help.

zr40=# \e foo2.sql
BEGIN;
BEGIN
\i: extra argument "ROLLBACK;" ignored
zr40=#

Expected output:

~/test % psql -Xe
psql (9.4.5)
Type "help" for help.

zr40=# \e foo2.sql
BEGIN;
BEGIN
ROLLBACK;
ROLLBACK
zr40=#

Re: BUG #13674: psql: \i from a script run through \e misparses SQL as \i arguments

From
"David G. Johnston"
Date:
On Monday, October 12, 2015, <postgresql@zr40.nl> wrote:

> The following bug has been logged on the website:
>
> Bug reference:      13674
> Logged by:          Matthijs van der Vleuten
> Email address:      postgresql@zr40.nl <javascript:;>
> PostgreSQL version: 9.4.5
> Operating system:   Mac OS X
> Description:
>
> Reproduction:
>
> 1. Create file a.sql with the following contents:
>
> BEGIN;
> \i b.sql
> ROLLBACK;
>
> 2. Create an empty file b.sql (smallest reproduction; bug also occurs with
> non-empty files)
> 3. In psql, execute: \e a.sql
> 4. In $EDITOR, save and exit
>
> Actual output:
>
> ~/test % psql -Xe
> psql (9.4.5)
> Type "help" for help.
>
> zr40=# \e foo2.sql
> BEGIN;
> BEGIN
> \i: extra argument "ROLLBACK;" ignored
> zr40=#
>
> Expected output:
>
> ~/test % psql -Xe
> psql (9.4.5)
> Type "help" for help.
>
> zr40=# \e foo2.sql
> BEGIN;
> BEGIN
> ROLLBACK;
> ROLLBACK
> zr40=#
>
>
Working as documented.   Namely the "...whole buffer as a single line."
part of \e.  Hence the warning about not making scripts with this command.

David J.