Re: WIP: Access method extendability
| От | Teodor Sigaev |
|---|---|
| Тема | Re: WIP: Access method extendability |
| Дата | |
| Msg-id | 56FBD2D4.6050703@sigaev.ru обсуждение исходный текст |
| Ответ на | Re: WIP: Access method extendability (Alexander Korotkov <a.korotkov@postgrespro.ru>) |
| Ответы |
Re: WIP: Access method extendability
|
| Список | pgsql-hackers |
GenericXLogStart(Relation relation)
{
... if (genericXlogStatus != GXLOG_NOT_STARTED) ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("GenericXLogStart: generic xlog is already
started")));
Hmm, seems, generic wal whiil be in incorrect state if exception occurs between
GenericXLogStart() and GenericXLogFinish() calls because static variable
genericXlogStatus will contain GXLOG_LOGGED/GXLOG_UNLOGGED status.
Suppose, it could be solved by different ways
- remove all static variable, so, GenericXLogStart() will return an struct (object) which incapsulated all data needed
togeneric wal work. As I can see, in case of exception there isn't ane needing to extra cleanup. Also, it would allow
touse generic wal for two or more relations at the same time, although I don't know any useful example for such
feature.
- add callback via RegisterResourceReleaseCallback() which will cleanup state of genericXlogStatus variable
--
Teodor Sigaev E-mail: teodor@sigaev.ru
WWW: http://www.sigaev.ru/
В списке pgsql-hackers по дате отправления: