diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index 302c4ab28..dad8edde3 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -31,7 +31,7 @@ public function create(string $name): bool return true; } - $sql = "CREATE DATABASE `{$name}` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;"; + $sql = "CREATE DATABASE IF NOT EXISTS `{$name}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"; $sql = $this->trigger(Database::EVENT_DATABASE_CREATE, $sql); diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index 801c8b089..202ef1a70 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -2258,6 +2258,46 @@ public function testFind(): array ]; } + public function testOrderByNonEnglish(): void + { + Authorization::setRole(Role::any()->toString()); + + static::getDatabase()->createCollection('orderNonEnglish', permissions: [ + Permission::create(Role::any()), + ]); + + $this->assertEquals(true, static::getDatabase()->createAttribute('orderNonEnglish', 'name', Database::VAR_STRING, 128, true)); + + static::getDatabase()->createDocument('orderNonEnglish', new Document([ + '$permissions' => [ + Permission::read(Role::any()), + ], + 'name' => 'Å', + ])); + + static::getDatabase()->createDocument('orderNonEnglish', new Document([ + '$permissions' => [ + Permission::read(Role::any()), + ], + 'name' => 'A', + ])); + + $documents = static::getDatabase()->find('orderNonEnglish', [ + Query::orderAsc('name'), + ]); + + $this->assertEquals(2, count($documents)); + $this->assertEquals('A', $documents[0]->getAttribute('name')); + $this->assertEquals('Å', $documents[1]->getAttribute('name')); + + $documents = static::getDatabase()->find('orderNonEnglish', [ + Query::orderDesc('name'), + ]); + + $this->assertEquals('Å', $documents[0]->getAttribute('name')); + $this->assertEquals('A', $documents[1]->getAttribute('name')); + } + public function testFindBasicChecks(): void { $documents = static::getDatabase()->find('movies');