From ad8057a40b74b09808d0166e5b778d5978a92d3e Mon Sep 17 00:00:00 2001 From: "J. King" Date: Fri, 22 Feb 2019 11:13:13 -0500 Subject: [PATCH] Driver changes to support basic text searching --- lib/Db/Driver.php | 4 ++++ lib/Db/MySQL/Driver.php | 4 ++++ lib/Db/PostgreSQL/Driver.php | 6 ++++++ lib/Db/SQLite3/Driver.php | 4 ++++ 4 files changed, 18 insertions(+) diff --git a/lib/Db/Driver.php b/lib/Db/Driver.php index d3486db..81241e5 100644 --- a/lib/Db/Driver.php +++ b/lib/Db/Driver.php @@ -73,6 +73,10 @@ interface Driver { * * - "greatest": the GREATEST function implemented by PostgreSQL and MySQL * - "nocase": the name of a general-purpose case-insensitive collation sequence + * - "like": the case-insensitive LIKE operator */ public function sqlToken(string $token): string; + + /** Indicates whether the implementation is capable of full-text searching */ + public function fulltextEnabled(): bool; } diff --git a/lib/Db/MySQL/Driver.php b/lib/Db/MySQL/Driver.php index 8a4fe44..ac3fa79 100644 --- a/lib/Db/MySQL/Driver.php +++ b/lib/Db/MySQL/Driver.php @@ -212,4 +212,8 @@ class Driver extends \JKingWeb\Arsse\Db\AbstractDriver { public function prepareArray(string $query, array $paramTypes): \JKingWeb\Arsse\Db\Statement { return new Statement($this->db, $query, $paramTypes, $this->packetSize); } + + public function fulltextEnabled(): bool { + return false; + } } diff --git a/lib/Db/PostgreSQL/Driver.php b/lib/Db/PostgreSQL/Driver.php index 513ce99..e138afa 100644 --- a/lib/Db/PostgreSQL/Driver.php +++ b/lib/Db/PostgreSQL/Driver.php @@ -120,6 +120,8 @@ class Driver extends \JKingWeb\Arsse\Db\AbstractDriver { switch (strtolower($token)) { case "nocase": return '"und-x-icu"'; + case "like": + return "ilike"; default: return $token; } @@ -219,4 +221,8 @@ class Driver extends \JKingWeb\Arsse\Db\AbstractDriver { public function prepareArray(string $query, array $paramTypes): \JKingWeb\Arsse\Db\Statement { return new Statement($this->db, $query, $paramTypes); } + + public function fulltextEnabled(): bool { + return false; + } } diff --git a/lib/Db/SQLite3/Driver.php b/lib/Db/SQLite3/Driver.php index f7e47fb..e979d7c 100644 --- a/lib/Db/SQLite3/Driver.php +++ b/lib/Db/SQLite3/Driver.php @@ -179,4 +179,8 @@ class Driver extends \JKingWeb\Arsse\Db\AbstractDriver { $this->exec((!$rollback) ? "COMMIT" : "ROLLBACK"); return true; } + + public function fulltextEnabled(): bool { + return false; + } }