List:Commits« Previous MessageNext Message »
From:Konstantin Osipov Date:December 11 2008 11:41am
Subject:bzr commit into mysql-6.1-fk branch (kostja:2701) WL#148
View as plain text  
#At file:///opt/local/work/mysql-6.1-fk-stage/

 2701 Konstantin Osipov	2008-12-11
      WL#148, Milestone 8, Part 1. Add misc comments.
modified:
  sql/fk.cc

=== modified file 'sql/fk.cc'
--- a/sql/fk.cc	2008-12-11 00:50:28 +0000
+++ b/sql/fk.cc	2008-12-11 10:41:25 +0000
@@ -179,7 +179,7 @@ private:
     An array of auxiliary objects which are used for constructing new values
     for child columns of foreign key in ON UPDATE CASCADE operation.
   */
-  Copy_field **cascade_copy;
+  Copy_field **m_cascade_copy;
 
   /** Type of referential action to be invoked on the child table. */
   enum_fk_option m_ref_action;
@@ -890,6 +890,11 @@ bool Foreign_key_parent_rcontext::prepar
   }
   m_key_idx= m_key - m_child_table->key_info;
 
+  /*
+    Create Field objects to operate with old record (record[1]
+    during update. We need to work with the old parent
+    value to be able to find its old children.
+  */
   List_iterator<Field> parent_col_it(m_fk_share->column_list);
   Field *parent_col;
   while ((parent_col= parent_col_it++))
@@ -915,6 +920,12 @@ bool Foreign_key_parent_rcontext::prepar
       return TRUE;
   }
 
+  /*
+    Allocate a buffer to store child key. Allocate objects to perform store
+    in the key. Allocate objects to store parent value in the child record
+    buffer, they are used if we do cascade.
+  */
+
   if (!(m_key_buff= (uchar*)m_thd->calloc(m_key->key_length)) ||
       !(m_key_copy= (store_key_field**)m_thd->calloc(sizeof(store_key_field *) *
                                                      (m_key->key_parts + 1))))
@@ -922,8 +933,8 @@ bool Foreign_key_parent_rcontext::prepar
 
   if (m_fk_list->action_type() == TRG_EVENT_UPDATE &&
       m_ref_action == FK_OPTION_CASCADE &&
-      !(cascade_copy= (Copy_field **)m_thd->calloc(sizeof(Copy_field *) *
-                                                   (m_key->key_parts + 1))))
+      !(m_cascade_copy= (Copy_field **)m_thd->calloc(sizeof(Copy_field *) *
+                                                     (m_key->key_parts + 1))))
     return TRUE;
 
   /*
@@ -965,9 +976,9 @@ bool Foreign_key_parent_rcontext::prepar
     if (m_fk_list->action_type() == TRG_EVENT_UPDATE &&
         m_ref_action == FK_OPTION_CASCADE)
     {
-      if (!(cascade_copy[i]= new (m_thd->mem_root) Copy_field()))
+      if (!(m_cascade_copy[i]= new (m_thd->mem_root) Copy_field()))
         return TRUE;
-      cascade_copy[i]->set(m_key->key_part[i].field,
+      m_cascade_copy[i]->set(m_key->key_part[i].field,
                            m_parent_table->field[old_parent_col->field_index],
                            FALSE);
     }
@@ -1168,7 +1179,7 @@ bool Foreign_key_parent_rcontext::do_cas
         break;
       case FK_OPTION_CASCADE:
         for (i= 0 ; i < m_key->key_parts; i++)
-          cascade_copy[i]->do_copy(cascade_copy[i]);
+          m_cascade_copy[i]->do_copy(m_cascade_copy[i]);
         break;
       default:
         DBUG_ASSERT(0);

Thread
bzr commit into mysql-6.1-fk branch (kostja:2701) WL#148Konstantin Osipov11 Dec