1996-08-27 23:50:29 +02:00
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
*
|
1999-02-14 00:22:53 +01:00
|
|
|
* valid.h
|
1997-09-07 07:04:48 +02:00
|
|
|
* POSTGRES tuple qualification validity definitions.
|
1996-08-27 23:50:29 +02:00
|
|
|
*
|
|
|
|
*
|
2010-01-02 17:58:17 +01:00
|
|
|
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
|
2000-01-26 06:58:53 +01:00
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
1996-08-27 23:50:29 +02:00
|
|
|
*
|
2010-01-02 17:58:17 +01:00
|
|
|
* $PostgreSQL: pgsql/src/include/access/valid.h,v 1.42 2010/01/02 16:58:00 momjian Exp $
|
1996-08-27 23:50:29 +02:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
1997-09-07 07:04:48 +02:00
|
|
|
#ifndef VALID_H
|
1996-08-27 23:50:29 +02:00
|
|
|
#define VALID_H
|
|
|
|
|
2004-10-16 00:40:29 +02:00
|
|
|
/*
|
1997-09-18 16:21:02 +02:00
|
|
|
* HeapKeyTest
|
|
|
|
*
|
2004-10-16 00:40:29 +02:00
|
|
|
* Test a heap tuple to see if it satisfies a scan key.
|
1997-09-18 16:21:02 +02:00
|
|
|
*/
|
|
|
|
#define HeapKeyTest(tuple, \
|
|
|
|
tupdesc, \
|
|
|
|
nkeys, \
|
|
|
|
keys, \
|
|
|
|
result) \
|
|
|
|
do \
|
|
|
|
{ \
|
2004-10-16 00:40:29 +02:00
|
|
|
/* Use underscores to protect the variables passed in as parameters */ \
|
1997-09-18 16:21:02 +02:00
|
|
|
int __cur_nkeys = (nkeys); \
|
|
|
|
ScanKey __cur_keys = (keys); \
|
|
|
|
\
|
|
|
|
(result) = true; /* may change */ \
|
|
|
|
for (; __cur_nkeys--; __cur_keys++) \
|
|
|
|
{ \
|
2003-11-09 22:30:38 +01:00
|
|
|
Datum __atp; \
|
|
|
|
bool __isnull; \
|
|
|
|
Datum __test; \
|
2004-10-16 00:40:29 +02:00
|
|
|
\
|
|
|
|
if (__cur_keys->sk_flags & SK_ISNULL) \
|
|
|
|
{ \
|
|
|
|
(result) = false; \
|
|
|
|
break; \
|
|
|
|
} \
|
2003-11-09 22:30:38 +01:00
|
|
|
\
|
1998-01-31 05:39:26 +01:00
|
|
|
__atp = heap_getattr((tuple), \
|
2000-05-30 06:25:00 +02:00
|
|
|
__cur_keys->sk_attno, \
|
|
|
|
(tupdesc), \
|
|
|
|
&__isnull); \
|
1997-09-18 16:21:02 +02:00
|
|
|
\
|
|
|
|
if (__isnull) \
|
|
|
|
{ \
|
|
|
|
(result) = false; \
|
|
|
|
break; \
|
|
|
|
} \
|
|
|
|
\
|
2003-11-09 22:30:38 +01:00
|
|
|
__test = FunctionCall2(&__cur_keys->sk_func, \
|
|
|
|
__atp, __cur_keys->sk_argument); \
|
1997-09-18 16:21:02 +02:00
|
|
|
\
|
2003-11-09 22:30:38 +01:00
|
|
|
if (!DatumGetBool(__test)) \
|
1997-09-18 16:21:02 +02:00
|
|
|
{ \
|
|
|
|
(result) = false; \
|
|
|
|
break; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
} while (0)
|
1996-08-27 23:50:29 +02:00
|
|
|
|
2001-11-05 18:46:40 +01:00
|
|
|
#endif /* VALID_H */
|