/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* Initialize an maria-database */ #include "maria_def.h" #include #include "ma_blockrec.h" #include "trnman_public.h" #include "ma_checkpoint.h" /* Initialize maria SYNOPSIS maria_init() TODO Open log files and do recovery if need RETURN 0 ok # error number */ int maria_init(void) { if (!maria_inited) { maria_inited= TRUE; pthread_mutex_init(&THR_LOCK_maria,MY_MUTEX_INIT_SLOW); _ma_init_block_record_data(); my_handler_error_register(); } return 0; } void maria_end(void) { if (maria_inited) { TrID trid; maria_inited= maria_multi_threaded= FALSE; ft_free_stopwords(); ma_checkpoint_end(); if ((trid= trnman_get_max_trid()) > max_trid_in_control_file) { /* Store max transaction id into control file, in case logs are removed by user, or maria_chk wants to check tables (it cannot access max trid from the log, as it cannot process REDOs). */ (void)ma_control_file_write_and_force(last_checkpoint_lsn, last_logno, trid); } trnman_destroy(); if (translog_status == TRANSLOG_OK) translog_destroy(); end_pagecache(maria_log_pagecache, TRUE); end_pagecache(maria_pagecache, TRUE); ma_control_file_end(); pthread_mutex_destroy(&THR_LOCK_maria); } }