• H
    When a relation is moved to another tablespace, we can't assume that we can · 3c66048a
    Heikki Linnakangas 提交于
    use the old relfilenode in the new tablespace. There might be another relation
    in the new tablespace with the same relfilenode, so we must generate a fresh
    relfilenode in the new tablespace.
    
    The 8.3 patch to let deleted relation files linger as zero-length files until
    the next checkpoint made this more obvious: moving a relation from one table
    space another, and then back again, caused a collision with the lingering
    file.
    
    Back-patch to 8.1. The issue is present in 8.0 as well, but it doesn't seem
    worth fixing there, because we didn't have protection from OID collisions
    after OID wraparound before 8.1.
    
    Report by Guillaume Lelarge.
    3c66048a
tablecmds.c 202.2 KB