From 692ef9c3309bde60346beb32386ff17157e0a5e2 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 1 Nov 2010 13:27:44 -0700 Subject: [PATCH] Include fulltext indexes in MySQL table create --- lib/mysqlschema.php | 14 ++++++++++++++ lib/schema.php | 25 +++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/lib/mysqlschema.php b/lib/mysqlschema.php index a2581e6d81..c3d3501c74 100644 --- a/lib/mysqlschema.php +++ b/lib/mysqlschema.php @@ -244,6 +244,20 @@ class MysqlSchema extends Schema return $this->fetchQueryData($sql); } + /** + * Append an SQL statement with an index definition for a full-text search + * index over one or more columns on a table. + * + * @param array $statements + * @param string $table + * @param string $name + * @param array $def + */ + function appendCreateFulltextIndex(array &$statements, $table, $name, array $def) + { + $statements[] = "CREATE FULLTEXT INDEX $name ON $table " . $this->buildIndexList($def); + } + /** * Close out a 'create table' SQL statement. * diff --git a/lib/schema.php b/lib/schema.php index 671af8a210..2e27955881 100644 --- a/lib/schema.php +++ b/lib/schema.php @@ -168,17 +168,24 @@ class Schema } } - // Multi-value indexes are advisory and for best portability - // should be created as separate statements. + // Wrap the CREATE TABLE around the main body chunks... $statements = array(); $statements[] = $this->startCreateTable($name, $def) . "\n" . implode($sql, ",\n") . "\n" . $this->endCreateTable($name, $def); + + // Multi-value indexes are advisory and for best portability + // should be created as separate statements. if (!empty($def['indexes'])) { foreach ($def['indexes'] as $col => $colDef) { $this->appendCreateIndex($statements, $name, $col, $colDef); } } + if (!empty($def['fulltext indexes'])) { + foreach ($def['fulltext indexes'] as $col => $colDef) { + $this->appendCreateFulltextIndex($statements, $name, $col, $colDef); + } + } return $statements; } @@ -282,6 +289,20 @@ class Schema $statements[] = "CREATE INDEX $name ON $table " . $this->buildIndexList($def); } + /** + * Append an SQL statement with an index definition for a full-text search + * index over one or more columns on a table. + * + * @param array $statements + * @param string $table + * @param string $name + * @param array $def + */ + function appendCreateFulltextIndex(array &$statements, $table, $name, array $def) + { + throw new Exception("Fulltext index not supported in this database"); + } + /** * Append an SQL statement to drop an index from a table. * -- 2.39.5