Re: \d+ should display the storage options for columns

Gregory Stark <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.patches
Organization EnterpriseDB
Message-ID <[email protected]>
"Alvaro Herrera" <[email protected]> writes:

> This seems to be against an older version of psql ... with the
> printTable API stuff, we reworked this -- in particular the mbvalidate()
> call that's only on WIN32 is gone (actually it's the lack of it that's
> gone.)

Sorry. Here's a patch against a current sync of HEAD.

Incidentally how can this new API work? Calling _() on a function parameter
would work but how would the translation tools know what strings need to be
translated?


Index: src/bin/psql/describe.c
===================================================================
RCS file: /home/stark/src/REPOSITORY/pgsql/src/bin/psql/describe.c,v
retrieving revision 1.173
diff -c -r1.173 describe.c
*** src/bin/psql/describe.c	13 May 2008 00:23:17 -0000	1.173
--- src/bin/psql/describe.c	23 May 2008 18:52:57 -0000
***************
*** 784,790 ****
  	printTableContent cont;
  	int			i;
  	char	   *view_def = NULL;
! 	char	   *headers[4];
  	char	  **modifiers = NULL;
  	char	  **ptr;
  	PQExpBufferData title;
--- 784,790 ----
  	printTableContent cont;
  	int			i;
  	char	   *view_def = NULL;
! 	char	   *headers[5];
  	char	  **modifiers = NULL;
  	char	  **ptr;
  	PQExpBufferData title;
***************
*** 852,858 ****
  					  "\n   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),"
  					  "\n  a.attnotnull, a.attnum");
  	if (verbose)
! 		appendPQExpBuffer(&buf, ", pg_catalog.col_description(a.attrelid, a.attnum)");
  	appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_attribute a");
  	if (tableinfo.relkind == 'i')
  		appendPQExpBuffer(&buf, ", pg_catalog.pg_index i");
--- 852,858 ----
  					  "\n   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),"
  					  "\n  a.attnotnull, a.attnum");
  	if (verbose)
! 		appendPQExpBuffer(&buf, ", a.attstorage, pg_catalog.col_description(a.attrelid, a.attnum)");
  	appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_attribute a");
  	if (tableinfo.relkind == 'i')
  		appendPQExpBuffer(&buf, ", pg_catalog.pg_index i");
***************
*** 918,924 ****
--- 918,927 ----
  	}
  
  	if (verbose)
+ 	{
+ 		headers[cols++] = "Storage";
  		headers[cols++] = "Description";
+ 	}
  
  	printTableInit(&cont, &myopt, title.data, cols, numrows);
  
***************
*** 972,980 ****
  			printTableAddCell(&cont, modifiers[i], false);
  		}
  
! 		/* Description */
  		if (verbose)
! 			printTableAddCell(&cont, PQgetvalue(res, i, 5), false);
  	}
  
  	/* Make footers */
--- 975,992 ----
  			printTableAddCell(&cont, modifiers[i], false);
  		}
  
! 		/* Storage and Description */
  		if (verbose)
! 		{
! 			char *storage = PQgetvalue(res, i, 5);
! 			printTableAddCell(&cont, (storage[0]=='p' ? "plain" :
! 									  (storage[0]=='m' ? "main" :
! 									   (storage[0]=='x' ? "extended" :
! 										(storage[0]=='e' ? "external" :
! 										 "???")))),
! 							  false);
! 			printTableAddCell(&cont, PQgetvalue(res, i, 6), false);
! 		}
  	}
  
  	/* Make footers */

-- 
  Gregory Stark
  EnterpriseDB          http://www.enterprisedb.com
  Get trained by Bruce Momjian - ask me about EnterpriseDB's PostgreSQL training!

-- 
Sent via pgsql-patches mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.