aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeTidscan.c
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2019-11-07 16:51:04 +1300
committerThomas Munro <tmunro@postgresql.org>2019-11-07 17:00:48 +1300
commit7815e7efdb4ce9575b5d8460beb0dd2569d7ca3a (patch)
treedc3d1795259ab8c2dafc371cbd89725b43abc2da /src/backend/executor/nodeTidscan.c
parent3feb6ace7cfe8edbf6db702de06dc9295f307a8e (diff)
downloadpostgresql-7815e7efdb4ce9575b5d8460beb0dd2569d7ca3a.tar.gz
postgresql-7815e7efdb4ce9575b5d8460beb0dd2569d7ca3a.zip
Add reusable routine for making arrays unique.
Introduce qunique() and qunique_arg(), which can be used after qsort() and qsort_arg() respectively to remove duplicate values. Use it where appropriate. Author: Thomas Munro Reviewed-by: Tom Lane (in an earlier version) Discussion: https://postgr.es/m/CAEepm%3D2vmFTNpAmwbGGD2WaryM6T3hSDVKQPfUwjdD_5XY6vAA%40mail.gmail.com
Diffstat (limited to 'src/backend/executor/nodeTidscan.c')
-rw-r--r--src/backend/executor/nodeTidscan.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/backend/executor/nodeTidscan.c b/src/backend/executor/nodeTidscan.c
index 8cf22d5bf00..a59480f9068 100644
--- a/src/backend/executor/nodeTidscan.c
+++ b/src/backend/executor/nodeTidscan.c
@@ -27,6 +27,7 @@
#include "catalog/pg_type.h"
#include "executor/execdebug.h"
#include "executor/nodeTidscan.h"
+#include "lib/qunique.h"
#include "miscadmin.h"
#include "nodes/nodeFuncs.h"
#include "storage/bufmgr.h"
@@ -260,21 +261,13 @@ TidListEval(TidScanState *tidstate)
*/
if (numTids > 1)
{
- int lastTid;
- int i;
-
/* CurrentOfExpr could never appear OR'd with something else */
Assert(!tidstate->tss_isCurrentOf);
qsort((void *) tidList, numTids, sizeof(ItemPointerData),
itemptr_comparator);
- lastTid = 0;
- for (i = 1; i < numTids; i++)
- {
- if (!ItemPointerEquals(&tidList[lastTid], &tidList[i]))
- tidList[++lastTid] = tidList[i];
- }
- numTids = lastTid + 1;
+ numTids = qunique(tidList, numTids, sizeof(ItemPointerData),
+ itemptr_comparator);
}
tidstate->tss_TidList = tidList;