List:Internals« Previous MessageNext Message »
From:Martin Skold Date:September 13 2005 11:35am
Subject:bk commit into 5.1 tree (mskold:1.1916)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of marty. When marty 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.1916 05/09/13 13:35:12 mskold@stripped +2 -0
  Merge mskold@stripped:/home/bk/mysql-5.1
  into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.1-opt

  storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp
    1.18 05/09/13 13:35:05 mskold@stripped +0 -0
    Auto merged

  storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
    1.53 05/09/13 13:35:05 mskold@stripped +0 -0
    Auto merged

# 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:	mskold
# Host:	blowfish.ndb.mysql.com
# Root:	/usr/local/home/marty/MySQL/mysql-5.1-opt/RESYNC

--- 1.52/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2005-09-03 01:06:55 +02:00
+++ 1.53/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2005-09-13 13:35:05 +02:00
@@ -3810,18 +3810,22 @@
 			   TableRecordPtr origTablePtr,
 			   TableRecordPtr newTablePtr)
 {
+  bool supportedAlteration = false;
   Uint32 changeMask = req->changeMask;
   
   if (AlterTableReq::getNameFlag(changeMask)) {
     jam();
     // Table rename
+    supportedAlteration = true;
     // Remove from hashtable
 #ifdef VM_TRACE
     TableRecordPtr tmp;
     ndbrequire(c_tableRecordHash.find(tmp, *origTablePtr.p));
 #endif
     c_tableRecordHash.remove(origTablePtr);
+    // Save old name
     strcpy(alterTabPtrP->previousTableName, origTablePtr.p->tableName);
+    // Set new name
     strcpy(origTablePtr.p->tableName, newTablePtr.p->tableName);
     // Set new schema version
     origTablePtr.p->tableVersion = newTablePtr.p->tableVersion;
@@ -3830,11 +3834,28 @@
     ndbrequire(!c_tableRecordHash.find(tmp, *origTablePtr.p));
 #endif
     c_tableRecordHash.add(origTablePtr);	 
-    
+  }
+
+  if (AlterTableReq::getFrmFlag(changeMask)) {
+    // Table definition changed (new frm)
+    supportedAlteration = true;
+    // Save old definition
+    strncpy(alterTabPtrP->previousFrmData, origTablePtr.p->frmData, origTablePtr.p->frmLen);
+    alterTabPtrP->previousFrmLen = origTablePtr.p->frmLen;
+    // Set new definition
+    strncpy(origTablePtr.p->frmData, newTablePtr.p->frmData, newTablePtr.p->frmLen);
+    origTablePtr.p->frmLen = newTablePtr.p->frmLen;
+    // Set new schema version
+    origTablePtr.p->tableVersion = newTablePtr.p->tableVersion;
+  }
+
+  if (supportedAlteration)
     return 0;
+  else
+  {
+    jam();
+    return -1;
   }
-  jam();
-  return -1;
 }
 
 void Dbdict::revertAlterTable(Signal * signal, 
@@ -3842,9 +3863,12 @@
 			      Uint32 tableId,
 			      CreateTableRecord * alterTabPtrP)
 {
+  bool supportedAlteration = false;
+
   if (AlterTableReq::getNameFlag(changeMask)) {
     jam();
     // Table rename
+    supportedAlteration = true;
     // Restore previous name
     TableRecordPtr tablePtr;
     c_tableRecordPool.getPtr(tablePtr, tableId);
@@ -3863,10 +3887,25 @@
     ndbrequire(!c_tableRecordHash.find(tmp, * tablePtr.p));
 #endif
     c_tableRecordHash.add(tablePtr);	 
+  }
 
-    return;
+  if (AlterTableReq::getFrmFlag(changeMask)) {
+    jam();
+    // Table redefinition
+    supportedAlteration = true;
+    // Restore previous frm
+    TableRecordPtr tablePtr;
+    c_tableRecordPool.getPtr(tablePtr, tableId);
+    // Restore frm
+    strncpy(tablePtr.p->frmData, alterTabPtrP->previousFrmData, alterTabPtrP->previousFrmLen);
+    tablePtr.p->frmLen = alterTabPtrP->previousFrmLen;
+    // Revert schema version
+    tablePtr.p->tableVersion = alter_table_dec_schema_version(tablePtr.p->tableVersion);
   }
 
+  if (supportedAlteration)
+    return;
+  
   ndbrequire(false);
 }
 

--- 1.17/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp	2005-09-02 08:42:58 +02:00
+++ 1.18/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp	2005-09-13 13:35:05 +02:00
@@ -900,6 +900,11 @@
     /* Previous table name (used for reverting failed table rename) */
     char previousTableName[MAX_TAB_NAME_SIZE];
 
+    /* Previous table definition, frm (used for reverting) */
+    /** TODO Could preferrably be made dynamic size */
+    Uint32 previousFrmLen;
+    char previousFrmData[MAX_FRM_DATA_SIZE];
+
     Uint32 m_tablePtrI;
     Uint32 m_tabInfoPtrI;
     Uint32 m_fragmentsPtrI;
Thread
bk commit into 5.1 tree (mskold:1.1916)Martin Skold13 Sep