• Heikki Linnakangas's avatar
    Avoid palloc in critical section in GiST WAL-logging. · 04e298b8
    Heikki Linnakangas authored
    Memory allocation can fail if you run out of memory, and inside a critical
    section that will lead to a PANIC. Use conservatively-sized arrays in stack
    instead.
    
    There was previously no explicit limit on the number of pages a GiST split
    can produce, it was only limited by the number of LWLocks that can be held
    simultaneously (100 at the moment). This patch adds an explicit limit of 75
    pages. That should be plenty, a typical split shouldn't produce more than
    2-3 page halves.
    
    The bug has been there forever, but only backpatch down to 9.1. The code
    was changed significantly in 9.1, and it doesn't seem worth the risk or
    trouble to adapt this for 9.0 and 8.4.
    04e298b8
gist.c 41.8 KB