• Marko Mäkelä's avatar
    Simplify InnoDB startup. · 7a30d86e
    Marko Mäkelä authored
    InnoDB needs to collect transactions from the persistent data files
    in trx_rseg_array_init() before trx_lists_init_at_db_start() is
    executed. But there is no need to create purge_sys->purge_queue
    separately from purge_sys.
    
    trx_sys_init_at_db_start(): Change the return type to void.
    Remove the direct call to trx_rseg_array_init(). It will be called
    by trx_lists_init_at_db_start(), which we are calling.
    Initialize the purge system read view.
    
    trx_lists_init_at_db_start(): Call trx_purge_sys_create(), which will
    invoke trx_rseg_array_init() to read the undo log segments.
    
    trx_purge_sys_create(): Remove the parameters. Do not initialize
    the purge system read view, because trx_sys->rw_trx_list has not
    been recovered yet. The purge_sys->view will be initialized at
    the end of trx_sys_init_at_db_start().
    
    trx_rseg_array_init(): Remove the parameter. Use purge_sys->purge_queue
    directly.
    
    innobase_start_or_create_for_mysql(): Remove the local variable
    purge_queue. Do not call trx_purge_sys_create(), because it will be
    called by trx_sys_init_at_db_start().
    7a30d86e
trx0trx.h 50.7 KB