• Tom Lane's avatar
    Improve contrib/pg_stat_statements' handling of PREPARE/EXECUTE statements. · 566a1d43
    Tom Lane authored
    It's actually more useful for the module to ignore these.  Ignoring
    EXECUTE (and not incrementing the nesting level) allows the executor
    hooks to charge the time to the underlying prepared query, which
    shows up as a stats entry with the original PREPARE as query string
    (possibly modified by suppression of constants, which might not be
    terribly useful here but it's not worth avoiding).  This is much more
    useful than cluttering the stats table with a distinct entry for each
    textually distinct EXECUTE.
    
    Experimentation with this idea shows that it's also preferable to ignore
    PREPARE.  If we don't, we get two stats table entries, one with the query
    string hash and one with the jumble-derived hash, but with the same visible
    query string (modulo those constants).  This is confusing and not very
    helpful, since the first entry will only receive costs associated with
    initial planning of the query, which is not something counted at all
    normally by pg_stat_statements.  (And if we do start tracking planning
    costs, we'd want them blamed on the other hash table entry anyway.)
    566a1d43
pg_stat_statements.c 56.8 KB