Re: Refactoring of heapam code. - Mailing list pgsql-hackers
From | Anastasia Lubennikova |
---|---|
Subject | Re: Refactoring of heapam code. |
Date | |
Msg-id | 6914a9d6-894c-5dba-7e3a-0465223cbf87@postgrespro.ru Whole thread Raw |
In response to | Re: Refactoring of heapam code. (Michael Paquier <michael.paquier@gmail.com>) |
Responses |
Re: Refactoring of heapam code.
Re: Refactoring of heapam code. |
List | pgsql-hackers |
08.08.2016 03:51, Michael Paquier: > On Sat, Aug 6, 2016 at 2:56 AM, Alvaro Herrera <alvherre@2ndquadrant.com> wrote: >> Anastasia Lubennikova wrote: >>> So there is a couple of patches. They do not cover all mentioned problems, >>> but I'd like to get a feedback before continuing. >> I agree that we could improve things in this general area, but I do not >> endorse any particular changes you propose in these patches; I haven't >> reviewed your patches. > Well, I am interested in the topic. And just had a look at the patches proposed. > > + /* > + * Split PageGetItem into set of different macros > + * in order to make code more readable. > + */ > +#define PageGetItemHeap(page, itemId) \ > +( \ > + AssertMacro(PageIsValid(page)), \ > + AssertMacro(ItemIdHasStorage(itemId)), \ > + (HeapTupleHeader)(((char *)(page)) + ItemIdGetOffset(itemId)) \ > +) > Placing into bufpage.h macros that are specific to heap and indexes is > not that much a good idea. I'd suggest having the heap ones in > heapam.h, and the index ones in a more generic place, as > src/access/common as already mentioned by Alvaro. > > + onpage_tup = PageGetItemHeapHeaderOnly(page, newitemid); > Just PageGetItemHeapHeader would be fine. > > @@ -2324,7 +2087,6 @@ FreeBulkInsertState(BulkInsertState bistate) > pfree(bistate); > } > > - > /* > * heap_insert - insert tuple into a heap > Those patches have some noise. > > Patch 0002 is doing two things: reorganizing the order of the routines > in heapam.c and move some routines from heapam.c to hio.c. Those two > could be separate patches/ > > If the final result is to be able to extend custom AMs for tables, we > should have a structure like src/access/common/index.c, > src/access/common/table.c and src/access/common/relation.c for > example, and have headers dedicated to them. But yes, there is > definitely a lot of room for refactoring as we are aiming, at least I > guess so, at having more various code paths for access methods. Thank you for the review, I'll fix these problems in final version. Posting the first message I intended to raise the discussion. Patches were attached mainly to illustrate the problem and to be more concrete. Thank you for attention and feedback. Since there are no objections to the idea in general, I'll write an exhaustive README about current state of the code and then propose API design to discuss details. Stay tuned. -- Anastasia Lubennikova Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
pgsql-hackers by date: