From 248c6cb91ab4a75042b3892d6a23b71a8154f021 Mon Sep 17 00:00:00 2001 From: jeff-davis Date: Wed, 24 Mar 2021 16:05:08 -0700 Subject: [PATCH] Columnar: do not bother building unnecessary RestrictInfo. (#4852) Co-authored-by: Jeff Davis --- src/backend/columnar/columnar_reader.c | 28 +------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/src/backend/columnar/columnar_reader.c b/src/backend/columnar/columnar_reader.c index 2c15f0dd1..fc35fc7a7 100644 --- a/src/backend/columnar/columnar_reader.c +++ b/src/backend/columnar/columnar_reader.c @@ -30,7 +30,6 @@ #include "optimizer/clauses.h" #include "optimizer/predtest.h" #endif -#include "optimizer/restrictinfo.h" #include "storage/fd.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -115,7 +114,6 @@ static ColumnBuffers * LoadColumnBuffers(Relation relation, static bool * SelectedChunkMask(StripeSkipList *stripeSkipList, List *projectedColumnList, List *whereClauseList, int64 *chunkGroupsFiltered); -static List * BuildRestrictInfoList(List *whereClauseList); static Node * BuildBaseConstraint(Var *variable); static OpExpr * MakeOpExpression(Var *variable, int16 strategyNumber); static Oid GetOperatorByType(Oid typeId, Oid accessMethodId, int16 strategyNumber); @@ -656,7 +654,6 @@ SelectedChunkMask(StripeSkipList *stripeSkipList, List *projectedColumnList, { ListCell *columnCell = NULL; uint32 chunkIndex = 0; - List *restrictInfoList = BuildRestrictInfoList(whereClauseList); bool *selectedChunkMask = palloc0(stripeSkipList->chunkCount * sizeof(bool)); memset(selectedChunkMask, true, stripeSkipList->chunkCount * sizeof(bool)); @@ -696,7 +693,7 @@ SelectedChunkMask(StripeSkipList *stripeSkipList, List *projectedColumnList, List *constraintList = list_make1(baseConstraint); bool predicateRefuted = - predicate_refuted_by(constraintList, restrictInfoList, false); + predicate_refuted_by(constraintList, whereClauseList, false); if (predicateRefuted && selectedChunkMask[chunkIndex]) { selectedChunkMask[chunkIndex] = false; @@ -746,29 +743,6 @@ GetFunctionInfoOrNull(Oid typeId, Oid accessMethodId, int16 procedureId) } -/* - * BuildRestrictInfoList builds restrict info list using the selection criteria, - * and then return this list. The function is copied from CitusDB's shard pruning - * logic. - */ -static List * -BuildRestrictInfoList(List *whereClauseList) -{ - List *restrictInfoList = NIL; - - ListCell *qualCell = NULL; - foreach(qualCell, whereClauseList) - { - Node *qualNode = (Node *) lfirst(qualCell); - - RestrictInfo *restrictInfo = make_simple_restrictinfo((Expr *) qualNode); - restrictInfoList = lappend(restrictInfoList, restrictInfo); - } - - return restrictInfoList; -} - - /* * BuildBaseConstraint builds and returns a base constraint. This constraint * implements an expression in the form of (var <= max && var >= min), where