mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
6b3743f0aa
New extendable format for maria_log_control file Fixed some compiler warnings include/maria.h: Added maria_disable_logging() and maria_enable_logging() mysql-test/include/maria_verify_recovery.inc: Updated tests now when key redo/undo works mysql-test/r/maria-recovery.result: Updated tests now when key redo/undo works storage/maria/ma_blockrec.c: Use unified CLR code Added rec_lsn for full pages Moved clr write hook to ma_key_recover.c Changed REDO code to keep pages pinned until undo Mark page_link's as changed storage/maria/ma_blockrec.h: Moved write_hook_for_clr_end() to ma_key_recover.c storage/maria/ma_check.c: Changed key check code to use PAGECACHE_READ_UNKNOWN_PAGE Fixed wrong warning when checking files after maria_pack When unpacking files, we have to use new keypos_to_recpos method When doing repair, we can disregard index key file pages in page cache storage/maria/ma_commit.c: Added simple enable/disable logging functions (Needed for recovery) storage/maria/ma_control_file.c: Make maria control file extendable without having to make it incompatible for older versions storage/maria/ma_control_file.h: New error messages Added CONTROL_FILE_VERSION storage/maria/ma_delete.c: Added redo/undo for key pages change_length -> changed_length to make things similar More comments & more DBUG storage/maria/ma_key_recover.c: Unified CLR method Moved here write_hook_for_clr_end() and common keypage log functions Changed REDO to keep pages pinned until undo Changed UNDO code to change key_root under log mutex storage/maria/ma_key_recover.h: New structures and functions storage/maria/ma_loghandler.c: Include needed files storage/maria/ma_open.c: Change maria_open() to use pread() instead of read() storage/maria/ma_page.c: Fixed bug in key_del handling Clear pages if IDENTICAL_PAGES_AFTER_RECOVERY is defined storage/maria/ma_pagecache.c: Indentation and spelling fixes More DBUG Added helper function: pagecache_block_link_to_buffer() storage/maria/ma_pagecache.h: Added pagecache_block_link_to_buffer() storage/maria/ma_recovery.c: Fixed state.changed Fixed that REDO keeps pages pinned until UNDO Some bug fixes from previous commit Fixes for UNDO/REDO of key pages storage/maria/ma_search.c: Fixed packing and storing of keys to provide more information to caller so that we can do efficent REDO logging of the changes. storage/maria/ma_test1.c: Fixed bug with not initialized variable storage/maria/ma_test2.c: Removed not used code storage/maria/ma_test_all.res: Updated results storage/maria/ma_test_all.sh: Changed one test to test more Removed timing tests as not relevant here storage/maria/ma_test_recovery.expected: Updated test result after redo/undo if key pages works storage/maria/ma_test_recovery: Updated test after redo/undo if key pages works storage/maria/ma_write.c: Moved some general log functions to ma_key_recover.c Fixed some bugs in undo Moved ma_log_split() to _ma_split_page() Small changes in some function arguments to be able to do redo logging storage/maria/maria_chk.c: disable logging while doing repair table storage/maria/maria_def.h: New function prototypes Move some structs and functions to ma_key_recover.c storage/maria/unittest/ma_control_file-t.c: Updated with patch from Sanja NOTE: This is not complete and need to be updated to new control file format storage/maria/unittest/ma_test_loghandler-t.c: Fixed compiler warning
90 lines
2.7 KiB
C
90 lines
2.7 KiB
C
/* 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 */
|
|
|
|
/*
|
|
WL#3234 Maria control file
|
|
First version written by Guilhem Bichot on 2006-04-27.
|
|
*/
|
|
|
|
#ifndef _ma_control_file_h
|
|
#define _ma_control_file_h
|
|
|
|
#define CONTROL_FILE_BASE_NAME "maria_log_control"
|
|
/*
|
|
Major version for control file. Should only be changed when doing
|
|
big changes that made the new control file incompatible with all
|
|
older versions of Maria.
|
|
*/
|
|
#define CONTROL_FILE_VERSION 1
|
|
|
|
/* Here is the interface of this module */
|
|
|
|
/*
|
|
LSN of the last checkoint
|
|
(if last_checkpoint_lsn == LSN_IMPOSSIBLE then there was never a checkpoint)
|
|
*/
|
|
extern LSN last_checkpoint_lsn;
|
|
/*
|
|
Last log number (if last_logno == FILENO_IMPOSSIBLE then there is no log
|
|
file yet)
|
|
*/
|
|
extern uint32 last_logno;
|
|
|
|
extern my_bool maria_multi_threaded, maria_in_recovery;
|
|
|
|
typedef enum enum_control_file_error {
|
|
CONTROL_FILE_OK= 0,
|
|
CONTROL_FILE_TOO_SMALL,
|
|
CONTROL_FILE_TOO_BIG,
|
|
CONTROL_FILE_BAD_MAGIC_STRING,
|
|
CONTROL_FILE_BAD_VERSION,
|
|
CONTROL_FILE_BAD_CHECKSUM,
|
|
CONTROL_FILE_BAD_HEAD_CHECKSUM,
|
|
CONTROL_FILE_MISSING,
|
|
CONTROL_FILE_INCONSISTENT_INFORMATION,
|
|
CONTROL_FILE_WRONG_BLOCKSIZE,
|
|
CONTROL_FILE_UNKNOWN_ERROR /* any other error */
|
|
} CONTROL_FILE_ERROR;
|
|
|
|
#define CONTROL_FILE_UPDATE_ALL 0
|
|
#define CONTROL_FILE_UPDATE_ONLY_LSN 1
|
|
#define CONTROL_FILE_UPDATE_ONLY_LOGNO 2
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
Looks for the control file. If none and creation was requested, creates file.
|
|
If present, reads it to find out last checkpoint's LSN and last log.
|
|
Called at engine's start.
|
|
*/
|
|
CONTROL_FILE_ERROR ma_control_file_create_or_open();
|
|
/*
|
|
Write information durably to the control file.
|
|
Called when we have created a new log (after syncing this log's creation)
|
|
and when we have written a checkpoint (after syncing this log record).
|
|
*/
|
|
int ma_control_file_write_and_force(const LSN checkpoint_lsn, uint32 logno,
|
|
uint objs_to_write);
|
|
|
|
|
|
/* Free resources taken by control file subsystem */
|
|
int ma_control_file_end();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|