PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
gin_tuple.h File Reference
#include "access/ginblock.h"
#include "storage/itemptr.h"
#include "utils/sortsupport.h"
Include dependency graph for gin_tuple.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  GinTuple
 

Typedefs

typedef struct GinTuple GinTuple
 

Functions

static ItemPointer GinTupleGetFirst (GinTuple *tup)
 
int _gin_compare_tuples (GinTuple *a, GinTuple *b, SortSupport ssup)
 

Typedef Documentation

◆ GinTuple

typedef struct GinTuple GinTuple

Function Documentation

◆ _gin_compare_tuples()

int _gin_compare_tuples ( GinTuple a,
GinTuple b,
SortSupport  ssup 
)

Definition at line 2390 of file gininsert.c.

2391{
2392 int r;
2393 Datum keya,
2394 keyb;
2395
2396 if (a->attrnum < b->attrnum)
2397 return -1;
2398
2399 if (a->attrnum > b->attrnum)
2400 return 1;
2401
2402 if (a->category < b->category)
2403 return -1;
2404
2405 if (a->category > b->category)
2406 return 1;
2407
2408 if (a->category == GIN_CAT_NORM_KEY)
2409 {
2410 keya = _gin_parse_tuple_key(a);
2411 keyb = _gin_parse_tuple_key(b);
2412
2413 r = ApplySortComparator(keya, false,
2414 keyb, false,
2415 &ssup[a->attrnum - 1]);
2416
2417 /* if the key is the same, consider the first TID in the array */
2418 return (r != 0) ? r : ItemPointerCompare(GinTupleGetFirst(a),
2420 }
2421
2424}
static ItemPointer GinTupleGetFirst(GinTuple *tup)
Definition: gin_tuple.h:33
#define GIN_CAT_NORM_KEY
Definition: ginblock.h:208
static Datum _gin_parse_tuple_key(GinTuple *a)
Definition: gininsert.c:2337
int b
Definition: isn.c:71
int a
Definition: isn.c:70
int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2)
Definition: itemptr.c:51
uintptr_t Datum
Definition: postgres.h:69
static int ApplySortComparator(Datum datum1, bool isNull1, Datum datum2, bool isNull2, SortSupport ssup)
Definition: sortsupport.h:200

References _gin_parse_tuple_key(), a, ApplySortComparator(), b, GIN_CAT_NORM_KEY, GinTupleGetFirst(), and ItemPointerCompare().

Referenced by comparetup_index_gin().

◆ GinTupleGetFirst()

static ItemPointer GinTupleGetFirst ( GinTuple tup)
inlinestatic

Definition at line 33 of file gin_tuple.h.

34{
36
37 list = (GinPostingList *) SHORTALIGN(tup->data + tup->keylen);
38
39 return &list->first;
40}
#define SHORTALIGN(LEN)
Definition: c.h:778
char data[FLEXIBLE_ARRAY_MEMBER]
Definition: gin_tuple.h:29
uint16 keylen
Definition: gin_tuple.h:24

References GinTuple::data, GinTuple::keylen, sort-test::list, and SHORTALIGN.

Referenced by _gin_compare_tuples(), and GinBufferStoreTuple().