From 884a996d307c051eb55eb10ee029269f8b6fdba1 Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:23:08 +0100 Subject: [PATCH 1/9] Revert removal of NULL in column definition --- phalcon/Db/Dialect/Mysql.zep | 80 ++++++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/phalcon/Db/Dialect/Mysql.zep b/phalcon/Db/Dialect/Mysql.zep index 77e4a76fba8..81b5f70ec87 100644 --- a/phalcon/Db/Dialect/Mysql.zep +++ b/phalcon/Db/Dialect/Mysql.zep @@ -33,25 +33,31 @@ class Mysql extends Dialect */ public function addColumn(string! tableName, string! schemaName, column) -> string { - var afterPosition, defaultValue; + var afterPosition, defaultValue, upperDefaultValue; string sql; let sql = "ALTER TABLE " . this->prepareTable(tableName, schemaName) . " ADD `" . column->getName() . "` " . this->getColumnDefinition(column); + if column->isNotNull() { + let sql .= " NOT NULL"; + } else { + // This is required for some types like TIMESTAMP + // Query won't be executed if NULL wasn't specified + // Even if DEFAULT NULL was specified + let sql .= " NULL"; + } + if column->hasDefault() { let defaultValue = column->getDefault(); + let upperDefaultValue = strtoupper(defaultValue); - if memstr(strtoupper(defaultValue), "CURRENT_TIMESTAMP") || is_int(defaultValue) || is_float(defaultValue) { + if memstr(upperDefaultValue, "CURRENT_TIMESTAMP") || memstr(upperDefaultValue, "NULL") || is_int(defaultValue) || is_float(defaultValue) { let sql .= " DEFAULT " . defaultValue; } else { let sql .= " DEFAULT \"" . addcslashes(defaultValue, "\"") . "\""; } } - if column->isNotNull() { - let sql .= " NOT NULL"; - } - if column->isAutoIncrement() { let sql .= " AUTO_INCREMENT"; } @@ -135,7 +141,7 @@ class Mysql extends Dialect { var temporary, options, table, columns, column, indexes, index, reference, references, indexName, columnLine, indexType, onDelete, - onUpdate, defaultValue; + onUpdate, defaultValue, upperDefaultValue; array createLines; string indexSql, referenceSql, sql; @@ -166,30 +172,32 @@ class Mysql extends Dialect for column in columns { let columnLine = "`" . column->getName() . "` " . this->getColumnDefinition(column); + /** + * Add a NOT NULL clause + */ + if column->isNotNull() { + let columnLine .= " NOT NULL"; + } else { + // This is required for some types like TIMESTAMP + // Query won't be executed if NULL wasn't specified + // Even if DEFAULT NULL was specified + let columnLine .= " NULL"; + } + /** * Add a Default clause */ if column->hasDefault() { let defaultValue = column->getDefault(); + let upperDefaultValue = strtoupper(defaultValue); - if (defaultValue === null) { - let columnLine .= " DEFAULT NULL"; + if memstr(upperDefaultValue, "CURRENT_TIMESTAMP") || memstr(upperDefaultValue, "NULL") || is_int(defaultValue) || is_float(defaultValue) { + let columnLine .= " DEFAULT " . defaultValue; } else { - if memstr(strtoupper(defaultValue), "CURRENT_TIMESTAMP") || is_int(defaultValue) || is_float(defaultValue) { - let columnLine .= " DEFAULT " . defaultValue; - } else { - let columnLine .= " DEFAULT \"" . addcslashes(defaultValue, "\"") . "\""; - } + let columnLine .= " DEFAULT \"" . addcslashes(defaultValue, "\"") . "\""; } } - /** - * Add a NOT NULL clause - */ - if column->isNotNull() { - let columnLine .= " NOT NULL"; - } - /** * Add an AUTO_INCREMENT clause */ @@ -448,6 +456,10 @@ class Mysql extends Dialect let columnSql .= "DATETIME"; } + if column->getSize() > 0 { + let columnSql .= this->getColumnSize(column); + } + break; case Column::TYPE_DECIMAL: @@ -560,6 +572,10 @@ class Mysql extends Dialect let columnSql .= "TIME"; } + if column->getSize() > 0 { + let columnSql .= this->getColumnSize(column); + } + break; case Column::TYPE_TIMESTAMP: @@ -567,6 +583,10 @@ class Mysql extends Dialect let columnSql .= "TIMESTAMP"; } + if column->getSize() > 0 { + let columnSql .= this->getColumnSize(column); + } + break; case Column::TYPE_TINYBLOB: @@ -672,7 +692,7 @@ class Mysql extends Dialect */ public function modifyColumn(string! tableName, string! schemaName, column, currentColumn = null) -> string { - var afterPosition, defaultValue, columnDefinition; + var afterPosition, defaultValue, upperDefaultValue, columnDefinition; string sql; let columnDefinition = this->getColumnDefinition(column), @@ -688,20 +708,26 @@ class Mysql extends Dialect let sql .= " MODIFY `" . column->getName() . "` " . columnDefinition; } + if column->isNotNull() { + let sql .= " NOT NULL"; + } else { + // This is required for some types like TIMESTAMP + // Query won't be executed if NULL wasn't specified + // Even if DEFAULT NULL was specified + let sql .= " NULL"; + } + if column->hasDefault() { let defaultValue = column->getDefault(); + let upperDefaultValue = strtoupper(defaultValue); - if memstr(strtoupper(defaultValue), "CURRENT_TIMESTAMP") || is_int(defaultValue) || is_float(defaultValue) { + if memstr(upperDefaultValue, "CURRENT_TIMESTAMP") || memstr(upperDefaultValue, "NULL") || is_int(defaultValue) || is_float(defaultValue) { let sql .= " DEFAULT " . defaultValue; } else { let sql .= " DEFAULT \"" . addcslashes(defaultValue, "\"") . "\""; } } - if column->isNotNull() { - let sql .= " NOT NULL"; - } - if column->isAutoIncrement() { let sql .= " AUTO_INCREMENT"; } From c09ad738acb1779d9f57b72e4e740e11653ec1a3 Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:23:31 +0100 Subject: [PATCH 2/9] Enhance Dialect\Mysql tests --- .../Db/Dialect/Mysql/AddColumnCest.php | 51 ++++++++++++++++--- .../Db/Dialect/Mysql/CreateTableCest.php | 43 +++++++++++++--- .../Db/Dialect/Mysql/ModifyColumnCest.php | 37 +++++++++++--- 3 files changed, 109 insertions(+), 22 deletions(-) diff --git a/tests/integration/Db/Dialect/Mysql/AddColumnCest.php b/tests/integration/Db/Dialect/Mysql/AddColumnCest.php index f025e35913f..92ceaedf22a 100644 --- a/tests/integration/Db/Dialect/Mysql/AddColumnCest.php +++ b/tests/integration/Db/Dialect/Mysql/AddColumnCest.php @@ -23,37 +23,72 @@ class AddColumnCest * Tests Phalcon\Db\Adapter\Pdo\Mysql :: addColumn() * * @author Phalcon Team - * @since 2020-02-27 + * @since 2020-05-02 */ public function dbAdapterPdoMysqlAddColumn(IntegrationTester $I) { $I->wantToTest('Db\Adapter\Pdo\Mysql - addColumn()'); $additions = [ + [ + new Column( + 'numeric_val', + [ + 'type' => Column::TYPE_FLOAT, + 'default' => 21.42, + 'notNull' => true, + ] + ), + 'ALTER TABLE `test` ADD `numeric_val` FLOAT NOT NULL DEFAULT 21.42', + ], + [ + new Column( + 'null_int', + [ + 'type' => Column::TYPE_INTEGER, + 'size' => 11, + 'notNull' => false, + 'after' => 'numeric_val', + ] + ), + 'ALTER TABLE `test` ADD `null_int` INT(11) NULL AFTER `numeric_val`', + ], + [ + new Column( + 'created_at', + [ + 'type' => Column::TYPE_TIMESTAMP, + 'default' => "CURRENT_TIMESTAMP", + 'notNull' => true, + 'after' => 'null_int', + ] + ), + 'ALTER TABLE `test` ADD `created_at` TIMESTAMP NOT NULL ' . + 'DEFAULT CURRENT_TIMESTAMP AFTER `null_int`', + ], [ new Column( 'updated_at', [ 'type' => Column::TYPE_TIMESTAMP, 'default' => "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", - 'notNull' => false, + 'notNull' => true, 'after' => 'created_at', ] ), - 'ALTER TABLE `test` ADD `updated_at` TIMESTAMP ' . + 'ALTER TABLE `test` ADD `updated_at` TIMESTAMP NOT NULL ' . 'DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `created_at`', ], [ new Column( - 'numeric_val', + 'deleted_at', [ - 'type' => Column::TYPE_FLOAT, - 'default' => 21.42, - 'notNull' => true, + 'type' => Column::TYPE_TIMESTAMP, + 'notNull' => false, 'after' => 'updated_at', ] ), - 'ALTER TABLE `test` ADD `numeric_val` FLOAT DEFAULT 21.42 NOT NULL AFTER `updated_at`', + 'ALTER TABLE `test` ADD `deleted_at` TIMESTAMP NULL AFTER `updated_at`', ], ]; diff --git a/tests/integration/Db/Dialect/Mysql/CreateTableCest.php b/tests/integration/Db/Dialect/Mysql/CreateTableCest.php index 05060d9014c..00a2acb2832 100644 --- a/tests/integration/Db/Dialect/Mysql/CreateTableCest.php +++ b/tests/integration/Db/Dialect/Mysql/CreateTableCest.php @@ -24,7 +24,7 @@ class CreateTableCest * Tests Phalcon\Db\Adapter\Pdo\Mysql :: createTable() * * @author Phalcon Team - * @since 2020-02-27 + * @since 2020-05-02 */ public function dbAdapterPdoMysqlCreateTable(IntegrationTester $I) { @@ -42,21 +42,47 @@ public function dbAdapterPdoMysqlCreateTable(IntegrationTester $I) 'first' => true, ] ), + new Column( + 'numeric_val', + [ + 'type' => Column::TYPE_FLOAT, + 'default' => 21.42, + 'notNull' => true, + ] + ), + new Column( + 'null_int', + [ + 'type' => Column::TYPE_INTEGER, + 'size' => 11, + 'notNull' => false, + 'after' => 'numeric_val', + ] + ), + new Column( + 'created_at', + [ + 'type' => Column::TYPE_TIMESTAMP, + 'default' => "CURRENT_TIMESTAMP", + 'notNull' => true, + 'after' => 'created_at', + ] + ), new Column( 'updated_at', [ 'type' => Column::TYPE_TIMESTAMP, 'default' => "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", - 'notNull' => false, + 'notNull' => true, 'after' => 'created_at', ] ), new Column( - 'numeric_val', + 'deleted_at', [ - 'type' => Column::TYPE_FLOAT, + 'type' => Column::TYPE_TIMESTAMP, 'notNull' => false, - 'after' => 'updated_at', + 'after' => 'created_at', ] ), ], @@ -70,8 +96,11 @@ public function dbAdapterPdoMysqlCreateTable(IntegrationTester $I) $expected = << - * @since 2020-02-27 + * @since 2020-05-02 */ public function dbAdapterPdoMysqlModifyColumn(IntegrationTester $I) { @@ -36,21 +36,43 @@ public function dbAdapterPdoMysqlModifyColumn(IntegrationTester $I) [ 'type' => Column::TYPE_TIMESTAMP, 'default' => "CURRENT_TIMESTAMP", - 'notNull' => false, + 'notNull' => true, 'after' => 'created_at', ] - ), new Column( + ), + new Column( 'updated_at', [ 'type' => Column::TYPE_TIMESTAMP, 'default' => "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", - 'notNull' => false, + 'notNull' => true, 'after' => 'created_at', ] ), - 'ALTER TABLE `test` MODIFY `updated_at` TIMESTAMP ' . + 'ALTER TABLE `test` MODIFY `updated_at` TIMESTAMP NOT NULL ' . 'DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `created_at`', ], + [ + new Column( + 'deleted_at', + [ + 'type' => Column::TYPE_TIMESTAMP, + 'default' => "CURRENT_TIMESTAMP", + 'notNull' => false, + 'after' => 'updated_at', + ] + ), + new Column( + 'deleted_at', + [ + 'type' => Column::TYPE_TIMESTAMP, + 'default' => "NULL", + 'notNull' => false, + 'after' => 'updated_at', + ] + ), + 'ALTER TABLE `test` MODIFY `deleted_at` TIMESTAMP NULL DEFAULT NULL AFTER `updated_at`', + ], [ new Column( 'numeric_val', @@ -59,7 +81,8 @@ public function dbAdapterPdoMysqlModifyColumn(IntegrationTester $I) 'notNull' => true, 'after' => 'updated_at', ] - ), new Column( + ), + new Column( 'numeric_val', [ 'type' => Column::TYPE_FLOAT, @@ -68,7 +91,7 @@ public function dbAdapterPdoMysqlModifyColumn(IntegrationTester $I) 'after' => 'updated_at', ] ), - 'ALTER TABLE `test` MODIFY `numeric_val` FLOAT DEFAULT 21.42 AFTER `updated_at`', + 'ALTER TABLE `test` MODIFY `numeric_val` FLOAT NULL DEFAULT 21.42 AFTER `updated_at`', ], ]; From 61902ded798b9327518ac935ea2114ca9a98b969 Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:23:48 +0100 Subject: [PATCH 3/9] Update CHANGELOG-4.0.md --- CHANGELOG-4.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG-4.0.md b/CHANGELOG-4.0.md index 953677422c9..f003cdf511e 100644 --- a/CHANGELOG-4.0.md +++ b/CHANGELOG-4.0.md @@ -6,7 +6,7 @@ ## Fixed - Fixed `Phalcon\Mvc\Model\Query\Builder::getPhql` to add single quote between string value on a simple condition. [#14874](https://github.com/phalcon/cphalcon/issues/14874) [@jenovateurs](https://github.com/jenovateurs) -- Fixed schema manipulation in `Phalcon\Db\Dialect\Mysql`, remove unnecessary `NULL` in column definition, unquote numerical defaults. [#14888](https://github.com/phalcon/cphalcon/pull/14888) [@pfz](https://github.com/pfz) +- Fixed schema manipulation in `Phalcon\Db\Dialect\Mysql`, unquote numerical defaults. [#14888](https://github.com/phalcon/cphalcon/pull/14888) [@pfz](https://github.com/pfz) - Fixed recognizing language operators inside Volt's echo mode (`{{ ... }}`) [#14476](https://github.com/phalcon/cphalcon/issues/14476) - Fixed `Tag::friendlyTitle` to correctly convert titles under MacOS and Windows [#14866](https://github.com/phalcon/cphalcon/issues/14866) - Fixed the Volt compiler to no longer parse `cache` fragments and thus searching for the `viewCache` service (deprecated for v4) [#14907](https://github.com/phalcon/cphalcon/issues/14907) From fd9ea5393dfb569383efda96ebf6133da10172ea Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:35:17 +0100 Subject: [PATCH 4/9] Remove changes from 4.1.x branch --- phalcon/Db/Dialect/Mysql.zep | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/phalcon/Db/Dialect/Mysql.zep b/phalcon/Db/Dialect/Mysql.zep index 81b5f70ec87..1b117ae1c37 100644 --- a/phalcon/Db/Dialect/Mysql.zep +++ b/phalcon/Db/Dialect/Mysql.zep @@ -456,10 +456,6 @@ class Mysql extends Dialect let columnSql .= "DATETIME"; } - if column->getSize() > 0 { - let columnSql .= this->getColumnSize(column); - } - break; case Column::TYPE_DECIMAL: @@ -572,10 +568,6 @@ class Mysql extends Dialect let columnSql .= "TIME"; } - if column->getSize() > 0 { - let columnSql .= this->getColumnSize(column); - } - break; case Column::TYPE_TIMESTAMP: @@ -583,10 +575,6 @@ class Mysql extends Dialect let columnSql .= "TIMESTAMP"; } - if column->getSize() > 0 { - let columnSql .= this->getColumnSize(column); - } - break; case Column::TYPE_TINYBLOB: From c7a357b397e2f5a334480509d5dafabf65db490e Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:35:53 +0100 Subject: [PATCH 5/9] Update tests/integration/Db/Dialect/Mysql/ModifyColumnCest.php Co-authored-by: Serghei Iakovlev --- tests/integration/Db/Dialect/Mysql/ModifyColumnCest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integration/Db/Dialect/Mysql/ModifyColumnCest.php b/tests/integration/Db/Dialect/Mysql/ModifyColumnCest.php index af4dd9abe14..3b29c98e747 100644 --- a/tests/integration/Db/Dialect/Mysql/ModifyColumnCest.php +++ b/tests/integration/Db/Dialect/Mysql/ModifyColumnCest.php @@ -23,7 +23,8 @@ class ModifyColumnCest * Tests Phalcon\Db\Adapter\Pdo\Mysql :: modifyColumn() * * @author Phalcon Team - * @since 2020-05-02 + * @since 2020-02-27 + * @since 2020-05-02 Changed default null and nullable column definition */ public function dbAdapterPdoMysqlModifyColumn(IntegrationTester $I) { From 39d2d6742ddde2976b30fc114eebd75c735251c7 Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:41:19 +0100 Subject: [PATCH 6/9] Update CHANGELOG-4.0.md --- CHANGELOG-4.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG-4.0.md b/CHANGELOG-4.0.md index f003cdf511e..74de2a446a6 100644 --- a/CHANGELOG-4.0.md +++ b/CHANGELOG-4.0.md @@ -3,10 +3,10 @@ ## Changed - Changed `Volt::convertEncoding` to no longer using `iconv` for a fallback since it causes issues with macOS [#14912](https://github.com/phalcon/cphalcon/issues/14912) +- Changed schema manipulation in `Phalcon\Db\Dialect\Mysql` - unquote numerical defaults. [#14888](https://github.com/phalcon/cphalcon/pull/14888) [@pfz](https://github.com/pfz) ## Fixed - Fixed `Phalcon\Mvc\Model\Query\Builder::getPhql` to add single quote between string value on a simple condition. [#14874](https://github.com/phalcon/cphalcon/issues/14874) [@jenovateurs](https://github.com/jenovateurs) -- Fixed schema manipulation in `Phalcon\Db\Dialect\Mysql`, unquote numerical defaults. [#14888](https://github.com/phalcon/cphalcon/pull/14888) [@pfz](https://github.com/pfz) - Fixed recognizing language operators inside Volt's echo mode (`{{ ... }}`) [#14476](https://github.com/phalcon/cphalcon/issues/14476) - Fixed `Tag::friendlyTitle` to correctly convert titles under MacOS and Windows [#14866](https://github.com/phalcon/cphalcon/issues/14866) - Fixed the Volt compiler to no longer parse `cache` fragments and thus searching for the `viewCache` service (deprecated for v4) [#14907](https://github.com/phalcon/cphalcon/issues/14907) From 9d3e75a16180e34e967fd65c9599047669c8279c Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:41:36 +0100 Subject: [PATCH 7/9] Update since description --- tests/integration/Db/Dialect/Mysql/AddColumnCest.php | 3 ++- tests/integration/Db/Dialect/Mysql/CreateTableCest.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/integration/Db/Dialect/Mysql/AddColumnCest.php b/tests/integration/Db/Dialect/Mysql/AddColumnCest.php index 92ceaedf22a..e4e7ecbf75e 100644 --- a/tests/integration/Db/Dialect/Mysql/AddColumnCest.php +++ b/tests/integration/Db/Dialect/Mysql/AddColumnCest.php @@ -23,7 +23,8 @@ class AddColumnCest * Tests Phalcon\Db\Adapter\Pdo\Mysql :: addColumn() * * @author Phalcon Team - * @since 2020-05-02 + * @since 2020-02-27 + * @since 2020-05-02 Changed default null and nullable column definition */ public function dbAdapterPdoMysqlAddColumn(IntegrationTester $I) { diff --git a/tests/integration/Db/Dialect/Mysql/CreateTableCest.php b/tests/integration/Db/Dialect/Mysql/CreateTableCest.php index 00a2acb2832..e907c2fcd94 100644 --- a/tests/integration/Db/Dialect/Mysql/CreateTableCest.php +++ b/tests/integration/Db/Dialect/Mysql/CreateTableCest.php @@ -24,7 +24,8 @@ class CreateTableCest * Tests Phalcon\Db\Adapter\Pdo\Mysql :: createTable() * * @author Phalcon Team - * @since 2020-05-02 + * @since 2020-02-27 + * @since 2020-05-02 Changed default null and nullable column definition */ public function dbAdapterPdoMysqlCreateTable(IntegrationTester $I) { From 8a13cc2fbe513d6ab9c319937ad2a9691b2582cf Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:50:58 +0100 Subject: [PATCH 8/9] Update CHANGELOG-4.0.md --- CHANGELOG-4.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG-4.0.md b/CHANGELOG-4.0.md index 74de2a446a6..7e272477940 100644 --- a/CHANGELOG-4.0.md +++ b/CHANGELOG-4.0.md @@ -3,7 +3,7 @@ ## Changed - Changed `Volt::convertEncoding` to no longer using `iconv` for a fallback since it causes issues with macOS [#14912](https://github.com/phalcon/cphalcon/issues/14912) -- Changed schema manipulation in `Phalcon\Db\Dialect\Mysql` - unquote numerical defaults. [#14888](https://github.com/phalcon/cphalcon/pull/14888) [@pfz](https://github.com/pfz) +- Changed schema manipulation in `Phalcon\Db\Dialect\Mysql` - unquote numerical defaults. [#14888](https://github.com/phalcon/cphalcon/pull/14888) [#14974](https://github.com/phalcon/cphalcon/pull/14974) ## Fixed - Fixed `Phalcon\Mvc\Model\Query\Builder::getPhql` to add single quote between string value on a simple condition. [#14874](https://github.com/phalcon/cphalcon/issues/14874) [@jenovateurs](https://github.com/jenovateurs) From 9fc860e6775bd70f212a6a80e0cfe05dda28f0bd Mon Sep 17 00:00:00 2001 From: Anton Vasiliev Date: Sat, 2 May 2020 10:54:56 +0100 Subject: [PATCH 9/9] Remove dots in phrases --- CHANGELOG-4.0.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG-4.0.md b/CHANGELOG-4.0.md index 7e272477940..18f1a4d71cc 100644 --- a/CHANGELOG-4.0.md +++ b/CHANGELOG-4.0.md @@ -3,10 +3,10 @@ ## Changed - Changed `Volt::convertEncoding` to no longer using `iconv` for a fallback since it causes issues with macOS [#14912](https://github.com/phalcon/cphalcon/issues/14912) -- Changed schema manipulation in `Phalcon\Db\Dialect\Mysql` - unquote numerical defaults. [#14888](https://github.com/phalcon/cphalcon/pull/14888) [#14974](https://github.com/phalcon/cphalcon/pull/14974) +- Changed schema manipulation in `Phalcon\Db\Dialect\Mysql` - unquote numerical defaults [#14888](https://github.com/phalcon/cphalcon/pull/14888) [#14974](https://github.com/phalcon/cphalcon/pull/14974) ## Fixed -- Fixed `Phalcon\Mvc\Model\Query\Builder::getPhql` to add single quote between string value on a simple condition. [#14874](https://github.com/phalcon/cphalcon/issues/14874) [@jenovateurs](https://github.com/jenovateurs) +- Fixed `Phalcon\Mvc\Model\Query\Builder::getPhql` to add single quote between string value on a simple condition [#14874](https://github.com/phalcon/cphalcon/issues/14874) - Fixed recognizing language operators inside Volt's echo mode (`{{ ... }}`) [#14476](https://github.com/phalcon/cphalcon/issues/14476) - Fixed `Tag::friendlyTitle` to correctly convert titles under MacOS and Windows [#14866](https://github.com/phalcon/cphalcon/issues/14866) - Fixed the Volt compiler to no longer parse `cache` fragments and thus searching for the `viewCache` service (deprecated for v4) [#14907](https://github.com/phalcon/cphalcon/issues/14907) @@ -19,7 +19,7 @@ ## Changed ## Fixed -- Fixed `Phalcon\Db::fetchAll` to correctly return data when `Enum::FETCH_COLUMN` is supplied. [#13321](https://github.com/phalcon/cphalcon/issues/13321) +- Fixed `Phalcon\Db::fetchAll` to correctly return data when `Enum::FETCH_COLUMN` is supplied [#13321](https://github.com/phalcon/cphalcon/issues/13321) - Fixed Postgres NULL values to not be required during model update. [#14862](https://github.com/phalcon/cphalcon/issues/14862) - Fixed MySQL alter column when default value contains not only CURRENT_TIMESTAMP [#14880](https://github.com/phalcon/cphalcon/issues/14880) - Fixed MySQL default value with ON UPDATE expression [#14887](https://github.com/phalcon/cphalcon/pull/14887)