1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

wl2325 wl2324

mysql-test/include/have_ndb_extra.inc:
  New BitKeeper file ``mysql-test/include/have_ndb_extra.inc''
mysql-test/include/not_ndb.inc:
  New BitKeeper file ``mysql-test/include/not_ndb.inc''
mysql-test/r/have_ndb_extra.require:
  New BitKeeper file ``mysql-test/r/have_ndb_extra.require''
mysql-test/r/ndb_alter_table_row.result:
  New BitKeeper file ``mysql-test/r/ndb_alter_table_row.result''
mysql-test/r/ndb_alter_table_stm.result:
  New BitKeeper file ``mysql-test/r/ndb_alter_table_stm.result''
mysql-test/r/ndb_binlog_basic.result:
  New BitKeeper file ``mysql-test/r/ndb_binlog_basic.result''
mysql-test/r/ndb_binlog_multi.result:
  New BitKeeper file ``mysql-test/r/ndb_binlog_multi.result''
mysql-test/r/ndb_multi_row.result:
  New BitKeeper file ``mysql-test/r/ndb_multi_row.result''
mysql-test/r/not_ndb.require:
  New BitKeeper file ``mysql-test/r/not_ndb.require''
mysql-test/r/rpl_ndb_bank.result:
  New BitKeeper file ``mysql-test/r/rpl_ndb_bank.result''
mysql-test/r/rpl_ndb_basic.result:
  New BitKeeper file ``mysql-test/r/rpl_ndb_basic.result''
mysql-test/r/rpl_ndb_disk.result:
  New BitKeeper file ``mysql-test/r/rpl_ndb_disk.result''
mysql-test/r/rpl_ndb_idempotent.result:
  New BitKeeper file ``mysql-test/r/rpl_ndb_idempotent.result''
mysql-test/r/rpl_ndb_load.result:
  New BitKeeper file ``mysql-test/r/rpl_ndb_load.result''
mysql-test/r/rpl_ndb_multi.result:
  New BitKeeper file ``mysql-test/r/rpl_ndb_multi.result''
mysql-test/r/rpl_ndb_sync.result:
  New BitKeeper file ``mysql-test/r/rpl_ndb_sync.result''
mysql-test/r/rpl_row_basic_7ndb.result:
  New BitKeeper file ``mysql-test/r/rpl_row_basic_7ndb.result''
mysql-test/t/ndb_alter_table_row.test:
  New BitKeeper file ``mysql-test/t/ndb_alter_table_row.test''
mysql-test/t/ndb_alter_table_stm.test:
  New BitKeeper file ``mysql-test/t/ndb_alter_table_stm.test''
mysql-test/t/ndb_binlog_basic.test:
  New BitKeeper file ``mysql-test/t/ndb_binlog_basic.test''
mysql-test/t/ndb_binlog_multi.test:
  New BitKeeper file ``mysql-test/t/ndb_binlog_multi.test''
mysql-test/t/ndb_multi_row.test:
  New BitKeeper file ``mysql-test/t/ndb_multi_row.test''
mysql-test/t/rpl_ndb_bank.test:
  New BitKeeper file ``mysql-test/t/rpl_ndb_bank.test''
mysql-test/t/rpl_ndb_basic.test:
  New BitKeeper file ``mysql-test/t/rpl_ndb_basic.test''
mysql-test/t/rpl_ndb_disk.test:
  New BitKeeper file ``mysql-test/t/rpl_ndb_disk.test''
mysql-test/t/rpl_ndb_idempotent.test:
  New BitKeeper file ``mysql-test/t/rpl_ndb_idempotent.test''
mysql-test/t/rpl_ndb_load.test:
  New BitKeeper file ``mysql-test/t/rpl_ndb_load.test''
mysql-test/t/rpl_ndb_multi.test:
  New BitKeeper file ``mysql-test/t/rpl_ndb_multi.test''
mysql-test/t/rpl_ndb_sync.test:
  New BitKeeper file ``mysql-test/t/rpl_ndb_sync.test''
mysql-test/t/rpl_row_basic_7ndb.test:
  New BitKeeper file ``mysql-test/t/rpl_row_basic_7ndb.test''
sql/ha_ndbcluster_binlog.cc:
  New BitKeeper file ``sql/ha_ndbcluster_binlog.cc''
sql/ha_ndbcluster_binlog.h:
  New BitKeeper file ``sql/ha_ndbcluster_binlog.h''
sql/ha_ndbcluster_tables.h:
  New BitKeeper file ``sql/ha_ndbcluster_tables.h''
sql/rpl_injector.cc:
  New BitKeeper file ``sql/rpl_injector.cc''
sql/rpl_injector.h:
  New BitKeeper file ``sql/rpl_injector.h''
storage/ndb/include/kernel/signaldata/DihFragCount.hpp:
  New BitKeeper file ``storage/ndb/include/kernel/signaldata/DihFragCount.hpp''
This commit is contained in:
unknown
2006-01-12 19:51:02 +01:00
parent 5872e5aeb9
commit 4c798b42d3
115 changed files with 8128 additions and 562 deletions

View File

@@ -2411,6 +2411,132 @@ int ha_table_exists_in_engine(THD* thd, const char* db, const char* name)
DBUG_RETURN(error);
}
#ifdef HAVE_NDB_BINLOG
/*
TODO: change this into a dynamic struct
List<handlerton> does not work as
1. binlog_end is called when MEM_ROOT is gone
2. cannot work with thd MEM_ROOT as memory should be freed
*/
#define MAX_HTON_LIST_ST 63
struct hton_list_st
{
handlerton *hton[MAX_HTON_LIST_ST];
uint sz;
};
struct binlog_func_st
{
enum_binlog_func fn;
void *arg;
};
/*
Listing handlertons first to avoid recursive calls and deadlock
*/
static my_bool binlog_func_list(THD *thd, st_plugin_int *plugin, void *arg)
{
hton_list_st *hton_list= (hton_list_st *)arg;
handlerton *hton= (handlerton *) plugin->plugin->info;
if (hton->state == SHOW_OPTION_YES && hton->binlog_func)
{
uint sz= hton_list->sz;
if (sz == MAX_HTON_LIST_ST-1)
{
/* list full */
return FALSE;
}
hton_list->hton[sz]= hton;
hton_list->sz= sz+1;
}
return FALSE;
}
static my_bool binlog_func_foreach(THD *thd, binlog_func_st *bfn)
{
handlerton *hton;
hton_list_st hton_list;
hton_list.sz= 0;
plugin_foreach(thd, binlog_func_list,
MYSQL_STORAGE_ENGINE_PLUGIN, &hton_list);
uint i= 0, sz= hton_list.sz;
while(i < sz)
hton_list.hton[i++]->binlog_func(thd, bfn->fn, bfn->arg);
return FALSE;
}
int ha_reset_logs(THD *thd)
{
binlog_func_st bfn= {BFN_RESET_LOGS, 0};
binlog_func_foreach(thd, &bfn);
return 0;
}
void ha_reset_slave(THD* thd)
{
binlog_func_st bfn= {BFN_RESET_SLAVE, 0};
binlog_func_foreach(thd, &bfn);
}
void ha_binlog_wait(THD* thd)
{
binlog_func_st bfn= {BFN_BINLOG_WAIT, 0};
binlog_func_foreach(thd, &bfn);
}
int ha_binlog_end(THD* thd)
{
binlog_func_st bfn= {BFN_BINLOG_END, 0};
binlog_func_foreach(thd, &bfn);
return 0;
}
int ha_binlog_index_purge_file(THD *thd, const char *file)
{
binlog_func_st bfn= {BFN_BINLOG_PURGE_FILE, (void *)file};
binlog_func_foreach(thd, &bfn);
}
struct binlog_log_query_st
{
enum_binlog_command binlog_command;
const char *query;
uint query_length;
const char *db;
const char *table_name;
};
static my_bool binlog_log_query_handlerton(THD *thd,
st_plugin_int *plugin,
void *args)
{
struct binlog_log_query_st *b= (struct binlog_log_query_st*)args;
handlerton *hton= (handlerton *) plugin->plugin->info;
if (hton->state == SHOW_OPTION_YES && hton->binlog_log_query)
hton->binlog_log_query(thd,
b->binlog_command,
b->query,
b->query_length,
b->db,
b->table_name);
return FALSE;
}
void ha_binlog_log_query(THD *thd, enum_binlog_command binlog_command,
const char *query, uint query_length,
const char *db, const char *table_name)
{
struct binlog_log_query_st b;
b.binlog_command= binlog_command;
b.query= query;
b.query_length= query_length;
b.db= db;
b.table_name= table_name;
plugin_foreach(thd, binlog_log_query_handlerton,
MYSQL_STORAGE_ENGINE_PLUGIN, &b);
}
#endif
/*
Read the first row of a multi-range set.
@@ -2832,6 +2958,8 @@ template<class RowsEventT> int binlog_log_row(TABLE* table,
const byte *before_record,
const byte *after_record)
{
if (table->file->is_injective())
return 0;
bool error= 0;
THD *const thd= current_thd;