diff options
author | Bruce Momjian <bruce@momjian.us> | 1997-09-18 14:21:02 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1997-09-18 14:21:02 +0000 |
commit | 8cb415449202d7804c6a557352a91d0401ab1c19 (patch) | |
tree | 44acc47d6a50fa83667fdb4e9ad4e1bb81d61a0a /src/backend/access/common/heapvalid.c | |
parent | bbe2c10c140803881125c516bcc172363eb698d8 (diff) | |
download | postgresql-8cb415449202d7804c6a557352a91d0401ab1c19.tar.gz |
Inline frequently called functions.
Diffstat (limited to 'src/backend/access/common/heapvalid.c')
-rw-r--r-- | src/backend/access/common/heapvalid.c | 130 |
1 files changed, 1 insertions, 129 deletions
diff --git a/src/backend/access/common/heapvalid.c b/src/backend/access/common/heapvalid.c index da2e93a30b..22d62afcd3 100644 --- a/src/backend/access/common/heapvalid.c +++ b/src/backend/access/common/heapvalid.c @@ -7,143 +7,15 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/common/Attic/heapvalid.c,v 1.19 1997/09/12 04:07:09 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/common/Attic/heapvalid.c,v 1.20 1997/09/18 14:19:27 momjian Exp $ * *------------------------------------------------------------------------- */ #include <postgres.h> -#include <fmgr.h> #include <access/heapam.h> -#include <access/valid.h> #include <access/xact.h> -#include <storage/bufpage.h> -#include <utils/rel.h> -#include <utils/tqual.h> -#include <storage/bufmgr.h> -#include <utils/builtins.h> - -/* ---------------- - * heap_keytest - * - * Test a heap tuple with respect to a scan key. - * ---------------- - */ -bool -heap_keytest(HeapTuple t, - TupleDesc tupdesc, - int nkeys, - ScanKey keys) -{ - bool isnull; - Datum atp; - int test; - - for (; nkeys--; keys++) - { - atp = heap_getattr(t, InvalidBuffer, - keys->sk_attno, - tupdesc, - &isnull); - - if (isnull) - /* XXX eventually should check if SK_ISNULL */ - return false; - - if (keys->sk_flags & SK_ISNULL) - { - return (false); - } - - if (keys->sk_func == (func_ptr) oideq) /* optimization */ - test = (keys->sk_argument == atp); - else if (keys->sk_flags & SK_COMMUTE) - test = (long) FMGR_PTR2(keys->sk_func, keys->sk_procedure, - keys->sk_argument, atp); - else - test = (long) FMGR_PTR2(keys->sk_func, keys->sk_procedure, - atp, keys->sk_argument); - - if (!test == !(keys->sk_flags & SK_NEGATE)) - return false; - } - - return true; -} - -/* ---------------- - * heap_tuple_satisfies - * - * Returns a valid HeapTuple if it satisfies the timequal and keytest. - * Returns NULL otherwise. Used to be heap_satisifies (sic) which - * returned a boolean. It now returns a tuple so that we can avoid doing two - * PageGetItem's per tuple. - * - * Complete check of validity including LP_CTUP and keytest. - * This should perhaps be combined with valid somehow in the - * future. (Also, additional rule tests/time range tests.) - * - * on 8/21/92 mao says: i rearranged the tests here to do keytest before - * SatisfiesTimeQual. profiling indicated that even for vacuumed relations, - * time qual checking was more expensive than key testing. time qual is - * least likely to fail, too. we should really add the time qual test to - * the restriction and optimize it in the normal way. this has interactions - * with joey's expensive function work. - * ---------------- - */ -HeapTuple -heap_tuple_satisfies(ItemId itemId, - Relation relation, - Buffer buffer, - PageHeader disk_page, - TimeQual qual, - int nKeys, - ScanKey key) -{ - HeapTuple tuple, - result; - bool res; - TransactionId old_tmin, - old_tmax; - - if (!ItemIdIsUsed(itemId)) - return NULL; - - tuple = (HeapTuple) PageGetItem((Page) disk_page, itemId); - - if (key != NULL) - res = heap_keytest(tuple, RelationGetTupleDescriptor(relation), - nKeys, key); - else - res = TRUE; - - result = (HeapTuple) NULL; - if (res) - { - if (relation->rd_rel->relkind == RELKIND_UNCATALOGED) - { - result = tuple; - } - else - { - old_tmin = tuple->t_tmin; - old_tmax = tuple->t_tmax; - res = HeapTupleSatisfiesTimeQual(tuple, qual); - if (tuple->t_tmin != old_tmin || - tuple->t_tmax != old_tmax) - { - SetBufferCommitInfoNeedsSave(buffer); - } - if (res) - { - result = tuple; - } - } - } - - return result; -} /* * TupleUpdatedByCurXactAndCmd() -- Returns true if this tuple has |