On Thu, Oct 18, 2012 at 04:58:20PM -0300, Alvaro Herrera wrote:
> Here is version 22 of this patch.  This version contains fixes to issues
> reported by Andres, as well as a rebase to latest master.

I scanned this for obvious signs of work left to do.  It contains numerous XXX
and FIXME comments.  Many highlight micro-optimization opportunities and the
like; those can stay.  Others preclude commit, either highlighting an unsolved
problem or wrongly highlighting a non-problem:

> +     /*
> +      * XXX we do not lock this tuple here; the theory is that it's 
> sufficient
> +      * with the buffer lock we're about to grab.  Any other code must be 
> able
> +      * to cope with tuple lock specifics changing while they don't hold 
> buffer
> +      * lock anyway.
> +      */

>    * so they will be uninteresting by the time our next transaction starts.
>    * (XXX not clear that this is correct --- other members of the MultiXact
>    * could hang around longer than we did.  However, it's not clear what a
> !  * better policy for flushing old cache entries would be.)  FIXME actually
> !  * this is plain wrong now that multixact's may contain update Xids.

> !     nmembers = GetMultiXactIdMembers(multi, &members, true);
> !     /*
> !      * XXX we don't have the infomask to run the required consistency check
> !      * here; the required notational overhead seems excessive.
> !      */

>               /* We assume the cache entries are sorted */
> !             /* XXX we assume the unused bits in "status" are zeroed */
> !             if (memcmp(members, entry->members, nmembers * 
> sizeof(MultiXactMember)) == 0)

> !  * XXX do we have any issues with needing to checkpoint here?
>    */
> ! static void
> ! TruncateMultiXact(void)
>   {

> +     /* FIXME what should we initialize this to? */
> +     newFrozenMulti = ReadNextMultiXactId();

> +      * FIXME -- the XMAX_IS_MULTI test is a bit wrong .. it's possible to
> +      * have tuples with that bit set that are dead.  However, if that's
> +      * changed, the RawXmax() call below should probably be researched as 
> well.
>        */
>       if (tuple->t_infomask &
> !             (HEAP_XMAX_INVALID | HEAP_XMAX_LOCK_ONLY | HEAP_XMAX_IS_MULTI))
>               return false;


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to