From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 10 Nov 2011 23:37:00 +0000 (-0500)
Subject: Throw nice error if server is too old to support psql's \ef or \sf command.
X-Git-Tag: REL9_0_6~19
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c49130ade4dac5d8dff724cf15b0f0cdb9cf7d24;p=postgresql

Throw nice error if server is too old to support psql's \ef or \sf command.

Previously, you'd get "function pg_catalog.pg_get_functiondef(integer) does
not exist", which is at best rather unprofessional-looking.  Back-patch
to 8.4 where \ef was introduced.

Josh Kupershmidt
---

diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 7c44faeb2c..98548d3655 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -508,7 +508,13 @@ exec_command(const char *cmd,
 	 */
 	else if (strcmp(cmd, "ef") == 0)
 	{
-		if (!query_buf)
+		if (pset.sversion < 80400)
+		{
+			psql_error("The server (version %d.%d) does not support editing function source.\n",
+					   pset.sversion / 10000, (pset.sversion / 100) % 100);
+			status = PSQL_CMD_ERROR;
+		}
+		else if (!query_buf)
 		{
 			psql_error("no query buffer\n");
 			status = PSQL_CMD_ERROR;