Browse Source

not add `unsigned` to not numeric fields, fix broken test, add new test

imsamurai 12 years ago
parent
commit
8bcfe452da

+ 4 - 2
lib/Cake/Model/Datasource/Database/Mysql.php

@@ -347,9 +347,11 @@ class Mysql extends DboSource {
 				'type' => $this->column($column->Type),
 				'null' => ($column->Null === 'YES' ? true : false),
 				'default' => $column->Default,
-				'length' => $this->length($column->Type),
-				'unsigned' => $this->unsigned($column->Type)
+				'length' => $this->length($column->Type)
 			);
+			if (in_array($fields[$column->Field]['type'], $this->fieldParameters['unsigned']['types'], true)) {
+				$fields[$column->Field]['unsigned'] = $this->unsigned($column->Type);
+			}
 			if (!empty($column->Key) && isset($this->index[$column->Key])) {
 				$fields[$column->Field]['key'] = $this->index[$column->Key];
 			}

+ 1 - 0
lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php

@@ -3283,6 +3283,7 @@ class MysqlTest extends CakeTestCase {
 			$this->assertArrayHasKey('unsigned', $schema[$type]);
 			$this->assertFalse($schema[$type]['unsigned']);
 		}
+		$this->assertArrayNotHasKey('unsigned', $schema['string']);
 	}
 
 /**

+ 2 - 1
lib/Cake/Test/Case/Model/ModelIntegrationTest.php

@@ -2216,7 +2216,8 @@ class ModelIntegrationTest extends BaseModelTest {
 				'null' => false,
 				'default' => null,
 				'length' => $intLength,
-				'key' => 'primary'
+				'key' => 'primary',
+				'unsigned' => false
 			),
 			'user' => array(
 				'type' => 'string',

+ 1 - 0
lib/Cake/Test/Fixture/UnsignedFixture.php

@@ -46,6 +46,7 @@ class UnsignedFixture extends CakeTestFixture {
 		'ubiginteger' => array('type' => 'biginteger', 'length' => '20', 'default' => 3, 'unsigned' => true),
 		'float' => array('type' => 'float', 'length' => '4'),
 		'ufloat' => array('type' => 'float', 'length' => '4', 'unsigned' => true),
+		'string' => array('type' => 'string', 'length' => '4'),
 		'tableParameters' => array(
 			'engine' => 'MyISAM'
 		)