Re: has_column_privilege behavior (was Re: Assert failed in snprintf.c)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Stephen Frost <sfrost@snowman.net>
Cc: Jaime Casanova <jaime.casanova@2ndquadrant.com>,
Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-10-01T18:57:54Z
Lists: pgsql-hackers
Stephen Frost <sfrost@snowman.net> writes: > * Tom Lane (tgl@sss.pgh.pa.us) wrote: >> But it's not quite clear to me what we want the behavior for bad column >> name to be. A case could be made for either of: >> >> * If either the table OID is bad, or the OID is OK but there's no such >> column, return null. >> >> * Return null for bad OID, but if it's OK, continue to throw error >> for bad column name. >> >> The second case seems weirdly inconsistent, but it might actually >> be the most useful definition. Not detecting a misspelled column >> name is likely to draw complaints. >> >> Thoughts? > What are we going to do for dropped columns..? Seems like with what > you're suggesting we'd throw an error, but that'd make querying with > this function similairly annoying at times. True, but I think dropping individual columns is much less common than dropping whole tables. The general plan in the has_foo_privilege functions is to throw errors for failing name-based lookups, but return null for failing numerically-based lookups (object OID or column number). I'm inclined to think we should stick to that. In the case at hand, we'd be supporting queries that iterate over pg_attribute, but they'd have to pass attnum not attname to avoid snapshot-skew failures. That's a bit annoying, but not throwing error for a typo'ed name is annoying to a different and probably larger set of users. regards, tom lane
Commits
-
Fix corner-case failures in has_foo_privilege() family of functions.
- fd81fae67fa0 9.4.20 landed
- dad4df0fc8a1 9.5.15 landed
- 01c7a87df98c 9.3.25 landed
- 7eed72333731 10.6 landed
- 6d73983be61a 9.6.11 landed
- 419cc8add5fb 11.0 landed
- 3d0f68dd3061 12.0 landed