summaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorKevin Grittner2016-05-06 12:47:12 +0000
committerKevin Grittner2016-05-06 12:47:12 +0000
commit2cc41acd8fa3ebb8f0501c6102a253fb7053cf46 (patch)
treeda067fb39fbe366b6f15746173050582e2b8f56c /doc/src
parent9b66aa006f81b2705337ca223daeeabf4db6453a (diff)
Fix hash index vs "snapshot too old" problemms
Hash indexes are not WAL-logged, and so do not maintain the LSN of index pages. Since the "snapshot too old" feature counts on detecting error conditions using the LSN of a table and all indexes on it, this makes it impossible to safely do early vacuuming on any table with a hash index, so add this to the tests for whether the xid used to vacuum a table can be adjusted based on old_snapshot_threshold. While at it, add a paragraph to the docs for old_snapshot_threshold which specifically mentions this and other aspects of the feature which may otherwise surprise users. Problem reported and patch reviewed by Amit Kapila
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/config.sgml13
1 files changed, 13 insertions, 0 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 94001241fc4..3d6baadaff2 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2077,6 +2077,19 @@ include_dir 'conf.d'
allowed, please note that in many workloads extreme bloat or
transaction ID wraparound may occur in much shorter time frames.
</para>
+
+ <para>
+ This setting does not attempt to guarantee that an error will be
+ generated under any particular circumstances. In fact, if the
+ correct results can be generated from (for example) a cursor which
+ has materialized a result set, no error will be generated even if the
+ underlying rows in the referenced table have been vacuumed away.
+ Some tables cannot safely be vacuumed early, and so will not be
+ affected by this setting. Examples include system catalogs and any
+ table which has a hash index. For such tables this setting will
+ neither reduce bloat nor create a possibility of a <literal>snapshot
+ too old</> error on scanning.
+ </para>
</listitem>
</varlistentry>
</variablelist>