Pass NULL for plannerInfo as we don't generate PlaceHolderVars

pull/5209/head
Halil Ozan Akgul 2021-08-17 13:18:46 +03:00 committed by Sait Talha Nisanci
parent 86d9260781
commit b01e7e884c
3 changed files with 24 additions and 5 deletions

View File

@ -688,6 +688,8 @@ ShardsMatchingDeleteCriteria(Oid relationId, List *shardIntervalList,
Assert(deleteCriteria != NULL);
List *deleteCriteriaList = list_make1(deleteCriteria);
/* walk over shard list and check if shards can be dropped */
ShardInterval *shardInterval = NULL;
foreach_ptr(shardInterval, shardIntervalList)
@ -703,9 +705,17 @@ ShardsMatchingDeleteCriteria(Oid relationId, List *shardIntervalList,
Expr *lessThanExpr = (Expr *) linitial(andExpr->args);
Expr *greaterThanExpr = (Expr *) lsecond(andExpr->args);
RestrictInfo *lessThanRestrictInfo = make_simple_restrictinfo(lessThanExpr);
RestrictInfo *greaterThanRestrictInfo = make_simple_restrictinfo(
greaterThanExpr);
/*
* passing NULL for plannerInfo will be problematic if we have placeholder
* vars. However, it won't be the case here because we are building
* the expression from shard intervals which don't have placeholder vars.
* Note that this is only the case with PG14 as the parameter doesn't exist
* prior to that.
*/
RestrictInfo *lessThanRestrictInfo = make_simple_restrictinfo_compat(NULL,
lessThanExpr);
RestrictInfo *greaterThanRestrictInfo = make_simple_restrictinfo_compat(NULL,
greaterThanExpr);
restrictInfoList = lappend(restrictInfoList, lessThanRestrictInfo);
restrictInfoList = lappend(restrictInfoList, greaterThanRestrictInfo);

View File

@ -747,7 +747,16 @@ RouterModifyTaskForShardInterval(Query *originalQuery,
continue;
}
shardRestrictionList = make_simple_restrictinfo((Expr *) shardOpExpressions);
/*
* passing NULL for plannerInfo will be problematic if we have placeholder
* vars. However, it won't be the case here because we are building
* the expression from shard intervals which don't have placeholder vars.
* Note that this is only the case with PG14 as the parameter doesn't exist
* prior to that.
*/
shardRestrictionList = make_simple_restrictinfo_compat(NULL,
(Expr *) shardOpExpressions);
extendedBaseRestrictInfo = lappend(extendedBaseRestrictInfo,
shardRestrictionList);

View File

@ -2054,7 +2054,7 @@ GetRestrictInfoListForRelation(RangeTblEntry *rangeTblEntry,
* If the restriction involves multiple tables, we cannot add it to
* input relation's expression list.
*/
Relids varnos = pull_varnos((Node *) restrictionClause);
Relids varnos = pull_varnos_compat(relationRestriction->plannerInfo, (Node *) restrictionClause);
if (bms_num_members(varnos) != 1)
{
continue;