diff --git a/DataStorage/Database/GrammarAbstract.php b/DataStorage/Database/GrammarAbstract.php index 59ebe5ae5..2234e3aac 100644 --- a/DataStorage/Database/GrammarAbstract.php +++ b/DataStorage/Database/GrammarAbstract.php @@ -48,7 +48,15 @@ abstract class GrammarAbstract * @var string * @since 1.0.0 */ - protected string $systemIdentifier = '"'; + protected string $systemIdentifierStart = '"'; + + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierEnd = '"'; /** * And operator. @@ -201,11 +209,13 @@ abstract class GrammarAbstract */ protected function compileSystem(string $system) : string { - $identifier = $this->systemIdentifier; + $identifierStart = $this->systemIdentifierStart; + $identifierEnd = $this->systemIdentifierEnd; foreach ($this->specialKeywords as $keyword) { if (\strrpos($system, $keyword, -\strlen($system)) !== false) { - $identifier = ''; + $identifierStart = ''; + $identifierEnd = ''; break; } @@ -216,9 +226,9 @@ abstract class GrammarAbstract foreach ($split as $key => $system) { $fullSystem .= '.' - . ($system !== '*' ? $identifier : '') + . ($system !== '*' ? $identifierStart : '') . $system - . ($system !== '*' ? $identifier : ''); + . ($system !== '*' ? $identifierEnd : ''); } return \ltrim($fullSystem, '.'); diff --git a/DataStorage/Database/Query/Grammar/MysqlGrammar.php b/DataStorage/Database/Query/Grammar/MysqlGrammar.php index b01c238ec..bacd9cb36 100644 --- a/DataStorage/Database/Query/Grammar/MysqlGrammar.php +++ b/DataStorage/Database/Query/Grammar/MysqlGrammar.php @@ -32,7 +32,15 @@ class MysqlGrammar extends Grammar * @var string * @since 1.0.0 */ - protected string $systemIdentifier = '`'; + protected string $systemIdentifierStart = '`'; + + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierEnd = '`'; /** * Compile random. diff --git a/DataStorage/Database/Query/Grammar/SQLiteGrammar.php b/DataStorage/Database/Query/Grammar/SQLiteGrammar.php index 9d8045e54..81be89bdd 100644 --- a/DataStorage/Database/Query/Grammar/SQLiteGrammar.php +++ b/DataStorage/Database/Query/Grammar/SQLiteGrammar.php @@ -32,7 +32,15 @@ class SQLiteGrammar extends Grammar * @var string * @since 1.0.0 */ - public string $systemIdentifier = '`'; + public string $systemIdentifierStart = '`'; + + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierEnd = '`'; /** * Compile random. diff --git a/DataStorage/Database/Query/Grammar/SqlServerGrammar.php b/DataStorage/Database/Query/Grammar/SqlServerGrammar.php index 3f61d5b5b..e79a62311 100644 --- a/DataStorage/Database/Query/Grammar/SqlServerGrammar.php +++ b/DataStorage/Database/Query/Grammar/SqlServerGrammar.php @@ -26,6 +26,22 @@ use phpOMS\DataStorage\Database\Query\Builder; */ class SqlServerGrammar extends Grammar { + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierStart = '['; + + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierEnd = ']'; + /** * Compile random. * diff --git a/DataStorage/Database/Schema/Grammar/MysqlGrammar.php b/DataStorage/Database/Schema/Grammar/MysqlGrammar.php index 660db1347..25ce71138 100644 --- a/DataStorage/Database/Schema/Grammar/MysqlGrammar.php +++ b/DataStorage/Database/Schema/Grammar/MysqlGrammar.php @@ -37,7 +37,15 @@ class MysqlGrammar extends Grammar * @var string * @since 1.0.0 */ - protected string $systemIdentifier = '`'; + protected string $systemIdentifierStart = '`'; + + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierEnd = '`'; /** * Compile remove diff --git a/DataStorage/Database/Schema/Grammar/SQLiteGrammar.php b/DataStorage/Database/Schema/Grammar/SQLiteGrammar.php index 3cd0cc2ac..ae1a3ac41 100644 --- a/DataStorage/Database/Schema/Grammar/SQLiteGrammar.php +++ b/DataStorage/Database/Schema/Grammar/SQLiteGrammar.php @@ -30,5 +30,13 @@ class SQLiteGrammar extends Grammar * @var string * @since 1.0.0 */ - protected string $systemIdentifier = '`'; + protected string $systemIdentifierStart = '`'; + + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierEnd = '`'; } diff --git a/DataStorage/Database/Schema/Grammar/SqlServerGrammar.php b/DataStorage/Database/Schema/Grammar/SqlServerGrammar.php index e3a5b538a..4c72006a1 100644 --- a/DataStorage/Database/Schema/Grammar/SqlServerGrammar.php +++ b/DataStorage/Database/Schema/Grammar/SqlServerGrammar.php @@ -24,4 +24,19 @@ namespace phpOMS\DataStorage\Database\Schema\Grammar; */ class SqlServerGrammar extends Grammar { + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierStart = '['; + + /** + * System identifier. + * + * @var string + * @since 1.0.0 + */ + protected string $systemIdentifierEnd = ']'; } diff --git a/tests/DataStorage/Database/Query/Grammar/MysqlGrammarTest.php b/tests/DataStorage/Database/Query/Grammar/MysqlGrammarTest.php index ea4c4dcd5..69588a43d 100644 --- a/tests/DataStorage/Database/Query/Grammar/MysqlGrammarTest.php +++ b/tests/DataStorage/Database/Query/Grammar/MysqlGrammarTest.php @@ -31,6 +31,7 @@ class MysqlGrammarTest extends \PHPUnit\Framework\TestCase public function testDefault() : void { self::assertInstanceOf('\phpOMS\DataStorage\Database\Query\Grammar\Grammar', new MysqlGrammar()); - self::assertEquals('`', TestUtils::getMember(new MysqlGrammar(), 'systemIdentifier')); + self::assertEquals('`', TestUtils::getMember(new MysqlGrammar(), 'systemIdentifierStart')); + self::assertEquals('`', TestUtils::getMember(new MysqlGrammar(), 'systemIdentifierEnd')); } } diff --git a/tests/DataStorage/Database/Query/Grammar/SQLiteGrammarTest.php b/tests/DataStorage/Database/Query/Grammar/SQLiteGrammarTest.php index c70c714d8..b73ce7c79 100644 --- a/tests/DataStorage/Database/Query/Grammar/SQLiteGrammarTest.php +++ b/tests/DataStorage/Database/Query/Grammar/SQLiteGrammarTest.php @@ -31,6 +31,7 @@ class SQLiteGrammarTest extends \PHPUnit\Framework\TestCase public function testDefault() : void { self::assertInstanceOf('\phpOMS\DataStorage\Database\Query\Grammar\Grammar', new SqliteGrammar()); - self::assertEquals('`', TestUtils::getMember(new SqliteGrammar(), 'systemIdentifier')); + self::assertEquals('`', TestUtils::getMember(new SqliteGrammar(), 'systemIdentifierStart')); + self::assertEquals('`', TestUtils::getMember(new SqliteGrammar(), 'systemIdentifierEnd')); } } diff --git a/tests/DataStorage/Database/Schema/Grammar/MysqlGrammarTest.php b/tests/DataStorage/Database/Schema/Grammar/MysqlGrammarTest.php index 906a2e168..d9495a220 100644 --- a/tests/DataStorage/Database/Schema/Grammar/MysqlGrammarTest.php +++ b/tests/DataStorage/Database/Schema/Grammar/MysqlGrammarTest.php @@ -42,7 +42,8 @@ class MysqlGrammarTest extends \PHPUnit\Framework\TestCase public function testDefault() : void { self::assertInstanceOf('\phpOMS\DataStorage\Database\Schema\Grammar\Grammar', new MysqlGrammar()); - self::assertEquals('`', TestUtils::getMember(new MysqlGrammar(), 'systemIdentifier')); + self::assertEquals('`', TestUtils::getMember(new MysqlGrammar(), 'systemIdentifierStart')); + self::assertEquals('`', TestUtils::getMember(new MysqlGrammar(), 'systemIdentifierEnd')); } /** diff --git a/tests/DataStorage/Database/Schema/Grammar/SQLiteGrammarTest.php b/tests/DataStorage/Database/Schema/Grammar/SQLiteGrammarTest.php index 5af087486..03807014c 100644 --- a/tests/DataStorage/Database/Schema/Grammar/SQLiteGrammarTest.php +++ b/tests/DataStorage/Database/Schema/Grammar/SQLiteGrammarTest.php @@ -30,6 +30,7 @@ class SQLiteGrammarTest extends \PHPUnit\Framework\TestCase public function testDefault() : void { self::assertInstanceOf('\phpOMS\DataStorage\Database\Schema\Grammar\Grammar', new SQLiteGrammar()); - self::assertEquals('`', TestUtils::getMember(new SQLiteGrammar(), 'systemIdentifier')); + self::assertEquals('`', TestUtils::getMember(new SQLiteGrammar(), 'systemIdentifierStart')); + self::assertEquals('`', TestUtils::getMember(new SQLiteGrammar(), 'systemIdentifierEnd')); } }