PostgreSQL Source Code
git master
valid.h
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* valid.h
4
* POSTGRES tuple qualification validity definitions.
5
*
6
*
7
* Portions Copyright (c) 1996-2022, 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
/*
18
* HeapKeyTest
19
*
20
* Test a heap tuple to see if it satisfies a scan key.
21
*/
22
#define HeapKeyTest(tuple, \
23
tupdesc, \
24
nkeys, \
25
keys, \
26
result) \
27
do \
28
{ \
29
/* Use underscores to protect the variables passed in as parameters */
\
30
int __cur_nkeys = (nkeys); \
31
ScanKey __cur_keys = (keys); \
32
\
33
(result) = true;
/* may change */
\
34
for (; __cur_nkeys--; __cur_keys++) \
35
{ \
36
Datum __atp; \
37
bool __isnull; \
38
Datum __test; \
39
\
40
if (__cur_keys->sk_flags & SK_ISNULL) \
41
{ \
42
(result) = false; \
43
break; \
44
} \
45
\
46
__atp = heap_getattr((tuple), \
47
__cur_keys->sk_attno, \
48
(tupdesc), \
49
&__isnull); \
50
\
51
if (__isnull) \
52
{ \
53
(result) = false; \
54
break; \
55
} \
56
\
57
__test = FunctionCall2Coll(&__cur_keys->sk_func, \
58
__cur_keys->sk_collation, \
59
__atp, __cur_keys->sk_argument); \
60
\
61
if (!DatumGetBool(__test)) \
62
{ \
63
(result) = false; \
64
break; \
65
} \
66
} \
67
} while (0)
68
69
#endif
/* VALID_H */
src
include
access
valid.h
Generated on Sun May 22 2022 00:13:24 for PostgreSQL Source Code by
1.9.1