mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 20:11:42 +01:00
12443de1b2
Extended replication to allow extra columns added last on slave as compared with table on master. mysql-test/extra/rpl_tests/rpl_row_tabledefs.test: Testing that replication can handle extra extra columns on slave. mysql-test/r/rpl_row_tabledefs.result: Result file change sql/Makefile.am: Adding new files. sql/field.cc: Implementing missing Field_bit::set_default() sql/field.h: Implementing missing Field_bit::set_default() sql/log_event.cc: Extending unpack_row() and replace_record() to handle the case when there are more columns on the slave than on the master. Especially handle BIT columns correctly. Using newly introduced table_def class to perform comparison. sql/log_event.h: Adding field to table_map_log_event. Changing prototype for do_prepare_row(). sql/mysql_priv.h: Adding include guards mysql-test/t/rpl_row_tabledefs.test: New BitKeeper file ``mysql-test/t/rpl_row_tabledefs.test'' sql/rpl_utility.cc: New BitKeeper file ``sql/rpl_utility.cc'' sql/rpl_utility.h: New BitKeeper file ``sql/rpl_utility.h''
60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
/* Copyright 2006 MySQL AB. All rights reserved.
|
|
|
|
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; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
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 */
|
|
|
|
#ifndef RPL_UTILITY_H
|
|
#define RPL_UTILITY_H
|
|
|
|
#ifndef __cplusplus
|
|
#error "Don't include this C++ header file from a non-C++ file!"
|
|
#endif
|
|
|
|
#include "mysql_priv.h"
|
|
|
|
uint32
|
|
field_length_from_packed(enum_field_types const field_type,
|
|
byte const *const data);
|
|
|
|
/*
|
|
A table definition from the master.
|
|
|
|
RESPONSIBILITIES
|
|
|
|
- Extract table definition data from the table map event
|
|
- Check if table definition in table map is compatible with table
|
|
definition on slave
|
|
*/
|
|
|
|
class table_def
|
|
{
|
|
public:
|
|
typedef unsigned char field_type;
|
|
|
|
table_def(field_type *t, my_size_t s)
|
|
: m_type(t), m_size(s)
|
|
{
|
|
}
|
|
|
|
my_size_t size() const { return m_size; }
|
|
field_type type(my_ptrdiff_t i) const { return m_type[i]; }
|
|
|
|
int compatible_with(RELAY_LOG_INFO *rli, TABLE *table) const;
|
|
|
|
private:
|
|
my_size_t m_size;
|
|
field_type *m_type;
|
|
};
|
|
|
|
#endif /* RPL_UTILITY_H */
|