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;
}
| Thread |
|---|
| • bk commit into 5.0 tree (pekka:1.2125) BUG#14509 | pekka | 16 May |