Allow psql to work against non-tablespace servers (e.g. 7.4) - Mailing list pgsql-patches

From Greg Sabino Mullane
Subject Allow psql to work against non-tablespace servers (e.g. 7.4)
Date
Msg-id a88a4b614b26489358503bb4a015f296@biglumber.com
Whole thread Raw
Responses Re: Allow psql to work against non-tablespace servers (e.g.  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
Index: describe.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/describe.c,v
retrieving revision 1.103
diff -c -r1.103 describe.c
*** describe.c    15 Jul 2004 03:56:06 -0000    1.103
--- describe.c    11 Aug 2004 21:15:34 -0000
***************
*** 112,117 ****
--- 112,123 ----
      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,713 ****
      /* Get general table info */
      printfPQExpBuffer(&buf,
       "SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules, \n"
!                     "relhasoids, reltablespace \n"
                        "FROM pg_catalog.pg_class WHERE oid = `%s`",
                        oid);
      res = PSQLexec(buf.data, false);
      if (!res)
--- 712,720 ----
      /* Get general table info */
      printfPQExpBuffer(&buf,
       "SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules, \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,735 ****
      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));
      PQclear(res);

      headers[0] = _("Column");
--- 736,743 ----
      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 = (pset.sversion >= 70500) ?
!             atooid(PQgetvalue(res, 0, 6)) : 0;
      PQclear(res);

      headers[0] = _("Column");
***************
*** 932,939 ****

              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);
              footers[count_footers] = NULL;

          }
--- 940,947 ----

              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);
              footers[count_footers] = NULL;

          }
Index: settings.h
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/settings.h,v
retrieving revision 1.18
diff -c -r1.18 settings.h
*** settings.h    12 May 2004 13:38:45 -0000    1.18
--- settings.h    11 Aug 2004 21:15:34 -0000
***************
*** 41,47 ****
      FILE       *cur_cmd_source; /* describe the status of the current main
                                   * loop */
      bool        cur_cmd_interactive;
!
      const char *progname;        /* in case you renamed psql */
      char       *inputfile;        /* for error reporting */
      unsigned    lineno;            /* also for error reporting */
--- 41,47 ----
      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: startup.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/startup.c,v
retrieving revision 1.95
diff -c -r1.95 startup.c
*** startup.c    3 Jun 2004 00:07:37 -0000    1.95
--- startup.c    11 Aug 2004 21:15:34 -0000
***************
*** 217,222 ****
--- 217,225 ----

      SyncVariables();

+     /* Grab the backend server version */
+     pset.sversion = PQserverVersion(pset.db);
+
      if (options.action == ACT_LIST_DB)
      {
          int            success = listAllDbs(false);



pgsql-patches by date:

Previous
From: Oliver Jowett
Date:
Subject: Re: [HACKERS] SAVEPOINT syntax again
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] SAVEPOINT syntax again