Loading BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ lenz@mysql.com magnus@neptunus.(none) magnus@shellback.(none) marko@hundin.mysql.fi marty@linux.site matt@mysql.com miguel@hegel.(none) miguel@hegel.br Loading sql/ha_ndbcluster.cc +49 −28 Original line number Diff line number Diff line Loading @@ -204,6 +204,12 @@ Thd_ndb::~Thd_ndb() delete ndb; } inline Ndb *ha_ndbcluster::get_ndb() { return ((Thd_ndb*)current_thd->transaction.thd_ndb)->ndb; } /* * manage uncommitted insert/deletes during transactio to get records correct */ Loading Loading @@ -233,8 +239,9 @@ void ha_ndbcluster::records_update() info->no_uncommitted_rows_count)); // if (info->records == ~(ha_rows)0) { Ndb *ndb= get_ndb(); Uint64 rows; if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){ if(ndb_get_table_statistics(ndb, m_tabname, &rows, 0) == 0){ info->records= rows; } } Loading Loading @@ -311,7 +318,8 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans) switch (err.classification) { case NdbError::SchemaError: { NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); DBUG_PRINT("info", ("invalidateTable %s", m_tabname)); dict->invalidateTable(m_tabname); table->version=0L; /* Free when thread is ready */ Loading Loading @@ -341,7 +349,7 @@ bool ha_ndbcluster::get_error_message(int error, DBUG_ENTER("ha_ndbcluster::get_error_message"); DBUG_PRINT("enter", ("error: %d", error)); Ndb *ndb= ((Thd_ndb*)current_thd->transaction.thd_ndb)->ndb; Ndb *ndb= get_ndb(); if (!ndb) DBUG_RETURN(FALSE); Loading Loading @@ -670,7 +678,8 @@ bool ha_ndbcluster::uses_blob_value(bool all_fields) int ha_ndbcluster::get_metadata(const char *path) { NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); const NDBTAB *tab; int error; bool invalidating_ndb_table= FALSE; Loading Loading @@ -745,7 +754,8 @@ int ha_ndbcluster::build_index_list(TABLE *tab, enum ILBP phase) static const char* unique_suffix= "$unique"; KEY* key_info= tab->key_info; const char **key_name= tab->keynames.type_names; NdbDictionary::Dictionary *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NdbDictionary::Dictionary *dict= ndb->getDictionary(); DBUG_ENTER("build_index_list"); // Save information about all known indexes Loading Loading @@ -1651,7 +1661,8 @@ int ha_ndbcluster::write_row(byte *record) if (table->primary_key == MAX_KEY) { // Table has hidden primary key Uint64 auto_value= m_ndb->getAutoIncrementValue((const NDBTAB *) m_table); Ndb *ndb= get_ndb(); Uint64 auto_value= ndb->getAutoIncrementValue((const NDBTAB *) m_table); if (set_hidden_key(op, table->fields, (const byte*)&auto_value)) ERR_RETURN(op->getNdbError()); } Loading Loading @@ -1727,11 +1738,12 @@ int ha_ndbcluster::write_row(byte *record) } if ((has_auto_increment) && (skip_auto_increment)) { Ndb *ndb= get_ndb(); Uint64 next_val= (Uint64) table->next_number_field->val_int() + 1; DBUG_PRINT("info", ("Trying to set next auto increment value to %lu", (ulong) next_val)); if (m_ndb->setAutoIncrementValue((const NDBTAB *) m_table, next_val, TRUE)) if (ndb->setAutoIncrementValue((const NDBTAB *) m_table, next_val, TRUE)) DBUG_PRINT("info", ("Setting next auto increment value to %u", next_val)); } Loading Loading @@ -2536,8 +2548,11 @@ void ha_ndbcluster::info(uint flag) } else { if ((my_errno= check_ndb_connection())) DBUG_VOID_RETURN; Ndb *ndb= get_ndb(); Uint64 rows; if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){ if(ndb_get_table_statistics(ndb, m_tabname, &rows, 0) == 0){ records= rows; } } Loading Loading @@ -2863,6 +2878,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) DBUG_RETURN(1); Thd_ndb *thd_ndb= (Thd_ndb*)thd->transaction.thd_ndb; Ndb *ndb= thd_ndb->ndb; DBUG_PRINT("enter", ("transaction.thd_ndb->lock_count: %d", thd_ndb->lock_count)); Loading @@ -2880,9 +2896,9 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) DBUG_ASSERT(!thd->transaction.stmt.ndb_tid); DBUG_PRINT("trans",("Starting transaction stmt")); trans= m_ndb->startTransaction(); trans= ndb->startTransaction(); if (trans == NULL) ERR_RETURN(m_ndb->getNdbError()); ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); thd->transaction.stmt.ndb_tid= trans; } Loading @@ -2894,9 +2910,9 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) // A "master" transaction ha not been started yet DBUG_PRINT("trans",("starting transaction, all")); trans= m_ndb->startTransaction(); trans= ndb->startTransaction(); if (trans == NULL) ERR_RETURN(m_ndb->getNdbError()); ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); /* Loading Loading @@ -2935,7 +2951,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) retrieve_all_fields= FALSE; ops_pending= 0; { NDBDICT *dict= m_ndb->getDictionary(); NDBDICT *dict= ndb->getDictionary(); const NDBTAB *tab; void *tab_info; if (!(tab= dict->getTable(m_tabname, &tab_info))) Loading @@ -2962,7 +2978,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) We must in this case close the transaction to release resources */ DBUG_PRINT("trans",("ending non-updating transaction")); m_ndb->closeTransaction(m_active_trans); ndb->closeTransaction(m_active_trans); thd->transaction.stmt.ndb_tid= 0; } } Loading Loading @@ -3008,16 +3024,17 @@ int ha_ndbcluster::start_stmt(THD *thd) NdbConnection *trans= (NdbConnection*)thd->transaction.stmt.ndb_tid; if (!trans){ Ndb *ndb= ((Thd_ndb*)thd->transaction.thd_ndb)->ndb; DBUG_PRINT("trans",("Starting transaction stmt")); NdbConnection *tablock_trans= (NdbConnection*)thd->transaction.all.ndb_tid; DBUG_PRINT("info", ("tablock_trans: %x", (uint)tablock_trans)); DBUG_ASSERT(tablock_trans); // trans= m_ndb->hupp(tablock_trans); trans= m_ndb->startTransaction(); // trans= ndb->hupp(tablock_trans); trans= ndb->startTransaction(); if (trans == NULL) ERR_RETURN(m_ndb->getNdbError()); ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); thd->transaction.stmt.ndb_tid= trans; } Loading Loading @@ -3363,7 +3380,8 @@ int ha_ndbcluster::create(const char *name, DBUG_RETURN(my_errno); // Create the table in NDB NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); if (dict->createTable(tab) != 0) { const NdbError err= dict->getNdbError(); Loading Loading @@ -3408,7 +3426,8 @@ int ha_ndbcluster::create_index(const char *name, KEY *key_info, bool unique) { NdbDictionary::Dictionary *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NdbDictionary::Dictionary *dict= ndb->getDictionary(); KEY_PART_INFO *key_part= key_info->key_part; KEY_PART_INFO *end= key_part + key_info->key_parts; Loading Loading @@ -3476,7 +3495,8 @@ int ha_ndbcluster::rename_table(const char *from, const char *to) int ha_ndbcluster::alter_table_name(const char *from, const char *to) { NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); const NDBTAB *orig_tab; DBUG_ENTER("alter_table_name_table"); DBUG_PRINT("enter", ("Renaming %s to %s", from, to)); Loading Loading @@ -3521,7 +3541,8 @@ int ha_ndbcluster::delete_table(const char *name) int ha_ndbcluster::drop_table() { NdbDictionary::Dictionary *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NdbDictionary::Dictionary *dict= ndb->getDictionary(); DBUG_ENTER("drop_table"); DBUG_PRINT("enter", ("Deleting %s", m_tabname)); Loading Loading @@ -3555,6 +3576,7 @@ longlong ha_ndbcluster::get_auto_increment() { DBUG_ENTER("get_auto_increment"); DBUG_PRINT("enter", ("m_tabname: %s", m_tabname)); Ndb *ndb= get_ndb(); int cache_size= (rows_to_insert - rows_inserted < autoincrement_prefetch) ? rows_to_insert - rows_inserted Loading @@ -3563,8 +3585,8 @@ longlong ha_ndbcluster::get_auto_increment() : autoincrement_prefetch; Uint64 auto_value= (skip_auto_increment) ? m_ndb->readAutoIncrementValue((const NDBTAB *) m_table) : m_ndb->getAutoIncrementValue((const NDBTAB *) m_table, cache_size); ndb->readAutoIncrementValue((const NDBTAB *) m_table) : ndb->getAutoIncrementValue((const NDBTAB *) m_table, cache_size); DBUG_RETURN((longlong)auto_value); } Loading @@ -3577,7 +3599,6 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg): handler(table_arg), m_active_trans(NULL), m_active_cursor(NULL), m_ndb(NULL), m_table(NULL), m_table_info(NULL), m_table_flags(HA_REC_NOT_IN_SEQ | Loading Loading @@ -3700,7 +3721,6 @@ int ha_ndbcluster::close(void) DBUG_ENTER("close"); free_share(m_share); m_share= 0; release_metadata(); m_ndb= NULL; DBUG_RETURN(0); } Loading Loading @@ -3761,11 +3781,12 @@ Ndb* check_ndb_in_thd(THD* thd) int ha_ndbcluster::check_ndb_connection() { THD* thd= current_thd; Ndb *ndb; DBUG_ENTER("check_ndb_connection"); if (!(m_ndb= check_ndb_in_thd(thd))) if (!(ndb= check_ndb_in_thd(thd))) DBUG_RETURN(HA_ERR_NO_CONNECTION); m_ndb->setDatabaseName(m_dbname); ndb->setDatabaseName(m_dbname); DBUG_RETURN(0); } Loading sql/ha_ndbcluster.h +1 −1 Original line number Diff line number Diff line Loading @@ -229,7 +229,6 @@ class ha_ndbcluster: public handler NdbConnection *m_active_trans; NdbResultSet *m_active_cursor; Ndb *m_ndb; void *m_table; void *m_table_info; char m_dbname[FN_HEADLEN]; Loading Loading @@ -257,6 +256,7 @@ class ha_ndbcluster: public handler uint32 blobs_buffer_size; uint dupkey; Ndb *get_ndb(); void set_rec_per_key(); void records_update(); void no_uncommitted_rows_execute_failure(); Loading Loading
BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ lenz@mysql.com magnus@neptunus.(none) magnus@shellback.(none) marko@hundin.mysql.fi marty@linux.site matt@mysql.com miguel@hegel.(none) miguel@hegel.br Loading
sql/ha_ndbcluster.cc +49 −28 Original line number Diff line number Diff line Loading @@ -204,6 +204,12 @@ Thd_ndb::~Thd_ndb() delete ndb; } inline Ndb *ha_ndbcluster::get_ndb() { return ((Thd_ndb*)current_thd->transaction.thd_ndb)->ndb; } /* * manage uncommitted insert/deletes during transactio to get records correct */ Loading Loading @@ -233,8 +239,9 @@ void ha_ndbcluster::records_update() info->no_uncommitted_rows_count)); // if (info->records == ~(ha_rows)0) { Ndb *ndb= get_ndb(); Uint64 rows; if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){ if(ndb_get_table_statistics(ndb, m_tabname, &rows, 0) == 0){ info->records= rows; } } Loading Loading @@ -311,7 +318,8 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans) switch (err.classification) { case NdbError::SchemaError: { NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); DBUG_PRINT("info", ("invalidateTable %s", m_tabname)); dict->invalidateTable(m_tabname); table->version=0L; /* Free when thread is ready */ Loading Loading @@ -341,7 +349,7 @@ bool ha_ndbcluster::get_error_message(int error, DBUG_ENTER("ha_ndbcluster::get_error_message"); DBUG_PRINT("enter", ("error: %d", error)); Ndb *ndb= ((Thd_ndb*)current_thd->transaction.thd_ndb)->ndb; Ndb *ndb= get_ndb(); if (!ndb) DBUG_RETURN(FALSE); Loading Loading @@ -670,7 +678,8 @@ bool ha_ndbcluster::uses_blob_value(bool all_fields) int ha_ndbcluster::get_metadata(const char *path) { NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); const NDBTAB *tab; int error; bool invalidating_ndb_table= FALSE; Loading Loading @@ -745,7 +754,8 @@ int ha_ndbcluster::build_index_list(TABLE *tab, enum ILBP phase) static const char* unique_suffix= "$unique"; KEY* key_info= tab->key_info; const char **key_name= tab->keynames.type_names; NdbDictionary::Dictionary *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NdbDictionary::Dictionary *dict= ndb->getDictionary(); DBUG_ENTER("build_index_list"); // Save information about all known indexes Loading Loading @@ -1651,7 +1661,8 @@ int ha_ndbcluster::write_row(byte *record) if (table->primary_key == MAX_KEY) { // Table has hidden primary key Uint64 auto_value= m_ndb->getAutoIncrementValue((const NDBTAB *) m_table); Ndb *ndb= get_ndb(); Uint64 auto_value= ndb->getAutoIncrementValue((const NDBTAB *) m_table); if (set_hidden_key(op, table->fields, (const byte*)&auto_value)) ERR_RETURN(op->getNdbError()); } Loading Loading @@ -1727,11 +1738,12 @@ int ha_ndbcluster::write_row(byte *record) } if ((has_auto_increment) && (skip_auto_increment)) { Ndb *ndb= get_ndb(); Uint64 next_val= (Uint64) table->next_number_field->val_int() + 1; DBUG_PRINT("info", ("Trying to set next auto increment value to %lu", (ulong) next_val)); if (m_ndb->setAutoIncrementValue((const NDBTAB *) m_table, next_val, TRUE)) if (ndb->setAutoIncrementValue((const NDBTAB *) m_table, next_val, TRUE)) DBUG_PRINT("info", ("Setting next auto increment value to %u", next_val)); } Loading Loading @@ -2536,8 +2548,11 @@ void ha_ndbcluster::info(uint flag) } else { if ((my_errno= check_ndb_connection())) DBUG_VOID_RETURN; Ndb *ndb= get_ndb(); Uint64 rows; if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){ if(ndb_get_table_statistics(ndb, m_tabname, &rows, 0) == 0){ records= rows; } } Loading Loading @@ -2863,6 +2878,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) DBUG_RETURN(1); Thd_ndb *thd_ndb= (Thd_ndb*)thd->transaction.thd_ndb; Ndb *ndb= thd_ndb->ndb; DBUG_PRINT("enter", ("transaction.thd_ndb->lock_count: %d", thd_ndb->lock_count)); Loading @@ -2880,9 +2896,9 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) DBUG_ASSERT(!thd->transaction.stmt.ndb_tid); DBUG_PRINT("trans",("Starting transaction stmt")); trans= m_ndb->startTransaction(); trans= ndb->startTransaction(); if (trans == NULL) ERR_RETURN(m_ndb->getNdbError()); ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); thd->transaction.stmt.ndb_tid= trans; } Loading @@ -2894,9 +2910,9 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) // A "master" transaction ha not been started yet DBUG_PRINT("trans",("starting transaction, all")); trans= m_ndb->startTransaction(); trans= ndb->startTransaction(); if (trans == NULL) ERR_RETURN(m_ndb->getNdbError()); ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); /* Loading Loading @@ -2935,7 +2951,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) retrieve_all_fields= FALSE; ops_pending= 0; { NDBDICT *dict= m_ndb->getDictionary(); NDBDICT *dict= ndb->getDictionary(); const NDBTAB *tab; void *tab_info; if (!(tab= dict->getTable(m_tabname, &tab_info))) Loading @@ -2962,7 +2978,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) We must in this case close the transaction to release resources */ DBUG_PRINT("trans",("ending non-updating transaction")); m_ndb->closeTransaction(m_active_trans); ndb->closeTransaction(m_active_trans); thd->transaction.stmt.ndb_tid= 0; } } Loading Loading @@ -3008,16 +3024,17 @@ int ha_ndbcluster::start_stmt(THD *thd) NdbConnection *trans= (NdbConnection*)thd->transaction.stmt.ndb_tid; if (!trans){ Ndb *ndb= ((Thd_ndb*)thd->transaction.thd_ndb)->ndb; DBUG_PRINT("trans",("Starting transaction stmt")); NdbConnection *tablock_trans= (NdbConnection*)thd->transaction.all.ndb_tid; DBUG_PRINT("info", ("tablock_trans: %x", (uint)tablock_trans)); DBUG_ASSERT(tablock_trans); // trans= m_ndb->hupp(tablock_trans); trans= m_ndb->startTransaction(); // trans= ndb->hupp(tablock_trans); trans= ndb->startTransaction(); if (trans == NULL) ERR_RETURN(m_ndb->getNdbError()); ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); thd->transaction.stmt.ndb_tid= trans; } Loading Loading @@ -3363,7 +3380,8 @@ int ha_ndbcluster::create(const char *name, DBUG_RETURN(my_errno); // Create the table in NDB NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); if (dict->createTable(tab) != 0) { const NdbError err= dict->getNdbError(); Loading Loading @@ -3408,7 +3426,8 @@ int ha_ndbcluster::create_index(const char *name, KEY *key_info, bool unique) { NdbDictionary::Dictionary *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NdbDictionary::Dictionary *dict= ndb->getDictionary(); KEY_PART_INFO *key_part= key_info->key_part; KEY_PART_INFO *end= key_part + key_info->key_parts; Loading Loading @@ -3476,7 +3495,8 @@ int ha_ndbcluster::rename_table(const char *from, const char *to) int ha_ndbcluster::alter_table_name(const char *from, const char *to) { NDBDICT *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); const NDBTAB *orig_tab; DBUG_ENTER("alter_table_name_table"); DBUG_PRINT("enter", ("Renaming %s to %s", from, to)); Loading Loading @@ -3521,7 +3541,8 @@ int ha_ndbcluster::delete_table(const char *name) int ha_ndbcluster::drop_table() { NdbDictionary::Dictionary *dict= m_ndb->getDictionary(); Ndb *ndb= get_ndb(); NdbDictionary::Dictionary *dict= ndb->getDictionary(); DBUG_ENTER("drop_table"); DBUG_PRINT("enter", ("Deleting %s", m_tabname)); Loading Loading @@ -3555,6 +3576,7 @@ longlong ha_ndbcluster::get_auto_increment() { DBUG_ENTER("get_auto_increment"); DBUG_PRINT("enter", ("m_tabname: %s", m_tabname)); Ndb *ndb= get_ndb(); int cache_size= (rows_to_insert - rows_inserted < autoincrement_prefetch) ? rows_to_insert - rows_inserted Loading @@ -3563,8 +3585,8 @@ longlong ha_ndbcluster::get_auto_increment() : autoincrement_prefetch; Uint64 auto_value= (skip_auto_increment) ? m_ndb->readAutoIncrementValue((const NDBTAB *) m_table) : m_ndb->getAutoIncrementValue((const NDBTAB *) m_table, cache_size); ndb->readAutoIncrementValue((const NDBTAB *) m_table) : ndb->getAutoIncrementValue((const NDBTAB *) m_table, cache_size); DBUG_RETURN((longlong)auto_value); } Loading @@ -3577,7 +3599,6 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg): handler(table_arg), m_active_trans(NULL), m_active_cursor(NULL), m_ndb(NULL), m_table(NULL), m_table_info(NULL), m_table_flags(HA_REC_NOT_IN_SEQ | Loading Loading @@ -3700,7 +3721,6 @@ int ha_ndbcluster::close(void) DBUG_ENTER("close"); free_share(m_share); m_share= 0; release_metadata(); m_ndb= NULL; DBUG_RETURN(0); } Loading Loading @@ -3761,11 +3781,12 @@ Ndb* check_ndb_in_thd(THD* thd) int ha_ndbcluster::check_ndb_connection() { THD* thd= current_thd; Ndb *ndb; DBUG_ENTER("check_ndb_connection"); if (!(m_ndb= check_ndb_in_thd(thd))) if (!(ndb= check_ndb_in_thd(thd))) DBUG_RETURN(HA_ERR_NO_CONNECTION); m_ndb->setDatabaseName(m_dbname); ndb->setDatabaseName(m_dbname); DBUG_RETURN(0); } Loading
sql/ha_ndbcluster.h +1 −1 Original line number Diff line number Diff line Loading @@ -229,7 +229,6 @@ class ha_ndbcluster: public handler NdbConnection *m_active_trans; NdbResultSet *m_active_cursor; Ndb *m_ndb; void *m_table; void *m_table_info; char m_dbname[FN_HEADLEN]; Loading Loading @@ -257,6 +256,7 @@ class ha_ndbcluster: public handler uint32 blobs_buffer_size; uint dupkey; Ndb *get_ndb(); void set_rec_per_key(); void records_update(); void no_uncommitted_rows_execute_failure(); Loading