head	1.19;
access;
symbols
	REL9_0_0:1.19
	REL9_1_ALPHA1:1.19
	REL9_0_RC1:1.19
	REL9_0_BETA4:1.19
	REL9_0_STABLE:1.19.0.14
	REL9_0_BETA3:1.19
	REL9_0_BETA2:1.19
	REL7_4_29:1.12
	REL8_0_25:1.13
	REL8_1_21:1.13
	REL8_2_17:1.13
	REL8_3_11:1.17
	REL8_4_4:1.19
	REL9_0_BETA1:1.19
	REL9_0_ALPHA5_BRANCH:1.19.0.12
	REL9_0_ALPHA5:1.19
	REL7_4_28:1.12
	REL8_0_24:1.13
	REL8_1_20:1.13
	REL8_2_16:1.13
	REL8_3_10:1.17
	REL8_4_3:1.19
	REL9_0_ALPHA4:1.19
	REL9_0_ALPHA4_BRANCH:1.19.0.10
	REL8_5_ALPHA3:1.19
	REL8_5_ALPHA3_BRANCH:1.19.0.8
	REL7_4_27:1.12
	REL8_0_23:1.13
	REL8_1_19:1.13
	REL8_2_15:1.13
	REL8_3_9:1.17
	REL8_4_2:1.19
	REL8_5_ALPHA2:1.19
	REL8_5_ALPHA2_BRANCH:1.19.0.6
	REL7_4_26:1.12
	REL8_0_22:1.13
	REL8_1_18:1.13
	REL8_2_14:1.13
	REL8_3_8:1.17
	REL8_4_1:1.19
	REL8_5_ALPHA1:1.19
	REL8_5_ALPHA1_BRANCH:1.19.0.4
	REL8_4_STABLE:1.19.0.2
	REL8_4_0:1.19
	REL8_4_RC2:1.19
	REL8_4_RC1:1.19
	REL8_4_BETA2:1.19
	REL8_4_BETA1:1.19
	REL7_4_25:1.12
	REL8_0_21:1.13
	REL8_1_17:1.13
	REL8_2_13:1.13
	REL8_3_7:1.17
	REL7_4_24:1.12
	REL8_0_20:1.13
	REL8_1_16:1.13
	REL8_2_12:1.13
	REL8_3_6:1.17
	REL7_4_23:1.12
	REL8_0_19:1.13
	REL8_1_15:1.13
	REL8_2_11:1.13
	REL8_3_5:1.17
	REL7_4_22:1.12
	REL8_0_18:1.13
	REL8_1_14:1.13
	REL8_2_10:1.13
	REL8_3_4:1.17
	REL7_4_21:1.12
	REL8_0_17:1.13
	REL8_1_13:1.13
	REL8_2_9:1.13
	REL8_3_3:1.17
	REL7_4_20:1.12
	REL8_0_16:1.13
	REL8_1_12:1.13
	REL8_2_8:1.13
	REL8_3_2:1.17
	REL8_2_7:1.13
	REL8_3_1:1.17
	REL8_3_STABLE:1.17.0.2
	REL8_3_0:1.17
	REL8_3_RC2:1.17
	REL7_3_21:1.12
	REL7_4_19:1.12
	REL8_0_15:1.13
	REL8_1_11:1.13
	REL8_2_6:1.13
	REL8_3_RC1:1.17
	REL8_3_BETA4:1.17
	REL8_3_BETA3:1.17
	REL8_3_BETA2:1.17
	REL8_3_BETA1:1.17
	REL7_3_20:1.12
	REL7_4_18:1.12
	REL8_0_14:1.13
	REL8_1_10:1.13
	REL8_2_5:1.13
	REL7_3_19:1.12
	REL7_4_17:1.12
	REL8_0_13:1.13
	REL8_1_9:1.13
	REL8_2_4:1.13
	REL8_0_12:1.13
	REL8_1_8:1.13
	REL8_2_3:1.13
	REL7_3_18:1.12
	REL7_4_16:1.12
	REL8_0_11:1.13
	REL8_1_7:1.13
	REL8_2_2:1.13
	REL8_0_10:1.13
	REL8_1_6:1.13
	REL8_2_1:1.13
	REL7_4_15:1.12
	REL7_3_17:1.12
	REL8_2_STABLE:1.13.0.8
	REL8_2_0:1.13
	REL8_2_RC1:1.13
	REL8_2_BETA3:1.13
	REL8_2_BETA2:1.13
	REL8_1_5:1.13
	REL8_0_9:1.13
	REL7_4_14:1.12
	REL7_3_16:1.12
	REL8_2_BETA1:1.13
	REL7_3_15:1.12
	REL7_4_13:1.12
	REL8_0_8:1.13
	REL8_1_4:1.13
	REL7_3_14:1.12
	REL7_4_12:1.12
	REL8_0_7:1.13
	REL8_1_3:1.13
	REL7_3_13:1.12
	REL7_4_11:1.12
	REL8_0_6:1.13
	REL8_1_2:1.13
	REL7_3_12:1.12
	REL7_4_10:1.12
	REL8_0_5:1.13
	REL8_1_1:1.13
	REL8_1_STABLE:1.13.0.6
	REL8_1_0:1.13
	REL8_1_0RC1:1.13
	REL8_1_0BETA4:1.13
	REL8_1_0BETA3:1.13
	REL7_3_11:1.12
	REL7_4_9:1.12
	REL8_0_4:1.13
	REL8_1_0BETA2:1.13
	REL8_1_0BETA1:1.13
	REL7_2_8:1.12
	REL7_3_10:1.12
	REL7_4_8:1.12
	REL8_0_3:1.13
	REL8_0_2:1.13
	REL7_2_7:1.12
	REL7_3_9:1.12
	REL7_4_7:1.12
	REL8_0_1:1.13
	REL8_0_STABLE:1.13.0.4
	REL8_0_0:1.13.0.2
	REL8_0_0RC5:1.13
	REL8_0_0RC4:1.13
	REL8_0_0RC3:1.13
	REL8_0_0RC2:1.13
	REL8_0_0RC1:1.13
	REL8_0_0BETA5:1.13
	REL8_0_0BETA4:1.13
	REL7_4_6:1.12
	REL7_3_8:1.12
	REL7_2_6:1.12
	REL8_0_0BETA3:1.13
	REL8_0_0BETA2:1.13
	REL7_2_5:1.12
	REL7_4_5:1.12
	REL7_3_7:1.12
	REL7_4_4:1.12
	REL8_0_0BETA1:1.13
	REL7_4_3:1.12
	REL7_4_2:1.12
	REL7_3_6:1.12
	REL7_4_1:1.12
	REL7_3_5:1.12
	REL7_4:1.12
	REL7_4_RC2:1.12
	REL7_4_STABLE:1.12.0.8
	REL7_4_RC1:1.12
	REL7_4_BETA5:1.12
	REL7_4_BETA4:1.12
	REL7_4_BETA3:1.12
	REL7_4_BETA2:1.12
	WIN32_DEV:1.12.0.6
	REL7_4_BETA1:1.12
	REL7_3_4:1.12
	REL7_3_2:1.12
	REL7_2_4:1.12
	REL7_3_STABLE:1.12.0.4
	REL7_2_3:1.12
	REL7_2_STABLE:1.12.0.2
	REL7_2:1.12
	REL7_2_RC2:1.12
	REL7_2_RC1:1.12
	REL7_2_BETA5:1.12
	REL7_2_BETA4:1.12
	REL7_2_BETA3:1.12
	REL7_2_BETA2:1.12
	REL7_2_BETA1:1.11
	REL7_1_2:1.11
	REL7_1_STABLE:1.11.0.2
	REL7_1_BETA:1.11
	REL7_1_BETA3:1.11
	REL7_1_BETA2:1.11
	REL7_1:1.11
	REL7_0_PATCHES:1.9.0.2
	REL7_0:1.9
	REL6_5_PATCHES:1.6.0.4
	REL6_5:1.6
	REL6_4:1.6.0.2
	release-6-3:1.5
	REL2_0B:1.3.0.2
	REL2_0:1.3;
locks; strict;
comment	@# @;


1.19
date	2008.12.03.13.05.22;	author heikki;	state Exp;
branches;
next	1.18;

1.18
date	2008.02.19.10.30.06;	author petere;	state Exp;
branches;
next	1.17;

1.17
date	2007.09.20.17.56.30;	author tgl;	state Exp;
branches;
next	1.16;

1.16
date	2007.06.08.18.23.52;	author tgl;	state Exp;
branches;
next	1.15;

1.15
date	2007.04.08.01.26.27;	author tgl;	state Exp;
branches;
next	1.14;

1.14
date	2007.01.20.17.16.10;	author petere;	state Exp;
branches;
next	1.13;

1.13
date	2003.11.29.19.51.40;	author pgsql;	state Exp;
branches;
next	1.12;

1.12
date	2001.11.02.16.30.29;	author tgl;	state Exp;
branches;
next	1.11;

1.11
date	2000.08.31.16.09.33;	author petere;	state Exp;
branches;
next	1.10;

1.10
date	2000.05.29.05.44.35;	author tgl;	state Exp;
branches;
next	1.9;

1.9
date	99.12.21.00.06.40;	author wieck;	state Exp;
branches;
next	1.8;

1.8
date	99.12.13.22.32.24;	author momjian;	state Exp;
branches;
next	1.7;

1.7
date	99.12.09.19.14.28;	author momjian;	state Exp;
branches;
next	1.6;

1.6
date	98.04.06.00.21.09;	author momjian;	state Exp;
branches;
next	1.5;

1.5
date	97.12.20.00.22.39;	author scrappy;	state Exp;
branches;
next	1.4;

1.4
date	97.12.17.04.31.00;	author scrappy;	state Exp;
branches;
next	1.3;

1.3
date	96.11.09.06.17.34;	author momjian;	state Exp;
branches;
next	1.2;

1.2
date	96.10.31.08.28.50;	author scrappy;	state Exp;
branches;
next	1.1;

1.1
date	96.10.27.09.46.16;	author bryanh;	state Exp;
branches;
next	;


desc
@@


1.19
log
@Introduce visibility map. The visibility map is a bitmap with one bit per
heap page, where a set bit indicates that all tuples on the page are
visible to all transactions, and the page therefore doesn't need
vacuuming. It is stored in a new relation fork.

Lazy vacuum uses the visibility map to skip pages that don't need
vacuuming. Vacuum is also responsible for setting the bits in the map.
In the future, this can hopefully be used to implement index-only-scans,
but we can't currently guarantee that the visibility map is always 100%
up-to-date.

In addition to the visibility map, there's a new PD_ALL_VISIBLE flag on
each heap page, also indicating that all tuples on the page are visible to
all transactions. It's important that this flag is kept up-to-date. It
is also used to skip visibility tests in sequential scans, which gives a
small performance gain on seqscans.
@
text
@#-------------------------------------------------------------------------
#
# Makefile--
#    Makefile for access/heap
#
# IDENTIFICATION
#    $PostgreSQL: pgsql/src/backend/access/heap/Makefile,v 1.18 2008/02/19 10:30:06 petere Exp $
#
#-------------------------------------------------------------------------

subdir = src/backend/access/heap
top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global

OBJS = heapam.o hio.o pruneheap.o rewriteheap.o syncscan.o tuptoaster.o visibilitymap.o

include $(top_srcdir)/src/backend/common.mk
@


1.18
log
@Refactor backend makefiles to remove lots of duplicate code
@
text
@d7 1
a7 1
#    $PostgreSQL: pgsql/src/backend/access/heap/Makefile,v 1.17 2007/09/20 17:56:30 tgl Exp $
d15 1
a15 1
OBJS = heapam.o hio.o pruneheap.o rewriteheap.o syncscan.o tuptoaster.o
@


1.17
log
@HOT updates.  When we update a tuple without changing any of its indexed
columns, and the new version can be stored on the same heap page, we no longer
generate extra index entries for the new version.  Instead, index searches
follow the HOT-chain links to ensure they find the correct tuple version.

In addition, this patch introduces the ability to "prune" dead tuples on a
per-page basis, without having to do a complete VACUUM pass to recover space.
VACUUM is still needed to clean up dead index entries, however.

Pavan Deolasee, with help from a bunch of other people.
@
text
@d7 1
a7 1
#    $PostgreSQL: pgsql/src/backend/access/heap/Makefile,v 1.16 2007/06/08 18:23:52 tgl Exp $
d17 1
a17 7
all: SUBSYS.o

SUBSYS.o: $(OBJS)
	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)

clean: 
	rm -f SUBSYS.o $(OBJS)
@


1.16
log
@Arrange for large sequential scans to synchronize with each other, so that
when multiple backends are scanning the same relation concurrently, each page
is (ideally) read only once.

Jeff Davis, with review by Heikki and Tom.
@
text
@d7 1
a7 1
#    $PostgreSQL: pgsql/src/backend/access/heap/Makefile,v 1.15 2007/04/08 01:26:27 tgl Exp $
d15 1
a15 1
OBJS = heapam.o hio.o rewriteheap.o syncscan.o tuptoaster.o
@


1.15
log
@Make CLUSTER MVCC-safe.  Heikki Linnakangas
@
text
@d7 1
a7 1
#    $PostgreSQL: pgsql/src/backend/access/heap/Makefile,v 1.14 2007/01/20 17:16:10 petere Exp $
d15 1
a15 1
OBJS = heapam.o hio.o rewriteheap.o tuptoaster.o
@


1.14
log
@Remove remains of old depend target.
@
text
@d7 1
a7 1
#    $PostgreSQL: pgsql/src/backend/access/heap/Makefile,v 1.13 2003/11/29 19:51:40 pgsql Exp $
d15 1
a15 1
OBJS = heapam.o hio.o tuptoaster.o
@


1.13
log
@
$Header: -> $PostgreSQL Changes ...
@
text
@d7 1
a7 1
#    $PostgreSQL: /cvsroot/pgsql-server/src/backend/access/heap/Makefile,v 1.12 2001/11/02 16:30:29 tgl Exp $
a21 3
depend dep:
	$(CC) -MM $(CFLAGS) *.c >depend

a23 5

ifeq (depend,$(wildcard depend))
include depend
endif

@


1.12
log
@Fix problem reported by Alex Korn: if a relation has been dropped and
recreated since the start of our transaction, our first reference to it
errored out because we'd try to reuse our old relcache entry for it.
Do this by accepting SI inval messages just before relcache search in
heap_openr, so that dead relcache entries will be flushed before we
search.  Also, break heap_open/openr into two pairs of routines,
relation_open(r) and heap_open(r).  The relation_open routines make
no tests on relkind and so can be used to open anything that has a
pg_class entry.  The heap_open routines are wrappers that add a relkind
test to preserve their established behavior.  Use the relation_open
routines in several places that had various kluge solutions for opening
rels that might be either heap or index rels.

Also, remove the old 'heap stats' code that's been superseded by Jan's
stats collector, and clean up some inconsistencies in error reporting
between the different types of ALTER TABLE.
@
text
@d7 1
a7 1
#    $Header: /cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.11 2000/08/31 16:09:33 petere Exp $
@


1.11
log
@Fix relative path references so that make knowns which dependencies refer
to one another. Sort out builddir vs srcdir variable namings. Remove some
now obsoleted make variables.
@
text
@d7 1
a7 1
#    $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.10 2000/05/29 05:44:35 tgl Exp $
d15 1
a15 1
OBJS = heapam.o hio.o stats.o tuptoaster.o
@


1.10
log
@Generated header files parse.h and fmgroids.h are now copied into
the src/include tree, so that -I backend is no longer necessary anywhere.
Also, clean up some bit rot in contrib tree.
@
text
@d7 1
a7 1
#    $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.9 1999/12/21 00:06:40 wieck Exp $
d11 3
a13 2
SRCDIR = ../../..
include ../../../Makefile.global
@


1.9
log
@Added empty TOASTER files and corrected some minor glitches
in regression tests.

Jan
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.8 1999/12/13 22:32:24 momjian Exp $
a12 2

CFLAGS += -I../.. 
@


1.8
log
@New LDOUT makefile variable for QNX os.
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.7 1999/12/09 19:14:28 momjian Exp $
d16 1
a16 1
OBJS = heapam.o hio.o stats.o
@


1.7
log
@Make LD -r as macros that can be changed for QNX.
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.6 1998/04/06 00:21:09 momjian Exp $
d21 1
a21 1
	$(LD) $(LDREL) -o SUBSYS.o $(OBJS)
@


1.6
log
@Hi,

Attached you'll find a (big) patch that fixes make dep and make
depend in all Makefiles where I found it to be appropriate.

It also removes the dependency in Makefile.global for NAMEDATALEN
and OIDNAMELEN by making backend/catalog/genbki.sh and bin/initdb/initdb.sh
a little smarter.

This no longer requires initdb.sh that is turned into initdb with
a sed script when installing Postgres, hence initdb.sh should be
renamed to initdb (after the patch has been applied :-) )

This patch is against the 6.3 sources, as it took a while to
complete.

Please review and apply,

Cheers,

Jeroen van Vianen
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.5 1997/12/20 00:22:39 scrappy Exp $
d21 1
a21 1
	$(LD) -r -o SUBSYS.o $(OBJS)
@


1.5
log
@Major cleanout of PORTNAME variables from Makefiles...bound to screw up
some of the ports...
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.4 1997/12/17 04:31:00 scrappy Exp $
d14 1
a14 3
INCLUDE_OPT = -I../.. 

CFLAGS += $(INCLUDE_OPT)
d24 1
a24 1
	$(CC) -MM $(INCLUDE_OPT) *.c >depend
@


1.4
log
@Clean up the Makefiles

	Essentially, this cleans things up so that if PORTNAME isn't defined (I'm
    working on getting rid of it for FreeBSD, at least, to see if its possible)
    none of the PORTNAME related stuff gets passed around.

	Had a little bit of -I related redundancy as well
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/pgsql/src/backend/access/heap/Makefile,v 1.3 1996/11/09 06:17:34 momjian Exp $
a14 4

ifdef PORTNAME
INCLUDE_OPT += -I../../port/$(PORTNAME) 
endif
@


1.3
log
@Makefile cleanup after reorganization
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/postgres95/src/backend/access/heap/Makefile,v 1.2 1996/10/31 08:28:50 scrappy Exp $
d14 1
a14 3
INCLUDE_OPT = -I../.. \
              -I../../port/$(PORTNAME) \
              -I../../../include
d16 5
a20 1
CFLAGS+=$(INCLUDE_OPT)
@


1.2
log
@Cleaned out -I../.. -I../../include from Makefile

Added missing include files
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/postgres95/src/backend/access/heap/Makefile,v 1.1 1996/10/27 09:46:16 bryanh Exp $
d14 2
a15 1
INCLUDE_OPT = -I../../port/$(PORTNAME) \
@


1.1
log
@Simplify make files, add full dependencies.
@
text
@d7 1
a7 1
#    $Header: /usr/local/cvsroot/postgres95/src/backend/access/common/Makefile.inc,v 1.1.1.1 1996/07/09 06:21:09 scrappy Exp $
d14 1
a14 3
INCLUDE_OPT = -I../.. \
              -I../../port/$(PORTNAME) \
              -I../../include \
@
