PostgreSQL Source Code git master
Loading...
Searching...
No Matches
btree_bytea.c File Reference
#include "postgres.h"
#include "btree_gist.h"
#include "btree_utils_var.h"
#include "utils/fmgrprotos.h"
#include "utils/sortsupport.h"
Include dependency graph for btree_bytea.c:

Go to the source code of this file.

Functions

 PG_FUNCTION_INFO_V1 (gbt_bytea_compress)
 
 PG_FUNCTION_INFO_V1 (gbt_bytea_union)
 
 PG_FUNCTION_INFO_V1 (gbt_bytea_picksplit)
 
 PG_FUNCTION_INFO_V1 (gbt_bytea_consistent)
 
 PG_FUNCTION_INFO_V1 (gbt_bytea_penalty)
 
 PG_FUNCTION_INFO_V1 (gbt_bytea_same)
 
 PG_FUNCTION_INFO_V1 (gbt_bytea_sortsupport)
 
static bool gbt_byteagt (const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
 
static bool gbt_byteage (const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
 
static bool gbt_byteaeq (const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
 
static bool gbt_byteale (const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
 
static bool gbt_bytealt (const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
 
static int32 gbt_byteacmp (const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
 
Datum gbt_bytea_compress (PG_FUNCTION_ARGS)
 
Datum gbt_bytea_consistent (PG_FUNCTION_ARGS)
 
Datum gbt_bytea_union (PG_FUNCTION_ARGS)
 
Datum gbt_bytea_picksplit (PG_FUNCTION_ARGS)
 
Datum gbt_bytea_same (PG_FUNCTION_ARGS)
 
Datum gbt_bytea_penalty (PG_FUNCTION_ARGS)
 
static int gbt_bytea_ssup_cmp (Datum x, Datum y, SortSupport ssup)
 
Datum gbt_bytea_sortsupport (PG_FUNCTION_ARGS)
 

Variables

static const gbtree_vinfo tinfo
 

Function Documentation

◆ gbt_bytea_compress()

Datum gbt_bytea_compress ( PG_FUNCTION_ARGS  )

Definition at line 91 of file btree_bytea.c.

92{
94
96}
static const gbtree_vinfo tinfo
Definition btree_bytea.c:71
GISTENTRY * gbt_var_compress(GISTENTRY *entry, const gbtree_vinfo *tinfo)
#define PG_GETARG_POINTER(n)
Definition fmgr.h:277
#define PG_RETURN_POINTER(x)
Definition fmgr.h:363

References gbt_var_compress(), PG_GETARG_POINTER, PG_RETURN_POINTER, and tinfo.

◆ gbt_bytea_consistent()

Datum gbt_bytea_consistent ( PG_FUNCTION_ARGS  )

Definition at line 99 of file btree_bytea.c.

100{
101 GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
102 void *query = DatumGetByteaP(PG_GETARG_DATUM(1));
104#ifdef NOT_USED
105 Oid subtype = PG_GETARG_OID(3);
106#endif
107 bool *recheck = (bool *) PG_GETARG_POINTER(4);
108 bool retval;
111
112 /* All cases served by this function are exact */
113 *recheck = false;
114
115 retval = gbt_var_consistent(&r, query, strategy, PG_GET_COLLATION(),
116 GIST_LEAF(entry), &tinfo, fcinfo->flinfo);
117 PG_RETURN_BOOL(retval);
118}
bool gbt_var_consistent(GBT_VARKEY_R *key, const void *query, StrategyNumber strategy, Oid collation, bool is_leaf, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
GBT_VARKEY_R gbt_var_key_readable(const GBT_VARKEY *k)
#define PG_GETARG_OID(n)
Definition fmgr.h:275
#define PG_GETARG_DATUM(n)
Definition fmgr.h:268
#define PG_GETARG_UINT16(n)
Definition fmgr.h:272
#define PG_GET_COLLATION()
Definition fmgr.h:198
#define PG_RETURN_BOOL(x)
Definition fmgr.h:360
#define DatumGetByteaP(X)
Definition fmgr.h:332
#define GIST_LEAF(entry)
Definition gist.h:171
static Pointer DatumGetPointer(Datum X)
Definition postgres.h:342
unsigned int Oid
uint16 StrategyNumber
Definition stratnum.h:22
Datum key
Definition gist.h:161
Definition c.h:706

References DatumGetByteaP, DatumGetPointer(), gbt_var_consistent(), gbt_var_key_readable(), GIST_LEAF, GISTENTRY::key, PG_GET_COLLATION, PG_GETARG_DATUM, PG_GETARG_OID, PG_GETARG_POINTER, PG_GETARG_UINT16, PG_RETURN_BOOL, and tinfo.

◆ gbt_bytea_penalty()

Datum gbt_bytea_penalty ( PG_FUNCTION_ARGS  )

Definition at line 153 of file btree_bytea.c.

154{
157 float *result = (float *) PG_GETARG_POINTER(2);
158
160 &tinfo, fcinfo->flinfo));
161}
float * gbt_var_penalty(float *res, const GISTENTRY *o, const GISTENTRY *n, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
static int fb(int x)

References fb(), gbt_var_penalty(), PG_GET_COLLATION, PG_GETARG_POINTER, PG_RETURN_POINTER, and tinfo.

◆ gbt_bytea_picksplit()

Datum gbt_bytea_picksplit ( PG_FUNCTION_ARGS  )

Definition at line 131 of file btree_bytea.c.

132{
135
137 &tinfo, fcinfo->flinfo);
139}
GIST_SPLITVEC * gbt_var_picksplit(const GistEntryVector *entryvec, GIST_SPLITVEC *v, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)

References fb(), gbt_var_picksplit(), PG_GET_COLLATION, PG_GETARG_POINTER, PG_RETURN_POINTER, and tinfo.

◆ gbt_bytea_same()

Datum gbt_bytea_same ( PG_FUNCTION_ARGS  )

Definition at line 142 of file btree_bytea.c.

143{
144 Datum d1 = PG_GETARG_DATUM(0);
145 Datum d2 = PG_GETARG_DATUM(1);
146 bool *result = (bool *) PG_GETARG_POINTER(2);
147
148 *result = gbt_var_same(d1, d2, PG_GET_COLLATION(), &tinfo, fcinfo->flinfo);
149 PG_RETURN_POINTER(result);
150}
bool gbt_var_same(Datum d1, Datum d2, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
uint64_t Datum
Definition postgres.h:70

References gbt_var_same(), PG_GET_COLLATION, PG_GETARG_DATUM, PG_GETARG_POINTER, PG_RETURN_POINTER, and tinfo.

◆ gbt_bytea_sortsupport()

Datum gbt_bytea_sortsupport ( PG_FUNCTION_ARGS  )

Definition at line 185 of file btree_bytea.c.

186{
188
190 ssup->ssup_extra = NULL;
191
193}
static int gbt_bytea_ssup_cmp(Datum x, Datum y, SortSupport ssup)
#define PG_RETURN_VOID()
Definition fmgr.h:350
struct SortSupportData * SortSupport
Definition sortsupport.h:58
int(* comparator)(Datum x, Datum y, SortSupport ssup)

References SortSupportData::comparator, fb(), gbt_bytea_ssup_cmp(), PG_GETARG_POINTER, PG_RETURN_VOID, and SortSupportData::ssup_extra.

◆ gbt_bytea_ssup_cmp()

static int gbt_bytea_ssup_cmp ( Datum  x,
Datum  y,
SortSupport  ssup 
)
static

Definition at line 164 of file btree_bytea.c.

165{
168
171 Datum result;
172
173 /* for leaf items we expect lower == upper, so only compare lower */
175 PointerGetDatum(xkey.lower),
176 PointerGetDatum(ykey.lower));
177
180
181 return DatumGetInt32(result);
182}
#define GBT_FREE_IF_COPY(ptr1, ptr2)
Datum byteacmp(PG_FUNCTION_ARGS)
Definition bytea.c:959
#define DirectFunctionCall2(func, arg1, arg2)
Definition fmgr.h:686
#define PG_DETOAST_DATUM(datum)
Definition fmgr.h:240
int y
Definition isn.c:76
int x
Definition isn.c:75
static Datum PointerGetDatum(const void *X)
Definition postgres.h:352
static int32 DatumGetInt32(Datum X)
Definition postgres.h:212

References byteacmp(), DatumGetInt32(), DirectFunctionCall2, fb(), GBT_FREE_IF_COPY, gbt_var_key_readable(), PG_DETOAST_DATUM, PointerGetDatum(), x, and y.

Referenced by gbt_bytea_sortsupport().

◆ gbt_bytea_union()

Datum gbt_bytea_union ( PG_FUNCTION_ARGS  )

Definition at line 121 of file btree_bytea.c.

122{
124 int32 *size = (int *) PG_GETARG_POINTER(1);
125
127 &tinfo, fcinfo->flinfo));
128}
GBT_VARKEY * gbt_var_union(const GistEntryVector *entryvec, int32 *size, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
int32_t int32
Definition c.h:542

References fb(), gbt_var_union(), PG_GET_COLLATION, PG_GETARG_POINTER, PG_RETURN_POINTER, and tinfo.

◆ gbt_byteacmp()

static int32 gbt_byteacmp ( const void a,
const void b,
Oid  collation,
FmgrInfo flinfo 
)
static

Definition at line 64 of file btree_bytea.c.

65{
69}
int b
Definition isn.c:74
int a
Definition isn.c:73

References a, b, byteacmp(), DatumGetInt32(), DirectFunctionCall2, and PointerGetDatum().

◆ gbt_byteaeq()

static bool gbt_byteaeq ( const void a,
const void b,
Oid  collation,
FmgrInfo flinfo 
)
static

Definition at line 40 of file btree_bytea.c.

41{
45}
Datum byteaeq(PG_FUNCTION_ARGS)
Definition bytea.c:815
static bool DatumGetBool(Datum X)
Definition postgres.h:100

References a, b, byteaeq(), DatumGetBool(), DirectFunctionCall2, and PointerGetDatum().

◆ gbt_byteage()

static bool gbt_byteage ( const void a,
const void b,
Oid  collation,
FmgrInfo flinfo 
)
static

Definition at line 32 of file btree_bytea.c.

33{
37}
Datum byteage(PG_FUNCTION_ARGS)
Definition bytea.c:939

References a, b, byteage(), DatumGetBool(), DirectFunctionCall2, and PointerGetDatum().

◆ gbt_byteagt()

static bool gbt_byteagt ( const void a,
const void b,
Oid  collation,
FmgrInfo flinfo 
)
static

Definition at line 24 of file btree_bytea.c.

25{
29}
Datum byteagt(PG_FUNCTION_ARGS)
Definition bytea.c:919

References a, b, byteagt(), DatumGetBool(), DirectFunctionCall2, and PointerGetDatum().

◆ gbt_byteale()

static bool gbt_byteale ( const void a,
const void b,
Oid  collation,
FmgrInfo flinfo 
)
static

Definition at line 48 of file btree_bytea.c.

49{
53}
Datum byteale(PG_FUNCTION_ARGS)
Definition bytea.c:899

References a, b, byteale(), DatumGetBool(), DirectFunctionCall2, and PointerGetDatum().

◆ gbt_bytealt()

static bool gbt_bytealt ( const void a,
const void b,
Oid  collation,
FmgrInfo flinfo 
)
static

Definition at line 56 of file btree_bytea.c.

57{
61}
Datum bytealt(PG_FUNCTION_ARGS)
Definition bytea.c:879

References a, b, bytealt(), DatumGetBool(), DirectFunctionCall2, and PointerGetDatum().

◆ PG_FUNCTION_INFO_V1() [1/7]

PG_FUNCTION_INFO_V1 ( gbt_bytea_compress  )

◆ PG_FUNCTION_INFO_V1() [2/7]

PG_FUNCTION_INFO_V1 ( gbt_bytea_consistent  )

◆ PG_FUNCTION_INFO_V1() [3/7]

PG_FUNCTION_INFO_V1 ( gbt_bytea_penalty  )

◆ PG_FUNCTION_INFO_V1() [4/7]

PG_FUNCTION_INFO_V1 ( gbt_bytea_picksplit  )

◆ PG_FUNCTION_INFO_V1() [5/7]

PG_FUNCTION_INFO_V1 ( gbt_bytea_same  )

◆ PG_FUNCTION_INFO_V1() [6/7]

PG_FUNCTION_INFO_V1 ( gbt_bytea_sortsupport  )

◆ PG_FUNCTION_INFO_V1() [7/7]

PG_FUNCTION_INFO_V1 ( gbt_bytea_union  )

Variable Documentation

◆ tinfo

const gbtree_vinfo tinfo
static
Initial value:
=
{
0,
true,
}
static bool gbt_byteagt(const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
Definition btree_bytea.c:24
static bool gbt_byteage(const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
Definition btree_bytea.c:32
static bool gbt_byteaeq(const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
Definition btree_bytea.c:40
static int32 gbt_byteacmp(const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
Definition btree_bytea.c:64
static bool gbt_byteale(const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
Definition btree_bytea.c:48
static bool gbt_bytealt(const void *a, const void *b, Oid collation, FmgrInfo *flinfo)
Definition btree_bytea.c:56
@ gbt_t_bytea
Definition btree_gist.h:33

Definition at line 71 of file btree_bytea.c.

72{
74 0,
75 true,
82 NULL
83};

Referenced by gbt_bytea_compress(), gbt_bytea_consistent(), gbt_bytea_penalty(), gbt_bytea_picksplit(), gbt_bytea_same(), and gbt_bytea_union().