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