PostgreSQL Source Code git master
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 2433 of file gininsert.c.

2434{
2435 int r;
2436 Datum keya,
2437 keyb;
2438
2439 if (a->attrnum < b->attrnum)
2440 return -1;
2441
2442 if (a->attrnum > b->attrnum)
2443 return 1;
2444
2445 if (a->category < b->category)
2446 return -1;
2447
2448 if (a->category > b->category)
2449 return 1;
2450
2451 if (a->category == GIN_CAT_NORM_KEY)
2452 {
2453 keya = _gin_parse_tuple_key(a);
2454 keyb = _gin_parse_tuple_key(b);
2455
2456 r = ApplySortComparator(keya, false,
2457 keyb, false,
2458 &ssup[a->attrnum - 1]);
2459
2460 /* if the key is the same, consider the first TID in the array */
2461 return (r != 0) ? r : ItemPointerCompare(GinTupleGetFirst(a),
2463 }
2464
2467}
static ItemPointer GinTupleGetFirst(GinTuple *tup)
Definition: gin_tuple.h:35
#define GIN_CAT_NORM_KEY
Definition: ginblock.h:208
static Datum _gin_parse_tuple_key(GinTuple *a)
Definition: gininsert.c:2380
int b
Definition: isn.c:74
int a
Definition: isn.c:73
int32 ItemPointerCompare(const ItemPointerData *arg1, const ItemPointerData *arg2)
Definition: itemptr.c:51
uint64_t Datum
Definition: postgres.h:70
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 35 of file gin_tuple.h.

36{
38
39 list = (GinPostingList *) SHORTALIGN(tup->data + tup->keylen);
40
41 return &list->first;
42}
#define SHORTALIGN(LEN)
Definition: c.h:811
char data[FLEXIBLE_ARRAY_MEMBER]
Definition: gin_tuple.h:31
uint16 keylen
Definition: gin_tuple.h:26

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

Referenced by _gin_compare_tuples(), and GinBufferShouldTrim().