mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
This patch wraps all accesses to t_xmin, t_cmin, t_xmax, and t_cmax in
HeapTupleHeaderData in setter and getter macros called HeapTupleHeaderGetXmin, HeapTupleHeaderSetXmin etc. It also introduces a "virtual" field xvac by defining HeapTupleHeaderGetXvac and HeapTupleHeaderSetXvac. Xvac is used by VACUUM, in fact it is stored in t_cmin. Manfred Koizar
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
* ENHANCEMENTS, OR MODIFICATIONS.
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.30 2002/05/05 00:03:29 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.31 2002/06/15 19:54:24 momjian Exp $
|
||||
*
|
||||
**********************************************************************/
|
||||
|
||||
@@ -552,8 +552,8 @@ compile_plperl_function(Oid fn_oid, bool is_trigger)
|
||||
* This is needed because CREATE OR REPLACE FUNCTION can modify the
|
||||
* function's pg_proc entry without changing its OID.
|
||||
************************************************************/
|
||||
uptodate = (prodesc->fn_xmin == procTup->t_data->t_xmin &&
|
||||
prodesc->fn_cmin == procTup->t_data->t_cmin);
|
||||
uptodate = (prodesc->fn_xmin == HeapTupleHeaderGetXmin(procTup->t_data) &&
|
||||
prodesc->fn_cmin == HeapTupleHeaderGetCmin(procTup->t_data));
|
||||
|
||||
if (!uptodate)
|
||||
{
|
||||
@@ -586,8 +586,8 @@ compile_plperl_function(Oid fn_oid, bool is_trigger)
|
||||
elog(ERROR, "plperl: out of memory");
|
||||
MemSet(prodesc, 0, sizeof(plperl_proc_desc));
|
||||
prodesc->proname = strdup(internal_proname);
|
||||
prodesc->fn_xmin = procTup->t_data->t_xmin;
|
||||
prodesc->fn_cmin = procTup->t_data->t_cmin;
|
||||
prodesc->fn_xmin = HeapTupleHeaderGetXmin(procTup->t_data);
|
||||
prodesc->fn_cmin = HeapTupleHeaderGetCmin(procTup->t_data);
|
||||
|
||||
/************************************************************
|
||||
* Lookup the pg_language tuple by Oid
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* procedural language
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.41 2002/05/03 00:32:18 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.42 2002/06/15 19:54:24 momjian Exp $
|
||||
*
|
||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||
*
|
||||
@@ -188,8 +188,8 @@ plpgsql_compile(Oid fn_oid, int functype)
|
||||
|
||||
function->fn_name = strdup(NameStr(procStruct->proname));
|
||||
function->fn_oid = fn_oid;
|
||||
function->fn_xmin = procTup->t_data->t_xmin;
|
||||
function->fn_cmin = procTup->t_data->t_cmin;
|
||||
function->fn_xmin = HeapTupleHeaderGetXmin(procTup->t_data);
|
||||
function->fn_cmin = HeapTupleHeaderGetCmin(procTup->t_data);
|
||||
function->fn_functype = functype;
|
||||
|
||||
switch (functype)
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* procedural language
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.10 2001/10/25 05:50:20 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.11 2002/06/15 19:54:24 momjian Exp $
|
||||
*
|
||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||
*
|
||||
@@ -167,8 +167,8 @@ func_up_to_date(PLpgSQL_function * func)
|
||||
elog(ERROR, "plpgsql: cache lookup for proc %u failed",
|
||||
func->fn_oid);
|
||||
|
||||
result = (func->fn_xmin == procTup->t_data->t_xmin &&
|
||||
func->fn_cmin == procTup->t_data->t_cmin);
|
||||
result = (func->fn_xmin == HeapTupleHeaderGetXmin(procTup->t_data) &&
|
||||
func->fn_cmin == HeapTupleHeaderGetCmin(procTup->t_data));
|
||||
|
||||
ReleaseSysCache(procTup);
|
||||
|
||||
|
@@ -29,7 +29,7 @@
|
||||
* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.17 2002/03/29 19:06:27 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.18 2002/06/15 19:54:24 momjian Exp $
|
||||
*
|
||||
*********************************************************************
|
||||
*/
|
||||
@@ -1030,8 +1030,8 @@ PLy_procedure_get(FunctionCallInfo fcinfo, bool is_trigger)
|
||||
if (proc->me != plproc)
|
||||
elog(FATAL, "plpython: Aiieee, proc->me != plproc");
|
||||
/* did we find an up-to-date cache entry? */
|
||||
if (proc->fn_xmin != procTup->t_data->t_xmin ||
|
||||
proc->fn_cmin != procTup->t_data->t_cmin)
|
||||
if (proc->fn_xmin != HeapTupleHeaderGetXmin(procTup->t_data) ||
|
||||
proc->fn_cmin != HeapTupleHeaderGetCmin(procTup->t_data))
|
||||
{
|
||||
Py_DECREF(plproc);
|
||||
proc = NULL;
|
||||
@@ -1075,8 +1075,8 @@ PLy_procedure_create(FunctionCallInfo fcinfo, bool is_trigger,
|
||||
proc = PLy_malloc(sizeof(PLyProcedure));
|
||||
proc->proname = PLy_malloc(strlen(procName) + 1);
|
||||
strcpy(proc->proname, procName);
|
||||
proc->fn_xmin = procTup->t_data->t_xmin;
|
||||
proc->fn_cmin = procTup->t_data->t_cmin;
|
||||
proc->fn_xmin = HeapTupleHeaderGetXmin(procTup->t_data);
|
||||
proc->fn_cmin = HeapTupleHeaderGetCmin(procTup->t_data);
|
||||
PLy_typeinfo_init(&proc->result);
|
||||
for (i = 0; i < FUNC_MAX_ARGS; i++)
|
||||
PLy_typeinfo_init(&proc->args[i]);
|
||||
|
@@ -31,7 +31,7 @@
|
||||
* ENHANCEMENTS, OR MODIFICATIONS.
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.55 2002/05/24 21:04:34 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.56 2002/06/15 19:54:24 momjian Exp $
|
||||
*
|
||||
**********************************************************************/
|
||||
|
||||
@@ -987,8 +987,8 @@ compile_pltcl_function(Oid fn_oid, bool is_trigger)
|
||||
|
||||
prodesc = (pltcl_proc_desc *) Tcl_GetHashValue(hashent);
|
||||
|
||||
uptodate = (prodesc->fn_xmin == procTup->t_data->t_xmin &&
|
||||
prodesc->fn_cmin == procTup->t_data->t_cmin);
|
||||
uptodate = (prodesc->fn_xmin == HeapTupleHeaderGetXmin(procTup->t_data) &&
|
||||
prodesc->fn_cmin == HeapTupleHeaderGetCmin(procTup->t_data));
|
||||
|
||||
if (!uptodate)
|
||||
{
|
||||
@@ -1025,8 +1025,8 @@ compile_pltcl_function(Oid fn_oid, bool is_trigger)
|
||||
elog(ERROR, "pltcl: out of memory");
|
||||
MemSet(prodesc, 0, sizeof(pltcl_proc_desc));
|
||||
prodesc->proname = strdup(internal_proname);
|
||||
prodesc->fn_xmin = procTup->t_data->t_xmin;
|
||||
prodesc->fn_cmin = procTup->t_data->t_cmin;
|
||||
prodesc->fn_xmin = HeapTupleHeaderGetXmin(procTup->t_data);
|
||||
prodesc->fn_cmin = HeapTupleHeaderGetCmin(procTup->t_data);
|
||||
|
||||
/************************************************************
|
||||
* Lookup the pg_language tuple by Oid
|
||||
|
Reference in New Issue
Block a user