From 7de878f0ca34d37458509e331f92ed3eb8598892 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Tue, 1 Mar 2022 19:08:12 +0100 Subject: [PATCH] Fix some bugs --- .../utils/extract_equality_filters_from_query.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/backend/distributed/utils/extract_equality_filters_from_query.c b/src/backend/distributed/utils/extract_equality_filters_from_query.c index 45bfb262e..c6657f8fb 100644 --- a/src/backend/distributed/utils/extract_equality_filters_from_query.c +++ b/src/backend/distributed/utils/extract_equality_filters_from_query.c @@ -89,6 +89,7 @@ extract_equality_filters_from_query(PG_FUNCTION_ARGS) char *queryString = text_to_cstring(PG_GETARG_TEXT_P(0)); MemoryContext oldContext = CurrentMemoryContext; + ResourceOwner oldOwner = CurrentResourceOwner; /* capture filters via hooks */ PlannerRestrictionContext *plannerRestrictionContext = @@ -153,6 +154,12 @@ extract_equality_filters_from_query(PG_FUNCTION_ARGS) Var *leftVar = NULL; Const *rightConst = NULL; + if (!NodeIsEqualsOpExpr((Node *) clause)) + { + /* not an equals expression */ + continue; + } + if (!VarConstOpExprClause((OpExpr *) clause, &leftVar, &rightConst) && !VarNullWrapperOpExprClause(clause, wrapperFunctionId, &leftVar)) { @@ -273,6 +280,8 @@ extract_equality_filters_from_query(PG_FUNCTION_ARGS) FlushErrorState(); RollbackAndReleaseCurrentSubTransaction(); + MemoryContextSwitchTo(oldContext); + CurrentResourceOwner = oldOwner; } PG_END_TRY();