MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:pekka Date:May 16 2006 10:58am
Subject:bk commit into 5.0 tree (pekka:1.2125) BUG#14509
View as plain text  
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#14509pekka16 May