mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
refs #9174 fix CakeSchema compare when changing field length to the default one
This commit is contained in:
parent
a73a707231
commit
147693618c
2 changed files with 60 additions and 2 deletions
|
@ -486,8 +486,9 @@ class CakeSchema extends Object {
|
|||
|
||||
foreach ($fields as $field => $value) {
|
||||
if (!empty($old[$table][$field])) {
|
||||
$diff = $this->_arrayDiffAssoc($value, $old[$table][$field]);
|
||||
if (!empty($diff) && $field !== 'indexes' && $field !== 'tableParameters') {
|
||||
$diff = !empty($this->_arrayDiffAssoc($value, $old[$table][$field]))
|
||||
|| !empty($this->_arrayDiffAssoc($old[$table][$field], $value));
|
||||
if ($diff && $field !== 'indexes' && $field !== 'tableParameters') {
|
||||
$tables[$table]['change'][$field] = $value;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -953,6 +953,63 @@ class CakeSchemaTest extends CakeTestCase {
|
|||
$this->assertEquals($expected, $compare, 'Invalid SQL, datetime does not have length');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test comparing with field length/limit changed from some non-default value to the default
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCompareLimitToDefault() {
|
||||
$old = array(
|
||||
'posts' => array(
|
||||
'id' => array('type' => 'integer', 'null' => false, 'default' => 1, 'key' => 'primary'),
|
||||
'author_id' => array('type' => 'integer', 'null' => false, 'limit' => 5),
|
||||
'title' => array('type' => 'string', 'null' => true, 'length' => 45),
|
||||
'indexes' => array(
|
||||
'PRIMARY' => array('column' => 'id', 'unique' => true)
|
||||
),
|
||||
'tableParameters' => array(
|
||||
'charset' => 'latin1',
|
||||
'collate' => 'latin1_general_ci'
|
||||
)
|
||||
),
|
||||
);
|
||||
$new = array(
|
||||
'posts' => array(
|
||||
'id' => array('type' => 'integer', 'null' => false, 'key' => 'primary'),
|
||||
'author_id' => array('type' => 'integer', 'null' => false),
|
||||
'title' => array('type' => 'varchar', 'null' => true),
|
||||
'indexes' => array(
|
||||
'PRIMARY' => array('column' => 'id', 'unique' => true)
|
||||
),
|
||||
'tableParameters' => array(
|
||||
'charset' => 'latin1',
|
||||
'collate' => 'latin1_general_ci'
|
||||
)
|
||||
),
|
||||
);
|
||||
$compare = $this->Schema->compare($old, $new);
|
||||
$expected = array(
|
||||
'posts' => array(
|
||||
'change' => array(
|
||||
'id' => array(
|
||||
'type' => 'integer',
|
||||
'null' => false,
|
||||
'key' => 'primary'
|
||||
),
|
||||
'author_id' => array(
|
||||
'type' => 'integer',
|
||||
'null' => false,
|
||||
),
|
||||
'title' => array(
|
||||
'type' => 'varchar',
|
||||
'null' => true,
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
$this->assertEquals($expected, $compare, 'Invalid SQL, field length change not detected');
|
||||
}
|
||||
|
||||
/**
|
||||
* testSchemaLoading method
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue