]> granicus.if.org Git - postgresql/commitdiff
Remove misplaced sanity check from heap_create().
authorRobert Haas <rhaas@postgresql.org>
Thu, 14 Jun 2012 13:58:53 +0000 (09:58 -0400)
committerRobert Haas <rhaas@postgresql.org>
Thu, 14 Jun 2012 13:58:53 +0000 (09:58 -0400)
Even when allow_system_table_mods is not set, we allow creation of any
type of SQL object in pg_catalog, except for relations.  And you can
get relations into pg_catalog, too, by initially creating them in some
other schema and then moving them with ALTER .. SET SCHEMA.  So this
restriction, which prevents relations (only) from being created in
pg_catalog directly, is fairly pointless.  If we need a safety mechanism
for this, it should be placed further upstream, so that it affects all
SQL objects uniformly, and picks up both CREATE and SET SCHEMA.

For now, just rip it out, per discussion with Tom Lane.

src/backend/bootstrap/bootparse.y
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/include/catalog/heap.h

index d7bc5727403ba7c30475ce42512ebd8b6f577290..18f0add852e7832739e3877811e385abcb540fab 100644 (file)
@@ -222,8 +222,7 @@ Boot_CreateStmt:
                                                                                                   RELKIND_RELATION,
                                                                                                   RELPERSISTENCE_PERMANENT,
                                                                                                   shared_relation,
-                                                                                                  mapped_relation,
-                                                                                                  true);
+                                                                                                  mapped_relation);
                                                elog(DEBUG4, "bootstrap relation created");
                                        }
                                        else
index c959a469fd6292754913a837f2375e206141abce..c91df9003811d1ff24590e88271a3c579c4a52f1 100644 (file)
@@ -242,8 +242,7 @@ heap_create(const char *relname,
                        char relkind,
                        char relpersistence,
                        bool shared_relation,
-                       bool mapped_relation,
-                       bool allow_system_table_mods)
+                       bool mapped_relation)
 {
        bool            create_storage;
        Relation        rel;
@@ -251,18 +250,6 @@ heap_create(const char *relname,
        /* The caller must have provided an OID for the relation. */
        Assert(OidIsValid(relid));
 
-       /*
-        * sanity checks
-        */
-       if (!allow_system_table_mods &&
-               (IsSystemNamespace(relnamespace) || IsToastNamespace(relnamespace)) &&
-               IsNormalProcessingMode())
-               ereport(ERROR,
-                               (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                errmsg("permission denied to create \"%s.%s\"",
-                                               get_namespace_name(relnamespace), relname),
-               errdetail("System catalog modifications are currently disallowed.")));
-
        /*
         * Decide if we need storage or not, and handle a couple other special
         * cases for particular relkinds.
@@ -1124,8 +1111,7 @@ heap_create_with_catalog(const char *relname,
                                                           relkind,
                                                           relpersistence,
                                                           shared_relation,
-                                                          mapped_relation,
-                                                          allow_system_table_mods);
+                                                          mapped_relation);
 
        Assert(relid == RelationGetRelid(new_rel_desc));
 
index 89d346886d4e7d012fdf8b75db0329794ab85862..0c51923be86420edb0b3937a19fbaeebe9446980 100644 (file)
@@ -816,8 +816,7 @@ index_create(Relation heapRelation,
                                                                RELKIND_INDEX,
                                                                relpersistence,
                                                                shared_relation,
-                                                               mapped_relation,
-                                                               allow_system_table_mods);
+                                                               mapped_relation);
 
        Assert(indexRelationId == RelationGetRelid(indexRelation));
 
index bc98d5d6fc1e789619ee04a4237f3e272a431eca..bc8c63a15e1c72f3e999e021970919abc054636e 100644 (file)
@@ -46,8 +46,7 @@ extern Relation heap_create(const char *relname,
                        char relkind,
                        char relpersistence,
                        bool shared_relation,
-                       bool mapped_relation,
-                       bool allow_system_table_mods);
+                       bool mapped_relation);
 
 extern Oid heap_create_with_catalog(const char *relname,
                                                 Oid relnamespace,