mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-28 00:21:50 +02:00
48165ec226
inputs have been converted to newstyle. This should go a long way towards fixing our portability problems with platforms where char and short parameters are passed differently from int-width parameters. Still more to do for the Alpha port however.
87 lines
2.1 KiB
C
87 lines
2.1 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* xid.c
|
|
* POSTGRES transaction identifier type.
|
|
*
|
|
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $Id: xid.c,v 1.28 2000/06/05 07:28:38 tgl Exp $
|
|
*
|
|
* OLD COMMENTS
|
|
* XXX WARNING
|
|
* Much of this file will change when we change our representation
|
|
* of transaction ids -cim 3/23/90
|
|
*
|
|
* It is time to make the switch from 5 byte to 4 byte transaction ids
|
|
* This file was totally reworked. -mer 5/22/92
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "postgres.h"
|
|
|
|
#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)
|
|
|
|
|
|
extern TransactionId NullTransactionId;
|
|
extern TransactionId DisabledTransactionId;
|
|
extern TransactionId AmiTransactionId;
|
|
extern TransactionId FirstTransactionId;
|
|
|
|
/* XXX name for catalogs */
|
|
Datum
|
|
xidin(PG_FUNCTION_ARGS)
|
|
{
|
|
char *representation = PG_GETARG_CSTRING(0);
|
|
|
|
PG_RETURN_TRANSACTIONID((TransactionId) atol(representation));
|
|
}
|
|
|
|
/* XXX name for catalogs */
|
|
Datum
|
|
xidout(PG_FUNCTION_ARGS)
|
|
{
|
|
TransactionId transactionId = PG_GETARG_TRANSACTIONID(0);
|
|
/* maximum 32 bit unsigned integer representation takes 10 chars */
|
|
char *representation = palloc(11);
|
|
|
|
snprintf(representation, 11, "%lu", (unsigned long) transactionId);
|
|
|
|
PG_RETURN_CSTRING(representation);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------
|
|
* xideq
|
|
* ----------------------------------------------------------------
|
|
*/
|
|
|
|
/*
|
|
* xideq - returns 1, iff xid1 == xid2
|
|
* 0 else;
|
|
*/
|
|
Datum
|
|
xideq(PG_FUNCTION_ARGS)
|
|
{
|
|
TransactionId xid1 = PG_GETARG_TRANSACTIONID(0);
|
|
TransactionId xid2 = PG_GETARG_TRANSACTIONID(1);
|
|
|
|
PG_RETURN_BOOL(xid1 == xid2);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------
|
|
* TransactionIdAdd
|
|
* ----------------------------------------------------------------
|
|
*/
|
|
void
|
|
TransactionIdAdd(TransactionId *xid, int value)
|
|
{
|
|
*xid += value;
|
|
}
|