• Andres Freund's avatar
    Flush unlogged table's buffers when copying or moving databases. · 7dbb6069
    Andres Freund authored
    CREATE DATABASE and ALTER DATABASE .. SET TABLESPACE copy the source
    database directory on the filesystem level. To ensure the on disk
    state is consistent they block out users of the affected database and
    force a checkpoint to flush out all data to disk. Unfortunately, up to
    now, that checkpoint didn't flush out dirty buffers from unlogged
    relations.
    
    That bug means there could be leftover dirty buffers in either the
    template database, or the database in its old location. Leading to
    problems when accessing relations in an inconsistent state; and to
    possible problems during shutdown in the SET TABLESPACE case because
    buffers belonging files that don't exist anymore are flushed.
    
    This was reported in bug #10675 by Maxim Boguk.
    
    Fix by Pavan Deolasee, modified somewhat by me. Reviewed by MauMau and
    Fujii Masao.
    
    Backpatch to 9.1 where unlogged tables were introduced.
    7dbb6069
dbcommands.c 62.8 KB