summaryrefslogtreecommitdiff
path: root/includes/database/sqlite
diff options
context:
space:
mode:
Diffstat (limited to 'includes/database/sqlite')
-rw-r--r--includes/database/sqlite/database.inc15
-rw-r--r--includes/database/sqlite/schema.inc11
2 files changed, 23 insertions, 3 deletions
diff --git a/includes/database/sqlite/database.inc b/includes/database/sqlite/database.inc
index f4ee1704c..dc79b128d 100644
--- a/includes/database/sqlite/database.inc
+++ b/includes/database/sqlite/database.inc
@@ -39,6 +39,7 @@ class DatabaseConnection_sqlite extends DatabaseConnection {
$this->sqliteCreateFunction('length', 'strlen', 1);
$this->sqliteCreateFunction('concat', array($this, 'sqlFunctionConcat'));
$this->sqliteCreateFunction('substring', array($this, 'sqlFunctionSubstring'), 3);
+ $this->sqliteCreateFunction('substring_index', array($this, 'sqlFunctionSubstringIndex'), 3);
$this->sqliteCreateFunction('rand', array($this, 'sqlFunctionRand'));
}
@@ -83,6 +84,20 @@ class DatabaseConnection_sqlite extends DatabaseConnection {
}
/**
+ * SQLite compatibility implementation for the SUBSTRING_INDEX() SQL function.
+ */
+ public function sqlFunctionSubstringIndex($string, $delimiter, $count) {
+ $end = 0;
+ for ($i = 0; $i < $count; $i++) {
+ $end = strpos($string, $delimiter, $end + 1);
+ if ($end === FALSE) {
+ $end = strlen($string);
+ }
+ }
+ return substr($string, 0, $end);
+ }
+
+ /**
* SQLite compatibility implementation for the RAND() SQL function.
*/
public function sqlFunctionRand($seed = NULL) {
diff --git a/includes/database/sqlite/schema.inc b/includes/database/sqlite/schema.inc
index 834a93037..25c07d6c2 100644
--- a/includes/database/sqlite/schema.inc
+++ b/includes/database/sqlite/schema.inc
@@ -430,7 +430,10 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
*/
public function addIndex(&$ret, $table, $name, $fields) {
$schema['indexes'][$name] = $fields;
- $ret[] = update_sql($this->createIndexSql($table, $schema));
+ $statements = $this->createIndexSql($table, $schema);
+ foreach ($statements as $statement) {
+ $ret[] = update_sql($statement);
+ }
}
/**
@@ -461,8 +464,10 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
*/
public function addUniqueKey(&$ret, $table, $name, $fields) {
$schema['unique keys'][$name] = $fields;
- $ret[] = update_sql($this->createIndexSql($table, $schema));
-
+ $statements = $this->createIndexSql($table, $schema);
+ foreach ($statements as $statement) {
+ $ret[] = update_sql($statement);
+ }
}
/**