Alvaro Herrera wrote:
> Bruce Momjian wrote:
> > Alvaro Herrera wrote:
> 
> > > Surely psql computes the width of all cells before printing anything.
> > 
> > It does, but if you have a value that has a tab, how do you know what
> > tab stop you are on because you don't know the final width of the
> > previous columns at that time, so there is no way to know the width of
> > that cell.
> 
> My point is that you don't need to align the tabstops with the start of
> the line, but with the start of the _column_.  So the width of the
> previous column doesn't matter.

Alvaro, using spaces instead of the terminal hard tabs was a very good
idea.  The output is now:

        test=> \x
        Expanded display is on.
        
        test=> \df+ xx
        List of functions
        -[ RECORD 1 ]-------+--------------------
        Schema              | public
        Name                | xx
        Result data type    | text
        Argument data types |
        Volatility          | volatile
        Owner               | postgres
        Language            | sql
        Source code         | SELECT  'a'::text
                            : WHERE   1 = 1
        Description         |


Patch attached.  It substitutes spaces for the tab.

-- 
  Bruce Momjian  <[EMAIL PROTECTED]>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/bin/psql/mbprint.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/mbprint.c,v
retrieving revision 1.30
diff -c -c -r1.30 mbprint.c
*** src/bin/psql/mbprint.c	16 Apr 2008 18:18:00 -0000	1.30
--- src/bin/psql/mbprint.c	7 May 2008 20:27:39 -0000
***************
*** 315,320 ****
--- 315,328 ----
  				linewidth += 2;
  				ptr += 2;
  			}
+ 			else if (*pwcs == '\t')		/* Tab */
+ 			{
+ 				do
+ 				{
+ 					*ptr++ = ' ';
+ 					linewidth++;
+ 				} while (linewidth % 8 != 0);
+ 			}
  			else if (w < 0)		/* Other control char */
  			{
  				sprintf((char *) ptr, "\\x%02X", *pwcs);
-- 
Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches

Reply via email to