On 23/03/16 20:01, Robert Haas wrote:
On Wed, Mar 23, 2016 at 2:52 PM, Petr Jelinek <p...@2ndquadrant.com> wrote:
Second, if the other backend extended the relation in
some other manner and did not extend the FSM, how does calling
RecordAndGetPageWithFreeSpace help?  As far as I can see,
GetPageWithFreeSpace and RecordAndGetPageWithFreeSpace are both just
searching the FSM, so if one is stymied the other will be too.  What
am I missing?


The RecordAndGetPageWithFreeSpace will extend FSM as it calls
fsm_set_and_search which in turn calls fsm_readbuf with extend = true.

So how does that help?  If I'm reading this right, the new block will
be all zeroes which means no space available on any of those pages.


I am bit confused as to what exactly you are saying, but what will happen is we get back to the while cycle and try again so eventually we should find either block with enough free space or add new one (not sure if this would actually ever happen in practice in heavily concurrent workload where the FSM would not be correctly extended during relation extension though, we might just loop here forever).

--
  Petr Jelinek                  http://www.2ndQuadrant.com/
  PostgreSQL Development, 24x7 Support, Training & Services


--
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