Re: WIP: Access method extendability - Mailing list pgsql-hackers

From Teodor Sigaev
Subject Re: WIP: Access method extendability
Date
Msg-id 56FBD2D4.6050703@sigaev.ru
Whole thread Raw
In response to Re: WIP: Access method extendability  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
Responses Re: WIP: Access method extendability
List 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 by date:

Previous
From: Stas Kelvich
Date:
Subject: Re: Speedup twophase transactions
Next
From: Jose Luis Tallon
Date:
Subject: Re: Sequence Access Method WIP