mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
Cleanup of rewriter and planner handling of Query.hasRowSecurity flag.
Be sure to pull up the subquery's hasRowSecurity flag when flattening a subquery in pull_up_simple_subquery(). This isn't a bug today because we don't look at the hasRowSecurity flag during planning, but it could easily be a bug tomorrow. Likewise, make rewriteRuleAction() pull up the hasRowSecurity flag when absorbing RTEs from a rule action. This isn't a bug either, for the opposite reason: the flag should never be set yet. But again, it seems like good future proofing. Add a comment explaining why rewriteTargetView() should *not* set hasRowSecurity when adding stuff to securityQuals. Improve some nearby comments about securityQuals processing, and document that field more completely in parsenodes.h. Patch by me, analysis by Dean Rasheed. Discussion: <CAEZATCXZ8tb2DV6f=bkhsMV6u_gRcZ0CZBw2J-qU84RxSukZog@mail.gmail.com>
This commit is contained in:
@@ -775,6 +775,13 @@ typedef struct XmlSerialize
|
||||
* FirstLowInvalidHeapAttributeNumber from column numbers before storing
|
||||
* them in these fields. A whole-row Var reference is represented by
|
||||
* setting the bit for InvalidAttrNumber.
|
||||
*
|
||||
* securityQuals is a list of security barrier quals (boolean expressions),
|
||||
* to be tested in the listed order before returning a row from the
|
||||
* relation. It is always NIL in parser output. Entries are added by the
|
||||
* rewriter to implement security-barrier views and/or row-level security.
|
||||
* Note that the planner turns each boolean expression into an implicitly
|
||||
* AND'ed sublist, as is its usual habit with qualification expressions.
|
||||
*--------------------
|
||||
*/
|
||||
typedef enum RTEKind
|
||||
@@ -872,7 +879,7 @@ typedef struct RangeTblEntry
|
||||
Bitmapset *selectedCols; /* columns needing SELECT permission */
|
||||
Bitmapset *insertedCols; /* columns needing INSERT permission */
|
||||
Bitmapset *updatedCols; /* columns needing UPDATE permission */
|
||||
List *securityQuals; /* any security barrier quals to apply */
|
||||
List *securityQuals; /* security barrier quals to apply, if any */
|
||||
} RangeTblEntry;
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user