On Wed, Sep 13, 2017 at 4:24 PM, amul sul <sula...@gmail.com> wrote: > > > On Sun, Sep 10, 2017 at 8:47 AM, Amit Kapila <amit.kapil...@gmail.com> > wrote: >> >> On Fri, Sep 8, 2017 at 4:51 PM, amul sul <sula...@gmail.com> wrote: >> > On Thu, May 18, 2017 at 9:13 AM, Amit Kapila <amit.kapil...@gmail.com> >> > wrote: >> >> >> >> On Wed, May 17, 2017 at 5:17 PM, Robert Haas <robertmh...@gmail.com> >> >> wrote: >> >> > On Wed, May 17, 2017 at 6:29 AM, Amit Kapila >> >> > <amit.kapil...@gmail.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.
FYI, I have posted this patch in a separate thread : https://postgr.es/m/caaj_b95pkwojoyfz0bzxu8ookctvgzn6vygcnvuukeudrnf...@mail.gmail.com Regards, Amul -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers