]> granicus.if.org Git - postgresql/commitdiff
psql: Fix \gx when FETCH_COUNT is used
authorStephen Frost <sfrost@snowman.net>
Thu, 24 Aug 2017 20:20:50 +0000 (16:20 -0400)
committerStephen Frost <sfrost@snowman.net>
Thu, 24 Aug 2017 20:20:50 +0000 (16:20 -0400)
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

src/bin/psql/common.c
src/test/regress/expected/psql.out
src/test/regress/sql/psql.sql

index 044cdb82a7acac8e168a966d86e3e6e8aec637f6..a41932ff27575ba2edbeeff06560bde8b8ae66ce 100644 (file)
@@ -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)
        {
index d602aeef4219a7a2f088879bdbac65795a39ae28..4aaf4c162010a674fcddc912e76fea0118feae0c 100644 (file)
@@ -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
index b56a05f7f0dab8b8b8e6485b07077f4621a79304..4a676c3119558d3c2d01f23fde42598cdfe01226 100644 (file)
@@ -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_