PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
skipsupport.c File Reference
#include "postgres.h"
#include "access/nbtree.h"
#include "utils/lsyscache.h"
#include "utils/skipsupport.h"
Include dependency graph for skipsupport.c:

Go to the source code of this file.

Functions

SkipSupport PrepareSkipSupportFromOpclass (Oid opfamily, Oid opcintype, bool reverse)
 

Function Documentation

◆ PrepareSkipSupportFromOpclass()

SkipSupport PrepareSkipSupportFromOpclass ( Oid  opfamily,
Oid  opcintype,
bool  reverse 
)

Definition at line 30 of file skipsupport.c.

31{
32 Oid skipSupportFunction;
33 SkipSupport sksup;
34
35 /* Look for a skip support function */
36 skipSupportFunction = get_opfamily_proc(opfamily, opcintype, opcintype,
38 if (!OidIsValid(skipSupportFunction))
39 return NULL;
40
41 sksup = palloc(sizeof(SkipSupportData));
42 OidFunctionCall1(skipSupportFunction, PointerGetDatum(sksup));
43
44 if (reverse)
45 {
46 /*
47 * DESC/reverse case: swap low_elem with high_elem, and swap decrement
48 * with increment
49 */
50 Datum low_elem = sksup->low_elem;
51 SkipSupportIncDec decrement = sksup->decrement;
52
53 sksup->low_elem = sksup->high_elem;
54 sksup->decrement = sksup->increment;
55
56 sksup->high_elem = low_elem;
57 sksup->increment = decrement;
58 }
59
60 return sksup;
61}
#define OidIsValid(objectId)
Definition: c.h:746
#define OidFunctionCall1(functionId, arg1)
Definition: fmgr.h:720
Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, int16 procnum)
Definition: lsyscache.c:888
void * palloc(Size size)
Definition: mcxt.c:1939
#define BTSKIPSUPPORT_PROC
Definition: nbtree.h:722
static Datum PointerGetDatum(const void *X)
Definition: postgres.h:327
uintptr_t Datum
Definition: postgres.h:69
unsigned int Oid
Definition: postgres_ext.h:30
Datum(* SkipSupportIncDec)(Relation rel, Datum existing, bool *overflow)
Definition: skipsupport.h:51
SkipSupportIncDec decrement
Definition: skipsupport.h:91
SkipSupportIncDec increment
Definition: skipsupport.h:92

References BTSKIPSUPPORT_PROC, SkipSupportData::decrement, get_opfamily_proc(), SkipSupportData::high_elem, SkipSupportData::increment, SkipSupportData::low_elem, OidFunctionCall1, OidIsValid, palloc(), and PointerGetDatum().

Referenced by _bt_preprocess_array_keys().