*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.72 2001/06/12 05:55:49 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.73 2001/08/23 23:06:37 tgl Exp $
*
* NOTES
* The old interface functions have been converted to macros
result = ObjectIdGetDatum(tup->t_data->t_oid);
break;
case MinTransactionIdAttributeNumber:
- /* XXX should have a TransactionIdGetDatum macro */
- result = (Datum) (tup->t_data->t_xmin);
+ result = TransactionIdGetDatum(tup->t_data->t_xmin);
break;
case MinCommandIdAttributeNumber:
- /* XXX should have a CommandIdGetDatum macro */
- result = (Datum) (tup->t_data->t_cmin);
+ result = CommandIdGetDatum(tup->t_data->t_cmin);
break;
case MaxTransactionIdAttributeNumber:
- /* XXX should have a TransactionIdGetDatum macro */
- result = (Datum) (tup->t_data->t_xmax);
+ result = TransactionIdGetDatum(tup->t_data->t_xmax);
break;
case MaxCommandIdAttributeNumber:
- /* XXX should have a CommandIdGetDatum macro */
- result = (Datum) (tup->t_data->t_cmax);
+ result = CommandIdGetDatum(tup->t_data->t_cmax);
break;
case TableOidAttributeNumber:
result = ObjectIdGetDatum(tup->t_tableOid);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.124 2001/08/10 18:57:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.125 2001/08/23 23:06:37 tgl Exp $
*
*
* INTERFACE ROUTINES
* update then some other xaction could update this tuple before
* we got to this point.
*/
- if (tp.t_data->t_xmax != xwait)
+ if (!TransactionIdEquals(tp.t_data->t_xmax, xwait))
goto l1;
if (!(tp.t_data->t_infomask & HEAP_XMAX_COMMITTED))
{
* update then some other xaction could update this tuple before
* we got to this point.
*/
- if (oldtup.t_data->t_xmax != xwait)
+ if (!TransactionIdEquals(oldtup.t_data->t_xmax, xwait))
goto l2;
if (!(oldtup.t_data->t_infomask & HEAP_XMAX_COMMITTED))
{
* update then some other xaction could update this tuple before
* we got to this point.
*/
- if (tuple->t_data->t_xmax != xwait)
+ if (!TransactionIdEquals(tuple->t_data->t_xmax, xwait))
goto l3;
if (!(tuple->t_data->t_infomask & HEAP_XMAX_COMMITTED))
{
htup->t_hoff = xlhdr.t_hoff;
htup->t_xmin = record->xl_xid;
htup->t_cmin = FirstCommandId;
- htup->t_xmax = htup->t_cmax = 0;
+ htup->t_xmax = InvalidTransactionId;
+ htup->t_cmax = FirstCommandId;
htup->t_infomask = HEAP_XMAX_INVALID | xlhdr.mask;
offnum = PageAddItem(page, (Item) htup, newlen, offnum,
{
htup->t_xmin = record->xl_xid;
htup->t_cmin = FirstCommandId;
- htup->t_xmax = htup->t_cmax = 0;
+ htup->t_xmax = InvalidTransactionId;
+ htup->t_cmax = FirstCommandId;
htup->t_infomask = HEAP_XMAX_INVALID | xlhdr.mask;
}
htup = (HeapTupleHeader) PageGetItem(page, lp);
- if (htup->t_xmax != GetCurrentTransactionId() ||
+ if (!TransactionIdEquals(htup->t_xmax, GetCurrentTransactionId()) ||
htup->t_cmax != GetCurrentCommandId())
elog(STOP, "_heap_unlock_tuple: invalid xmax/cmax in rollback");
htup->t_infomask &= ~HEAP_XMAX_UNLOGGED;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.84 2001/07/15 22:48:16 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.85 2001/08/23 23:06:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/*
* _bt_check_unique() -- Check for violation of unique index constraint
*
- * Returns NullTransactionId if there is no conflict, else an xact ID we
- * must wait for to see if it commits a conflicting tuple. If an actual
+ * Returns InvalidTransactionId if there is no conflict, else an xact ID
+ * we must wait for to see if it commits a conflicting tuple. If an actual
* conflict is detected, no return --- just elog().
*/
static TransactionId
if (nbuf != InvalidBuffer)
_bt_relbuf(rel, nbuf);
- return NullTransactionId;
+ return InvalidTransactionId;
}
/*----------
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.45 2001/07/12 04:11:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.46 2001/08/23 23:06:37 tgl Exp $
*
* NOTES
* This file contains the high level access-method interface to the
* Single-item cache for results of TransactionLogTest.
* ----------------
*/
-static TransactionId cachedTestXid = NullTransactionId;
+static TransactionId cachedTestXid = InvalidTransactionId;
static XidStatus cachedTestXidStatus;
/* ----------------
/*
* if we have a virgin database, we initialize the log relation by
- * committing the AmiTransactionId and we initialize the
+ * committing the BootstrapTransactionId and we initialize the
* variable relation by setting the next available transaction id to
- * FirstTransactionId. OID initialization happens as a side
+ * FirstNormalTransactionId. OID initialization happens as a side
* effect of bootstrapping in varsup.c.
*/
SpinAcquire(OidGenLockId);
- if (!TransactionIdDidCommit(AmiTransactionId))
+ if (!TransactionIdDidCommit(BootstrapTransactionId))
{
- TransactionLogUpdate(AmiTransactionId, XID_COMMIT);
+ TransactionLogUpdate(BootstrapTransactionId, XID_COMMIT);
Assert(!IsUnderPostmaster &&
- ShmemVariableCache->nextXid <= FirstTransactionId);
- ShmemVariableCache->nextXid = FirstTransactionId;
+ TransactionIdEquals(ShmemVariableCache->nextXid,
+ FirstNormalTransactionId));
+ ShmemVariableCache->nextXid = FirstNormalTransactionId;
}
else if (RecoveryCheckingEnabled())
{
* Copyright (c) 2000, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.43 2001/08/10 18:57:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.44 2001/08/23 23:06:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
*/
if (AMI_OVERRIDE)
{
- *xid = AmiTransactionId;
+ *xid = BootstrapTransactionId;
return;
}
*xid = ShmemVariableCache->nextXid;
- (ShmemVariableCache->nextXid)++;
+ TransactionIdAdvance(ShmemVariableCache->nextXid);
/*
* Must set MyProc->xid before releasing XidGenLock. This ensures that
*/
if (AMI_OVERRIDE)
{
- *xid = AmiTransactionId;
+ *xid = BootstrapTransactionId;
return;
}
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: xid.c,v 1.31 2001/07/12 04:11:13 tgl Exp $
+ * $Id: xid.c,v 1.32 2001/08/23 23:06:37 tgl Exp $
*
* OLD COMMENTS
* XXX WARNING
#include "access/xact.h"
-/*
- * TransactionId is typedef'd as uint32, so...
- */
-#define PG_GETARG_TRANSACTIONID(n) PG_GETARG_UINT32(n)
-#define PG_RETURN_TRANSACTIONID(x) PG_RETURN_UINT32(x)
+#define PG_GETARG_TRANSACTIONID(n) DatumGetTransactionId(PG_GETARG_DATUM(n))
+#define PG_RETURN_TRANSACTIONID(x) return TransactionIdGetDatum(x)
Datum
xidout(PG_FUNCTION_ARGS)
{
TransactionId transactionId = PG_GETARG_TRANSACTIONID(0);
-
/* maximum 32 bit unsigned integer representation takes 10 chars */
char *representation = palloc(11);
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.73 2001/08/10 18:57:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.74 2001/08/23 23:06:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
checkPoint.redo.xrecoff = SizeOfXLogPHD;
checkPoint.undo = checkPoint.redo;
checkPoint.ThisStartUpID = 0;
- checkPoint.nextXid = FirstTransactionId;
+ checkPoint.nextXid = FirstNormalTransactionId;
checkPoint.nextOid = BootstrapObjectIdData;
checkPoint.time = time(NULL);
wasShutdown ? "TRUE" : "FALSE");
elog(LOG, "next transaction id: %u; next oid: %u",
checkPoint.nextXid, checkPoint.nextOid);
- if (checkPoint.nextXid < FirstTransactionId)
+ if (!TransactionIdIsNormal(checkPoint.nextXid))
elog(STOP, "invalid next transaction id");
ShmemVariableCache->nextXid = checkPoint.nextXid;
if (XLByteLT(checkPoint.redo, RecPtr))
record = ReadRecord(&(checkPoint.redo), STOP, buffer);
else
-/* read past CheckPoint record */
+ {
+ /* read past CheckPoint record */
record = ReadRecord(NULL, LOG, buffer);
+ }
if (record != NULL)
{
ReadRecPtr.xlogid, ReadRecPtr.xrecoff);
do
{
- if (record->xl_xid >= ShmemVariableCache->nextXid)
- ShmemVariableCache->nextXid = record->xl_xid + 1;
+ /* nextXid must be beyond record's xid */
+ if (TransactionIdFollowsOrEquals(record->xl_xid,
+ ShmemVariableCache->nextXid))
+ {
+ ShmemVariableCache->nextXid = record->xl_xid;
+ TransactionIdAdvance(ShmemVariableCache->nextXid);
+ }
if (XLOG_DEBUG)
{
char buf[8192];
memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint));
/* In an ONLINE checkpoint, treat the counters like NEXTOID */
- if (ShmemVariableCache->nextXid < checkPoint.nextXid)
+ if (TransactionIdPrecedes(ShmemVariableCache->nextXid,
+ checkPoint.nextXid))
ShmemVariableCache->nextXid = checkPoint.nextXid;
if (ShmemVariableCache->nextOid < checkPoint.nextOid)
{
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlogutils.c,v 1.16 2001/06/29 21:08:24 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlogutils.c,v 1.17 2001/08/23 23:06:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
htup = (HeapTupleHeader) PageGetItem(page, lp);
Assert(PageGetSUI(page) == ThisStartUpID);
- if (htup->t_xmin != xid || htup->t_cmin != cid)
+ if (!TransactionIdEquals(htup->t_xmin, xid) || htup->t_cmin != cid)
{
UnlockAndReleaseBuffer(buffer);
return (-1);
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.95 2001/08/10 18:57:34 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.96 2001/08/23 23:06:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
* foreign referenced key value that's changing now has been
* updated once before in this transaction.
*/
- if (oldtup->t_data->t_xmin != GetCurrentTransactionId())
+ if (!TransactionIdEquals(oldtup->t_data->t_xmin,
+ GetCurrentTransactionId()))
prev_event = NULL;
else
prev_event =
* possibly referenced key value has changed in this
* transaction.
*/
- if (oldtup->t_data->t_xmin != GetCurrentTransactionId())
+ if (!TransactionIdEquals(oldtup->t_data->t_xmin,
+ GetCurrentTransactionId()))
break;
/*
*
* Copyright (c) 2001, PostgreSQL Global Development Group
*
- * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.6 2001/08/05 02:06:50 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.7 2001/08/23 23:06:37 tgl Exp $
* ----------
*/
#include "postgres.h"
* If not done for this transaction, read the statistics collector
* stats file into some hash tables.
*/
- if (pgStatDBHashXact != GetCurrentTransactionId())
+ if (!TransactionIdEquals(pgStatDBHashXact, GetCurrentTransactionId()))
{
pgstat_read_statsfile(&pgStatDBHash, MyDatabaseId,
- &pgStatBeTable, &pgStatNumBackends);
+ &pgStatBeTable, &pgStatNumBackends);
pgStatDBHashXact = GetCurrentTransactionId();
}
* stats file into some hash tables. Be careful with the read_statsfile()
* call below!
*/
- if (pgStatDBHashXact != GetCurrentTransactionId())
+ if (!TransactionIdEquals(pgStatDBHashXact, GetCurrentTransactionId()))
{
pgstat_read_statsfile(&pgStatDBHash, MyDatabaseId,
- &pgStatBeTable, &pgStatNumBackends);
+ &pgStatBeTable, &pgStatNumBackends);
pgStatDBHashXact = GetCurrentTransactionId();
}
* stats file into some hash tables. Be careful with the read_statsfile()
* call below!
*/
- if (pgStatDBHashXact != GetCurrentTransactionId())
+ if (!TransactionIdEquals(pgStatDBHashXact, GetCurrentTransactionId()))
{
pgstat_read_statsfile(&pgStatDBHash, MyDatabaseId,
- &pgStatBeTable, &pgStatNumBackends);
+ &pgStatBeTable, &pgStatNumBackends);
pgStatDBHashXact = GetCurrentTransactionId();
}
PgStat_StatBeEntry *
pgstat_fetch_stat_beentry(int beid)
{
- if (pgStatDBHashXact != GetCurrentTransactionId())
+ if (!TransactionIdEquals(pgStatDBHashXact, GetCurrentTransactionId()))
{
pgstat_read_statsfile(&pgStatDBHash, MyDatabaseId,
- &pgStatBeTable, &pgStatNumBackends);
+ &pgStatBeTable, &pgStatNumBackends);
pgStatDBHashXact = GetCurrentTransactionId();
}
int
pgstat_fetch_stat_numbackends(void)
{
- if (pgStatDBHashXact != GetCurrentTransactionId())
+ if (!TransactionIdEquals(pgStatDBHashXact, GetCurrentTransactionId()))
{
pgstat_read_statsfile(&pgStatDBHash, MyDatabaseId,
- &pgStatBeTable, &pgStatNumBackends);
+ &pgStatBeTable, &pgStatNumBackends);
pgStatDBHashXact = GetCurrentTransactionId();
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.37 2001/07/16 22:43:34 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.38 2001/08/23 23:06:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/* Fetch xid just once - see GetNewTransactionId */
TransactionId xid = proc->xid;
- if (! TransactionIdIsSpecial(xid))
+ if (TransactionIdIsNormal(xid))
{
if (TransactionIdPrecedes(xid, result))
result = xid;
xid = proc->xmin;
- if (! TransactionIdIsSpecial(xid))
+ if (TransactionIdIsNormal(xid))
if (TransactionIdPrecedes(xid, result))
result = xid;
}
* treat them as running anyway.
*/
if (proc == MyProc ||
- TransactionIdIsSpecial(xid) ||
- ! TransactionIdPrecedes(xid, snapshot->xmax))
+ ! TransactionIdIsNormal(xid) ||
+ TransactionIdFollowsOrEquals(xid, snapshot->xmax))
continue;
if (TransactionIdPrecedes(xid, snapshot->xmin))
SpinRelease(SInvalLock);
/* Serializable snapshot must be computed before any other... */
- Assert(MyProc->xmin != InvalidTransactionId);
+ Assert(TransactionIdIsValid(MyProc->xmin));
snapshot->xcnt = count;
return snapshot;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.91 2001/07/09 22:18:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.92 2001/08/23 23:06:38 tgl Exp $
*
* NOTES
* Outside modules can create a lock table and acquire/release
goto next_item;
/* If not allxids, ignore items that are of the wrong xid */
- if (!allxids && xid != holder->tag.xid)
+ if (!allxids && !TransactionIdEquals(xid, holder->tag.xid))
goto next_item;
HOLDER_PRINT("LockReleaseAll", holder);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.39 2001/07/16 22:43:34 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.40 2001/08/23 23:06:38 tgl Exp $
*
*-------------------------------------------------------------------------
*/
* when...
*/
- if (tuple->t_xmin >= snapshot->xmax)
+ if (TransactionIdFollowsOrEquals(tuple->t_xmin, snapshot->xmax))
return false;
- if (tuple->t_xmin >= snapshot->xmin)
+ if (TransactionIdFollowsOrEquals(tuple->t_xmin, snapshot->xmin))
{
uint32 i;
for (i = 0; i < snapshot->xcnt; i++)
{
- if (tuple->t_xmin == snapshot->xip[i])
+ if (TransactionIdEquals(tuple->t_xmin, snapshot->xip[i]))
return false;
}
}
tuple->t_infomask |= HEAP_XMAX_COMMITTED;
}
- if (tuple->t_xmax >= snapshot->xmax)
+ if (TransactionIdFollowsOrEquals(tuple->t_xmax, snapshot->xmax))
return true;
- if (tuple->t_xmax >= snapshot->xmin)
+ if (TransactionIdFollowsOrEquals(tuple->t_xmax, snapshot->xmin))
{
uint32 i;
for (i = 0; i < snapshot->xcnt; i++)
{
- if (tuple->t_xmax == snapshot->xip[i])
+ if (TransactionIdEquals(tuple->t_xmax, snapshot->xip[i]))
return true;
}
}
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: transam.h,v 1.37 2001/08/10 18:57:39 tgl Exp $
+ * $Id: transam.h,v 1.38 2001/08/23 23:06:38 tgl Exp $
*
*-------------------------------------------------------------------------
*/
* 128 bytes of pg_log available for special purposes such as version number
* storage. (Currently, we do not actually use them for anything.)
*
- * AmiTransactionId is the XID for "bootstrap" operations. It should always
- * be considered valid.
+ * BootstrapTransactionId is the XID for "bootstrap" operations. It should
+ * always be considered valid.
*
- * FirstTransactionId is the first "normal" transaction id.
+ * FirstNormalTransactionId is the first "normal" transaction id.
* ----------------
*/
-#define NullTransactionId ((TransactionId) 0)
-#define DisabledTransactionId ((TransactionId) 1)
-#define AmiTransactionId ((TransactionId) 512)
-#define FirstTransactionId ((TransactionId) 514)
+#define InvalidTransactionId ((TransactionId) 0)
+#define DisabledTransactionId ((TransactionId) 1)
+#define BootstrapTransactionId ((TransactionId) 512)
+#define FirstNormalTransactionId ((TransactionId) 514)
/* ----------------
* transaction ID manipulation macros
* ----------------
*/
-#define TransactionIdIsValid(xid) ((bool) ((xid) != NullTransactionId))
-#define TransactionIdIsSpecial(xid) ((bool) ((xid) < FirstTransactionId))
-#define TransactionIdEquals(id1, id2) ((bool) ((id1) == (id2)))
-#define TransactionIdPrecedes(id1, id2) ((bool) ((id1) < (id2)))
-#define TransactionIdStore(xid, dest) \
- (*((TransactionId*) (dest)) = (TransactionId) (xid))
-#define StoreInvalidTransactionId(dest) \
- (*((TransactionId*) (dest)) = NullTransactionId)
+#define TransactionIdIsValid(xid) ((xid) != InvalidTransactionId)
+#define TransactionIdIsNormal(xid) ((xid) >= FirstNormalTransactionId)
+#define TransactionIdEquals(id1, id2) ((id1) == (id2))
+#define TransactionIdPrecedes(id1, id2) ((id1) < (id2))
+#define TransactionIdPrecedesOrEquals(id1, id2) ((id1) <= (id2))
+#define TransactionIdFollows(id1, id2) ((id1) > (id2))
+#define TransactionIdFollowsOrEquals(id1, id2) ((id1) >= (id2))
+#define TransactionIdStore(xid, dest) (*(dest) = (xid))
+#define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId)
+/* advance a transaction ID variable, handling wraparound correctly */
+#define TransactionIdAdvance(dest) \
+ do { \
+ (dest)++; \
+ if ((dest) < FirstNormalTransactionId) \
+ (dest) = FirstNormalTransactionId; \
+ } while(0)
/* ----------------
* transaction status values
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: c.h,v 1.97 2001/07/11 22:12:43 momjian Exp $
+ * $Id: c.h,v 1.98 2001/08/23 23:06:38 tgl Exp $
*
*-------------------------------------------------------------------------
*/
typedef uint32 TransactionId;
-#define InvalidTransactionId 0
-
typedef uint32 CommandId;
-#define FirstCommandId 0
+#define FirstCommandId ((CommandId) 0)
/*
* Array indexing support
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1995, Regents of the University of California
*
- * $Id: postgres.h,v 1.50 2001/08/10 18:57:41 tgl Exp $
+ * $Id: postgres.h,v 1.51 2001/08/23 23:06:38 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#define ObjectIdGetDatum(X) ((Datum) SET_4_BYTES(X))
+/*
+ * DatumGetTransactionId
+ * Returns transaction identifier value of a datum.
+ */
+
+#define DatumGetTransactionId(X) ((TransactionId) GET_4_BYTES(X))
+
+/*
+ * TransactionIdGetDatum
+ * Returns datum representation for a transaction identifier.
+ */
+
+#define TransactionIdGetDatum(X) ((Datum) SET_4_BYTES((X)))
+
+/*
+ * DatumGetCommandId
+ * Returns command identifier value of a datum.
+ */
+
+#define DatumGetCommandId(X) ((CommandId) GET_4_BYTES(X))
+
+/*
+ * CommandIdGetDatum
+ * Returns datum representation for a command identifier.
+ */
+
+#define CommandIdGetDatum(X) ((Datum) SET_4_BYTES(X))
+
/*
* DatumGetPointer
* Returns pointer value of a datum.
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: tqual.h,v 1.32 2001/07/12 04:11:13 tgl Exp $
+ * $Id: tqual.h,v 1.33 2001/08/23 23:06:38 tgl Exp $
*
*-------------------------------------------------------------------------
*/
*/
#define HeapTupleSatisfiesVisibility(tuple, snapshot) \
( \
- TransactionIdEquals((tuple)->t_data->t_xmax, AmiTransactionId) ? \
+ TransactionIdEquals((tuple)->t_data->t_xmax, BootstrapTransactionId) ? \
false \
: \
( \