diff options
author | unknown <monty@mysql.com> | 2006-06-04 21:05:22 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2006-06-04 21:05:22 +0300 |
commit | 555eb848f2aa3ac5eb09b251072930eb38cd8f7e (patch) | |
tree | 8e3365da0e05942d80e6e6ae092f7e0e40832fe2 /sql/ha_ndbcluster_binlog.cc | |
parent | 14e1d69aeaa09075fe3ec609d5ccdcf899508d7d (diff) | |
parent | 01d03e7b4b14b805a0d19c8473a495f05b34de65 (diff) | |
download | mariadb-git-555eb848f2aa3ac5eb09b251072930eb38cd8f7e.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/home/my/mysql-5.1
BitKeeper/etc/ignore:
auto-union
include/heap.h:
Auto merged
include/my_base.h:
Auto merged
include/mysql_com.h:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Auto merged
mysql-test/r/binlog_stm_mix_innodb_myisam.result:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/ndb_index_unique.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/view_grant.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_berkeley.cc:
Auto merged
sql/ha_berkeley.h:
Auto merged
mysql-test/r/view_grant.result:
Auto merged
sql/ha_federated.cc:
Auto merged
sql/ha_federated.h:
Auto merged
sql/ha_heap.h:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/ha_myisam.h:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/ha_partition.h:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/spatial.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_bitmap.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_plugin.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/table.h:
Auto merged
storage/archive/ha_archive.cc:
Auto merged
storage/archive/ha_archive.h:
Auto merged
storage/example/ha_example.cc:
Auto merged
storage/myisam/ft_boolean_search.c:
Auto merged
unittest/mysys/base64-t.c:
Auto merged
mysql-test/r/innodb_mysql.result:
manual merge
mysql-test/t/innodb_mysql.test:
manual merge
mysql-test/valgrind.supp:
manual merge
sql/event.cc:
manual merge
sql/ha_heap.cc:
manual merge
sql/ha_myisam.cc:
manual merge
sql/ha_ndbcluster.cc:
manual merge
sql/ha_ndbcluster_binlog.cc:
manual merge
sql/ha_partition.cc:
manual merge
sql/handler.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/handler.h:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/item.h:
automatic merge
sql/item_cmpfunc.cc:
automatic merge
sql/log_event.cc:
manual merge
Trivial cleanup
sql/mysql_priv.h:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/opt_range.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_delete.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_insert.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_load.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_select.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_show.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_table.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_update.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/table.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
storage/blackhole/ha_blackhole.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
storage/csv/ha_tina.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
mysql-test/valgrind.supp.orig:
Manual merge
Diffstat (limited to 'sql/ha_ndbcluster_binlog.cc')
-rw-r--r-- | sql/ha_ndbcluster_binlog.cc | 69 |
1 files changed, 38 insertions, 31 deletions
diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index 3f9c5bf993e..3b93eb4b4c9 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -270,6 +270,14 @@ ndbcluster_binlog_close_table(THD *thd, NDB_SHARE *share) DBUG_VOID_RETURN; } + +/* + Creates a TABLE object for the ndb cluster table + + NOTES + This does not open the underlying table +*/ + static int ndbcluster_binlog_open_table(THD *thd, NDB_SHARE *share, TABLE_SHARE *table_share, TABLE *table, @@ -325,6 +333,8 @@ ndbcluster_binlog_open_table(THD *thd, NDB_SHARE *share, share->table_share= table_share; DBUG_ASSERT(share->table == 0); share->table= table; + /* We can't use 'use_all_columns()' as the file object is not setup yet */ + table->column_bitmaps_set_no_signal(&table->s->all_set, &table->s->all_set); #ifndef DBUG_OFF dbug_print_table("table", table); #endif @@ -358,7 +368,7 @@ void ndbcluster_binlog_init_share(NDB_SHARE *share, TABLE *_table) { bitmap_init(&share->subscriber_bitmap[i], (Uint32*)alloc_root(mem_root, max_ndb_nodes/8), - max_ndb_nodes, false); + max_ndb_nodes, FALSE); bitmap_clear_all(&share->subscriber_bitmap[i]); } } @@ -886,6 +896,7 @@ static void ndbcluster_get_schema(NDB_SHARE *share, /* unpack blob values */ byte* blobs_buffer= 0; uint blobs_buffer_size= 0; + my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set); { ptrdiff_t ptrdiff= 0; int ret= get_ndb_blobs_value(table, share->ndb_value[0], @@ -895,7 +906,7 @@ static void ndbcluster_get_schema(NDB_SHARE *share, { my_free(blobs_buffer, MYF(MY_ALLOW_ZERO_PTR)); DBUG_PRINT("info", ("blob read error")); - DBUG_ASSERT(false); + DBUG_ASSERT(FALSE); } } /* db varchar 1 length byte */ @@ -947,6 +958,7 @@ static void ndbcluster_get_schema(NDB_SHARE *share, s->type= ((Field_long *)*field)->val_int(); /* free blobs buffer */ my_free(blobs_buffer, MYF(MY_ALLOW_ZERO_PTR)); + dbug_tmp_restore_column_map(table->read_set, old_map); } /* @@ -1241,7 +1253,7 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share, { int i, updated= 0; int no_storage_nodes= g_ndb_cluster_connection->no_db_nodes(); - bitmap_init(&schema_subscribers, bitbuf, sizeof(bitbuf)*8, false); + bitmap_init(&schema_subscribers, bitbuf, sizeof(bitbuf)*8, FALSE); bitmap_set_all(&schema_subscribers); (void) pthread_mutex_lock(&schema_share->mutex); for (i= 0; i < no_storage_nodes; i++) @@ -1717,7 +1729,7 @@ ndb_binlog_thread_handle_schema_event(THD *thd, Ndb *ndb, Cluster_schema *schema= (Cluster_schema *) sql_alloc(sizeof(Cluster_schema)); MY_BITMAP slock; - bitmap_init(&slock, schema->slock, 8*SCHEMA_SLOCK_SIZE, false); + bitmap_init(&slock, schema->slock, 8*SCHEMA_SLOCK_SIZE, FALSE); uint node_id= g_ndb_cluster_connection->node_id(); ndbcluster_get_schema(tmp_share, schema); enum SCHEMA_OP_TYPE schema_type= (enum SCHEMA_OP_TYPE)schema->type; @@ -1956,7 +1968,7 @@ ndb_binlog_thread_handle_schema_event_post_epoch(THD *thd, pthread_mutex_unlock(&ndbcluster_mutex); continue; } - NDB_SHARE *share= get_share(key, 0, false, false); + NDB_SHARE *share= get_share(key, 0, FALSE, FALSE); switch (schema_type) { case SOT_DROP_DB: @@ -2020,7 +2032,7 @@ ndb_binlog_thread_handle_schema_event_post_epoch(THD *thd, } break; default: - DBUG_ASSERT(false); + DBUG_ASSERT(FALSE); } if (share) { @@ -2097,18 +2109,20 @@ static int open_binlog_index(THD *thd, TABLE_LIST *tables, } *binlog_index= tables->table; thd->proc_info= save_proc_info; + (*binlog_index)->use_all_columns(); return 0; } + /* Insert one row in the binlog_index */ + int ndb_add_binlog_index(THD *thd, void *_row) { Binlog_index_row &row= *(Binlog_index_row *) _row; int error= 0; bool need_reopen; - /* Turn of binlogging to prevent the table changes to be written to the binary log. @@ -2150,10 +2164,9 @@ int ndb_add_binlog_index(THD *thd, void *_row) binlog_index->field[5]->store(row.n_deletes); binlog_index->field[6]->store(row.n_schemaops); - int r; - if ((r= binlog_index->file->ha_write_row(binlog_index->record[0]))) + if ((error= binlog_index->file->ha_write_row(binlog_index->record[0]))) { - sql_print_error("NDB Binlog: Writing row to binlog_index: %d", r); + sql_print_error("NDB Binlog: Writing row to binlog_index: %d", error); error= -1; goto add_binlog_index_err; } @@ -2287,7 +2300,7 @@ int ndbcluster_create_binlog_setup(Ndb *ndb, const char *key, } /* Create share which is needed to hold replication information */ - if (!(share= get_share(key, 0, true, true))) + if (!(share= get_share(key, 0, TRUE, TRUE))) { sql_print_error("NDB Binlog: " "allocating table share for %s failed", key); @@ -2438,7 +2451,7 @@ ndbcluster_create_event(Ndb *ndb, const NDBTAB *ndbtab, } } if (share->flags & NSF_BLOB_FLAG) - my_event.mergeEvents(true); + my_event.mergeEvents(TRUE); /* add all columns to the event */ int n_cols= ndbtab->getNoOfColumns(); @@ -2626,7 +2639,7 @@ ndbcluster_create_event_ops(NDB_SHARE *share, const NDBTAB *ndbtab, } if (share->flags & NSF_BLOB_FLAG) - op->mergeEvents(true); // currently not inherited from event + op->mergeEvents(TRUE); // currently not inherited from event DBUG_PRINT("info", ("share->ndb_value[0]: 0x%x", share->ndb_value[0])); @@ -2774,7 +2787,7 @@ ndbcluster_handle_drop_table(Ndb *ndb, const char *event_name, share->op->getState() == NdbEventOperation::EO_EXECUTING && dict->getNdbError().code != 4009) { - DBUG_ASSERT(false); + DBUG_ASSERT(FALSE); DBUG_RETURN(-1); } } @@ -2902,7 +2915,7 @@ ndb_binlog_thread_handle_non_data_event(THD *thd, Ndb *ndb, /* make sure to flush any pending events as they can be dependent on one of the tables being changed below */ - thd->binlog_flush_pending_rows_event(true); + thd->binlog_flush_pending_rows_event(TRUE); switch (type) { @@ -2986,7 +2999,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp, /* Potential buffer for the bitmap */ uint32 bitbuf[128 / (sizeof(uint32) * 8)]; bitmap_init(&b, n_fields <= sizeof(bitbuf) * 8 ? bitbuf : NULL, - n_fields, false); + n_fields, FALSE); bitmap_set_all(&b); /* @@ -3019,7 +3032,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp, } ndb_unpack_record(table, share->ndb_value[0], &b, table->record[0]); int ret= trans.write_row(::server_id, - injector::transaction::table(table, true), + injector::transaction::table(table, TRUE), &b, n_fields, table->record[0]); DBUG_ASSERT(ret == 0); } @@ -3057,7 +3070,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp, ndb_unpack_record(table, share->ndb_value[n], &b, table->record[n]); DBUG_EXECUTE("info", print_records(table, table->record[n]);); int ret= trans.delete_row(::server_id, - injector::transaction::table(table, true), + injector::transaction::table(table, TRUE), &b, n_fields, table->record[n]); DBUG_ASSERT(ret == 0); } @@ -3084,7 +3097,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp, since table has a primary key, we can do a write using only after values */ - trans.write_row(::server_id, injector::transaction::table(table, true), + trans.write_row(::server_id, injector::transaction::table(table, TRUE), &b, n_fields, table->record[0]);// after values } else @@ -3104,7 +3117,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp, ndb_unpack_record(table, share->ndb_value[1], &b, table->record[1]); DBUG_EXECUTE("info", print_records(table, table->record[1]);); int ret= trans.update_row(::server_id, - injector::transaction::table(table, true), + injector::transaction::table(table, TRUE), &b, n_fields, table->record[1], // before values table->record[0]);// after values @@ -3196,7 +3209,7 @@ static NDB_SCHEMA_OBJECT *ndb_get_schema_object(const char *key, } pthread_mutex_init(&ndb_schema_object->mutex, MY_MUTEX_INIT_FAST); bitmap_init(&ndb_schema_object->slock_bitmap, ndb_schema_object->slock, - sizeof(ndb_schema_object->slock)*8, false); + sizeof(ndb_schema_object->slock)*8, FALSE); bitmap_clear_all(&ndb_schema_object->slock_bitmap); break; } @@ -3607,7 +3620,7 @@ restart: inj->new_trans(thd, &trans); } DBUG_PRINT("info", ("use_table: %.*s", name.length, name.str)); - injector::transaction::table tbl(table, true); + injector::transaction::table tbl(table, TRUE); int ret= trans.use_table(::server_id, tbl); DBUG_ASSERT(ret == 0); } @@ -3620,20 +3633,14 @@ restart: const LEX_STRING& name=table->s->table_name; DBUG_PRINT("info", ("use_table: %.*s", name.length, name.str)); - injector::transaction::table tbl(table, true); + injector::transaction::table tbl(table, TRUE); int ret= trans.use_table(::server_id, tbl); DBUG_ASSERT(ret == 0); - - MY_BITMAP b; - uint32 bitbuf; - DBUG_ASSERT(table->s->fields <= sizeof(bitbuf) * 8); - bitmap_init(&b, &bitbuf, table->s->fields, false); - bitmap_set_all(&b); table->field[0]->store((longlong)::server_id); table->field[1]->store((longlong)gci); trans.write_row(::server_id, - injector::transaction::table(table, true), - &b, table->s->fields, + injector::transaction::table(table, TRUE), + &table->s->all_set, table->s->fields, table->record[0]); } else |