mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
0d3f926a1c
Factoring out pack_row() and unpack_row() into new files rpl_record.{cc,h}. libmysqld/Makefile.am: Adding file rpl_record.cc sql/CMakeLists.txt: Adding file rpl_record.cc sql/Makefile.am: Adding file rpl_record.cc and rpl_record.h sql/log_event.cc: Moving implementation of unpack_row() into "rpl_record.cc". Adding inclusion of header file "rpl_record.h". sql/log_event_old.cc: Signature of do_prepare_row() changed. sql/log_event_old.h: Adding copyright. sql/rpl_record_old.cc: Signature of do_prepare_row() changed. sql/rpl_record_old.h: Adding copyright. Signature of do_prepare_row() changed. sql/sql_class.cc: Moving implementation THD::pack_row() into "rpl_record.cc" and rewriting it to be a global function. Adding inclusion of header file "rpl_record.h". sql/sql_class.h: Removing pack_row() as THD member function. sql/rpl_record.cc: New BitKeeper file ``sql/rpl_record.cc'' sql/rpl_record.h: New BitKeeper file ``sql/rpl_record.h''
105 lines
3.5 KiB
C++
105 lines
3.5 KiB
C++
|
|
#include "mysql_priv.h"
|
|
#include "log_event_old.h"
|
|
#include "rpl_record_old.h"
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
int
|
|
Write_rows_log_event_old::do_prepare_row(THD *thd,
|
|
RELAY_LOG_INFO const *rli,
|
|
TABLE *table,
|
|
char const *row_start,
|
|
char const **row_end)
|
|
{
|
|
DBUG_ASSERT(table != NULL);
|
|
DBUG_ASSERT(row_start && row_end);
|
|
|
|
int error;
|
|
error= unpack_row_old(const_cast<RELAY_LOG_INFO*>(rli),
|
|
table, m_width, table->record[0],
|
|
row_start, &m_cols, row_end, &m_master_reclength,
|
|
table->write_set, PRE_GA_WRITE_ROWS_EVENT);
|
|
bitmap_copy(table->read_set, table->write_set);
|
|
return error;
|
|
}
|
|
|
|
|
|
int
|
|
Delete_rows_log_event_old::do_prepare_row(THD *thd,
|
|
RELAY_LOG_INFO const *rli,
|
|
TABLE *table,
|
|
char const *row_start,
|
|
char const **row_end)
|
|
{
|
|
int error;
|
|
DBUG_ASSERT(row_start && row_end);
|
|
/*
|
|
This assertion actually checks that there is at least as many
|
|
columns on the slave as on the master.
|
|
*/
|
|
DBUG_ASSERT(table->s->fields >= m_width);
|
|
|
|
error= unpack_row_old(const_cast<RELAY_LOG_INFO*>(rli),
|
|
table, m_width, table->record[0],
|
|
row_start, &m_cols, row_end, &m_master_reclength,
|
|
table->read_set, PRE_GA_DELETE_ROWS_EVENT);
|
|
/*
|
|
If we will access rows using the random access method, m_key will
|
|
be set to NULL, so we do not need to make a key copy in that case.
|
|
*/
|
|
if (m_key)
|
|
{
|
|
KEY *const key_info= table->key_info;
|
|
|
|
key_copy(m_key, table->record[0], key_info, 0);
|
|
}
|
|
|
|
return error;
|
|
}
|
|
|
|
|
|
int Update_rows_log_event_old::do_prepare_row(THD *thd,
|
|
RELAY_LOG_INFO const *rli,
|
|
TABLE *table,
|
|
char const *row_start,
|
|
char const **row_end)
|
|
{
|
|
int error;
|
|
DBUG_ASSERT(row_start && row_end);
|
|
/*
|
|
This assertion actually checks that there is at least as many
|
|
columns on the slave as on the master.
|
|
*/
|
|
DBUG_ASSERT(table->s->fields >= m_width);
|
|
|
|
/* record[0] is the before image for the update */
|
|
error= unpack_row_old(const_cast<RELAY_LOG_INFO*>(rli),
|
|
table, m_width, table->record[0],
|
|
row_start, &m_cols, row_end, &m_master_reclength,
|
|
table->read_set, PRE_GA_UPDATE_ROWS_EVENT);
|
|
row_start = *row_end;
|
|
/* m_after_image is the after image for the update */
|
|
error= unpack_row_old(const_cast<RELAY_LOG_INFO*>(rli),
|
|
table, m_width, m_after_image,
|
|
row_start, &m_cols, row_end, &m_master_reclength,
|
|
table->write_set, PRE_GA_UPDATE_ROWS_EVENT);
|
|
|
|
DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
|
|
DBUG_DUMP("m_after_image", m_after_image, table->s->reclength);
|
|
|
|
|
|
/*
|
|
If we will access rows using the random access method, m_key will
|
|
be set to NULL, so we do not need to make a key copy in that case.
|
|
*/
|
|
if (m_key)
|
|
{
|
|
KEY *const key_info= table->key_info;
|
|
|
|
key_copy(m_key, table->record[0], key_info, 0);
|
|
}
|
|
|
|
return error;
|
|
}
|
|
|
|
#endif
|