At Tue, 08 Dec 2020 09:45:53 +0900 (JST), Kyotaro Horiguchi <horikyota....@gmail.com> wrote in > At Mon, 7 Dec 2020 17:18:31 +0530, Amit Kapila <amit.kapil...@gmail.com> > wrote in > > Hmm, how is it possible if Insert is done before Truncate? The insert > > should happen in old RelFileNode only. I have verified by adding a > > break-in (while (1), so that it stops there) heap_xlog_insert and > > DropRelFileNodesAllBuffers(), and both get the same (old) RelFileNode. > > How have you verified what you are saying? > > You might be thinking of in-transaction sequence of > Inert-truncate. What *I* mention before is truncation of a relation > that smgrnblocks() has already been called for. The most common way > to make it happen was INSERTs *before* the truncating transaction > starts. It may be a SELECT on a hot-standby. Sorry for the confusing > expression.
And ,to make sure, it is a bit off from the point of the discussion as I noted. I just meant that the proposition that "smgrnblokcs() always returns false for "cached" when it is called in DropRelFileNodesAllBuffers()" doesn't always holds. regards. -- Kyotaro Horiguchi NTT Open Source Software Center