From: | amul sul <sulamul(at)gmail(dot)com> |
---|---|
To: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Amit Khandekar <amitdkhan(dot)pg(at)gmail(dot)com>, Greg Stark <stark(at)mit(dot)edu>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: UPDATE of partition key |
Date: | 2017-09-13 10:54:28 |
Message-ID: | CAAJ_b944d2QExdcE9txk9duo_4D2PShRujem=V9h4Og5_jG5KQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, Sep 10, 2017 at 8:47 AM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
wrote:
> On Fri, Sep 8, 2017 at 4:51 PM, amul sul <sulamul(at)gmail(dot)com> wrote:
> > On Thu, May 18, 2017 at 9:13 AM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
> > wrote:
> >>
> >> On Wed, May 17, 2017 at 5:17 PM, Robert Haas <robertmhaas(at)gmail(dot)com>
> >> wrote:
> >> > On Wed, May 17, 2017 at 6:29 AM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com
> >
> >> > wrote:
> >> >> I think we can do this even without using an additional infomask bit.
> >> >> As suggested by Greg up thread, we can set InvalidBlockId in ctid to
> >> >> indicate such an update.
> >> >
> >> > Hmm. How would that work?
> >> >
> >>
> >> We can pass a flag say row_moved (or require_row_movement) to
> >> heap_delete which will in turn set InvalidBlockId in ctid instead of
> >> setting it to self. Then the ExecUpdate needs to check for the same
> >> and return an error when heap_update is not successful (result !=
> >> HeapTupleMayBeUpdated). Can you explain what difficulty are you
> >> envisioning?
> >>
> >
> > Attaching WIP patch incorporates the above logic, although I am yet to
> check
> > all the code for places which might be using ip_blkid. I have got a
> small
> > query here,
> > do we need an error on HeapTupleSelfUpdated case as well?
> >
>
> No, because that case is anyway a no-op (or error depending on whether
> is updated/deleted by same command or later command). Basically, even
> if the row wouldn't have been moved to another partition, we would not
> have allowed the command to proceed with the update. This handling is
> to make commands fail rather than a no-op where otherwise (when the
> tuple is not moved to another partition) the command would have
> succeeded.
>
>
Thank you.
I've rebased patch against Amit Khandekar's latest
patch
(v17_rebased_2)
.
Also
added ip_blkid validation
check in heap_get_latest_tid(), rewrite_heap_tuple()
& rewrite_heap_tuple() function, because only
ItemPointerEquals() check is no
longer sufficient
after
this patch.
Regards,
Amul
Attachment | Content-Type | Size |
---|---|---|
0002-invalidate_ctid-ip_blkid-WIP_2.patch | application/octet-stream | 8.8 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Arseny Sher | 2017-09-13 11:00:05 | Re: DROP SUBSCRIPTION hangs if sub is disabled in the same transaction |
Previous Message | Ants Aasma | 2017-09-13 10:43:07 | Re: Hooks to track changed pages for backup purposes |