Tom Lane wrote: > "dx k9" <bitsandbytes88@xxxxxxxxxxx> writes: > > [ stuck reindex ] > > It turns out it was a temporary database and temporary table, that just > > wasn't there maybe it thought it was there from some type of snapshot then > > the next minute it was gone. > > Hmm, there is not any filter in ReindexDatabase() to exclude temp tables > of other backends, but it sure seems like there needs to be. CLUSTER > might have the same issue. I think we fixed this in VACUUM long ago, > but we need to check the other commands that grovel over all of a database. Was this ever fixed? I think it wasn't, because I don't see any check in ReindexDatabase. Here is a patch to add one. I examined cluster.c and it does seem to be missing a check too. I'm not sure where to add one though; the best choice would be the place where the list of rels is built, but that scans only pg_index, so it doesn't have access to the namespace of each rel. So one idea would be to get the pg_class row for each candidate, but that seems slow. Another idea would be to just add all the candidates and silently skip the temp indexes in cluster_rel. -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc.
Index: src/backend/commands/indexcmds.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/commands/indexcmds.c,v retrieving revision 1.162 diff -c -p -r1.162 indexcmds.c *** src/backend/commands/indexcmds.c 25 Aug 2007 19:08:19 -0000 1.162 --- src/backend/commands/indexcmds.c 25 Aug 2007 22:11:18 -0000 *************** ReindexDatabase(const char *databaseName *** 1292,1297 **** --- 1292,1301 ---- if (classtuple->relkind != RELKIND_RELATION) continue; + /* Skip temp tables of other backends; we can't reindex them at all */ + if (isOtherTempNamespace(classtuple->relnamespace)) + continue; + /* Check user/system classification, and optionally skip */ if (IsSystemClass(classtuple)) {
---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq