Allow psql to use 7.4.X database by not referencing tablespaces.
authorBruce Momjian <bruce@momjian.us>
Fri, 20 Aug 2004 20:18:23 +0000 (20:18 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 20 Aug 2004 20:18:23 +0000 (20:18 +0000)
Greg Sabino Mullan

src/bin/psql/describe.c
src/bin/psql/settings.h
src/bin/psql/startup.c

index 328a1c079f1ca043ae96de8788572b96e0915689..e558b867092d7cbaeec1a29e7ff6480222ab2aaa 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.103 2004/07/15 03:56:06 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.104 2004/08/20 20:18:23 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "describe.h"
@@ -112,6 +112,12 @@ describeTablespaces(const char *pattern, bool verbose)
        PGresult   *res;
        printQueryOpt myopt = pset.popt;
 
+       if (pset.sversion < 70500) {
+                       fprintf(stderr, _("This server version (%d) does not support tablespaces.\n"),
+                                                       pset.sversion);
+                       return true;
+       }
+
        initPQExpBuffer(&buf);
 
        printfPQExpBuffer(&buf,
@@ -706,8 +712,9 @@ describeOneTableDetails(const char *schemaname,
        /* Get general table info */
        printfPQExpBuffer(&buf,
         "SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules, \n" 
-                                       "relhasoids, reltablespace \n"
+                                       "relhasoids %s \n"
                                          "FROM pg_catalog.pg_class WHERE oid = '%s'",
+                                         pset.sversion >= 70500 ? ", reltablespace" : "",
                                          oid);
        res = PSQLexec(buf.data, false);
        if (!res)
@@ -729,7 +736,8 @@ describeOneTableDetails(const char *schemaname,
        tableinfo.hasindex = strcmp(PQgetvalue(res, 0, 0), "t") == 0;
        tableinfo.hasrules = strcmp(PQgetvalue(res, 0, 4), "t") == 0;
        tableinfo.hasoids = strcmp(PQgetvalue(res, 0, 5), "t") == 0;
-       tableinfo.tablespace = atooid(PQgetvalue(res, 0, 6));
+       tableinfo.tablespace = (pset.sversion >= 70500) ? 
+                       atooid(PQgetvalue(res, 0, 6)) : 0;
        PQclear(res);
 
        headers[0] = _("Column");
@@ -932,8 +940,8 @@ describeOneTableDetails(const char *schemaname,
 
                        footers = pg_malloc_zero(4 * sizeof(*footers));
                        footers[count_footers++] = pg_strdup(tmpbuf.data);
-               add_tablespace_footer(tableinfo.relkind, tableinfo.tablespace,
-               footers, &count_footers, tmpbuf);
+                       add_tablespace_footer(tableinfo.relkind, tableinfo.tablespace,
+                                                                                                               footers, &count_footers, tmpbuf);
                        footers[count_footers] = NULL;
 
                }
index d8766b045a88336d8ed7bee452f3c463128e50f3..74046e9d3a1c2937ca3a05ac8c9e8abc028109df 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/settings.h,v 1.18 2004/05/12 13:38:45 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/settings.h,v 1.19 2004/08/20 20:18:23 momjian Exp $
  */
 #ifndef SETTINGS_H
 #define SETTINGS_H
@@ -41,7 +41,7 @@ typedef struct _psqlSettings
        FILE       *cur_cmd_source; /* describe the status of the current main
                                                                 * loop */
        bool            cur_cmd_interactive;
-
+       int             sversion; /* backend server version */
        const char *progname;           /* in case you renamed psql */
        char       *inputfile;          /* for error reporting */
        unsigned        lineno;                 /* also for error reporting */
index 2bd2b50aff03179ee457e167570c190017d37ce9..2773e92a61fe2e9bf38cb00e41072407cc777248 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.96 2004/08/18 02:59:11 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.97 2004/08/20 20:18:23 momjian Exp $
  */
 #include "postgres_fe.h"
 
@@ -217,6 +217,9 @@ main(int argc, char *argv[])
 
        SyncVariables();
 
+       /* Grab the backend server version */
+       pset.sversion = PQserverVersion(pset.db);
+
        if (options.action == ACT_LIST_DB)
        {
                int                     success = listAllDbs(false);