Age Owner Branch data TLA Line data Source code
1 : : /*-------------------------------------------------------------------------
2 : : *
3 : : * valid.h
4 : : * POSTGRES tuple qualification validity definitions.
5 : : *
6 : : *
7 : : * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8 : : * Portions Copyright (c) 1994, Regents of the University of California
9 : : *
10 : : * src/include/access/valid.h
11 : : *
12 : : *-------------------------------------------------------------------------
13 : : */
14 : : #ifndef VALID_H
15 : : #define VALID_H
16 : :
17 : : #include "access/htup.h"
18 : : #include "access/htup_details.h"
19 : : #include "access/skey.h"
20 : : #include "access/tupdesc.h"
21 : :
22 : : /*
23 : : * HeapKeyTest
24 : : *
25 : : * Test a heap tuple to see if it satisfies a scan key.
26 : : */
27 : : static inline bool
515 peter@eisentraut.org 28 :CBC 39293587 : HeapKeyTest(HeapTuple tuple, TupleDesc tupdesc, int nkeys, ScanKey keys)
29 : : {
30 : 39293587 : int cur_nkeys = nkeys;
31 : 39293587 : ScanKey cur_key = keys;
32 : :
33 [ + + ]: 39817743 : for (; cur_nkeys--; cur_key++)
34 : : {
35 : : Datum atp;
36 : : bool isnull;
37 : : Datum test;
38 : :
39 [ - + ]: 39516692 : if (cur_key->sk_flags & SK_ISNULL)
515 peter@eisentraut.org 40 :UBC 0 : return false;
41 : :
515 peter@eisentraut.org 42 :CBC 39516692 : atp = heap_getattr(tuple, cur_key->sk_attno, tupdesc, &isnull);
43 : :
44 [ - + ]: 39516692 : if (isnull)
515 peter@eisentraut.org 45 :UBC 0 : return false;
46 : :
515 peter@eisentraut.org 47 :CBC 39516692 : test = FunctionCall2Coll(&cur_key->sk_func,
48 : : cur_key->sk_collation,
49 : : atp, cur_key->sk_argument);
50 : :
51 [ + + ]: 39516692 : if (!DatumGetBool(test))
52 : 38992536 : return false;
53 : : }
54 : :
55 : 301051 : return true;
56 : : }
57 : :
58 : : #endif /* VALID_H */
|