0004-Supply-specialized-sort-search-routines-for-ItemPtrD.patch
text/x-patch
Filename: 0004-Supply-specialized-sort-search-routines-for-ItemPtrD.patch
Type: text/x-patch
Part: 3
Message:
Re: A qsort template
Patch
Format: format-patch
Series: patch 0004
Subject: Supply specialized sort/search routines for ItemPtrData.
| File | + | − |
|---|---|---|
| src/backend/utils/sort/Makefile | 1 | 0 |
| src/backend/utils/sort/sortitemptr.c | 12 | 0 |
| src/include/utils/sortitemptr.h | 19 | 0 |
From 7e6091ee0163e0c49abcf99952c493c05baaaab7 Mon Sep 17 00:00:00 2001 From: Thomas Munro <thomas.munro@gmail.com> Date: Sun, 14 Mar 2021 15:11:22 +1300 Subject: [PATCH 4/9] Supply specialized sort/search routines for ItemPtrData. --- src/backend/utils/sort/Makefile | 1 + src/backend/utils/sort/sortitemptr.c | 12 ++++++++++++ src/include/utils/sortitemptr.h | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/backend/utils/sort/sortitemptr.c create mode 100644 src/include/utils/sortitemptr.h diff --git a/src/backend/utils/sort/Makefile b/src/backend/utils/sort/Makefile index b4dce08614..32acbb7f20 100644 --- a/src/backend/utils/sort/Makefile +++ b/src/backend/utils/sort/Makefile @@ -17,6 +17,7 @@ override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) OBJS = \ logtape.o \ sharedtuplestore.o \ + sortitemptr.o \ sortscalar.o \ sortsupport.o \ tuplesort.o \ diff --git a/src/backend/utils/sort/sortitemptr.c b/src/backend/utils/sort/sortitemptr.c new file mode 100644 index 0000000000..a0db6d6d0d --- /dev/null +++ b/src/backend/utils/sort/sortitemptr.c @@ -0,0 +1,12 @@ +#include "postgres.h" + +#include "catalog/index.h" +#include "utils/sortitemptr.h" + +#define ST_SORT qsort_itemptr +#define ST_SCOPE +#define ST_ELEMENT_TYPE ItemPointerData +#define ST_COMPARE(a, b) (itemptr_encode(a) - itemptr_encode(b)) +#define ST_COMPARE_TYPE int64 +#define ST_DEFINE +#include "lib/sort_template.h" diff --git a/src/include/utils/sortitemptr.h b/src/include/utils/sortitemptr.h new file mode 100644 index 0000000000..eb3df25eec --- /dev/null +++ b/src/include/utils/sortitemptr.h @@ -0,0 +1,19 @@ +#ifndef SORTITEMPTR_H +#define SORTITEMPTR_H + +#include "catalog/index.h" + +/* Declare sort function, from .c file. */ +extern void qsort_itemptr(ItemPointerData *tids, size_t n); + +/* Search and unique functions inline in header. */ +#define ST_SEARCH bsearch_itemptr +#define ST_UNIQUE unique_itemptr +#define ST_ELEMENT_TYPE ItemPointerData +#define ST_COMPARE(a, b) (itemptr_encode(a) - itemptr_encode(b)) +#define ST_COMPARE_TYPE int64 +#define ST_SCOPE static inline +#define ST_DEFINE +#include "lib/sort_template.h" + +#endif -- 2.30.1