• Andres Freund's avatar
    Fix decoding of consecutive MULTI_INSERTs emitted by one heap_multi_insert(). · 626bfad6
    Andres Freund authored
    Commit 1b86c81d fixed the decoding of toasted columns for the rows
    contained in one xl_heap_multi_insert record. But that's not actually
    enough, because heap_multi_insert() will actually first toast all
    passed in rows and then emit several *_multi_insert records; one for
    each page it fills with tuples.
    
    Add a XLOG_HEAP_LAST_MULTI_INSERT flag which is set in
    xl_heap_multi_insert->flag denoting that this multi_insert record is
    the last emitted by one heap_multi_insert() call. Then use that flag
    in decode.c to only set clear_toast_afterwards in the right situation.
    
    Expand the number of rows inserted via COPY in the corresponding
    regression test to make sure that more than one heap page is filled
    with tuples by one heap_multi_insert() call.
    
    Backpatch to 9.4 like the previous commit.
    626bfad6
toast.out 20.2 KB