aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStephen Frost <sfrost@snowman.net>2017-08-24 16:20:50 -0400
committerStephen Frost <sfrost@snowman.net>2017-08-24 16:20:50 -0400
commit0cdc3e47bea442643c9870dc419364b9f2f52dcb (patch)
tree5580c0d18900e90062239c233d58ab4aa520f228 /src
parent6ce6a61840cc90172ad3da7bf303656132fa5fab (diff)
downloadpostgresql-0cdc3e47bea442643c9870dc419364b9f2f52dcb.tar.gz
postgresql-0cdc3e47bea442643c9870dc419364b9f2f52dcb.zip
psql: Fix \gx when FETCH_COUNT is used
Set expanded output when requested through \gx in ExecQueryUsingCursor() (used when FETCH_COUNT is set). Discussion: https://www.postgresql.org/message-id/CB7A53AA-5645-4BDD-AB07-4D22CD9D8FF1%40gmx.net Author: Tobias Bussmann
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/common.c4
-rw-r--r--src/test/regress/expected/psql.out25
-rw-r--r--src/test/regress/sql/psql.sql10
3 files changed, 39 insertions, 0 deletions
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index 044cdb82a7a..a41932ff275 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -1565,6 +1565,10 @@ ExecQueryUsingCursor(const char *query, double *elapsed_msec)
"FETCH FORWARD %d FROM _psql_cursor",
fetch_count);
+ /* one-shot expanded output requested via \gx */
+ if (pset.g_expanded)
+ my_popt.topt.expanded = 1;
+
/* prepare to write output to \g argument, if any */
if (pset.gfname)
{
diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out
index d602aeef421..4aaf4c16201 100644
--- a/src/test/regress/expected/psql.out
+++ b/src/test/regress/expected/psql.out
@@ -51,6 +51,31 @@ four | 4
3 | 4
(1 row)
+-- \gx should work in FETCH_COUNT mode too
+\set FETCH_COUNT 1
+SELECT 1 as one, 2 as two \g
+ one | two
+-----+-----
+ 1 | 2
+(1 row)
+
+\gx
+-[ RECORD 1 ]
+one | 1
+two | 2
+
+SELECT 3 as three, 4 as four \gx
+-[ RECORD 1 ]
+three | 3
+four | 4
+
+\g
+ three | four
+-------+------
+ 3 | 4
+(1 row)
+
+\unset FETCH_COUNT
-- \gset
select 10 as test01, 20 as test02, 'Hello' as test03 \gset pref01_
\echo :pref01_test01 :pref01_test02 :pref01_test03
diff --git a/src/test/regress/sql/psql.sql b/src/test/regress/sql/psql.sql
index b56a05f7f0d..4a676c31195 100644
--- a/src/test/regress/sql/psql.sql
+++ b/src/test/regress/sql/psql.sql
@@ -28,6 +28,16 @@ SELECT 1 as one, 2 as two \g
SELECT 3 as three, 4 as four \gx
\g
+-- \gx should work in FETCH_COUNT mode too
+\set FETCH_COUNT 1
+
+SELECT 1 as one, 2 as two \g
+\gx
+SELECT 3 as three, 4 as four \gx
+\g
+
+\unset FETCH_COUNT
+
-- \gset
select 10 as test01, 20 as test02, 'Hello' as test03 \gset pref01_