Skip to content

Commit

Permalink
Merge pull request phalcon#11240 from sergeyklay/2.0.x
Browse files Browse the repository at this point in the history
Fixed issue phalcon#11239
  • Loading branch information
sergeyklay committed Dec 17, 2015
2 parents 0641ea4 + 1029fd0 commit 2e27777
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 7 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
- ORM: Added support for DATE columns in Oracle
- Fixed wrong total_items and total_pages in Paginator when the query builder has set groupBy()
- Fixed `Phalcon\Acl\Memory::allow` bug[#11210] related to the inconsistent behavior with access specified as string and array
- Added quoting column in `Phalcon\Db\Dialect\MySQL::addColumn` when define position of the column
- Added support to define position of the column in `Phalcon\Db\Dialect\MySQL::modifyColumn`

# [2.0.9](https://github.com/phalcon/cphalcon/releases/tag/phalcon-v2.0.9) (2015-11-24)
- Fixed bug that double serializes data using Redis adapter
Expand Down
12 changes: 10 additions & 2 deletions phalcon/db/dialect/mysql.zep
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ class MySQL extends Dialect
} else {
let afterPosition = column->getAfterPosition();
if afterPosition {
let sql .= " AFTER " . afterPosition;
let sql .= " AFTER `" . afterPosition . "`";
}
}
return sql;
Expand All @@ -257,7 +257,7 @@ class MySQL extends Dialect
*/
public function modifyColumn(string! tableName, string! schemaName, <ColumnInterface> column, <ColumnInterface> currentColumn = null) -> string
{
var sql, defaultValue;
var afterPosition, sql, defaultValue;

let sql = "ALTER TABLE " . this->prepareTable(tableName, schemaName) . " MODIFY `" . column->getName() . "` " . this->getColumnDefinition(column);

Expand All @@ -278,6 +278,14 @@ class MySQL extends Dialect
let sql .= " AUTO_INCREMENT";
}

if column->isFirst() {
let sql .= " FIRST";
} else {
let afterPosition = column->getAfterPosition();
if afterPosition {
let sql .= " AFTER `" . afterPosition . "`";
}
}
return sql;
}

Expand Down
11 changes: 6 additions & 5 deletions unit-tests/DbDialectTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ private function getColumns()
'type' => 'ENUM',
'typeValues' => array('A', 'B', 'C'),
'notNull' => true,
'default' => 'A'
'default' => 'A',
'after' => 'column11'
)),
'column13' => new Column("column13", array(
'type' => Column::TYPE_TIMESTAMP,
Expand Down Expand Up @@ -435,8 +436,8 @@ public function testMysqlDialect()
$this->assertEquals($dialect->addColumn('table', 'schema', $columns['column10']), 'ALTER TABLE `schema`.`table` ADD `column10` INT(18) UNSIGNED DEFAULT "10"');
$this->assertEquals($dialect->addColumn('table', null, $columns['column11']), 'ALTER TABLE `table` ADD `column11` BIGINT(20) UNSIGNED');
$this->assertEquals($dialect->addColumn('table', 'schema', $columns['column11']), 'ALTER TABLE `schema`.`table` ADD `column11` BIGINT(20) UNSIGNED');
$this->assertEquals($dialect->addColumn('table', null, $columns['column12']), "ALTER TABLE `table` ADD `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL");
$this->assertEquals($dialect->addColumn('table', 'schema', $columns['column12']), "ALTER TABLE `schema`.`table` ADD `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL");
$this->assertEquals($dialect->addColumn('table', null, $columns['column12']), "ALTER TABLE `table` ADD `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL AFTER `column11`");
$this->assertEquals($dialect->addColumn('table', 'schema', $columns['column12']), "ALTER TABLE `schema`.`table` ADD `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL AFTER `column11`");
$this->assertEquals($dialect->addColumn('table', 'schema', $columns['column13']), "ALTER TABLE `schema`.`table` ADD `column13` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL");

//Modify Columns
Expand All @@ -462,8 +463,8 @@ public function testMysqlDialect()
$this->assertEquals($dialect->modifyColumn('table', 'schema', $columns['column10']), 'ALTER TABLE `schema`.`table` MODIFY `column10` INT(18) UNSIGNED DEFAULT "10"');
$this->assertEquals($dialect->modifyColumn('table', null, $columns['column11']), 'ALTER TABLE `table` MODIFY `column11` BIGINT(20) UNSIGNED');
$this->assertEquals($dialect->modifyColumn('table', 'schema', $columns['column11']), 'ALTER TABLE `schema`.`table` MODIFY `column11` BIGINT(20) UNSIGNED');
$this->assertEquals($dialect->modifyColumn('table', null, $columns['column12']), "ALTER TABLE `table` MODIFY `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL");
$this->assertEquals($dialect->modifyColumn('table', 'schema', $columns['column12']), "ALTER TABLE `schema`.`table` MODIFY `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL");
$this->assertEquals($dialect->modifyColumn('table', null, $columns['column12']), "ALTER TABLE `table` MODIFY `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL AFTER `column11`");
$this->assertEquals($dialect->modifyColumn('table', 'schema', $columns['column12']), "ALTER TABLE `schema`.`table` MODIFY `column12` ENUM(\"A\", \"B\", \"C\") DEFAULT \"A\" NOT NULL AFTER `column11`");
$this->assertEquals($dialect->modifyColumn('table', 'schema', $columns['column13']), "ALTER TABLE `schema`.`table` MODIFY `column13` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL");

//Drop Columns
Expand Down

0 comments on commit 2e27777

Please sign in to comment.