diff options
Diffstat (limited to 'src/backend/optimizer/path/allpaths.c')
-rw-r--r-- | src/backend/optimizer/path/allpaths.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index c4b0c79fb17..9caca94f64b 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -1982,7 +1982,9 @@ targetIsInAllPartitionLists(TargetEntry *tle, Query *query) * 2. If unsafeVolatile is set, the qual must not contain any volatile * functions. * - * 3. If unsafeLeaky is set, the qual must not contain any leaky functions. + * 3. If unsafeLeaky is set, the qual must not contain any leaky functions + * that are passed Var nodes, and therefore might reveal values from the + * subquery as side effects. * * 4. The qual must not refer to the whole-row output of the subquery * (since there is no easy way to name that within the subquery itself). @@ -2009,7 +2011,7 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, /* Refuse leaky quals if told to (point 3) */ if (safetyInfo->unsafeLeaky && - contain_leaky_functions(qual)) + contain_leaked_vars(qual)) return false; /* |