Clean up includes from RLS patch

Enterprise / PostgreSQL - Stephen Frost [snowman.net] - 14 November 2014 16:05 UTC

The initial patch for RLS mistakenly included headers associated with the executor and planner bits in rewrite/rowsecurity.h. Per policy and general good sense, executor headers should not be included in planner headers or vice versa.

The include of execnodes.h was a mistaken holdover from previous
versions, while the include of relation.h was used for Relation's definition, which should have been coming from utils/relcache.h. This patch cleans these issues up, adds comments to the RowSecurityPolicy struct and the RowSecurityConfigType enum, and changes Relation->rsdesc to Relation->rd_rsdesc to follow Relation field naming convention.

Additionally, utils/rel.h was including rewrite/rowsecurity.h, which wasn't a great idea since that was pulling in things not really needed in utils/rel.h (which gets included in quite a few places). Instead, use 'struct RowSecurityDesc' for the rd_rsdesc field and add comments explaining why.

Lastly, add an include into access/nbtree/nbtsort.c for utils/sortsupport.h, which was evidently missed due to the above mess.

Pointed out by Tom in 16970.1415838651@sss.pgh.pa.us; note that the concerns regarding a similar situation in the custom-path commit still need to be addressed.

80eacaa Clean up includes from RLS patch
src/backend/access/nbtree/nbtsort.c | 1 +
src/backend/commands/policy.c | 3 ++-
src/backend/rewrite/rowsecurity.c | 2 +-
src/backend/utils/cache/relcache.c | 17 +++++++++--------
src/include/rewrite/rowsecurity.h | 27 ++++++++++++++-------------
src/include/utils/rel.h | 4 ++--
6 files changed, 29 insertions(+), 25 deletions(-)

Upstream: git.postgresql.org


  • Share