]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Allow \pset and \x, \t to use boolean constants on/off, rather than just
authorBruce Momjian <bruce@momjian.us>
Sat, 3 Mar 2007 17:19:11 +0000 (17:19 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 3 Mar 2007 17:19:11 +0000 (17:19 +0000)
toggle.

Chad Wagner

doc/src/sgml/ref/psql-ref.sgml
src/bin/psql/command.c

index 3075d6957594be543afe11242d15bd35d4106538..29037dbe20f76d2a0f1ed84041db6aceb61c0e35 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.187 2007/02/23 18:20:58 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.188 2007/03/03 17:19:11 momjian Exp $
 PostgreSQL documentation
 -->
 
@@ -1509,11 +1509,14 @@ lo_import 152801
           <term><literal>expanded</literal> (or <literal>x</literal>)</term>
           <listitem>
           <para>
-          Toggles between regular and expanded format. When expanded
-          format is enabled, query results are displayed in two
-          columns, with the column name on the left and the data on
-          the right. This mode is useful if the data wouldn't fit on the
-          screen in the normal <quote>horizontal</quote> mode.
+          You can specify an optional second argument, if it is provided it
+          may be either <literal>on</literal> or <literal>off</literal>
+          which will enable or disable expanded mode.  If the second
+          argument is not provided then we will toggle between regular and
+          expanded format. When expanded format is enabled, query results
+          are displayed in two columns, with the column name on the left and
+          the data on the right. This mode is useful if the data wouldn't fit
+          on the screen in the normal <quote>horizontal</quote> mode.
           </para>
 
           <para>
@@ -1553,8 +1556,11 @@ lo_import 152801
           <term><literal>footer</literal></term>
           <listitem>
           <para>
-          Toggles the display of the default footer <literal>(x
-          rows)</literal>.
+          You can specify an optional second argument, if it is provided it
+          may be either <literal>on</literal> or <literal>off</literal>
+          which will enable or disable display of the default footer
+          <literal>(x rows)</literal>.  If the second argument is not
+          provided then we will toggle between on and off.
           </para>
           </listitem>
           </varlistentry>
@@ -1563,9 +1569,12 @@ lo_import 152801
           <term><literal>numericlocale</literal></term>
           <listitem>
           <para>
-          Toggles the display of a locale-aware character to separate groups
-          of digits to the left of the decimal marker.  It also enables
-          a locale-aware decimal marker.
+          You can specify an optional second argument, if it is provided it
+          may be either <literal>on</literal> or <literal>off</literal>
+          which will enable or disable display of a locale-aware character
+          to seperate groups of digits to the left of the decimal marker.  If
+          the second argument is not provided then we will toggle between
+          on and off.
           </para>
           </listitem>
           </varlistentry>
@@ -1584,10 +1593,13 @@ lo_import 152801
           <term><literal>tuples_only</literal> (or <literal>t</literal>)</term>
           <listitem>
           <para>
-          Toggles between tuples only and full display. Full display
-          shows extra information such as column headers, titles, and
-          various footers. In tuples only mode, only actual table data
-          is shown.
+          You can specify an optional second argument, if it is provided it
+          may be either <literal>on</literal> or <literal>off</literal>
+          which will enable or display the tuples only mode.  If the
+          second argument is not provided then we will toggle between tuples
+          only and full display. Full display shows extra information such
+          as column headers, titles, and various footers. In tuples only
+          mode, only actual table data is shown.
           </para>
           </listitem>
           </varlistentry>
@@ -1636,7 +1648,10 @@ lo_import 152801
           (<application>psql</> does not do a perfect job of estimating
           when to use the pager.) <literal>\pset pager</> turns the
           pager on and off. Pager can also be set to <literal>always</>,
-          which causes the pager to be always used.
+          which causes the pager to be always used, or you can set the pager
+          to <literal>on</> which will enable the usage of the pager when
+          appropriate, or you can set the pager to <literal>off</> which
+          will disable the pager.
           </para>
           </listitem>
           </varlistentry>
index bcaf684a8ecac9b61c0cfbedace34a953a480e1a..8f103f1c2133700f03546c83732a3e6f766389c6 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2007, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.178 2007/02/23 18:20:58 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.179 2007/03/03 17:19:11 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "command.h"
@@ -863,7 +863,13 @@ exec_command(const char *cmd,
 
        /* \t -- turn off headers and row count */
        else if (strcmp(cmd, "t") == 0)
-               success = do_pset("tuples_only", NULL, &pset.popt, pset.quiet);
+       {
+               char       *opt = psql_scan_slash_option(scan_state,
+                                                                                                OT_NORMAL, NULL, true);
+
+               success = do_pset("tuples_only", opt, &pset.popt, pset.quiet);
+               free(opt);
+       }
 
 
        /* \T -- define html <table ...> attributes */
@@ -975,7 +981,13 @@ exec_command(const char *cmd,
 
        /* \x -- toggle expanded table representation */
        else if (strcmp(cmd, "x") == 0)
-               success = do_pset("expanded", NULL, &pset.popt, pset.quiet);
+       {
+               char       *opt = psql_scan_slash_option(scan_state,
+                                                                                                OT_NORMAL, NULL, true);
+
+               success = do_pset("expanded", opt, &pset.popt, pset.quiet);
+               free(opt);
+       }
 
        /* \z -- list table rights (equivalent to \dp) */
        else if (strcmp(cmd, "z") == 0)
@@ -1552,7 +1564,10 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
        /* set expanded/vertical mode */
        else if (strcmp(param, "x") == 0 || strcmp(param, "expanded") == 0 || strcmp(param, "vertical") == 0)
        {
-               popt->topt.expanded = !popt->topt.expanded;
+               if (value)
+                       popt->topt.expanded = ParseVariableBool(value);
+               else
+                       popt->topt.expanded = !popt->topt.expanded;
                if (!quiet)
                        printf(popt->topt.expanded
                                   ? _("Expanded display is on.\n")
@@ -1562,7 +1577,10 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
        /* locale-aware numeric output */
        else if (strcmp(param, "numericlocale") == 0)
        {
-               popt->topt.numericLocale = !popt->topt.numericLocale;
+               if (value)
+                       popt->topt.numericLocale = ParseVariableBool(value);
+               else
+                       popt->topt.numericLocale = !popt->topt.numericLocale;
                if (!quiet)
                {
                        if (popt->topt.numericLocale)
@@ -1616,7 +1634,10 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
        /* toggle between full and tuples-only format */
        else if (strcmp(param, "t") == 0 || strcmp(param, "tuples_only") == 0)
        {
-               popt->topt.tuples_only = !popt->topt.tuples_only;
+               if (value)
+                       popt->topt.tuples_only = ParseVariableBool(value);
+               else
+                       popt->topt.tuples_only = !popt->topt.tuples_only;
                if (!quiet)
                {
                        if (popt->topt.tuples_only)
@@ -1667,6 +1688,11 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
        {
                if (value && pg_strcasecmp(value, "always") == 0)
                        popt->topt.pager = 2;
+               else if (value)
+                       if (ParseVariableBool(value))
+                               popt->topt.pager = 1;
+                       else
+                               popt->topt.pager = 0;
                else if (popt->topt.pager == 1)
                        popt->topt.pager = 0;
                else
@@ -1685,7 +1711,10 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
        /* disable "(x rows)" footer */
        else if (strcmp(param, "footer") == 0)
        {
-               popt->default_footer = !popt->default_footer;
+               if (value)
+                       popt->default_footer = ParseVariableBool(value);
+               else
+                       popt->default_footer = !popt->default_footer;
                if (!quiet)
                {
                        if (popt->default_footer)