codekingpro/portable-devtools
116k
1/*-------------------------------------------------------------------------2 *3 * valid.h4 * POSTGRES tuple qualification validity definitions.5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 * Portions Copyright (c) 1994, Regents of the University of California9 *10 * src/include/access/valid.h11 *12 *-------------------------------------------------------------------------13 */14#ifndef VALID_H15#define VALID_H16 17#include "access/htup.h"18#include "access/htup_details.h"19#include "access/skey.h"20#include "access/tupdesc.h"21 22/*23 * HeapKeyTest24 *25 * Test a heap tuple to see if it satisfies a scan key.26 */27static inline bool28HeapKeyTest(HeapTuple tuple, TupleDesc tupdesc, int nkeys, ScanKey keys)29{30 int cur_nkeys = nkeys;31 ScanKey cur_key = keys;32 33 for (; cur_nkeys--; cur_key++)34 {35 Datum atp;36 bool isnull;37 Datum test;38 39 if (cur_key->sk_flags & SK_ISNULL)40 return false;41 42 atp = heap_getattr(tuple, cur_key->sk_attno, tupdesc, &isnull);43 44 if (isnull)45 return false;46 47 test = FunctionCall2Coll(&cur_key->sk_func,48 cur_key->sk_collation,49 atp, cur_key->sk_argument);50 51 if (!DatumGetBool(test))52 return false;53 }54 55 return true;56}57 58#endif /* VALID_H */59 