summaryrefslogtreecommitdiff
path: root/src/backend/storage/ipc/sinval.c
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>2000-11-05 22:50:21 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>2000-11-05 22:50:21 +0000
commitf0e37a85319e6c113ecd3303cddeb6edd5a6ac44 (patch)
treedcca7027e03e7c17aa482d420d9f691c02eb65a5 /src/backend/storage/ipc/sinval.c
parent7267fdd7a3ae0a8a169e9730bdfaa46fde7dd94b (diff)
New CHECKPOINT command.
Auto removing of offline log files and creating new file at checkpoint time.
Diffstat (limited to 'src/backend/storage/ipc/sinval.c')
-rw-r--r--src/backend/storage/ipc/sinval.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/backend/storage/ipc/sinval.c b/src/backend/storage/ipc/sinval.c
index 62023afa01c..c610147fc5f 100644
--- a/src/backend/storage/ipc/sinval.c
+++ b/src/backend/storage/ipc/sinval.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.21 2000/04/12 17:15:37 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.22 2000/11/05 22:50:20 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -369,3 +369,40 @@ GetSnapshotData(bool serializable)
snapshot->xcnt = count;
return snapshot;
}
+
+/*
+ * GetUndoRecPtr -- returns oldest PROC->logRec.
+ */
+XLogRecPtr GetUndoRecPtr(void);
+
+XLogRecPtr
+GetUndoRecPtr(void)
+{
+ SISeg *segP = shmInvalBuffer;
+ ProcState *stateP = segP->procState;
+ XLogRecPtr urec = {0, 0};
+ XLogRecPtr tempr;
+ int index;
+
+ SpinAcquire(SInvalLock);
+
+ for (index = 0; index < segP->maxBackends; index++)
+ {
+ SHMEM_OFFSET pOffset = stateP[index].procStruct;
+
+ if (pOffset != INVALID_OFFSET)
+ {
+ PROC *proc = (PROC *) MAKE_PTR(pOffset);
+ tempr = proc->logRec;
+ if (tempr.xrecoff == 0)
+ continue;
+ if (urec.xrecoff != 0 && XLByteLT(urec, tempr))
+ continue;
+ urec = tempr;
+ }
+ }
+
+ SpinRelease(SInvalLock);
+
+ return(urec);
+}