#include "utils/builtins.h"
#include "utils/inval.h"
#include "utils/syscache.h"
+#include "utils/tqual.h"
DLLIMPORT TriggerData *CurrentTriggerData = NULL;
if (rettuple != NULL && rettuple != &oldtuple && rettuple != &newtuple)
pfree(rettuple);
+ /* ----------
+ * Might have been a referential integrity constraint trigger.
+ * Reset the snapshot overriding flag.
+ * ----------
+ */
+ ReferentialIntegritySnapshotOverride = false;
+
/* ----------
* Release buffers and close the relation
* ----------
*
* 1999 Jan Wieck
*
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.9 1999/12/08 20:41:22 wieck Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.10 1999/12/10 12:34:13 wieck Exp $
*
* ----------
*/
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
+ ReferentialIntegritySnapshotOverride = true;
/* ----------
* Check that this is a valid trigger call on the right time and event.
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.32 1999/10/06 21:58:11 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.33 1999/12/10 12:34:14 wieck Exp $
*
*-------------------------------------------------------------------------
*/
Snapshot QuerySnapshot = NULL;
Snapshot SerializableSnapshot = NULL;
+bool ReferentialIntegritySnapshotOverride = false;
+
/*
* XXX Transaction system override hacks start here
*/
if (AMI_OVERRIDE)
return true;
+ if (ReferentialIntegritySnapshotOverride)
+ return HeapTupleSatisfiesNow(tuple);
+
if (!(tuple->t_infomask & HEAP_XMIN_COMMITTED))
{
if (tuple->t_infomask & HEAP_XMIN_INVALID)
SetQuerySnapshot(void)
{
+ /* Initialize snapshot overriding to false */
+ ReferentialIntegritySnapshotOverride = false;
+
/* 1st call in xaction */
if (SerializableSnapshot == NULL)
{
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: tqual.h,v 1.25 1999/09/29 16:06:28 wieck Exp $
+ * $Id: tqual.h,v 1.26 1999/12/10 12:34:15 wieck Exp $
*
*-------------------------------------------------------------------------
*/
extern Snapshot QuerySnapshot;
extern Snapshot SerializableSnapshot;
+extern bool ReferentialIntegritySnapshotOverride;
+
#define IsSnapshotNow(snapshot) ((Snapshot) snapshot == SnapshotNow)
#define IsSnapshotSelf(snapshot) ((Snapshot) snapshot == SnapshotSelf)
#define IsSnapshotAny(snapshot) ((Snapshot) snapshot == SnapshotAny)