• Robert Haas's avatar
    Code cleanup for toast_fetch_datum and toast_fetch_datum_slice. · d5406dea
    Robert Haas authored
    Rework some of the checks for bad TOAST chunks to be a bit simpler
    and easier to understand. These checks verify that (1) we get all
    and only the chunk numbers we expect to see and (2) each chunk has
    the expected size. However, the existing code was a bit hard to
    understand, at least for me; try to make it clearer.
    
    As part of that, have toast_fetch_datum_slice check the relationship
    between endchunk and totalchunks only with an Assert() rather than
    checking every chunk number against both values. There's no need to
    check that relationship in production builds because it's not a
    function of whether on-disk corruption is present; it's just a
    question of whether the code does the right math.
    
    Also, have toast_fetch_datum_slice() use ereport(ERROR) rather than
    elog(ERROR). Commit fd6ec93b made
    the two functions inconsistent with each other.
    
    Rename assorted variables for better clarity and consistency, and
    move assorted variables from function scope to the function's main
    loop. Remove a few variables that are used only once entirely.
    
    Patch by me, reviewed by Peter Eisentraut.
    
    Discussion: http://postgr.es/m/CA+TgmobBzxwFojJ0zV0Own3dr09y43hp+OzU2VW+nos4PMXWEg@mail.gmail.com
    d5406dea
detoast.c 23.4 KB