psql: server version check for \dO

Started by Josh Kupershmidtover 13 years ago2 messages
#1Josh Kupershmidt
schmiddy@gmail.com
1 attachment(s)

Hi all,

I think psql's \dO command is missing the server version check which
similar commands such as \dx use. Right now \dO errors out with:

test=# \dO
ERROR: relation "pg_catalog.pg_collation" does not exist

when talking to servers older than 9.1, which don't have pg_collation.
Simple patch for listCollations() attached.

Josh

Attachments:

listCollations_versioncheck.difftext/x-patch; charset=US-ASCII; name=listCollations_versioncheck.diffDownload
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
new file mode 100644
index 8dfb570..2cfacd3
*** a/src/bin/psql/describe.c
--- b/src/bin/psql/describe.c
*************** listCollations(const char *pattern, bool
*** 3061,3066 ****
--- 3061,3073 ----
  	printQueryOpt myopt = pset.popt;
  	static const bool translate_columns[] = {false, false, false, false, false};
  
+ 	if (pset.sversion < 90100)
+ 	{
+ 		fprintf(stderr, _("The server (version %d.%d) does not support collations.\n"),
+ 				pset.sversion / 10000, (pset.sversion / 100) % 100);
+ 		return true;
+ 	}
+ 
  	initPQExpBuffer(&buf);
  
  	printfPQExpBuffer(&buf,
#2Magnus Hagander
magnus@hagander.net
In reply to: Josh Kupershmidt (#1)
Re: psql: server version check for \dO

On Thu, May 10, 2012 at 7:09 AM, Josh Kupershmidt <schmiddy@gmail.com> wrote:

Hi all,

I think psql's \dO command is missing the server version check which
similar commands such as \dx use. Right now \dO errors out with:

test=# \dO
ERROR:  relation "pg_catalog.pg_collation" does not exist

when talking to servers older than 9.1, which don't have pg_collation.
Simple patch for listCollations() attached.

Indeed. Thanks, applied and backpatched to 9.1.

--
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/