• Tom Lane's avatar
    Code review for tqueue.c: fix memory leaks, speed it up, other fixes. · a9ed875f
    Tom Lane authored
    When doing record typmod remapping, tqueue.c did fresh catalog lookups
    for each tuple it processed, which was pretty horrible performance-wise
    (it seemed to about halve the already none-too-quick speed of bulk reads
    in parallel mode).  Worse, it insisted on putting bits of that data into
    TopMemoryContext, from where it never freed them, causing a
    session-lifespan memory leak.  (I suppose this was coded with the idea
    that the sender process would quit after finishing the query ---
    but the receiver uses the same code.)
    
    Restructure to avoid repetitive catalog lookups and to keep that data
    in a query-lifespan context, in or below the context where the
    TQueueDestReceiver or TupleQueueReader itself lives.
    
    Fix some other bugs such as continuing to use a tupledesc after
    releasing our refcount on it.  Clean up cavalier datatype choices
    (typmods are int32, please, not int, and certainly not Oid).  Improve
    comments and error message wording.
    a9ed875f
tqueue.c 37.8 KB