diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 9327a243b4..eb8271c522 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 Change Log 2.0.24 under development ------------------------ -- no changes in this release. +- Bug #10020: Fixed quoting of column names with dots in MSSQL (alexkart) 2.0.23 July 16, 2019 diff --git a/framework/db/mssql/Schema.php b/framework/db/mssql/Schema.php index 8dcd39cbd1..a81aaf1757 100644 --- a/framework/db/mssql/Schema.php +++ b/framework/db/mssql/Schema.php @@ -739,4 +739,16 @@ SQL; return $result[$returnType]; } + + /** + * {@inheritdoc} + */ + public function quoteColumnName($name) + { + if (preg_match('/^\[.*\]$/', $name)) { + return $name; + } + + return parent::quoteColumnName($name); + } } diff --git a/tests/framework/db/mssql/ConnectionTest.php b/tests/framework/db/mssql/ConnectionTest.php index 7e7024d7de..e2a8defa80 100644 --- a/tests/framework/db/mssql/ConnectionTest.php +++ b/tests/framework/db/mssql/ConnectionTest.php @@ -63,6 +63,10 @@ class ConnectionTest extends \yiiunit\framework\db\ConnectionTest $this->assertEquals('{{%table}}.[column]', $connection->quoteColumnName('{{%table}}.column')); $this->assertEquals('{{%table}}.[column]', $connection->quoteColumnName('{{%table}}.[column]')); + $this->assertEquals('[column.name]', $connection->quoteColumnName('[column.name]')); + $this->assertEquals('[column.name.with.dots]', $connection->quoteColumnName('[column.name.with.dots]')); + $this->assertEquals('[table].[column.name.with.dots]', $connection->quoteColumnName('[table].[column.name.with.dots]')); + $this->assertEquals('[table].[column]', $connection->quoteSql('[[table.column]]')); $this->assertEquals('[table].[column]', $connection->quoteSql('{{table}}.[[column]]')); $this->assertEquals('[table].[column]', $connection->quoteSql('{{table}}.[column]'));