|
|||||||||||
|
Re: [ADMIN] reindexdb hangs
From: Alvaro Herrera <alvherre(at)commandprompt.com>
Date: Wed Sep 12 2007 - 16:30:28 EDT
OK, I fixed it all the way back that it was needed: 7.4 for CLUSTER and 8.1 for REINDEX. Before 7.4 there wasn't a database-wide version of CLUSTER. This wasn't a very serious bug in any case, because it would have thrown an ERROR if it tried to cluster a remote temp table. So apparently no one ever saw it, because I can't remember any report about it. For REINDEX the story is very different, because what happens is that queries start silently returning wrong data. My test case was
alvherre=# create temp table foo (a int primary key);
NOTICE: CREATE TABLE / PRIMARY KEY creará el índice implícito «foo_pkey» para la tabla «foo»
CREATE TABLE
alvherre=# select * from foo where a = 400; a (0 rows) If you now REINDEX this table in the current session, it correctly returns one tuple. So if somebody is executing a procedure which involve temp tables and someone else concurrently does a REINDEX DATABASE, the queries of the first session are automatically corrupted. It seems like the worst kind of bug. Maybe we need additional protections on the bufmgr to prevent this kind of problem. We only introduced REINDEX DATABASE as a way to reindex user indexes in 8.1. Before that, it only considered system catalogs, which ISTM are never temp. Many thanks to dx k9 for the original report. -- Alvaro Herrera http://www.PlanetPostgreSQL.org/ "Endurecerse, pero jamás perder la ternura" (E. Guevara) ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settingsReceived on Wed Sep 12 16:32:53 2007 This archive was generated by hypermail 2.1.8 : Sun Oct 07 2007 - 12:15:55 EDT |
||||||||||
|
|||||||||||