Hello 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. Opinions, notes? Regards Pavel 2014-03-04 8:52 GMT+01:00 Pavel Stehule <pavel.steh...@gmail.com>: > > > > 2014-03-04 6:35 GMT+01:00 FabrÃzio de Royes Mello <fabriziome...@gmail.com > >: > > >> >> >> On Sat, Mar 1, 2014 at 8:01 AM, Pavel Stehule <pavel.steh...@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'. >> > > sure, good idea. > > I add link to your notice to commitfest app > > Regards > > Pavel > > >> >> Regards, >> >> -- >> FabrÃzio de Royes Mello >> Consultoria/Coaching PostgreSQL >> >> Timbira: http://www.timbira.com.br >> >> Blog sobre TI: http://fabriziomello.blogspot.com >> >> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello >> >> Twitter: http://twitter.com/fabriziomello >> > >
commit 47b8944a5d3afb6763096bdd993e256ecae6691d Author: Pavel Stehule <pavel.steh...@gooddata.com> Date: Wed Jun 4 17:44:54 2014 +0200 initial diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index ee6ec3a..cf0e78b 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -2812,7 +2812,8 @@ bar <literal>queries</literal>, <application>psql</application> merely prints all queries as they are sent to the server. The switch for this is - <option>-e</option>. + <option>-e</option>. If set to <literal>error</literal> then only + failed queries are displayed. </para> </listitem> </varlistentry> diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 60169a2..5c94c03 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -995,6 +995,12 @@ SendQuery(const char *query) results = NULL; /* PQclear(NULL) does nothing */ } + if (!OK && pset.echo == PSQL_ECHO_ERROR) + { + printf("QUERY: %s\n", query); + fflush(stdout); + } + /* If we made a temporary savepoint, possibly release/rollback */ if (on_error_rollback_savepoint) { diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h index 0a60e68..e4a18f0 100644 --- a/src/bin/psql/settings.h +++ b/src/bin/psql/settings.h @@ -31,6 +31,7 @@ typedef enum { PSQL_ECHO_NONE, PSQL_ECHO_QUERIES, + PSQL_ECHO_ERROR, PSQL_ECHO_ALL } PSQL_ECHO; diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 45653a1..b59bd59 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -720,6 +720,8 @@ echo_hook(const char *newval) pset.echo = PSQL_ECHO_NONE; else if (strcmp(newval, "queries") == 0) pset.echo = PSQL_ECHO_QUERIES; + else if (strcmp(newval, "error") == 0) + pset.echo = PSQL_ECHO_ERROR; else if (strcmp(newval, "all") == 0) pset.echo = PSQL_ECHO_ALL; else diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 3bb727f..e5e1558 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3479,6 +3479,23 @@ psql_completion(const char *text, int start, int end) { matches = complete_from_variables(text, "", ""); } + else if (strcmp(prev2_wd, "\\set") == 0) + { + if (strcmp(prev_wd, "ECHO") == 0) + { + static const char *const my_list[] = + {"none", "error", "queries", "all", NULL}; + + COMPLETE_WITH_LIST_CS(my_list); + } + else if (strcmp(prev_wd, "ECHO_HIDDEN") == 0) + { + static const char *const my_list[] = + {"noexec", "off", "on", NULL}; + + COMPLETE_WITH_LIST_CS(my_list); + } + } else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); else if (strcmp(prev_wd, "\\cd") == 0 ||
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers