postgresql/src/include/catalog
Tom Lane 8cf0208b70 Avoid changing an index's indcheckxmin horizon during REINDEX.
There can never be a need to push the indcheckxmin horizon forward, since
any HOT chains that are actually broken with respect to the index must
pre-date its original creation.  So we can just avoid changing pg_index
altogether during a REINDEX operation.

This offers a cleaner solution than my previous patch for the problem
found a few days ago that we mustn't try to update pg_index while we are
reindexing it.  System catalog indexes will always be created with
indcheckxmin = false during initdb, and with this modified code we should
never try to change their pg_index entries.  This avoids special-casing
system catalogs as the former patch did, and should provide a performance
benefit for many cases where REINDEX formerly caused an index to be
considered unusable for a short time.

Back-patch to 8.3 to cover all versions containing HOT.  Note that this
patch changes the API for index_build(), but I believe it is unlikely that
any add-on code is calling that directly.
2011-04-19 18:51:12 -04:00
..
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:12 +02:00
catalog.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
catversion.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
dependency.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
duplicate_oids Change the bootstrap sequence so that toast tables for system catalogs are 2006-07-31 01:16:38 +00:00
heap.h Prevent a rowtype from being included in itself. 2011-03-28 15:45:14 -04:00
index.h Avoid changing an index's indcheckxmin horizon during REINDEX. 2011-04-19 18:51:12 -04:00
indexing.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
namespace.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_aggregate.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_am.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_amop.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_amproc.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_attrdef.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_attribute.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_auth_members.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_authid.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_autovacuum.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_cast.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_class.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_constraint.h Fix ALTER INDEX RENAME so that if the index belongs to a unique or primary key 2008-01-17 18:56:54 +00:00
pg_control.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_conversion.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_database.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_depend.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_description.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_enum.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_index.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_inherits.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_language.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_largeobject.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_listener.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_namespace.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_opclass.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_operator.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_opfamily.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_pltemplate.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_proc.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_rewrite.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_shdepend.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_shdescription.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_statistic.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_tablespace.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_trigger.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_ts_config.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_ts_config_map.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_ts_dict.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_ts_parser.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_ts_template.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
pg_type.h Repair a longstanding bug in CLUSTER and the rewriting variants of ALTER 2009-02-24 01:38:49 +00:00
toasting.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
unused_oids Change the bootstrap sequence so that toast tables for system catalogs are 2006-07-31 01:16:38 +00:00