pgsql: It turns out that TablespaceCreateDbspace fails badly if a

Поиск
Список
Период
Сортировка
От tgl@postgresql.org (Tom Lane)
Тема pgsql: It turns out that TablespaceCreateDbspace fails badly if a
Дата
Msg-id 20060119044558.36A4B9DC9FD@postgresql.org
обсуждение исходный текст
Список pgsql-committers
Log Message:
-----------
It turns out that TablespaceCreateDbspace fails badly if a relcache flush
occurs when it tries to heap_open pg_tablespace.  When control returns to
smgrcreate, that routine will be holding a dangling pointer to a closed
SMgrRelation, resulting in mayhem.  This is of course a consequence of
the violation of proper module layering inherent in having smgr.c call
a tablespace command routine, but the simplest fix seems to be to change
the locking mechanism.  There's no real need for TablespaceCreateDbspace
to touch pg_tablespace at all --- it's only opening it as a way of locking
against a parallel DROP TABLESPACE command.  A much better answer is to
create a special-purpose LWLock to interlock these two operations.
This drops TablespaceCreateDbspace quite a few layers down the food chain
and makes it something reasonably safe for smgr to call.

Tags:
----
REL8_0_STABLE

Modified Files:
--------------
    pgsql/src/backend/commands:
        tablespace.c (r1.15 -> r1.15.4.1)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablespace.c.diff?r1=1.15&r2=1.15.4.1)
    pgsql/src/include/storage:
        lwlock.h (r1.16 -> r1.16.4.1)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/lwlock.h.diff?r1=1.16&r2=1.16.4.1)

В списке pgsql-committers по дате отправления:

Предыдущее
От: tgl@postgresql.org (Tom Lane)
Дата:
Сообщение: pgsql: It turns out that TablespaceCreateDbspace fails badly if a
Следующее
От: h-saito@pgfoundry.org (User H-saito)
Дата:
Сообщение: psqlodbc - psqlodbc: Compile accuracy rise.(iODBC and unixODBC and