X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FInnoDBIndexer.php;h=abe15f8edcaf14834977548b38f1c19b828144c6;hb=92b0f883315c72514e629b1c9e37261b84186785;hp=a505feec538863b027f595f94a4c1047352d28d1;hpb=fa5bb5cf6db9d297b63db22a4c4a2361c8361cfe;p=civicrm-core.git diff --git a/CRM/Core/InnoDBIndexer.php b/CRM/Core/InnoDBIndexer.php index a505feec53..abe15f8edc 100644 --- a/CRM/Core/InnoDBIndexer.php +++ b/CRM/Core/InnoDBIndexer.php @@ -37,21 +37,37 @@ class CRM_Core_InnoDBIndexer { */ private static $singleton = NULL; + /** + * @param bool $fresh + * @return CRM_Core_InnoDBIndexer + */ public static function singleton($fresh = FALSE) { if ($fresh || self::$singleton === NULL) { $indices = array( 'civicrm_address' => array( array('street_address', 'city', 'postal_code') ), + 'civicrm_activity' => array( + array('subject', 'details'), + ), 'civicrm_contact' => array( array('sort_name', 'nick_name', 'display_name'), ), + 'civicrm_contribution' => array( + array('source', 'amount_level', 'trxn_Id', 'invoice_id'), + ), 'civicrm_email' => array( array('email') ), + 'civicrm_membership' => array( + array('source'), + ), 'civicrm_note' => array( array('subject', 'note'), ), + 'civicrm_participant' => array( + array('source', 'fee_level'), + ), 'civicrm_phone' => array( array('phone'), ), @@ -59,7 +75,8 @@ class CRM_Core_InnoDBIndexer { array('name'), ), ); - self::$singleton = new self(TRUE, $indices); + $active = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, 'enable_innodb_fts', NULL, FALSE); + self::$singleton = new self($active, $indices); } return self::$singleton; } @@ -139,6 +156,13 @@ class CRM_Core_InnoDBIndexer { * @return array (string $indexName => string $indexName) */ public function findActualFtsIndexNames($table) { + $mysqlVersion = CRM_Core_DAO::singleValueQuery('SELECT VERSION()'); + if (version_compare($mysqlVersion, '5.6', '<')) { + // If we're not on 5.6+, then there cannot be any InnoDB FTS indices! + // Also: information_schema.innodb_sys_indexes is only available on 5.6+. + return array(); + } + // Note: this only works in MySQL 5.6, but this whole system is intended to only work in MySQL 5.6 $sql = " SELECT i.name as index_name