CRM-13302 - webtest fix - WebTest_Contact_CustomDataAddTest
authorDeepak Srivastava <deepak.srivastava@webaccess.co.in>
Mon, 23 Sep 2013 13:55:04 +0000 (19:25 +0530)
committerDeepak Srivastava <deepak.srivastava@webaccess.co.in>
Mon, 23 Sep 2013 13:55:04 +0000 (19:25 +0530)
CRM/Core/BAO/SchemaHandler.php
CRM/Logging/Schema.php

index ddfc60fec5d5c8f920c057e3f233a284e746faca..5914a406a1ca6963cbba106d3ac6392dda8b65a9 100644 (file)
@@ -298,7 +298,7 @@ ALTER TABLE {$tableName}
       // logging support: if we’re adding a column (but only then!) make sure the potential relevant log table gets a column as well
       if ($params['operation'] == 'add') {
         $logging = new CRM_Logging_Schema;
-        $logging->fixSchemaDifferencesFor($params['table_name'], array($params['name']), FALSE);
+        $logging->fixSchemaDifferencesFor($params['table_name'], array('ADD' => array($params['name'])), FALSE);
       }
     }
 
index 5b98d126e1872c1e08aad0ec23f6655d8a7f8b51..f20209a4e6c52905b1b58859cd53f80a0771c521 100644 (file)
@@ -200,9 +200,11 @@ AND    TABLE_NAME LIKE 'log_civicrm_%'
     // use the relevant lines from CREATE TABLE to add colums to the log table
     $create = $this->_getCreateQuery($table);
     foreach ((array('ADD', 'MODIFY')) as $alterType) {
-      foreach ($cols[$alterType] as $col) {
-        $line = $this->_getColumnQuery($col, $create);
-        CRM_Core_DAO::executeQuery("ALTER TABLE `{$this->db}`.log_$table {$alterType} {$line}");
+      if (!empty($cols[$alterType])) {
+        foreach ($cols[$alterType] as $col) {
+          $line = $this->_getColumnQuery($col, $create);
+          CRM_Core_DAO::executeQuery("ALTER TABLE `{$this->db}`.log_$table {$alterType} {$line}");
+        }
       }
     }
 
@@ -376,7 +378,7 @@ WHERE  table_schema IN ('{$this->db}', '{$civiDB}')";
     // wasn't deliberately modified by fixTimeStampAndNotNullSQL() method.
     foreach ($civiTableSpecs as $col => $colSpecs) {
       $specDiff = array_diff($civiTableSpecs[$col], $logTableSpecs[$col]);
-      if (!empty($specDiff) && $col != 'id') {
+      if (!empty($specDiff) && $col != 'id' && !array_key_exists($col, $diff['ADD'])) {
         // ignore 'id' column for any spec changes, to avoid any auto-increment mysql errors
         if ($civiTableSpecs[$col]['DATA_TYPE'] != $logTableSpecs[$col]['DATA_TYPE']) {
           // if data-type is different, surely consider the column