• Tom Lane's avatar
    Reduce memory consumption inside inheritance_planner(). · d1001a78
    Tom Lane authored
    Avoid eating quite so much memory for large inheritance trees, by
    reclaiming the space used by temporary copies of the original parsetree and
    range table, as well as the workspace needed during planning.  The cost is
    needing to copy the finished plan trees out of the child memory context.
    Although this looks like it ought to slow things down, my testing shows
    it actually is faster, apparently because fewer interactions with malloc()
    are needed and/or we can do the work within a more readily cacheable amount
    of memory.  That result might be platform-dependent, but I'll take it.
    
    Per a gripe from John Papandriopoulos, in which it was pointed out that the
    memory consumption actually grew as O(N^2) for sufficiently many child
    tables, since we were creating N copies of the N-element range table.
    d1001a78
planner.c 98.8 KB