aboutsummaryrefslogtreecommitdiff
path: root/contrib/postgres_fdw
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2018-07-01 15:10:10 +0900
committerMichael Paquier <michael@paquier.xyz>2018-07-01 15:10:10 +0900
commit65782346a4812482bfb09f9e1117c908146e67b5 (patch)
tree633e40cbd1669b1b6458a07cb9209aa7fb1bd591 /contrib/postgres_fdw
parentfeced1387f07c3fa6c47d36a68962750e6065486 (diff)
downloadpostgresql-65782346a4812482bfb09f9e1117c908146e67b5.tar.gz
postgresql-65782346a4812482bfb09f9e1117c908146e67b5.zip
Use optimized bitmap set function for membership test in postgres_fdw
Deparsing logic in postgres_fdw for locking, FROM clause (alias) and Var (column qualification) does not need to know the exact number of members involved, which can be calculated with bms_num_members(), but just if there is more than one relation involved, which is what bms_membership() does. The latter is more performant than the former so this shaves a couple of cycles. Author: Daniel Gustafsson Reviewed-by: Ashutosh Bapat, Nathan Bossart Discussion: https://postgr.es/m/C73594E0-2B67-4E10-BB35-CDE0E41CC384@yesql.se
Diffstat (limited to 'contrib/postgres_fdw')
-rw-r--r--contrib/postgres_fdw/deparse.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c
index d272719ff48..8068e28184c 100644
--- a/contrib/postgres_fdw/deparse.c
+++ b/contrib/postgres_fdw/deparse.c
@@ -1076,7 +1076,7 @@ deparseFromExpr(List *quals, deparse_expr_cxt *context)
/* Construct FROM clause */
appendStringInfoString(buf, " FROM ");
deparseFromExprForRel(buf, context->root, scanrel,
- (bms_num_members(scanrel->relids) > 1),
+ (bms_membership(scanrel->relids) == BMS_MULTIPLE),
(Index) 0, NULL, context->params_list);
/* Construct WHERE clause */
@@ -1262,7 +1262,7 @@ deparseLockingClause(deparse_expr_cxt *context)
}
/* Add the relation alias if we are here for a join relation */
- if (bms_num_members(rel->relids) > 1 &&
+ if (bms_membership(rel->relids) == BMS_MULTIPLE &&
rc->strength != LCS_NONE)
appendStringInfo(buf, " OF %s%d", REL_ALIAS_PREFIX, relid);
}
@@ -2328,7 +2328,7 @@ deparseVar(Var *node, deparse_expr_cxt *context)
int colno;
/* Qualify columns when multiple relations are involved. */
- bool qualify_col = (bms_num_members(relids) > 1);
+ bool qualify_col = (bms_membership(relids) == BMS_MULTIPLE);
/*
* If the Var belongs to the foreign relation that is deparsed as a