diff options
-rw-r--r-- | src/bin/psql/common.c | 6 | ||||
-rw-r--r-- | src/test/regress/expected/psql.out | 5 | ||||
-rw-r--r-- | src/test/regress/sql/psql.sql | 4 |
3 files changed, 12 insertions, 3 deletions
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index ede197bebeb..daabf6f12b7 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -1659,9 +1659,9 @@ ExecQueryAndProcessResults(const char *query, tuples_fout, printQueryFout); } - /* set variables on last result if all went well */ - if (!is_watch && last && success) - SetResultVariables(result, true); + /* set variables from last result */ + if (!is_watch && last) + SetResultVariables(result, success); ClearOrSaveResult(result); result = next_result; diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out index 7cd0c27cca8..c70205b98a4 100644 --- a/src/test/regress/expected/psql.out +++ b/src/test/regress/expected/psql.out @@ -171,6 +171,11 @@ select 10 as test01, 20 as test02 from generate_series(1,3) \gset more than one row returned for \gset select 10 as test01, 20 as test02 from generate_series(1,0) \gset no rows returned for \gset +-- \gset returns no tuples +select a from generate_series(1, 10) as a where a = 11 \gset +no rows returned for \gset +\echo :ROW_COUNT +0 -- \gset should work in FETCH_COUNT mode too \set FETCH_COUNT 1 select 1 as x, 2 as y \gset pref01_ \\ \echo :pref01_x diff --git a/src/test/regress/sql/psql.sql b/src/test/regress/sql/psql.sql index f3bc6cd07e8..66ff64a160f 100644 --- a/src/test/regress/sql/psql.sql +++ b/src/test/regress/sql/psql.sql @@ -87,6 +87,10 @@ select 1 as var1, NULL as var2, 3 as var3 \gset select 10 as test01, 20 as test02 from generate_series(1,3) \gset select 10 as test01, 20 as test02 from generate_series(1,0) \gset +-- \gset returns no tuples +select a from generate_series(1, 10) as a where a = 11 \gset +\echo :ROW_COUNT + -- \gset should work in FETCH_COUNT mode too \set FETCH_COUNT 1 |