Fix hard-coded relkind constants in assorted other files.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 10 Mar 2017 04:36:44 +0000 (23:36 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 10 Mar 2017 04:36:52 +0000 (23:36 -0500)
Although it's reasonable to expect that most of these constants will
never change, that does not make it good programming style to hard-code
the value rather than using the RELKIND_FOO macros.

I think I've now gotten all the hard-coded references in C code.
Unfortunately there's no equally convenient way to parameterize
SQL files ...

Discussion: https://postgr.es/m/11145.1488931324@sss.pgh.pa.us

contrib/oid2name/oid2name.c
contrib/postgres_fdw/postgres_fdw.c
contrib/vacuumlo/vacuumlo.c
src/backend/utils/adt/xml.c
src/tools/findoidjoins/findoidjoins.c

index 5a2aa1dd0eab2a91545c24bc8ffa0ad2e9a5c9da..778e8bad419d507a0e6f098aacbe01258a6126c9 100644 (file)
@@ -9,6 +9,8 @@
  */
 #include "postgres_fe.h"
 
+#include "catalog/pg_class.h"
+
 #include "libpq-fe.h"
 #include "pg_getopt.h"
 
@@ -433,11 +435,12 @@ sql_exec_dumpalltables(PGconn *conn, struct options * opts)
 
        snprintf(todo, sizeof(todo),
                         "SELECT pg_catalog.pg_relation_filenode(c.oid) as \"Filenode\", relname as \"Table Name\" %s "
-                        "FROM pg_class c "
+                        "FROM pg_catalog.pg_class c "
                   "    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace "
                         "      LEFT JOIN pg_catalog.pg_database d ON d.datname = pg_catalog.current_database(),"
                         "      pg_catalog.pg_tablespace t "
-                        "WHERE relkind IN ('r', 'm'%s%s) AND "
+                        "WHERE relkind IN (" CppAsString2(RELKIND_RELATION) ","
+                        CppAsString2(RELKIND_MATVIEW) "%s%s) AND "
                         "      %s"
                         "              t.oid = CASE"
                         "                      WHEN reltablespace <> 0 THEN reltablespace"
@@ -445,8 +448,8 @@ sql_exec_dumpalltables(PGconn *conn, struct options * opts)
                         "              END "
                         "ORDER BY relname",
                         opts->extended ? addfields : "",
-                        opts->indexes ? ", 'i', 'S'" : "",
-                        opts->systables ? ", 't'" : "",
+                        opts->indexes ? "," CppAsString2(RELKIND_INDEX) "," CppAsString2(RELKIND_SEQUENCE) : "",
+                        opts->systables ? "," CppAsString2(RELKIND_TOASTVALUE) : "",
                         opts->systables ? "" : "n.nspname NOT IN ('pg_catalog', 'information_schema') AND n.nspname !~ '^pg_toast' AND");
 
        sql_exec(conn, todo, opts->quiet);
@@ -507,7 +510,11 @@ sql_exec_searchtables(PGconn *conn, struct options * opts)
                "       LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace \n"
                                        "       LEFT JOIN pg_catalog.pg_database d ON d.datname = pg_catalog.current_database(),\n"
                                        "       pg_catalog.pg_tablespace t \n"
-                                       "WHERE relkind IN ('r', 'm', 'i', 'S', 't') AND \n"
+                                       "WHERE relkind IN (" CppAsString2(RELKIND_RELATION) ","
+                                       CppAsString2(RELKIND_MATVIEW) ","
+                                       CppAsString2(RELKIND_INDEX) ","
+                                       CppAsString2(RELKIND_SEQUENCE) ","
+                                       CppAsString2(RELKIND_TOASTVALUE) ") AND \n"
                                        "               t.oid = CASE\n"
                        "                       WHEN reltablespace <> 0 THEN reltablespace\n"
                                        "                       ELSE dattablespace\n"
index 5d270b948a97f8c22329abbc04b8a146196891e7..990313a597713048c70a61a7c2fd7ac704d6f52b 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "access/htup_details.h"
 #include "access/sysattr.h"
+#include "catalog/pg_class.h"
 #include "commands/defrem.h"
 #include "commands/explain.h"
 #include "commands/vacuum.h"
@@ -3885,7 +3886,11 @@ postgresImportForeignSchema(ImportForeignSchemaStmt *stmt, Oid serverOid)
                                                                   "    adrelid = c.oid AND adnum = attnum ");
 
                appendStringInfoString(&buf,
-                                                          "WHERE c.relkind IN ('r', 'v', 'f', 'm') "
+                                                          "WHERE c.relkind IN ("
+                                                          CppAsString2(RELKIND_RELATION) ","
+                                                          CppAsString2(RELKIND_VIEW) ","
+                                                          CppAsString2(RELKIND_FOREIGN_TABLE) ","
+                                                          CppAsString2(RELKIND_MATVIEW) ") "
                                                           "  AND n.nspname = ");
                deparseStringLiteral(&buf, stmt->remote_schema);
 
index 06f469067ba0f503c757601960ab48f0c342c9b1..887483cf0fa0a0990586b21432e5f37c1bcd2443 100644 (file)
@@ -21,6 +21,8 @@
 #include <termios.h>
 #endif
 
+#include "catalog/pg_class.h"
+
 #include "libpq-fe.h"
 #include "pg_getopt.h"
 
@@ -209,7 +211,7 @@ vacuumlo(const char *database, const struct _param * param)
        strcat(buf, "      AND a.atttypid = t.oid ");
        strcat(buf, "      AND c.relnamespace = s.oid ");
        strcat(buf, "      AND t.typname in ('oid', 'lo') ");
-       strcat(buf, "      AND c.relkind in ('r', 'm')");
+       strcat(buf, "      AND c.relkind in (" CppAsString2(RELKIND_RELATION) ", " CppAsString2(RELKIND_MATVIEW) ")");
        strcat(buf, "      AND s.nspname !~ '^pg_'");
        res = PQexec(conn, buf);
        if (PQresultStatus(res) != PGRES_TUPLES_OK)
index 04aeb7178e9047af4450502b5a21dbfd74fc7171..f81cf489d265a9e0387c85d14c59390d7801d203 100644 (file)
@@ -69,6 +69,7 @@
 
 #include "access/htup_details.h"
 #include "catalog/namespace.h"
+#include "catalog/pg_class.h"
 #include "catalog/pg_type.h"
 #include "commands/dbcommands.h"
 #include "executor/executor.h"
@@ -2344,7 +2345,13 @@ schema_get_xml_visible_tables(Oid nspid)
        StringInfoData query;
 
        initStringInfo(&query);
-       appendStringInfo(&query, "SELECT oid FROM pg_catalog.pg_class WHERE relnamespace = %u AND relkind IN ('r', 'm', 'v') AND pg_catalog.has_table_privilege (oid, 'SELECT') ORDER BY relname;", nspid);
+       appendStringInfo(&query, "SELECT oid FROM pg_catalog.pg_class"
+                                        " WHERE relnamespace = %u AND relkind IN ("
+                                        CppAsString2(RELKIND_RELATION) ","
+                                        CppAsString2(RELKIND_MATVIEW) ","
+                                        CppAsString2(RELKIND_VIEW) ")"
+                                        " AND pg_catalog.has_table_privilege (oid, 'SELECT')"
+                                        " ORDER BY relname;", nspid);
 
        return query_to_oid_list(query.data);
 }
@@ -2370,7 +2377,13 @@ static List *
 database_get_xml_visible_tables(void)
 {
        /* At the moment there is no order required here. */
-       return query_to_oid_list("SELECT oid FROM pg_catalog.pg_class WHERE relkind IN ('r', 'm', 'v') AND pg_catalog.has_table_privilege (pg_class.oid, 'SELECT') AND relnamespace IN (" XML_VISIBLE_SCHEMAS ");");
+       return query_to_oid_list("SELECT oid FROM pg_catalog.pg_class"
+                                                        " WHERE relkind IN ("
+                                                        CppAsString2(RELKIND_RELATION) ","
+                                                        CppAsString2(RELKIND_MATVIEW) ","
+                                                        CppAsString2(RELKIND_VIEW) ")"
+                                                        " AND pg_catalog.has_table_privilege(pg_class.oid, 'SELECT')"
+                                                        " AND relnamespace IN (" XML_VISIBLE_SCHEMAS ");");
 }
 
 
index 9fe0379f63eb7ffaaad3c7b861035cf55179a0f8..267107ddaeb0c8a0267d799c31e93afc68c9fb43 100644 (file)
@@ -7,6 +7,8 @@
  */
 #include "postgres_fe.h"
 
+#include "catalog/pg_class.h"
+
 #include "libpq-fe.h"
 #include "pqexpbuffer.h"
 
@@ -51,8 +53,8 @@ main(int argc, char **argv)
                                          "SELECT c.relname, (SELECT nspname FROM "
                "pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
                                          "FROM pg_catalog.pg_class c "
-                                         "WHERE c.relkind = 'r' "
-                                         "AND c.relhasoids "
+                                         "WHERE c.relkind = " CppAsString2(RELKIND_RELATION)
+                                         " AND c.relhasoids "
                                          "ORDER BY nspname, c.relname"
                );
 
@@ -71,9 +73,10 @@ main(int argc, char **argv)
                                          "(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
                                          "a.attname "
                                          "FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
-                                         "WHERE a.attnum > 0 AND c.relkind = 'r' "
-                                         "AND a.attrelid = c.oid "
-                                         "AND a.atttypid IN ('pg_catalog.oid'::regtype, "
+                                         "WHERE a.attnum > 0"
+                                         " AND c.relkind = " CppAsString2(RELKIND_RELATION)
+                                         " AND a.attrelid = c.oid"
+                                         " AND a.atttypid IN ('pg_catalog.oid'::regtype, "
                                          " 'pg_catalog.regclass'::regtype, "
                                          " 'pg_catalog.regoper'::regtype, "
                                          " 'pg_catalog.regoperator'::regtype, "
@@ -146,9 +149,10 @@ main(int argc, char **argv)
                                          "(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
                                          "a.attname "
                                          "FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
-                                         "WHERE a.attnum > 0 AND c.relkind = 'r' "
-                                         "AND a.attrelid = c.oid "
-                                         "AND a.atttypid IN ('pg_catalog.oid[]'::regtype, "
+                                         "WHERE a.attnum > 0"
+                                         " AND c.relkind = " CppAsString2(RELKIND_RELATION)
+                                         " AND a.attrelid = c.oid"
+                                         " AND a.atttypid IN ('pg_catalog.oid[]'::regtype, "
                                          " 'pg_catalog.regclass[]'::regtype, "
                                          " 'pg_catalog.regoper[]'::regtype, "
                                          " 'pg_catalog.regoperator[]'::regtype, "