CRM-14811 - Check "enable_innodb_fts" during upgrades
authorTim Otten <totten@civicrm.org>
Sat, 7 Jun 2014 03:10:49 +0000 (20:10 -0700)
committerTim Otten <totten@civicrm.org>
Sat, 7 Jun 2014 03:11:27 +0000 (20:11 -0700)
CRM/Upgrade/Incremental/Legacy.php

index c6e1da861ec7b5ec390bf82acd391c78a1b50dbd..e489ce0d05c6e215af97813a14fc1c81b0ae21e7 100644 (file)
@@ -110,6 +110,19 @@ SELECT  id
         ));
       }
     }
+
+    if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'enable_innodb_fts', NULL, FALSE)) {
+      // The FTS indexing feature dynamically manipulates the schema which could
+      // cause conflicts with other layers that manipulate the schema. The
+      // simplest thing is to turn it off and back on.
+
+      // It may not always be necessary to do this -- but I doubt we're going to test
+      // systematically in future releases.  When it is necessary, one could probably
+      // ignore the matter and simply run CRM_Core_InnoDBIndexer::fixSchemaDifferences
+      // after the upgrade.  But that's speculative.  For now, we'll leave this
+      // advanced feature in the hands of the sysadmin.
+      $preUpgradeMessage .= '<br />' . ts('This database uses InnoDB Full Text Search for optimized searching. The upgrade procedure has not been tested with this feature. You should disable (and later re-enable) the feature by navigating to "Administer => System Settings => Miscellaneous".');
+    }
   }
 
   /**