diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 328a1c079f1ca043ae96de8788572b96e0915689..e558b867092d7cbaeec1a29e7ff6480222ab2aaa 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -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; } diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h index d8766b045a88336d8ed7bee452f3c463128e50f3..74046e9d3a1c2937ca3a05ac8c9e8abc028109df 100644 --- a/src/bin/psql/settings.h +++ b/src/bin/psql/settings.h @@ -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 */ diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 2bd2b50aff03179ee457e167570c190017d37ce9..2773e92a61fe2e9bf38cb00e41072407cc777248 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -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);