While looking at the HOT patch, I noticed that if there's an index tuple pointing to a non-existing heap tuple, we just silently ignore it.
Such dangling index entries of course means that your database is corrupt, but we ought to handle that better. In the worst case, the heap slot is inserted to in the future, and then the bogus index entry points to a wrong tuple. ISTM we should print a warning suggesting a REINDEX, and kill the index tuple. Killing tuples in the face of corruption is dangerous, but in this case I think it's the right thing to do. We could also just emit the warning, but that could fill the logs quickly if the index tuple is accessed frequently. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match