]> granicus.if.org Git - postgresql/commitdiff
Fix error message for COMMENT/SECURITY LABEL ON COLUMN xxx IS 'yyy'
authorRobert Haas <rhaas@postgresql.org>
Tue, 22 May 2012 15:19:33 +0000 (11:19 -0400)
committerRobert Haas <rhaas@postgresql.org>
Tue, 22 May 2012 15:24:16 +0000 (11:24 -0400)
When the column name is an unqualified name, rather than table.column,
the error message complains about too many dotted names, which is
wrong.  Report by Peter Eisentraut based on examination of the
sepgsql regression test output, but the problem also affects COMMENT.
New wording as suggested by Tom Lane.

contrib/sepgsql/expected/label.out
src/backend/catalog/objectaddress.c
src/test/regress/input/security_label.source
src/test/regress/output/security_label.source

index bac169f37bffdc4dcc2ab82a0ef77dedd21a7723..279cfab09148736e0d594e278899a4165f544bff 100644 (file)
@@ -65,7 +65,7 @@ SECURITY LABEL ON TABLE t2
 ERROR:  SELinux: invalid security label: "invalid security context"
 SECURITY LABEL ON COLUMN t2
     IS 'system_u:object_r:sepgsql_ro_table_t:s0';      -- be failed
-ERROR:  improper relation name (too many dotted names): 
+ERROR:  column name must be qualified
 SECURITY LABEL ON COLUMN t2.b
     IS 'system_u:object_r:sepgsql_ro_table_t:s0';      -- ok
 --
index 3925b8ec95c60255e9f7d4c81c9fde98a56b151d..403bd9e283cf2a96ee7a77260b144b09ed8a7e36 100644 (file)
@@ -526,6 +526,10 @@ get_object_address_attribute(ObjectType objtype, List *objname,
        const char *attname;
 
        /* Extract relation name and open relation. */
+       if (list_length(objname) < 2)
+               ereport(ERROR,
+                               (errcode(ERRCODE_SYNTAX_ERROR),
+                                errmsg("column name must be qualified")));
        attname = strVal(lfirst(list_tail(objname)));
        relname = list_truncate(list_copy(objname), list_length(objname) - 1);
        relation = relation_openrv(makeRangeVarFromNameList(relname), lockmode);
index 810a721ca8f37dce04045f4a97011b3e25aaef1f..9b430b09a57e2ce66b458a937b56246a2e86c8e0 100644 (file)
@@ -44,6 +44,7 @@ SET SESSION AUTHORIZATION seclabel_user1;
 
 SECURITY LABEL ON TABLE seclabel_tbl1 IS 'classified';                 -- OK
 SECURITY LABEL ON COLUMN seclabel_tbl1.a IS 'unclassified';            -- OK
+SECURITY LABEL ON COLUMN seclabel_tbl1 IS 'unclassified';      -- fail
 SECURITY LABEL ON TABLE seclabel_tbl1 IS '...invalid label...';        -- fail
 SECURITY LABEL FOR 'dummy' ON TABLE seclabel_tbl1 IS 'unclassified';   -- OK
 SECURITY LABEL FOR 'unknown_seclabel' ON TABLE seclabel_tbl1 IS 'classified';  -- fail
index 4bc803d694fae0f2971f5b5ce0b3e050b949402c..4b53bd54c903671f2ab4e6d935d419e8e932f347 100644 (file)
@@ -37,6 +37,8 @@ LOAD '@abs_builddir@/dummy_seclabel@DLSUFFIX@';
 SET SESSION AUTHORIZATION seclabel_user1;
 SECURITY LABEL ON TABLE seclabel_tbl1 IS 'classified';                 -- OK
 SECURITY LABEL ON COLUMN seclabel_tbl1.a IS 'unclassified';            -- OK
+SECURITY LABEL ON COLUMN seclabel_tbl1 IS 'unclassified';      -- fail
+ERROR:  column name must be qualified
 SECURITY LABEL ON TABLE seclabel_tbl1 IS '...invalid label...';        -- fail
 ERROR:  '...invalid label...' is not a valid security label
 SECURITY LABEL FOR 'dummy' ON TABLE seclabel_tbl1 IS 'unclassified';   -- OK