• Tom Lane's avatar
    Fix list-manipulation bug in WITH RECURSIVE processing. · 80ca8464
    Tom Lane authored
    makeDependencyGraphWalker and checkWellFormedRecursionWalker
    thought they could hold onto a pointer to a list's first
    cons cell while the list was modified by recursive calls.
    That was okay when the cons cell was actually separately
    palloc'd ... but since commit 1cff1b95, it's quite unsafe,
    leading to core dumps or incorrect complaints of faulty
    WITH nesting.
    
    In the field this'd require at least a seven-deep WITH nest
    to cause an issue, but enabling DEBUG_LIST_MEMORY_USAGE
    allows the bug to be seen with lesser nesting depths.
    
    Per bug #16801 from Alexander Lakhin.  Back-patch to v13.
    
    Michael Paquier and Tom Lane
    
    Discussion: https://postgr.es/m/16801-393c7922143eaa4d@postgresql.org
    80ca8464
with.out 71.2 KB