Fix macros that were not properly surrounded by parens or braces.
This commit is contained in:
parent
3af536a15b
commit
27db9ecd0b
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/access/common/scankey.c,v 1.11 1998/01/15 19:41:46 pgsql Exp $
|
* $Header: /cvsroot/pgsql/src/backend/access/common/scankey.c,v 1.12 1998/06/15 18:39:22 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -22,8 +22,10 @@
|
|||||||
* True iff the scan key entry is legal.
|
* True iff the scan key entry is legal.
|
||||||
*/
|
*/
|
||||||
#define ScanKeyEntryIsLegal(entry) \
|
#define ScanKeyEntryIsLegal(entry) \
|
||||||
((bool) (AssertMacro(PointerIsValid(entry)) && \
|
( \
|
||||||
AttributeNumberIsValid(entry->sk_attno)))
|
AssertMacro(PointerIsValid(entry)), \
|
||||||
|
AttributeNumberIsValid((entry)->sk_attno) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ScanKeyEntrySetIllegal --
|
* ScanKeyEntrySetIllegal --
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.21 1998/02/26 12:07:10 vadim Exp $
|
* $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.22 1998/06/15 18:39:23 momjian Exp $
|
||||||
*
|
*
|
||||||
* INTERFACE ROUTINES
|
* INTERFACE ROUTINES
|
||||||
* index_open - open an index relation by relationId
|
* index_open - open an index relation by relationId
|
||||||
@ -92,25 +92,35 @@
|
|||||||
* ----------------------------------------------------------------
|
* ----------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
#define RELATION_CHECKS \
|
#define RELATION_CHECKS \
|
||||||
Assert(RelationIsValid(relation)); \
|
( \
|
||||||
Assert(PointerIsValid(relation->rd_am))
|
AssertMacro(RelationIsValid(relation)), \
|
||||||
|
AssertMacro(PointerIsValid(relation->rd_am)) \
|
||||||
|
)
|
||||||
|
|
||||||
#define SCAN_CHECKS \
|
#define SCAN_CHECKS \
|
||||||
Assert(IndexScanIsValid(scan)); \
|
( \
|
||||||
Assert(RelationIsValid(scan->relation)); \
|
AssertMacro(IndexScanIsValid(scan)), \
|
||||||
Assert(PointerIsValid(scan->relation->rd_am))
|
AssertMacro(RelationIsValid(scan->relation)), \
|
||||||
|
AssertMacro(PointerIsValid(scan->relation->rd_am)) \
|
||||||
|
)
|
||||||
|
|
||||||
#define GET_REL_PROCEDURE(x,y) \
|
#define GET_REL_PROCEDURE(x,y) \
|
||||||
procedure = relation->rd_am->y; \
|
( \
|
||||||
if (! RegProcedureIsValid(procedure)) \
|
procedure = relation->rd_am->y, \
|
||||||
|
(!RegProcedureIsValid(procedure)) ? \
|
||||||
elog(ERROR, "index_%s: invalid %s regproc", \
|
elog(ERROR, "index_%s: invalid %s regproc", \
|
||||||
CppAsString(x), CppAsString(y))
|
CppAsString(x), CppAsString(y)) \
|
||||||
|
: (void)NULL \
|
||||||
|
)
|
||||||
|
|
||||||
#define GET_SCAN_PROCEDURE(x,y) \
|
#define GET_SCAN_PROCEDURE(x,y) \
|
||||||
procedure = scan->relation->rd_am->y; \
|
( \
|
||||||
if (! RegProcedureIsValid(procedure)) \
|
procedure = scan->relation->rd_am->y, \
|
||||||
|
(!RegProcedureIsValid(procedure)) ? \
|
||||||
elog(ERROR, "index_%s: invalid %s regproc", \
|
elog(ERROR, "index_%s: invalid %s regproc", \
|
||||||
CppAsString(x), CppAsString(y))
|
CppAsString(x), CppAsString(y)) \
|
||||||
|
: (void)NULL \
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
/* ----------------------------------------------------------------
|
/* ----------------------------------------------------------------
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.14 1998/02/27 16:11:28 vadim Exp $
|
* $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.15 1998/06/15 18:39:24 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -88,12 +88,12 @@
|
|||||||
static bool MergeCompare(List *eqQual, List *compareQual, ExprContext *econtext);
|
static bool MergeCompare(List *eqQual, List *compareQual, ExprContext *econtext);
|
||||||
|
|
||||||
#define MarkInnerTuple(innerTupleSlot, mergestate) \
|
#define MarkInnerTuple(innerTupleSlot, mergestate) \
|
||||||
{ \
|
( \
|
||||||
ExecStoreTuple(heap_copytuple(innerTupleSlot->val), \
|
ExecStoreTuple(heap_copytuple((innerTupleSlot)->val), \
|
||||||
mergestate->mj_MarkedTupleSlot, \
|
(mergestate)->mj_MarkedTupleSlot, \
|
||||||
InvalidBuffer, \
|
InvalidBuffer, \
|
||||||
true); \
|
true) \
|
||||||
}
|
)
|
||||||
|
|
||||||
/* ----------------------------------------------------------------
|
/* ----------------------------------------------------------------
|
||||||
* MJFormOSortopI
|
* MJFormOSortopI
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/xfunc.c,v 1.13 1998/02/26 04:32:44 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/xfunc.c,v 1.14 1998/06/15 18:39:26 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1424,9 +1424,12 @@ xfunc_LispRemove(LispValue foo, List bar)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define Node_Copy(a, b, c, d) \
|
#define Node_Copy(a, b, c, d) \
|
||||||
if (NodeCopy((Node)((a)->d), (Node*)&((b)->d), c) != true) { \
|
do { \
|
||||||
|
if (NodeCopy((Node)((a)->d), (Node*)&((b)->d), c) != true) \
|
||||||
|
{ \
|
||||||
return false; \
|
return false; \
|
||||||
}
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** xfunc_copyrel --
|
** xfunc_copyrel --
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/freelist.c,v 1.9 1998/01/07 21:04:52 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/freelist.c,v 1.10 1998/06/15 18:39:28 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -40,14 +40,18 @@ static BufferDesc *SharedFreeList;
|
|||||||
extern SPINLOCK BufMgrLock;
|
extern SPINLOCK BufMgrLock;
|
||||||
|
|
||||||
#define IsInQueue(bf) \
|
#define IsInQueue(bf) \
|
||||||
Assert((bf->freeNext != INVALID_DESCRIPTOR));\
|
( \
|
||||||
Assert((bf->freePrev != INVALID_DESCRIPTOR));\
|
AssertMacro((bf->freeNext != INVALID_DESCRIPTOR)), \
|
||||||
Assert((bf->flags & BM_FREE))
|
AssertMacro((bf->freePrev != INVALID_DESCRIPTOR)), \
|
||||||
|
AssertMacro((bf->flags & BM_FREE)) \
|
||||||
|
)
|
||||||
|
|
||||||
#define NotInQueue(bf) \
|
#define NotInQueue(bf) \
|
||||||
Assert((bf->freeNext == INVALID_DESCRIPTOR));\
|
( \
|
||||||
Assert((bf->freePrev == INVALID_DESCRIPTOR));\
|
AssertMacro((bf->freeNext == INVALID_DESCRIPTOR)), \
|
||||||
Assert(! (bf->flags & BM_FREE))
|
AssertMacro((bf->freePrev == INVALID_DESCRIPTOR)), \
|
||||||
|
AssertMacro(! (bf->flags & BM_FREE)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.39 1998/06/04 17:26:48 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.40 1998/06/15 18:39:29 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -67,13 +67,18 @@ extern const char **ps_status; /* from postgres.c */
|
|||||||
* processing within an aborted transaction block.
|
* processing within an aborted transaction block.
|
||||||
* ----------------
|
* ----------------
|
||||||
*/
|
*/
|
||||||
|
/* we have to use IF because of the 'break' */
|
||||||
#define CHECK_IF_ABORTED() \
|
#define CHECK_IF_ABORTED() \
|
||||||
if (IsAbortedTransactionBlockState()) { \
|
if (1) \
|
||||||
|
{ \
|
||||||
|
if (IsAbortedTransactionBlockState()) \
|
||||||
|
{ \
|
||||||
elog(NOTICE, "(transaction aborted): %s", \
|
elog(NOTICE, "(transaction aborted): %s", \
|
||||||
"queries ignored until END"); \
|
"queries ignored until END"); \
|
||||||
commandTag = "*ABORT STATE*"; \
|
commandTag = "*ABORT STATE*"; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
} else
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* general utility function invoker
|
* general utility function invoker
|
||||||
|
@ -43,8 +43,10 @@ typedef struct Arr_TgString
|
|||||||
(Arr_TgString *) NewVarray(ARR_TgString_INITIAL_SIZE, sizeof(TgString))
|
(Arr_TgString *) NewVarray(ARR_TgString_INITIAL_SIZE, sizeof(TgString))
|
||||||
|
|
||||||
#define enlargeArr_TgString(A, I) \
|
#define enlargeArr_TgString(A, I) \
|
||||||
(A)->size += (I); \
|
( \
|
||||||
(A)->val = (TgString *) realloc((A)->val, (A)->valSize * (A)->size)
|
(A)->size += (I), \
|
||||||
|
(A)->val = (TgString *) realloc((A)->val, (A)->valSize * (A)->size) \
|
||||||
|
)
|
||||||
|
|
||||||
#define addArr_TgString(A, V) \
|
#define addArr_TgString(A, V) \
|
||||||
AppendVarray((Varray *) (A), (void *) (V), (CopyingFunct) copyTgString)
|
AppendVarray((Varray *) (A), (void *) (V), (CopyingFunct) copyTgString)
|
||||||
@ -79,8 +81,10 @@ typedef struct Arr_TgElementPtr
|
|||||||
(Arr_TgElementPtr *) NewVarray(ARR_TgElementPtr_INITIAL_SIZE, sizeof(TgElementPtr))
|
(Arr_TgElementPtr *) NewVarray(ARR_TgElementPtr_INITIAL_SIZE, sizeof(TgElementPtr))
|
||||||
|
|
||||||
#define enlargeArr_TgElementPtr(A, I) \
|
#define enlargeArr_TgElementPtr(A, I) \
|
||||||
(A)->size += (I); \
|
( \
|
||||||
(A)->val = (TgElementPtr *) realloc((A)->val, (A)->valSize * (A)->size)
|
(A)->size += (I), \
|
||||||
|
(A)->val = (TgElementPtr *) realloc((A)->val, (A)->valSize * (A)->size) \
|
||||||
|
)
|
||||||
|
|
||||||
#define addArr_TgElementPtr(A, V) \
|
#define addArr_TgElementPtr(A, V) \
|
||||||
AppendVarray((Varray *) (A), (void *) (V), (CopyingFunct) copyTgElementPtr)
|
AppendVarray((Varray *) (A), (void *) (V), (CopyingFunct) copyTgElementPtr)
|
||||||
@ -115,8 +119,10 @@ typedef struct Arr_TgNodePtr
|
|||||||
(Arr_TgNodePtr *) NewVarray(ARR_TgNodePtr_INITIAL_SIZE, sizeof(TgNodePtr))
|
(Arr_TgNodePtr *) NewVarray(ARR_TgNodePtr_INITIAL_SIZE, sizeof(TgNodePtr))
|
||||||
|
|
||||||
#define enlargeArr_TgNodePtr(A, I) \
|
#define enlargeArr_TgNodePtr(A, I) \
|
||||||
(A)->size += (I); \
|
( \
|
||||||
(A)->val = (TgNodePtr *) realloc((A)->val, (A)->valSize * (A)->size)
|
(A)->size += (I), \
|
||||||
|
(A)->val = (TgNodePtr *) realloc((A)->val, (A)->valSize * (A)->size) \
|
||||||
|
)
|
||||||
|
|
||||||
#define addArr_TgNodePtr(A, V) \
|
#define addArr_TgNodePtr(A, V) \
|
||||||
AppendVarray((Varray *) (A), (void *) (V), (CopyingFunct) copyTgNodePtr)
|
AppendVarray((Varray *) (A), (void *) (V), (CopyingFunct) copyTgNodePtr)
|
||||||
|
@ -23,9 +23,11 @@ typedef void (*CopyingFunct) (void *from, void *to);
|
|||||||
#define VARRAY_INITIAL_SIZE 32
|
#define VARRAY_INITIAL_SIZE 32
|
||||||
|
|
||||||
#define ENLARGE_VARRAY(ARRAY, INC) \
|
#define ENLARGE_VARRAY(ARRAY, INC) \
|
||||||
(ARRAY)->maxObj += (INC); \
|
( \
|
||||||
|
(ARRAY)->maxObj += (INC), \
|
||||||
(ARRAY)->val = (void *) realloc((ARRAY)->val, \
|
(ARRAY)->val = (void *) realloc((ARRAY)->val, \
|
||||||
(ARRAY)->size * (ARRAY)->maxObj)
|
(ARRAY)->size * (ARRAY)->maxObj) \
|
||||||
|
)
|
||||||
|
|
||||||
#define VARRAY_NTH(VAL, SIZE, N) (((char *) (VAL)) + (SIZE) * (N))
|
#define VARRAY_NTH(VAL, SIZE, N) (((char *) (VAL)) + (SIZE) * (N))
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.24 1998/02/26 04:36:57 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.25 1998/06/15 18:39:34 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* This code is actually (almost) unused.
|
* This code is actually (almost) unused.
|
||||||
@ -187,8 +187,11 @@ reltimeout(int32 time)
|
|||||||
} /* reltimeout() */
|
} /* reltimeout() */
|
||||||
|
|
||||||
|
|
||||||
#define TMODULO(t,q,u) {q = (t / u); \
|
#define TMODULO(t,q,u) \
|
||||||
if (q != 0) t -= (q * u);}
|
do { \
|
||||||
|
q = (t / u); \
|
||||||
|
if (q != 0) t -= (q * u); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
reltime2tm(int32 time, struct tm * tm)
|
reltime2tm(int32 time, struct tm * tm)
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.53 1998/05/09 22:38:18 thomas Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.54 1998/06/15 18:39:37 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -66,8 +66,12 @@ char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
|
|||||||
/* TMODULO()
|
/* TMODULO()
|
||||||
* Macro to replace modf(), which is broken on some platforms.
|
* Macro to replace modf(), which is broken on some platforms.
|
||||||
*/
|
*/
|
||||||
#define TMODULO(t,q,u) {q = ((t < 0)? ceil(t / u): floor(t / u)); \
|
#define TMODULO(t,q,u) \
|
||||||
if (q != 0) t -= rint(q * u);}
|
do { \
|
||||||
|
q = ((t < 0)? ceil(t / u): floor(t / u)); \
|
||||||
|
if (q != 0) \
|
||||||
|
t -= rint(q * u); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
static void GetEpochTime(struct tm * tm);
|
static void GetEpochTime(struct tm * tm);
|
||||||
|
|
||||||
|
20
src/backend/utils/cache/catcache.c
vendored
20
src/backend/utils/cache/catcache.c
vendored
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.27 1998/04/26 04:08:01 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.28 1998/06/15 18:39:40 momjian Exp $
|
||||||
*
|
*
|
||||||
* Notes:
|
* Notes:
|
||||||
* XXX This needs to use exception.h to handle recovery when
|
* XXX This needs to use exception.h to handle recovery when
|
||||||
@ -96,13 +96,17 @@ static long eqproc[] = {
|
|||||||
*/
|
*/
|
||||||
#ifdef CACHEDEBUG
|
#ifdef CACHEDEBUG
|
||||||
#define CatalogCacheInitializeCache_DEBUG1 \
|
#define CatalogCacheInitializeCache_DEBUG1 \
|
||||||
|
do { \
|
||||||
elog(DEBUG, "CatalogCacheInitializeCache: cache @%08lx", cache); \
|
elog(DEBUG, "CatalogCacheInitializeCache: cache @%08lx", cache); \
|
||||||
if (relation) \
|
if (relation) \
|
||||||
elog(DEBUG, "CatalogCacheInitializeCache: called w/relation(inval)"); \
|
elog(DEBUG, "CatalogCacheInitializeCache: called w/relation(inval)"); \
|
||||||
else \
|
else \
|
||||||
elog(DEBUG, "CatalogCacheInitializeCache: called w/relname %s", \
|
elog(DEBUG, "CatalogCacheInitializeCache: called w/relname %s", \
|
||||||
cache->cc_relname)
|
cache->cc_relname) \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
#define CatalogCacheInitializeCache_DEBUG2 \
|
#define CatalogCacheInitializeCache_DEBUG2 \
|
||||||
|
do { \
|
||||||
if (cache->cc_key[i] > 0) { \
|
if (cache->cc_key[i] > 0) { \
|
||||||
elog(DEBUG, "CatalogCacheInitializeCache: load %d/%d w/%d, %d", \
|
elog(DEBUG, "CatalogCacheInitializeCache: load %d/%d w/%d, %d", \
|
||||||
i+1, cache->cc_nkeys, cache->cc_key[i], \
|
i+1, cache->cc_nkeys, cache->cc_key[i], \
|
||||||
@ -110,7 +114,9 @@ static long eqproc[] = {
|
|||||||
} else { \
|
} else { \
|
||||||
elog(DEBUG, "CatalogCacheInitializeCache: load %d/%d w/%d", \
|
elog(DEBUG, "CatalogCacheInitializeCache: load %d/%d w/%d", \
|
||||||
i+1, cache->cc_nkeys, cache->cc_key[i]); \
|
i+1, cache->cc_nkeys, cache->cc_key[i]); \
|
||||||
}
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define CatalogCacheInitializeCache_DEBUG1
|
#define CatalogCacheInitializeCache_DEBUG1
|
||||||
#define CatalogCacheInitializeCache_DEBUG2
|
#define CatalogCacheInitializeCache_DEBUG2
|
||||||
@ -654,16 +660,20 @@ SystemCacheRelationFlushed(Oid relId)
|
|||||||
*/
|
*/
|
||||||
#ifdef CACHEDEBUG
|
#ifdef CACHEDEBUG
|
||||||
#define InitSysCache_DEBUG1 \
|
#define InitSysCache_DEBUG1 \
|
||||||
|
do { \
|
||||||
elog(DEBUG, "InitSysCache: rid=%d id=%d nkeys=%d size=%d\n", \
|
elog(DEBUG, "InitSysCache: rid=%d id=%d nkeys=%d size=%d\n", \
|
||||||
cp->relationId, cp->id, cp->cc_nkeys, cp->cc_size); \
|
cp->relationId, cp->id, cp->cc_nkeys, cp->cc_size); \
|
||||||
for (i = 0; i < nkeys; i += 1) { \
|
for (i = 0; i < nkeys; i += 1) \
|
||||||
|
{ \
|
||||||
elog(DEBUG, "InitSysCache: key=%d len=%d skey=[%d %d %d %d]\n", \
|
elog(DEBUG, "InitSysCache: key=%d len=%d skey=[%d %d %d %d]\n", \
|
||||||
cp->cc_key[i], cp->cc_klen[i], \
|
cp->cc_key[i], cp->cc_klen[i], \
|
||||||
cp->cc_skey[i].sk_flags, \
|
cp->cc_skey[i].sk_flags, \
|
||||||
cp->cc_skey[i].sk_attno, \
|
cp->cc_skey[i].sk_attno, \
|
||||||
cp->cc_skey[i].sk_procedure, \
|
cp->cc_skey[i].sk_procedure, \
|
||||||
cp->cc_skey[i].sk_argument); \
|
cp->cc_skey[i].sk_argument); \
|
||||||
}
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define InitSysCache_DEBUG1
|
#define InitSysCache_DEBUG1
|
||||||
#endif
|
#endif
|
||||||
|
68
src/backend/utils/cache/relcache.c
vendored
68
src/backend/utils/cache/relcache.c
vendored
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.38 1998/04/27 04:07:20 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.39 1998/06/15 18:39:40 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -157,86 +157,80 @@ typedef struct relnamecacheent
|
|||||||
* -----------------
|
* -----------------
|
||||||
*/
|
*/
|
||||||
#define RelationCacheInsert(RELATION) \
|
#define RelationCacheInsert(RELATION) \
|
||||||
{ RelIdCacheEnt *idhentry; RelNameCacheEnt *namehentry; \
|
do { \
|
||||||
|
RelIdCacheEnt *idhentry; RelNameCacheEnt *namehentry; \
|
||||||
char *relname; Oid reloid; bool found; \
|
char *relname; Oid reloid; bool found; \
|
||||||
relname = (RELATION->rd_rel->relname).data; \
|
relname = (RELATION->rd_rel->relname).data; \
|
||||||
namehentry = (RelNameCacheEnt*)hash_search(RelationNameCache, \
|
namehentry = (RelNameCacheEnt*)hash_search(RelationNameCache, \
|
||||||
relname, \
|
relname, \
|
||||||
HASH_ENTER, \
|
HASH_ENTER, \
|
||||||
&found); \
|
&found); \
|
||||||
if (namehentry == NULL) { \
|
if (namehentry == NULL) \
|
||||||
elog(FATAL, "can't insert into relation descriptor cache"); \
|
elog(FATAL, "can't insert into relation descriptor cache"); \
|
||||||
} \
|
if (found && !IsBootstrapProcessingMode()) \
|
||||||
if (found && !IsBootstrapProcessingMode()) { \
|
|
||||||
/* used to give notice -- now just keep quiet */ ; \
|
/* used to give notice -- now just keep quiet */ ; \
|
||||||
} \
|
|
||||||
namehentry->reldesc = RELATION; \
|
namehentry->reldesc = RELATION; \
|
||||||
reloid = RELATION->rd_id; \
|
reloid = RELATION->rd_id; \
|
||||||
idhentry = (RelIdCacheEnt*)hash_search(RelationIdCache, \
|
idhentry = (RelIdCacheEnt*)hash_search(RelationIdCache, \
|
||||||
(char *)&reloid, \
|
(char *)&reloid, \
|
||||||
HASH_ENTER, \
|
HASH_ENTER, \
|
||||||
&found); \
|
&found); \
|
||||||
if (idhentry == NULL) { \
|
if (idhentry == NULL) \
|
||||||
elog(FATAL, "can't insert into relation descriptor cache"); \
|
elog(FATAL, "can't insert into relation descriptor cache"); \
|
||||||
} \
|
if (found && !IsBootstrapProcessingMode()) \
|
||||||
if (found && !IsBootstrapProcessingMode()) { \
|
|
||||||
/* used to give notice -- now just keep quiet */ ; \
|
/* used to give notice -- now just keep quiet */ ; \
|
||||||
} \
|
|
||||||
idhentry->reldesc = RELATION; \
|
idhentry->reldesc = RELATION; \
|
||||||
}
|
} while(0)
|
||||||
|
|
||||||
#define RelationNameCacheLookup(NAME, RELATION) \
|
#define RelationNameCacheLookup(NAME, RELATION) \
|
||||||
{ RelNameCacheEnt *hentry; bool found; \
|
do { \
|
||||||
|
RelNameCacheEnt *hentry; bool found; \
|
||||||
hentry = (RelNameCacheEnt*)hash_search(RelationNameCache, \
|
hentry = (RelNameCacheEnt*)hash_search(RelationNameCache, \
|
||||||
(char *)NAME,HASH_FIND,&found); \
|
(char *)NAME,HASH_FIND,&found); \
|
||||||
if (hentry == NULL) { \
|
if (hentry == NULL) \
|
||||||
elog(FATAL, "error in CACHE"); \
|
elog(FATAL, "error in CACHE"); \
|
||||||
} \
|
if (found) \
|
||||||
if (found) { \
|
|
||||||
RELATION = hentry->reldesc; \
|
RELATION = hentry->reldesc; \
|
||||||
} \
|
else \
|
||||||
else { \
|
|
||||||
RELATION = NULL; \
|
RELATION = NULL; \
|
||||||
} \
|
} while(0)
|
||||||
}
|
|
||||||
#define RelationIdCacheLookup(ID, RELATION) \
|
#define RelationIdCacheLookup(ID, RELATION) \
|
||||||
{ RelIdCacheEnt *hentry; bool found; \
|
do { \
|
||||||
|
RelIdCacheEnt *hentry; \
|
||||||
|
bool found; \
|
||||||
hentry = (RelIdCacheEnt*)hash_search(RelationIdCache, \
|
hentry = (RelIdCacheEnt*)hash_search(RelationIdCache, \
|
||||||
(char *)&(ID),HASH_FIND, &found); \
|
(char *)&(ID),HASH_FIND, &found); \
|
||||||
if (hentry == NULL) { \
|
if (hentry == NULL) \
|
||||||
elog(FATAL, "error in CACHE"); \
|
elog(FATAL, "error in CACHE"); \
|
||||||
} \
|
if (found) \
|
||||||
if (found) { \
|
|
||||||
RELATION = hentry->reldesc; \
|
RELATION = hentry->reldesc; \
|
||||||
} \
|
else \
|
||||||
else { \
|
|
||||||
RELATION = NULL; \
|
RELATION = NULL; \
|
||||||
} \
|
} while(0)
|
||||||
}
|
|
||||||
#define RelationCacheDelete(RELATION) \
|
#define RelationCacheDelete(RELATION) \
|
||||||
{ RelNameCacheEnt *namehentry; RelIdCacheEnt *idhentry; \
|
do { \
|
||||||
|
RelNameCacheEnt *namehentry; RelIdCacheEnt *idhentry; \
|
||||||
char *relname; Oid reloid; bool found; \
|
char *relname; Oid reloid; bool found; \
|
||||||
relname = (RELATION->rd_rel->relname).data; \
|
relname = (RELATION->rd_rel->relname).data; \
|
||||||
namehentry = (RelNameCacheEnt*)hash_search(RelationNameCache, \
|
namehentry = (RelNameCacheEnt*)hash_search(RelationNameCache, \
|
||||||
relname, \
|
relname, \
|
||||||
HASH_REMOVE, \
|
HASH_REMOVE, \
|
||||||
&found); \
|
&found); \
|
||||||
if (namehentry == NULL) { \
|
if (namehentry == NULL) \
|
||||||
elog(FATAL, "can't delete from relation descriptor cache"); \
|
elog(FATAL, "can't delete from relation descriptor cache"); \
|
||||||
} \
|
if (!found) \
|
||||||
if (!found) { \
|
|
||||||
elog(NOTICE, "trying to delete a reldesc that does not exist."); \
|
elog(NOTICE, "trying to delete a reldesc that does not exist."); \
|
||||||
} \
|
|
||||||
reloid = RELATION->rd_id; \
|
reloid = RELATION->rd_id; \
|
||||||
idhentry = (RelIdCacheEnt*)hash_search(RelationIdCache, \
|
idhentry = (RelIdCacheEnt*)hash_search(RelationIdCache, \
|
||||||
(char *)&reloid, \
|
(char *)&reloid, \
|
||||||
HASH_REMOVE, &found); \
|
HASH_REMOVE, &found); \
|
||||||
if (idhentry == NULL) { \
|
if (idhentry == NULL) \
|
||||||
elog(FATAL, "can't delete from relation descriptor cache"); \
|
elog(FATAL, "can't delete from relation descriptor cache"); \
|
||||||
} \
|
if (!found) \
|
||||||
if (!found) { \
|
|
||||||
elog(NOTICE, "trying to delete a reldesc that does not exist."); \
|
elog(NOTICE, "trying to delete a reldesc that does not exist."); \
|
||||||
} \
|
} while(0)
|
||||||
}
|
|
||||||
|
|
||||||
/* non-export function prototypes */
|
/* non-export function prototypes */
|
||||||
static void
|
static void
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.10 1998/02/26 04:38:23 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.11 1998/06/15 18:39:44 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -125,7 +125,9 @@ typedef struct portalhashent
|
|||||||
static HTAB *PortalHashTable = NULL;
|
static HTAB *PortalHashTable = NULL;
|
||||||
|
|
||||||
#define PortalHashTableLookup(NAME, PORTAL) \
|
#define PortalHashTableLookup(NAME, PORTAL) \
|
||||||
{ PortalHashEnt *hentry; bool found; char key[MAX_PORTALNAME_LEN]; \
|
do { \
|
||||||
|
PortalHashEnt *hentry; bool found; char key[MAX_PORTALNAME_LEN]; \
|
||||||
|
\
|
||||||
MemSet(key, 0, MAX_PORTALNAME_LEN); \
|
MemSet(key, 0, MAX_PORTALNAME_LEN); \
|
||||||
sprintf(key, "%s", NAME); \
|
sprintf(key, "%s", NAME); \
|
||||||
hentry = (PortalHashEnt*)hash_search(PortalHashTable, \
|
hentry = (PortalHashEnt*)hash_search(PortalHashTable, \
|
||||||
@ -136,9 +138,12 @@ static HTAB *PortalHashTable = NULL;
|
|||||||
PORTAL = hentry->portal; \
|
PORTAL = hentry->portal; \
|
||||||
else \
|
else \
|
||||||
PORTAL = NULL; \
|
PORTAL = NULL; \
|
||||||
}
|
} while(0)
|
||||||
|
|
||||||
#define PortalHashTableInsert(PORTAL) \
|
#define PortalHashTableInsert(PORTAL) \
|
||||||
{ PortalHashEnt *hentry; bool found; char key[MAX_PORTALNAME_LEN]; \
|
do { \
|
||||||
|
PortalHashEnt *hentry; bool found; char key[MAX_PORTALNAME_LEN]; \
|
||||||
|
\
|
||||||
MemSet(key, 0, MAX_PORTALNAME_LEN); \
|
MemSet(key, 0, MAX_PORTALNAME_LEN); \
|
||||||
sprintf(key, "%s", PORTAL->name); \
|
sprintf(key, "%s", PORTAL->name); \
|
||||||
hentry = (PortalHashEnt*)hash_search(PortalHashTable, \
|
hentry = (PortalHashEnt*)hash_search(PortalHashTable, \
|
||||||
@ -148,9 +153,12 @@ static HTAB *PortalHashTable = NULL;
|
|||||||
if (found) \
|
if (found) \
|
||||||
elog(NOTICE, "trying to insert a portal name that exists."); \
|
elog(NOTICE, "trying to insert a portal name that exists."); \
|
||||||
hentry->portal = PORTAL; \
|
hentry->portal = PORTAL; \
|
||||||
}
|
} while(0)
|
||||||
|
|
||||||
#define PortalHashTableDelete(PORTAL) \
|
#define PortalHashTableDelete(PORTAL) \
|
||||||
{ PortalHashEnt *hentry; bool found; char key[MAX_PORTALNAME_LEN]; \
|
{ \
|
||||||
|
PortalHashEnt *hentry; bool found; char key[MAX_PORTALNAME_LEN]; \
|
||||||
|
\
|
||||||
MemSet(key, 0, MAX_PORTALNAME_LEN); \
|
MemSet(key, 0, MAX_PORTALNAME_LEN); \
|
||||||
sprintf(key, "%s", PORTAL->name); \
|
sprintf(key, "%s", PORTAL->name); \
|
||||||
hentry = (PortalHashEnt*)hash_search(PortalHashTable, \
|
hentry = (PortalHashEnt*)hash_search(PortalHashTable, \
|
||||||
@ -159,7 +167,7 @@ static HTAB *PortalHashTable = NULL;
|
|||||||
elog(FATAL, "error in PortalHashTable"); \
|
elog(FATAL, "error in PortalHashTable"); \
|
||||||
if (!found) \
|
if (!found) \
|
||||||
elog(NOTICE, "trying to delete portal name that does not exist."); \
|
elog(NOTICE, "trying to delete portal name that does not exist."); \
|
||||||
}
|
} while(0)
|
||||||
|
|
||||||
static GlobalMemory PortalMemory = NULL;
|
static GlobalMemory PortalMemory = NULL;
|
||||||
static char PortalMemoryName[] = "Portal";
|
static char PortalMemoryName[] = "Portal";
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/sort/Attic/psort.c,v 1.39 1998/02/26 04:38:29 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/sort/Attic/psort.c,v 1.40 1998/06/15 18:39:45 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* Sorts the first relation into the second relation.
|
* Sorts the first relation into the second relation.
|
||||||
@ -222,20 +222,24 @@ inittapes(Sort *node)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define PUTTUP(NODE, TUP, FP) do {\
|
#define PUTTUP(NODE, TUP, FP) \
|
||||||
((Psortstate *)NODE->psortstate)->BytesWritten += (TUP)->t_len; \
|
( \
|
||||||
fwrite((char *)TUP, (TUP)->t_len, 1, FP); \
|
((Psortstate *)NODE->psortstate)->BytesWritten += (TUP)->t_len, \
|
||||||
fwrite((char *)&((TUP)->t_len), sizeof (tlendummy), 1, FP); \
|
fwrite((char *)TUP, (TUP)->t_len, 1, FP), \
|
||||||
} while (0)
|
fwrite((char *)&((TUP)->t_len), sizeof (tlendummy), 1, FP) \
|
||||||
|
)
|
||||||
|
|
||||||
#define ENDRUN(FP) fwrite((char *)&tlenzero, sizeof (tlenzero), 1, FP)
|
#define ENDRUN(FP) fwrite((char *)&tlenzero, sizeof (tlenzero), 1, FP)
|
||||||
#define GETLEN(LEN, FP) fread((char *)&(LEN), sizeof (tlenzero), 1, FP)
|
#define GETLEN(LEN, FP) fread((char *)&(LEN), sizeof (tlenzero), 1, FP)
|
||||||
#define ALLOCTUP(LEN) ((HeapTuple)palloc((unsigned)LEN))
|
#define ALLOCTUP(LEN) ((HeapTuple)palloc((unsigned)LEN))
|
||||||
#define GETTUP(NODE, TUP, LEN, FP) do {\
|
#define GETTUP(NODE, TUP, LEN, FP) \
|
||||||
IncrProcessed(); \
|
( \
|
||||||
((Psortstate *)NODE->psortstate)->BytesRead += (LEN) - sizeof (tlenzero); \
|
IncrProcessed(), \
|
||||||
fread((char *)(TUP) + sizeof (tlenzero), (LEN) - sizeof (tlenzero), 1, FP); \
|
((Psortstate *)NODE->psortstate)->BytesRead += (LEN) - sizeof (tlenzero), \
|
||||||
fread((char *)&tlendummy, sizeof (tlendummy), 1, FP); \
|
fread((char *)(TUP) + sizeof (tlenzero), (LEN) - sizeof (tlenzero), 1, FP), \
|
||||||
} while (0)
|
fread((char *)&tlendummy, sizeof (tlendummy), 1, FP) \
|
||||||
|
)
|
||||||
|
|
||||||
#define SETTUPLEN(TUP, LEN) (TUP)->t_len = LEN
|
#define SETTUPLEN(TUP, LEN) (TUP)->t_len = LEN
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: psqlHelp.h,v 1.42 1998/03/30 19:04:53 momjian Exp $
|
* $Id: psqlHelp.h,v 1.43 1998/06/15 18:39:49 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -26,8 +26,8 @@ static struct _helpStruct QL_HELP[] = {
|
|||||||
"abort [transaction];"},
|
"abort [transaction];"},
|
||||||
{"alter table",
|
{"alter table",
|
||||||
"add/rename attributes, rename tables",
|
"add/rename attributes, rename tables",
|
||||||
"\talter table <class_name> [*] add column <attr> <type>;\n\
|
"\talter table <class_name> [*] add column <attr> <type>\n\
|
||||||
\talter table <class_name> [*] rename [column] <attr1> to <attr2>;\n\
|
\talter table <class_name> [*] rename [column] <attr1> to <attr2>\n\
|
||||||
\talter table <class_name1> rename to <class_name2>"},
|
\talter table <class_name1> rename to <class_name2>"},
|
||||||
{"alter user",
|
{"alter user",
|
||||||
"alter system information for a user",
|
"alter system information for a user",
|
||||||
@ -128,7 +128,7 @@ static struct _helpStruct QL_HELP[] = {
|
|||||||
"create a new trigger",
|
"create a new trigger",
|
||||||
"create trigger <trigger_name> after|before event1 [or event2 [or event3] ]\n\
|
"create trigger <trigger_name> after|before event1 [or event2 [or event3] ]\n\
|
||||||
\ton <class_name> for each row|statement\n\
|
\ton <class_name> for each row|statement\n\
|
||||||
\texecute procedure <func_name> ([arguments]);\n\
|
\texecute procedure <func_name> ([arguments])\n\
|
||||||
\n\
|
\n\
|
||||||
\teventX is one of INSERT, DELETE, UPDATE"},
|
\teventX is one of INSERT, DELETE, UPDATE"},
|
||||||
{"create type",
|
{"create type",
|
||||||
@ -238,7 +238,7 @@ static struct _helpStruct QL_HELP[] = {
|
|||||||
{"insert",
|
{"insert",
|
||||||
"insert tuples",
|
"insert tuples",
|
||||||
"insert into <class_name> [(<attr1>...<attrN>)]\n\
|
"insert into <class_name> [(<attr1>...<attrN>)]\n\
|
||||||
\tvalues (<expr1>...<exprN>); |\n\
|
\tvalues (<expr1>...<exprN>) |\n\
|
||||||
\tselect [distinct]\n\
|
\tselect [distinct]\n\
|
||||||
\t<expr1>,...<exprN>\n\
|
\t<expr1>,...<exprN>\n\
|
||||||
\t[from <from_clause>]\n\
|
\t[from <from_clause>]\n\
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: attnum.h,v 1.6 1997/09/08 02:34:02 momjian Exp $
|
* $Id: attnum.h,v 1.7 1998/06/15 18:39:52 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -47,8 +47,10 @@ typedef int16 AttrNumber;
|
|||||||
* Assumes the attribute number is for an user defined attribute.
|
* Assumes the attribute number is for an user defined attribute.
|
||||||
*/
|
*/
|
||||||
#define AttrNumberGetAttrOffset(attNum) \
|
#define AttrNumberGetAttrOffset(attNum) \
|
||||||
(AssertMacro(AttrNumberIsForUserDefinedAttr(attNum)) ? \
|
( \
|
||||||
((attNum - 1)) : 0)
|
AssertMacro(AttrNumberIsForUserDefinedAttr(attNum)), \
|
||||||
|
((attNum) - 1) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* AttributeOffsetGetAttributeNumber --
|
* AttributeOffsetGetAttributeNumber --
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: heapam.h,v 1.32 1998/06/14 01:34:07 momjian Exp $
|
* $Id: heapam.h,v 1.33 1998/06/15 18:39:53 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -92,8 +92,7 @@ typedef HeapAccessStatisticsData *HeapAccessStatistics;
|
|||||||
|
|
||||||
#define fastgetattr(tup, attnum, tupleDesc, isnull) \
|
#define fastgetattr(tup, attnum, tupleDesc, isnull) \
|
||||||
( \
|
( \
|
||||||
AssertMacro((attnum) > 0) ? \
|
AssertMacro((attnum) > 0), \
|
||||||
( \
|
|
||||||
((isnull) ? (*(isnull) = false) : (dummyret)NULL), \
|
((isnull) ? (*(isnull) = false) : (dummyret)NULL), \
|
||||||
HeapTupleNoNulls(tup) ? \
|
HeapTupleNoNulls(tup) ? \
|
||||||
( \
|
( \
|
||||||
@ -125,11 +124,6 @@ typedef HeapAccessStatisticsData *HeapAccessStatistics;
|
|||||||
nocachegetattr((tup), (attnum), (tupleDesc), (isnull)) \
|
nocachegetattr((tup), (attnum), (tupleDesc), (isnull)) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
) \
|
|
||||||
: \
|
|
||||||
( \
|
|
||||||
(Datum)NULL \
|
|
||||||
) \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
#else /* !defined(DISABLE_COMPLEX_MACRO) */
|
#else /* !defined(DISABLE_COMPLEX_MACRO) */
|
||||||
@ -208,8 +202,7 @@ static Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
|
|||||||
( \
|
( \
|
||||||
AssertMacro((tup) != NULL && \
|
AssertMacro((tup) != NULL && \
|
||||||
(attnum) > FirstLowInvalidHeapAttributeNumber && \
|
(attnum) > FirstLowInvalidHeapAttributeNumber && \
|
||||||
(attnum) != 0) ? \
|
(attnum) != 0), \
|
||||||
( \
|
|
||||||
((attnum) > (int) (tup)->t_natts) ? \
|
((attnum) > (int) (tup)->t_natts) ? \
|
||||||
( \
|
( \
|
||||||
((isnull) ? (*(isnull) = true) : (dummyret)NULL), \
|
((isnull) ? (*(isnull) = true) : (dummyret)NULL), \
|
||||||
@ -236,11 +229,6 @@ static Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
|
|||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
) \
|
|
||||||
: \
|
|
||||||
( \
|
|
||||||
(Datum)NULL \
|
|
||||||
) \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
extern HeapAccessStatistics heap_access_stats; /* in stats.c */
|
extern HeapAccessStatistics heap_access_stats; /* in stats.c */
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: itup.h,v 1.13 1998/02/26 04:40:19 momjian Exp $
|
* $Id: itup.h,v 1.14 1998/06/15 18:39:54 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -118,8 +118,7 @@ typedef struct PredInfo
|
|||||||
*/
|
*/
|
||||||
#define index_getattr(tup, attnum, tupleDesc, isnull) \
|
#define index_getattr(tup, attnum, tupleDesc, isnull) \
|
||||||
( \
|
( \
|
||||||
AssertMacro(PointerIsValid(isnull) && (attnum) > 0) ? \
|
AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \
|
||||||
( \
|
|
||||||
*(isnull) = false, \
|
*(isnull) = false, \
|
||||||
IndexTupleNoNulls(tup) ? \
|
IndexTupleNoNulls(tup) ? \
|
||||||
( \
|
( \
|
||||||
@ -157,11 +156,6 @@ typedef struct PredInfo
|
|||||||
nocache_index_getattr((tup), (attnum), (tupleDesc), (isnull)) \
|
nocache_index_getattr((tup), (attnum), (tupleDesc), (isnull)) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
) \
|
|
||||||
: \
|
|
||||||
( \
|
|
||||||
(Datum)NULL \
|
|
||||||
) \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: c.h,v 1.39 1998/04/06 17:27:49 momjian Exp $
|
* $Id: c.h,v 1.40 1998/06/15 18:39:51 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -624,7 +624,7 @@ typedef struct Exception
|
|||||||
Trap(!(condition), FailedAssertion)
|
Trap(!(condition), FailedAssertion)
|
||||||
|
|
||||||
#define AssertMacro(condition) \
|
#define AssertMacro(condition) \
|
||||||
TrapMacro(!(condition), FailedAssertion)
|
(void)TrapMacro(!(condition), FailedAssertion)
|
||||||
|
|
||||||
#define AssertArg(condition) \
|
#define AssertArg(condition) \
|
||||||
Trap(!(condition), BadArg)
|
Trap(!(condition), BadArg)
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: execdebug.h,v 1.4 1997/09/08 02:36:12 momjian Exp $
|
* $Id: execdebug.h,v 1.5 1998/06/15 18:39:55 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -193,14 +193,15 @@ extern int NIndexTupleInserted;
|
|||||||
#define IncrIndexProcessed() NIndexTupleProcessed++
|
#define IncrIndexProcessed() NIndexTupleProcessed++
|
||||||
#define IncrIndexInserted() NIndexTupleInserted++
|
#define IncrIndexInserted() NIndexTupleInserted++
|
||||||
#else
|
#else
|
||||||
#define IncrRetrieved()
|
/* stop compiler warnings */
|
||||||
#define IncrAppended()
|
#define IncrRetrieved() (void)(0)
|
||||||
#define IncrDeleted()
|
#define IncrAppended() (void)(0)
|
||||||
#define IncrReplaced()
|
#define IncrDeleted() (void)(0)
|
||||||
#define IncrInserted()
|
#define IncrReplaced() (void)(0)
|
||||||
#define IncrProcessed()
|
#define IncrInserted() (void)(0)
|
||||||
#define IncrIndexProcessed()
|
#define IncrProcessed() (void)(0)
|
||||||
#define IncrIndexInserted()
|
#define IncrIndexProcessed() (void)(0)
|
||||||
|
#define IncrIndexInserted() (void)(0)
|
||||||
#endif /* EXEC_TUPLECOUNT */
|
#endif /* EXEC_TUPLECOUNT */
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: block.h,v 1.5 1997/09/08 20:58:59 momjian Exp $
|
* $Id: block.h,v 1.6 1998/06/15 18:40:00 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -79,19 +79,23 @@ typedef BlockIdData *BlockId; /* block identifier */
|
|||||||
* Sets a block identifier to the specified value.
|
* Sets a block identifier to the specified value.
|
||||||
*/
|
*/
|
||||||
#define BlockIdSet(blockId, blockNumber) \
|
#define BlockIdSet(blockId, blockNumber) \
|
||||||
Assert(PointerIsValid(blockId)); \
|
( \
|
||||||
(blockId)->bi_hi = (blockNumber) >> 16; \
|
AssertMacro(PointerIsValid(blockId)), \
|
||||||
(blockId)->bi_lo = (blockNumber) & 0xffff
|
(blockId)->bi_hi = (blockNumber) >> 16, \
|
||||||
|
(blockId)->bi_lo = (blockNumber) & 0xffff \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BlockIdCopy --
|
* BlockIdCopy --
|
||||||
* Copy a block identifier.
|
* Copy a block identifier.
|
||||||
*/
|
*/
|
||||||
#define BlockIdCopy(toBlockId, fromBlockId) \
|
#define BlockIdCopy(toBlockId, fromBlockId) \
|
||||||
Assert(PointerIsValid(toBlockId)); \
|
( \
|
||||||
Assert(PointerIsValid(fromBlockId)); \
|
AssertMacro(PointerIsValid(toBlockId)), \
|
||||||
(toBlockId)->bi_hi = (fromBlockId)->bi_hi; \
|
AssertMacro(PointerIsValid(fromBlockId)), \
|
||||||
(toBlockId)->bi_lo = (fromBlockId)->bi_lo
|
(toBlockId)->bi_hi = (fromBlockId)->bi_hi, \
|
||||||
|
(toBlockId)->bi_lo = (fromBlockId)->bi_lo \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BlockIdEquals --
|
* BlockIdEquals --
|
||||||
@ -106,8 +110,9 @@ typedef BlockIdData *BlockId; /* block identifier */
|
|||||||
* Retrieve the block number from a block identifier.
|
* Retrieve the block number from a block identifier.
|
||||||
*/
|
*/
|
||||||
#define BlockIdGetBlockNumber(blockId) \
|
#define BlockIdGetBlockNumber(blockId) \
|
||||||
(AssertMacro(BlockIdIsValid(blockId)) ? \
|
( \
|
||||||
(BlockNumber) (((blockId)->bi_hi << 16) | ((uint16) (blockId)->bi_lo)) : \
|
AssertMacro(BlockIdIsValid(blockId)), \
|
||||||
(BlockNumber) InvalidBlockNumber)
|
(BlockNumber) (((blockId)->bi_hi << 16) | ((uint16) (blockId)->bi_lo)) \
|
||||||
|
)
|
||||||
|
|
||||||
#endif /* BLOCK_H */
|
#endif /* BLOCK_H */
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: buf_internals.h,v 1.21 1998/02/26 04:43:21 momjian Exp $
|
* $Id: buf_internals.h,v 1.22 1998/06/15 18:40:01 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTE
|
* NOTE
|
||||||
* If BUFFERPAGE0 is defined, then 0 will be used as a
|
* If BUFFERPAGE0 is defined, then 0 will be used as a
|
||||||
@ -56,25 +56,31 @@ struct buftag
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define CLEAR_BUFFERTAG(a) \
|
#define CLEAR_BUFFERTAG(a) \
|
||||||
(a)->relId.dbId = InvalidOid; \
|
( \
|
||||||
(a)->relId.relId = InvalidOid; \
|
(a)->relId.dbId = InvalidOid, \
|
||||||
(a)->blockNum = InvalidBlockNumber
|
(a)->relId.relId = InvalidOid, \
|
||||||
|
(a)->blockNum = InvalidBlockNumber \
|
||||||
|
)
|
||||||
|
|
||||||
#define INIT_BUFFERTAG(a,xx_reln,xx_blockNum) \
|
#define INIT_BUFFERTAG(a,xx_reln,xx_blockNum) \
|
||||||
{ \
|
( \
|
||||||
(a)->blockNum = xx_blockNum;\
|
(a)->blockNum = xx_blockNum, \
|
||||||
(a)->relId = RelationGetLRelId(xx_reln); \
|
(a)->relId = RelationGetLRelId(xx_reln) \
|
||||||
}
|
)
|
||||||
|
|
||||||
#ifdef NOT_USED
|
#ifdef NOT_USED
|
||||||
#define COPY_BUFFERTAG(a,b) \
|
#define COPY_BUFFERTAG(a,b) \
|
||||||
{ \
|
( \
|
||||||
(a)->blockNum = (b)->blockNum;\
|
(a)->blockNum = (b)->blockNum, \
|
||||||
LRelIdAssign(*(a),*(b));\
|
LRelIdAssign(*(a),*(b)) \
|
||||||
}
|
)
|
||||||
|
|
||||||
#define EQUAL_BUFFERTAG(a,b) \
|
#define EQUAL_BUFFERTAG(a,b) \
|
||||||
(((a)->blockNum == (b)->blockNum) &&\
|
( \
|
||||||
(OID_Equal((a)->relId.relId,(b)->relId.relId)))
|
((a)->blockNum == (b)->blockNum && \
|
||||||
|
OID_Equal((a)->relId.relId,(b)->relId.relId)) \
|
||||||
|
)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BAD_BUFFER_ID(bid) ((bid<1) || (bid>(NBuffers)))
|
#define BAD_BUFFER_ID(bid) ((bid<1) || (bid>(NBuffers)))
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: bufmgr.h,v 1.19 1998/04/24 14:43:18 momjian Exp $
|
* $Id: bufmgr.h,v 1.20 1998/06/15 18:40:02 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -117,8 +117,7 @@ extern int ShowPinTrace;
|
|||||||
*/
|
*/
|
||||||
#define BufferGetBlock(buffer) \
|
#define BufferGetBlock(buffer) \
|
||||||
( \
|
( \
|
||||||
(void)AssertMacro(BufferIsValid(buffer)), \
|
AssertMacro(BufferIsValid(buffer)), \
|
||||||
\
|
|
||||||
BufferIsLocal(buffer) ? \
|
BufferIsLocal(buffer) ? \
|
||||||
((Block) MAKE_PTR(LocalBufferDescriptors[-(buffer) - 1].data)) \
|
((Block) MAKE_PTR(LocalBufferDescriptors[-(buffer) - 1].data)) \
|
||||||
: \
|
: \
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: bufpage.h,v 1.18 1998/04/24 14:43:23 momjian Exp $
|
* $Id: bufpage.h,v 1.19 1998/06/15 18:40:02 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -161,8 +161,10 @@ typedef enum
|
|||||||
* Assumes page is valid.
|
* Assumes page is valid.
|
||||||
*/
|
*/
|
||||||
#define PageIsUsed(page) \
|
#define PageIsUsed(page) \
|
||||||
(AssertMacro(PageIsValid(page)) ? \
|
( \
|
||||||
((bool) (((PageHeader) (page))->pd_lower != 0)) : false)
|
AssertMacro(PageIsValid(page)), \
|
||||||
|
((bool) (((PageHeader) (page))->pd_lower != 0)) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PageIsEmpty --
|
* PageIsEmpty --
|
||||||
@ -243,9 +245,10 @@ typedef enum
|
|||||||
* Assumes page is locked.
|
* Assumes page is locked.
|
||||||
*/
|
*/
|
||||||
#define PageGetSpecialPointer(page) \
|
#define PageGetSpecialPointer(page) \
|
||||||
(AssertMacro(PageIsValid(page)) ? \
|
( \
|
||||||
|
AssertMacro(PageIsValid(page)), \
|
||||||
(char *) ((char *) (page) + ((PageHeader) (page))->pd_special) \
|
(char *) ((char *) (page) + ((PageHeader) (page))->pd_special) \
|
||||||
: (char *)0 )
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PageGetItem --
|
* PageGetItem --
|
||||||
@ -256,9 +259,11 @@ typedef enum
|
|||||||
* The semantics may change in the future.
|
* The semantics may change in the future.
|
||||||
*/
|
*/
|
||||||
#define PageGetItem(page, itemId) \
|
#define PageGetItem(page, itemId) \
|
||||||
(AssertMacro(PageIsValid(page)) ? \
|
( \
|
||||||
AssertMacro((itemId)->lp_flags & LP_USED) ? \
|
AssertMacro(PageIsValid(page)), \
|
||||||
(Item)(((char *)(page)) + (itemId)->lp_off) : false : false)
|
AssertMacro((itemId)->lp_flags & LP_USED), \
|
||||||
|
(Item)(((char *)(page)) + (itemId)->lp_off) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BufferGetPageSize --
|
* BufferGetPageSize --
|
||||||
@ -272,7 +277,10 @@ typedef enum
|
|||||||
*/
|
*/
|
||||||
/* XXX dig out of buffer descriptor */
|
/* XXX dig out of buffer descriptor */
|
||||||
#define BufferGetPageSize(buffer) \
|
#define BufferGetPageSize(buffer) \
|
||||||
(AssertMacro(BufferIsValid(buffer)) ? (Size)BLCKSZ : false)
|
( \
|
||||||
|
AssertMacro(BufferIsValid(buffer)), \
|
||||||
|
(Size)BLCKSZ \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BufferGetPage --
|
* BufferGetPage --
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: itemid.h,v 1.5 1998/01/13 04:05:12 scrappy Exp $
|
* $Id: itemid.h,v 1.6 1998/06/15 18:40:03 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -70,7 +70,9 @@ typedef struct ItemIdData *ItemId;
|
|||||||
* Assumes disk item identifier is valid.
|
* Assumes disk item identifier is valid.
|
||||||
*/
|
*/
|
||||||
#define ItemIdIsUsed(itemId) \
|
#define ItemIdIsUsed(itemId) \
|
||||||
(AssertMacro(ItemIdIsValid(itemId)) ? \
|
( \
|
||||||
(bool) (((itemId)->lp_flags & LP_USED) != 0) : false)
|
AssertMacro(ItemIdIsValid(itemId)), \
|
||||||
|
(bool) (((itemId)->lp_flags & LP_USED) != 0) \
|
||||||
|
)
|
||||||
|
|
||||||
#endif /* ITEMID_H */
|
#endif /* ITEMID_H */
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: itemptr.h,v 1.7 1997/09/08 21:54:25 momjian Exp $
|
* $Id: itemptr.h,v 1.8 1998/06/15 18:40:03 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -48,60 +48,73 @@ typedef ItemPointerData *ItemPointer;
|
|||||||
* Returns the block number of a disk item pointer.
|
* Returns the block number of a disk item pointer.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerGetBlockNumber(pointer) \
|
#define ItemPointerGetBlockNumber(pointer) \
|
||||||
(AssertMacro(ItemPointerIsValid(pointer)) ? \
|
( \
|
||||||
BlockIdGetBlockNumber(&(pointer)->ip_blkid) : (BlockNumber) 0)
|
AssertMacro(ItemPointerIsValid(pointer)), \
|
||||||
|
BlockIdGetBlockNumber(&(pointer)->ip_blkid) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerGetOffsetNumber --
|
* ItemPointerGetOffsetNumber --
|
||||||
* Returns the offset number of a disk item pointer.
|
* Returns the offset number of a disk item pointer.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerGetOffsetNumber(pointer) \
|
#define ItemPointerGetOffsetNumber(pointer) \
|
||||||
(AssertMacro(ItemPointerIsValid(pointer)) ? \
|
( \
|
||||||
(pointer)->ip_posid : \
|
AssertMacro(ItemPointerIsValid(pointer)), \
|
||||||
InvalidOffsetNumber)
|
(pointer)->ip_posid \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSet --
|
* ItemPointerSet --
|
||||||
* Sets a disk item pointer to the specified block and offset.
|
* Sets a disk item pointer to the specified block and offset.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSet(pointer, blockNumber, offNum) \
|
#define ItemPointerSet(pointer, blockNumber, offNum) \
|
||||||
Assert(PointerIsValid(pointer)); \
|
( \
|
||||||
BlockIdSet(&((pointer)->ip_blkid), blockNumber); \
|
AssertMacro(PointerIsValid(pointer)), \
|
||||||
(pointer)->ip_posid = offNum
|
BlockIdSet(&((pointer)->ip_blkid), blockNumber), \
|
||||||
|
(pointer)->ip_posid = offNum \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSetBlockNumber --
|
* ItemPointerSetBlockNumber --
|
||||||
* Sets a disk item pointer to the specified block.
|
* Sets a disk item pointer to the specified block.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSetBlockNumber(pointer, blockNumber) \
|
#define ItemPointerSetBlockNumber(pointer, blockNumber) \
|
||||||
Assert(PointerIsValid(pointer)); \
|
( \
|
||||||
BlockIdSet(&((pointer)->ip_blkid), blockNumber)
|
AssertMacro(PointerIsValid(pointer)), \
|
||||||
|
BlockIdSet(&((pointer)->ip_blkid), blockNumber) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSetOffsetNumber --
|
* ItemPointerSetOffsetNumber --
|
||||||
* Sets a disk item pointer to the specified offset.
|
* Sets a disk item pointer to the specified offset.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSetOffsetNumber(pointer, offsetNumber) \
|
#define ItemPointerSetOffsetNumber(pointer, offsetNumber) \
|
||||||
AssertMacro(PointerIsValid(pointer)); \
|
( \
|
||||||
(pointer)->ip_posid = (offsetNumber)
|
AssertMacro(PointerIsValid(pointer)), \
|
||||||
|
(pointer)->ip_posid = (offsetNumber) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerCopy --
|
* ItemPointerCopy --
|
||||||
* Copies the contents of one disk item pointer to another.
|
* Copies the contents of one disk item pointer to another.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerCopy(fromPointer, toPointer) \
|
#define ItemPointerCopy(fromPointer, toPointer) \
|
||||||
Assert(PointerIsValid(toPointer)); \
|
( \
|
||||||
Assert(PointerIsValid(fromPointer)); \
|
AssertMacro(PointerIsValid(toPointer)), \
|
||||||
*(toPointer) = *(fromPointer)
|
AssertMacro(PointerIsValid(fromPointer)), \
|
||||||
|
*(toPointer) = *(fromPointer) \
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSetInvalid --
|
* ItemPointerSetInvalid --
|
||||||
* Sets a disk item pointer to be invalid.
|
* Sets a disk item pointer to be invalid.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSetInvalid(pointer) \
|
#define ItemPointerSetInvalid(pointer) \
|
||||||
Assert(PointerIsValid(pointer)); \
|
( \
|
||||||
BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber); \
|
AssertMacro(PointerIsValid(pointer)), \
|
||||||
(pointer)->ip_posid = InvalidOffsetNumber
|
BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \
|
||||||
|
(pointer)->ip_posid = InvalidOffsetNumber \
|
||||||
|
)
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* externs
|
* externs
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: lock.h,v 1.11 1998/02/26 04:43:28 momjian Exp $
|
* $Id: lock.h,v 1.12 1998/06/15 18:40:03 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -191,8 +191,10 @@ typedef struct Lock
|
|||||||
#define LockGetLock_nHolders(l) l->nHolders
|
#define LockGetLock_nHolders(l) l->nHolders
|
||||||
|
|
||||||
#define LockDecrWaitHolders(lock, lockt) \
|
#define LockDecrWaitHolders(lock, lockt) \
|
||||||
lock->nHolding--; \
|
( \
|
||||||
lock->holders[lockt]--
|
lock->nHolding--, \
|
||||||
|
lock->holders[lockt]-- \
|
||||||
|
)
|
||||||
|
|
||||||
#define LockLockTable() SpinAcquire(LockMgrLock);
|
#define LockLockTable() SpinAcquire(LockMgrLock);
|
||||||
#define UnlockLockTable() SpinRelease(LockMgrLock);
|
#define UnlockLockTable() SpinRelease(LockMgrLock);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.34 1998/05/06 23:25:14 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.35 1998/06/15 18:40:04 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -209,19 +209,22 @@ extern void s_lock(slock_t *lock);
|
|||||||
|
|
||||||
#else /* S_LOCK_DEBUG */
|
#else /* S_LOCK_DEBUG */
|
||||||
|
|
||||||
#define S_LOCK(lock) if (1) { \
|
#define S_LOCK(lock) \
|
||||||
|
do { \
|
||||||
int spins = 0; \
|
int spins = 0; \
|
||||||
while (TAS(lock)) { \
|
while (TAS(lock)) \
|
||||||
|
{ \
|
||||||
struct timeval delay; \
|
struct timeval delay; \
|
||||||
delay.tv_sec = 0; \
|
delay.tv_sec = 0; \
|
||||||
delay.tv_usec = s_spincycle[spins++ % S_NSPINCYCLE]; \
|
delay.tv_usec = s_spincycle[spins++ % S_NSPINCYCLE]; \
|
||||||
(void) select(0, NULL, NULL, NULL, &delay); \
|
(void) select(0, NULL, NULL, NULL, &delay); \
|
||||||
if (spins > S_MAX_BUSY) { \
|
if (spins > S_MAX_BUSY) \
|
||||||
|
{ \
|
||||||
/* It's been well over a minute... */ \
|
/* It's been well over a minute... */ \
|
||||||
s_lock_stuck(lock, __FILE__, __LINE__); \
|
s_lock_stuck(lock, __FILE__, __LINE__); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} else
|
} while(0)
|
||||||
|
|
||||||
#endif /* S_LOCK_DEBUG */
|
#endif /* S_LOCK_DEBUG */
|
||||||
#endif /* S_LOCK */
|
#endif /* S_LOCK */
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: exc.h,v 1.12 1998/02/26 04:43:59 momjian Exp $
|
* $Id: exc.h,v 1.13 1998/06/15 18:40:05 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -47,23 +47,28 @@ typedef struct ExcFrame
|
|||||||
|
|
||||||
extern ExcFrame *ExcCurFrameP;
|
extern ExcFrame *ExcCurFrameP;
|
||||||
|
|
||||||
|
/* These are not used anywhere 1998/6/15 */
|
||||||
#define ExcBegin() \
|
#define ExcBegin() \
|
||||||
{ \
|
do { \
|
||||||
ExcFrame exception; \
|
ExcFrame exception; \
|
||||||
\
|
\
|
||||||
exception.link = ExcCurFrameP; \
|
exception.link = ExcCurFrameP; \
|
||||||
if (sigsetjmp(exception.context, 1) == 0) { \
|
if (sigsetjmp(exception.context, 1) == 0) \
|
||||||
ExcCurFrameP = &exception; \
|
{ \
|
||||||
{
|
ExcCurFrameP = &exception;
|
||||||
|
|
||||||
#define ExcExcept() \
|
#define ExcExcept() \
|
||||||
} \
|
} \
|
||||||
ExcCurFrameP = exception.link; \
|
ExcCurFrameP = exception.link; \
|
||||||
} else { \
|
} \
|
||||||
|
else \
|
||||||
|
{ \
|
||||||
{
|
{
|
||||||
|
|
||||||
#define ExcEnd() \
|
#define ExcEnd() \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
}
|
} while(0)
|
||||||
|
|
||||||
#define raise4(x, t, d, message) \
|
#define raise4(x, t, d, message) \
|
||||||
ExcRaise(&(x), (ExcDetail)(t), (ExcData)(d), (ExcMessage)(message))
|
ExcRaise(&(x), (ExcDetail)(t), (ExcData)(d), (ExcMessage)(message))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user