Wed May 9 06:39:52 PDT 2007
- Previous message: [Slony1-commit] slony1-engine/src/xxid xxid.c
- Next message: [Slony1-commit] slony1-engine/src/xxid xxid.c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Update of /home/cvsd/slony1/slony1-engine/src/xxid In directory main.slony.info:/tmp/cvs-serv12017 Modified Files: Tag: REL_1_2_STABLE xxid.c Log Message: Fix the xxid_snapshot for 8.3's packed varlena headers. Jan Index: xxid.c =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/src/xxid/xxid.c,v retrieving revision 1.12 retrieving revision 1.12.2.1 diff -C2 -d -r1.12 -r1.12.2.1 *** xxid.c 22 Jun 2006 14:14:42 -0000 1.12 --- xxid.c 9 May 2007 13:39:50 -0000 1.12.2.1 *************** *** 24,27 **** --- 24,37 ---- #endif + #ifndef SET_VARSIZE + #define SET_VARSIZE(PTR,len) (*((uint32 *)(PTR)) = (len) & 0x3FFFFFFF) + #endif + #ifndef VARDATA_ANY + #define VARDATA_ANY(PTR) VARDATA(PTR) + #endif + #ifndef PG_DETOAST_DATUM_PACKED + #define PG_DETOAST_DATUM_PACKED(X) PG_DETOAST_DATUM(X) + #endif + #ifndef PG_GETARG_TRANSACTIONID #define PG_GETARG_TRANSACTIONID(n) DatumGetTransactionId(PG_GETARG_DATUM(n)) *************** *** 34,38 **** typedef struct { - int32 varsz; TransactionId xmin; TransactionId xmax; --- 44,47 ---- *************** *** 261,264 **** --- 270,274 ---- TransactionId xmin; TransactionId xmax; + void *result; xxid_snapshot *snap; int size; *************** *** 318,323 **** size = offsetof(xxid_snapshot, xip) + sizeof(TransactionId) * a_used; ! snap = (xxid_snapshot *) palloc(size); ! snap->varsz = size; snap->xmin = xmin; snap->xmax = xmax; --- 328,334 ---- size = offsetof(xxid_snapshot, xip) + sizeof(TransactionId) * a_used; ! result = (void *) palloc(size + VARHDRSZ); ! SET_VARSIZE(result, size + VARHDRSZ); ! snap = (xxid_snapshot *) VARDATA(result); snap->xmin = xmin; snap->xmax = xmax; *************** *** 326,330 **** memcpy(&(snap->xip[0]), xip, sizeof(TransactionId) * a_used); ! PG_RETURN_POINTER(snap); } --- 337,341 ---- memcpy(&(snap->xip[0]), xip, sizeof(TransactionId) * a_used); ! PG_RETURN_POINTER(result); } *************** *** 336,340 **** _Slony_I_xxid_snapshot_out(PG_FUNCTION_ARGS) { ! xxid_snapshot *snap = (xxid_snapshot *) PG_GETARG_VARLENA_P(0); char *str = palloc(28 + snap->nxip * 13); --- 347,351 ---- _Slony_I_xxid_snapshot_out(PG_FUNCTION_ARGS) { ! xxid_snapshot *snap = (xxid_snapshot *) VARDATA_ANY(PG_DETOAST_DATUM_PACKED((PG_GETARG_DATUM(0)))); char *str = palloc(28 + snap->nxip * 13); *************** *** 364,368 **** { TransactionId value = PG_GETARG_TRANSACTIONID(0); ! xxid_snapshot *snap = (xxid_snapshot *) PG_GETARG_VARLENA_P(1); int i; --- 375,379 ---- { TransactionId value = PG_GETARG_TRANSACTIONID(0); ! xxid_snapshot *snap = (xxid_snapshot *) VARDATA_ANY(PG_DETOAST_DATUM_PACKED((PG_GETARG_DATUM(1)))); int i; *************** *** 390,394 **** { TransactionId value = PG_GETARG_TRANSACTIONID(0); ! xxid_snapshot *snap = (xxid_snapshot *) PG_GETARG_VARLENA_P(1); int i; --- 401,405 ---- { TransactionId value = PG_GETARG_TRANSACTIONID(0); ! xxid_snapshot *snap = (xxid_snapshot *) VARDATA_ANY(PG_DETOAST_DATUM_PACKED((PG_GETARG_DATUM(1)))); int i;
- Previous message: [Slony1-commit] slony1-engine/src/xxid xxid.c
- Next message: [Slony1-commit] slony1-engine/src/xxid xxid.c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list