From: Date: May 16 2006 12:58pm Subject: bk commit into 5.0 tree (pekka:1.2125) BUG#14509 List-Archive: http://lists.mysql.com/commits/6458 X-Bug: 14509 Message-Id: <200605161058.k4GAwv81007599@orca.ndb.mysql.com> Below is the list of changes that have just been committed into a local 5.0 repository of pekka. When pekka does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet 1.2125 06/05/16 12:58:41 pekka@stripped +5 -0 ndb - bug#14509 [related] setAutoIncrement: add error handling sql/ha_ndbcluster.cc 1.246 06/05/16 12:44:11 pekka@stripped +5 -5 setAutoIncrement: add error handling ndb/tools/restore/consumer_restore.cpp 1.22 06/05/16 12:44:11 pekka@stripped +1 -1 setAutoIncrement: add error handling ndb/src/ndbapi/NdbDictionaryImpl.cpp 1.89 06/05/16 12:44:11 pekka@stripped +5 -8 setAutoIncrement: add error handling ndb/src/ndbapi/Ndb.cpp 1.57 06/05/16 12:44:11 pekka@stripped +19 -20 setAutoIncrement: add error handling ndb/include/ndbapi/Ndb.hpp 1.45 06/05/16 12:44:11 pekka@stripped +6 -6 setAutoIncrement: add error handling # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: pekka # Host: orca.ndb.mysql.com # Root: /space/pekka/ndb/version/my50-bug14509 --- 1.44/ndb/include/ndbapi/Ndb.hpp 2006-05-08 15:16:52 +02:00 +++ 1.45/ndb/include/ndbapi/Ndb.hpp 2006-05-16 12:44:11 +02:00 @@ -1432,7 +1432,7 @@ * * @param cacheSize number of values to cache in this Ndb object * - * @return tuple id or 0 on error + * @return tuple id or ~(Uint64)0 on error. */ Uint64 getAutoIncrementValue(const char* aTableName, Uint32 cacheSize = 1); @@ -1440,14 +1440,14 @@ Uint32 cacheSize = 1); Uint64 readAutoIncrementValue(const char* aTableName); Uint64 readAutoIncrementValue(const NdbDictionary::Table * aTable); - bool setAutoIncrementValue(const char* aTableName, Uint64 val, - bool increase = false); - bool setAutoIncrementValue(const NdbDictionary::Table * aTable, Uint64 val, - bool increase = false); + Uint64 setAutoIncrementValue(const char* aTableName, Uint64 val, + bool increase = false); + Uint64 setAutoIncrementValue(const NdbDictionary::Table * aTable, Uint64 val, + bool increase = false); private: Uint64 getTupleIdFromNdb(Ndb_local_table_info* info, Uint32 cacheSize); Uint64 readTupleIdFromNdb(Ndb_local_table_info* info); - bool setTupleIdInNdb(Ndb_local_table_info* info, Uint64 val, bool increase); + Uint64 setTupleIdInNdb(Ndb_local_table_info* info, Uint64 val, bool increase); Uint64 opTupleIdOnNdb(Ndb_local_table_info* info, Uint64 opValue, Uint32 op); public: --- 1.56/ndb/src/ndbapi/Ndb.cpp 2006-05-11 12:48:53 +02:00 +++ 1.57/ndb/src/ndbapi/Ndb.cpp 2006-05-16 12:44:11 +02:00 @@ -781,8 +781,7 @@ Ndb::getAutoIncrementValue(const NdbDictionary::Table * aTable, Uint32 cacheSize) { DBUG_ENTER("getAutoIncrementValue"); - if (aTable == 0) - DBUG_RETURN(~(Uint64)0); + assert(aTable != 0); const NdbTableImpl* table = & NdbTableImpl::getImpl(*aTable); const BaseString& internal_tabname = table->m_internalName; @@ -843,8 +842,7 @@ Ndb::readAutoIncrementValue(const NdbDictionary::Table * aTable) { DBUG_ENTER("readAutoIncrementValue"); - if (aTable == 0) - DBUG_RETURN(~(Uint64)0); + assert(aTable != 0); const NdbTableImpl* table = & NdbTableImpl::getImpl(*aTable); const BaseString& internal_tabname = table->m_internalName; @@ -880,7 +878,7 @@ DBUG_RETURN(tupleId); } -bool +Uint64 Ndb::setAutoIncrementValue(const char* aTableName, Uint64 val, bool increase) { DBUG_ENTER("setAutoIncrementValue"); @@ -890,17 +888,16 @@ theDictionary->get_local_table_info(internal_tabname, false); if (info == 0) { theError.code = theDictionary->getNdbError().code; - DBUG_RETURN(false); + DBUG_RETURN(~(Uint64)0); } DBUG_RETURN(setTupleIdInNdb(info, val, increase)); } -bool +Uint64 Ndb::setAutoIncrementValue(const NdbDictionary::Table * aTable, Uint64 val, bool increase) { DBUG_ENTER("setAutoIncrementValue"); - if (aTable == 0) - DBUG_RETURN(false); + assert(aTable != 0); const NdbTableImpl* table = & NdbTableImpl::getImpl(*aTable); const BaseString& internal_tabname = table->m_internalName; @@ -908,12 +905,12 @@ theDictionary->get_local_table_info(internal_tabname, false); if (info == 0) { theError.code = theDictionary->getNdbError().code; - DBUG_RETURN(false); + DBUG_RETURN(~(Uint64)0); } DBUG_RETURN(setTupleIdInNdb(info, val, increase)); } -bool +Uint64 Ndb::setTupleIdInNdb(Ndb_local_table_info* info, Uint64 val, bool increase) { DBUG_ENTER("setTupleIdInNdb"); @@ -923,11 +920,14 @@ { assert(info->m_first_tuple_id < info->m_last_tuple_id); if (val <= info->m_first_tuple_id + 1) - DBUG_RETURN(false); + DBUG_RETURN(val); if (val <= info->m_last_tuple_id) { info->m_first_tuple_id = val - 1; - DBUG_RETURN(true); + DBUG_PRINT("info", + ("Setting next auto increment cached value to %llu", + (ulonglong)val)); + DBUG_RETURN(val); } } /* @@ -954,8 +954,7 @@ NdbOperation* tOperation= 0; // Compiler warning if not initialized Uint64 tValue; NdbRecAttr* tRecAttrResult; - int result; - Uint64 ret; + Uint64 ret = ~(Uint64)0; CHECK_STATUS_MACRO_ZERO; @@ -1017,17 +1016,17 @@ tOperation->def_label(0); tOperation->interpret_exit_nok(9999); - if ( (result = tConnection->execute( Commit )) == -1 ) + if (tConnection->execute( Commit ) == -1) { if (tConnection->theError.code != 9999) goto error_handler; - - // NEXTID >= opValue, return ~(Uint64)0 for now since - // there is no error check... - ret = ~(Uint64)0; + ret = opValue; } else { + DBUG_PRINT("info", + ("Setting next auto increment value (db) to %llu", + (ulonglong)opValue)); info->m_first_tuple_id = info->m_last_tuple_id = opValue - 1; ret = opValue; } --- 1.88/ndb/src/ndbapi/NdbDictionaryImpl.cpp 2006-05-08 15:16:52 +02:00 +++ 1.89/ndb/src/ndbapi/NdbDictionaryImpl.cpp 2006-05-16 12:44:11 +02:00 @@ -1742,14 +1742,11 @@ DBUG_RETURN(ret); if (haveAutoIncrement) { - if (!ndb.setAutoIncrementValue(impl.m_externalName.c_str(), - autoIncrementValue)) { - if (ndb.theError.code == 0) { - m_error.code= 4336; - ndb.theError = m_error; - } else - m_error= ndb.theError; - ret = -1; // errorcode set in initialize_autoincrement + if (ndb.setAutoIncrementValue(impl.m_externalName.c_str(), + autoIncrementValue) == ~(Uint64)0) { + DBUG_ASSERT(ndb.theError.code != 0); + m_error= ndb.theError; + ret = -1; } } } --- 1.245/sql/ha_ndbcluster.cc 2006-04-26 15:47:20 +02:00 +++ 1.246/sql/ha_ndbcluster.cc 2006-05-16 12:44:11 +02:00 @@ -2197,11 +2197,11 @@ 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 (ndb->setAutoIncrementValue((const NDBTAB *) m_table, next_val, TRUE)) - DBUG_PRINT("info", - ("Setting next auto increment value to %u", next_val)); + ("Trying to set next auto increment value to %llu", + (ulonglong) next_val)); + if (ndb->setAutoIncrementValue((const NDBTAB *) m_table, next_val, TRUE) + == ~(Uint64)0) + ERR_RETURN(ndb->getNdbError()); } m_skip_auto_increment= TRUE; --- 1.21/ndb/tools/restore/consumer_restore.cpp 2006-02-13 12:58:03 +01:00 +++ 1.22/ndb/tools/restore/consumer_restore.cpp 2006-05-16 12:44:11 +02:00 @@ -150,7 +150,7 @@ Uint64 max_val= table.get_max_auto_val(); Uint64 auto_val= m_ndb->readAutoIncrementValue(get_table(table.m_dictTable)); if (max_val+1 > auto_val || auto_val == ~(Uint64)0) - ret= m_ndb->setAutoIncrementValue(get_table(table.m_dictTable), max_val+1, false); + ret= m_ndb->setAutoIncrementValue(get_table(table.m_dictTable), max_val+1, false) != ~(Uint64)0; } return ret; }