updated patch - only one change: query is prefixed by "QUERY: "
current state:
[pavel@localhost ~]$ src/postgresql/src/bin/psql/psql postgres -q -f data.sql psql:data.sql:6: ERROR: value too long for type character varying(3)
Show only errors mode:
[pavel@localhost ~]$ src/postgresql/src/bin/psql/psql postgres -q -v ECHO=error -f data.sql psql:data.sql:6: ERROR: value too long for type character varying(3) QUERY: INSERT INTO bubu VALUES('Ahoj');
Now, when I am thinking about these results, I am thinking, so second variant is more practical and can be default.
On Sat, Mar 1, 2014 at 8:01 AM, Pavel Stehule <pavel.stehule@gmail.com> wrote: > > Hello > > I was asked, how can be showed only failed queries in psql. > > I am thinking, so it is not possible now. But implementation is very simple > > What do you think about it? > > bash-4.1$ psql postgres -v ECHO=error -f data.sql > INSERT 0 1 > Time: 27.735 ms > INSERT 0 1 > Time: 8.303 ms > psql:data.sql:3: ERROR: value too long for type character varying(2) > insert into foo values('bbb'); > Time: 0.178 ms > INSERT 0 1 > Time: 8.285 ms > psql:data.sql:5: ERROR: value too long for type character varying(2) > insert into foo values('ssssss'); > Time: 0.422 ms >
The patch works fine, but I think we must add some prefix to printed query. Like that:
fabrizio=# \set ECHO error fabrizio=# insert into foo values ('XXX');
ERROR: value too long for type character varying(2)
DETAIL: insert into foo values ('XXX');
or
fabrizio=# \set ECHO error fabrizio=# insert into foo values ('XXX');
ERROR: value too long for type character varying(2)
QUERY: insert into foo values ('XXX');
This may help to filter the output with some tool like 'grep'.