• Tom Lane's avatar
    Fix O(N^2) performance issue in pg_publication_tables view. · 166f69f7
    Tom Lane authored
    The original coding of this view relied on a correlated IN sub-query.
    Our planner is not very bright about correlated sub-queries, and even
    if it were, there's no way for it to know that the output of
    pg_get_publication_tables() is duplicate-free, making the de-duplicating
    semantics of IN unnecessary.  Hence, rewrite as a LATERAL sub-query.
    This provides circa 100X speedup for me with a few hundred published
    tables (the whole regression database), and things would degrade as
    roughly O(published_relations * all_relations) beyond that.
    
    Because the rules.out expected output changes, force a catversion bump.
    Ordinarily we might not want to do that post-beta1; but we already know
    we'll be doing a catversion bump before beta2 to fix pg_statistic_ext
    issues, so it's pretty much free to fix it now instead of waiting for v13.
    
    Per report and fix suggestion from PegoraroF10.
    
    Discussion: https://postgr.es/m/1551385426763-0.post@n3.nabble.com
    166f69f7
catversion.h 2.53 KB