]> granicus.if.org Git - postgresql/commitdiff
Throw nice error if server is too old to support psql's \ef or \sf command.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 10 Nov 2011 23:36:55 +0000 (18:36 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 10 Nov 2011 23:36:55 +0000 (18:36 -0500)
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

src/bin/psql/command.c

index 472bcab03b59a69d90e86807ddb0b298b7b96569..a451c2b8ea173f4dc4a9c0f22d59c2c36bdd0136 100644 (file)
@@ -583,7 +583,13 @@ exec_command(const char *cmd,
        {
                int                     lineno = -1;
 
-               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;
@@ -1110,7 +1116,13 @@ exec_command(const char *cmd,
                func_buf = createPQExpBuffer();
                func = psql_scan_slash_option(scan_state,
                                                                          OT_WHOLE_LINE, NULL, true);
-               if (!func)
+               if (pset.sversion < 80400)
+               {
+                       psql_error("The server (version %d.%d) does not support showing function source.\n",
+                                          pset.sversion / 10000, (pset.sversion / 100) % 100);
+                       status = PSQL_CMD_ERROR;
+               }
+               else if (!func)
                {
                        psql_error("function name is required\n");
                        status = PSQL_CMD_ERROR;