postgresql/src/backend/storage/ipc
Tom Lane e85a01df67 Clean up the representation of special snapshots by including a "method
pointer" in every Snapshot struct.  This allows removal of the case-by-case
tests in HeapTupleSatisfiesVisibility, which should make it a bit faster
(I didn't try any performance tests though).  More importantly, we are no
longer violating portable C practices by assuming that small integers are
distinct from all pointer values, and HeapTupleSatisfiesDirty no longer
has a non-reentrant API involving side-effects on a global variable.

There were a couple of places calling HeapTupleSatisfiesXXX routines
directly rather than through the HeapTupleSatisfiesVisibility macro.
Since these places had to be changed anyway, I chose to make them go
through the macro for uniformity.

Along the way I renamed HeapTupleSatisfiesSnapshot to HeapTupleSatisfiesMVCC
to emphasize that it's only used with MVCC-type snapshots.  I was sorely
tempted to rename HeapTupleSatisfiesVisibility to HeapTupleSatisfiesSnapshot,
but forebore for the moment to avoid confusion and reduce the likelihood that
this patch breaks some of the pending patches.  Might want to reconsider
doing that later.
2007-03-25 19:45:14 +00:00
..
ipc.c Add configure --enable-profiling to enable GCC profiling. Patches from 2007-02-21 15:12:39 +00:00
ipci.c Restructure autovacuum in two processes: a dummy process, which runs 2007-02-15 23:23:23 +00:00
Makefile Remove remains of old depend target. 2007-01-20 17:16:17 +00:00
pmsignal.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
procarray.c Clean up the representation of special snapshots by including a "method 2007-03-25 19:45:14 +00:00
README $Header: -> $PostgreSQL Changes ... 2003-11-29 19:52:15 +00:00
shmem.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
shmqueue.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
sinval.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
sinvaladt.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00

$PostgreSQL: pgsql/src/backend/storage/ipc/README,v 1.4 2003/11/29 19:51:56 pgsql Exp $
Mon Jul 18 11:09:22 PDT 1988  W.KLAS

Cache invalidation synchronization routines:
===========================================

The cache synchronization is done using a message queue. Every
backend can register a message which then has to be read by
all backends. A message read by all backends is removed from the 
queue automatically. If a message has been lost because the buffer
was full, all backends that haven't read this message will be
told that they have to reset their cache state. This is done
at the time when they try to read the message queue.

The message queue is implemented as a shared buffer segment. Actually,
the queue is a circle to allow fast inserting, reading (invalidate data) and
maintaining the buffer.