On Thu, Jun 8, 2017 at 7:01 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: > On Thu, Jun 8, 2017 at 1:33 AM, Robert Haas <robertmh...@gmail.com> wrote: >> On Wed, Jun 7, 2017 at 5:46 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: >>> As far as I understand, it is to ensure that for deleted rows, nothing >>> more needs to be done. For example, see the below check in >>> ExecUpdate/ExecDelete. >>> if (!ItemPointerEquals(tupleid, &hufd.ctid)) >>> { >>> .. >>> } >>> .. >>> >>> Also a similar check in ExecLockRows. Now for deleted rows, if the >>> t_ctid wouldn't point to itself, then in the mentioned functions, we >>> were not in a position to conclude that the row is deleted. >> >> Right, so we would have to find all such checks and change them to use >> some other method to conclude that the row is deleted. What method >> would we use? > > I think before doing above check we can simply check if ctid.ip_blkid > contains InvalidBlockNumber, then return an error.
Hmm, OK. That case never happens today? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers