mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-01 03:26:36 +08:00 
			
		
		
		
	Revert 20045.
This commit is contained in:
		| @ -3,7 +3,6 @@ Yii Framework 2 Change Log | |||||||
|  |  | ||||||
| 2.0.50 under development | 2.0.50 under development | ||||||
| ------------------------ | ------------------------ | ||||||
| - Bug #20045: Fix type `boolean` in `MySQL` (terabytesoftw) |  | ||||||
| - Bug #20040: Fix type `boolean` in `MSSQL` (terabytesoftw) | - Bug #20040: Fix type `boolean` in `MSSQL` (terabytesoftw) | ||||||
| - Bug #20005: Fix `yii\console\controllers\ServeController` to specify the router script (terabytesoftw) | - Bug #20005: Fix `yii\console\controllers\ServeController` to specify the router script (terabytesoftw) | ||||||
| - Bug #19060: Fix `yii\widgets\Menu` bug when using Closure for active item and adding additional tests in `tests\framework\widgets\MenuTest` (atrandafir) | - Bug #19060: Fix `yii\widgets\Menu` bug when using Closure for active item and adding additional tests in `tests\framework\widgets\MenuTest` (atrandafir) | ||||||
|  | |||||||
| @ -279,7 +279,7 @@ SQL; | |||||||
|                     if (isset($values[1])) { |                     if (isset($values[1])) { | ||||||
|                         $column->scale = (int) $values[1]; |                         $column->scale = (int) $values[1]; | ||||||
|                     } |                     } | ||||||
|                     if ($column->size === 1 && ($type === 'tinyint' || $type === 'bit')) { |                     if ($column->size === 1 && $type === 'bit') { | ||||||
|                         $column->type = 'boolean'; |                         $column->type = 'boolean'; | ||||||
|                     } elseif ($type === 'bit') { |                     } elseif ($type === 'bit') { | ||||||
|                         if ($column->size > 32) { |                         if ($column->size > 32) { | ||||||
|  | |||||||
| @ -228,11 +228,6 @@ SQL; | |||||||
|             ] |             ] | ||||||
|         ); |         ); | ||||||
|  |  | ||||||
|         $columns['bool_col']['type'] = 'boolean'; |  | ||||||
|         $columns['bool_col']['phpType'] = 'boolean'; |  | ||||||
|         $columns['bool_col2']['type'] = 'boolean'; |  | ||||||
|         $columns['bool_col2']['phpType'] = 'boolean'; |  | ||||||
|  |  | ||||||
|         if (version_compare($version, '5.7', '<')) { |         if (version_compare($version, '5.7', '<')) { | ||||||
|             $columns['int_col3']['phpType'] = 'string'; |             $columns['int_col3']['phpType'] = 'string'; | ||||||
|             $columns['json_col']['type'] = 'text'; |             $columns['json_col']['type'] = 'text'; | ||||||
|  | |||||||
| @ -1,249 +0,0 @@ | |||||||
| <?php |  | ||||||
| /** |  | ||||||
|  * @link https://www.yiiframework.com/ |  | ||||||
|  * @copyright Copyright (c) 2008 Yii Software LLC |  | ||||||
|  * @license https://www.yiiframework.com/license/ |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| namespace yiiunit\framework\db\mysql\type; |  | ||||||
|  |  | ||||||
| use yii\db\mysql\Schema; |  | ||||||
| use yiiunit\framework\db\DatabaseTestCase; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * @group db |  | ||||||
|  * @group mysql |  | ||||||
|  */ |  | ||||||
| class BooleanTest extends DatabaseTestCase |  | ||||||
| { |  | ||||||
|     protected $driverName = 'mysql'; |  | ||||||
|  |  | ||||||
|     public function testBoolean() |  | ||||||
|     { |  | ||||||
|         $db = $this->getConnection(true); |  | ||||||
|         $schema = $db->getSchema(); |  | ||||||
|         $tableName = '{{%boolean}}'; |  | ||||||
|  |  | ||||||
|         if ($db->getTableSchema($tableName)) { |  | ||||||
|             $db->createCommand()->dropTable($tableName)->execute(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $db->createCommand()->createTable( |  | ||||||
|             $tableName, |  | ||||||
|             [ |  | ||||||
|                 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK), |  | ||||||
|                 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN), |  | ||||||
|                 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1), |  | ||||||
|             ] |  | ||||||
|         )->execute(); |  | ||||||
|  |  | ||||||
|         // test type `boolean` |  | ||||||
|         $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColTinyint->phpType); |  | ||||||
|  |  | ||||||
|         $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColBit->phpType); |  | ||||||
|  |  | ||||||
|         // test value `false` |  | ||||||
|         $db->createCommand()->insert($tableName, ['bool_col_tinyint' => false, 'bool_col_bit' => false])->execute(); |  | ||||||
|         $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne(); |  | ||||||
|         $this->assertEquals(0, $boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertEquals(0, $boolValues['bool_col_bit']); |  | ||||||
|  |  | ||||||
|         // test php typecast |  | ||||||
|         $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertFalse($phpTypeCastBoolColTinyint); |  | ||||||
|  |  | ||||||
|         $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']); |  | ||||||
|         $this->assertFalse($phpTypeCastBoolColBit); |  | ||||||
|  |  | ||||||
|         // test value `true` |  | ||||||
|         $db->createCommand()->insert($tableName, ['bool_col_tinyint' => true, 'bool_col_bit' => true])->execute(); |  | ||||||
|         $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 2")->queryOne(); |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_bit']); |  | ||||||
|  |  | ||||||
|         // test php typecast |  | ||||||
|         $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColTinyint); |  | ||||||
|  |  | ||||||
|         $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColBit); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testBooleanWithValueInteger() |  | ||||||
|     { |  | ||||||
|         $db = $this->getConnection(true); |  | ||||||
|         $schema = $db->getSchema(); |  | ||||||
|         $tableName = '{{%boolean}}'; |  | ||||||
|  |  | ||||||
|         if ($db->getTableSchema($tableName)) { |  | ||||||
|             $db->createCommand()->dropTable($tableName)->execute(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $db->createCommand()->createTable( |  | ||||||
|             $tableName, |  | ||||||
|             [ |  | ||||||
|                 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK), |  | ||||||
|                 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN), |  | ||||||
|                 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1), |  | ||||||
|             ] |  | ||||||
|         )->execute(); |  | ||||||
|  |  | ||||||
|         // test type `boolean` |  | ||||||
|         $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColTinyint->phpType); |  | ||||||
|  |  | ||||||
|         $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColBit->phpType); |  | ||||||
|  |  | ||||||
|         // test value `0` |  | ||||||
|         $db->createCommand()->insert($tableName, ['bool_col_tinyint' => 0, 'bool_col_bit' => 0])->execute(); |  | ||||||
|         $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne(); |  | ||||||
|         $this->assertEquals(0, $boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertEquals(0, $boolValues['bool_col_bit']); |  | ||||||
|  |  | ||||||
|         // test php typecast |  | ||||||
|         $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertFalse($phpTypeCastBoolColTinyint); |  | ||||||
|  |  | ||||||
|         $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']); |  | ||||||
|         $this->assertFalse($phpTypeCastBoolColBit); |  | ||||||
|  |  | ||||||
|         // test value `1` |  | ||||||
|         $db->createCommand()->insert($tableName, ['bool_col_tinyint' => 1, 'bool_col_bit' => 1])->execute(); |  | ||||||
|         $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 2")->queryOne(); |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_bit']); |  | ||||||
|  |  | ||||||
|         // test php typecast |  | ||||||
|         $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColTinyint); |  | ||||||
|  |  | ||||||
|         $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColBit); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testBooleanWithValueNegative() |  | ||||||
|     { |  | ||||||
|         $db = $this->getConnection(true); |  | ||||||
|         $schema = $db->getSchema(); |  | ||||||
|         $tableName = '{{%boolean}}'; |  | ||||||
|  |  | ||||||
|         if ($db->getTableSchema($tableName)) { |  | ||||||
|             $db->createCommand()->dropTable($tableName)->execute(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $db->createCommand()->createTable( |  | ||||||
|             $tableName, |  | ||||||
|             [ |  | ||||||
|                 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK), |  | ||||||
|                 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN), |  | ||||||
|                 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1), |  | ||||||
|             ] |  | ||||||
|         )->execute(); |  | ||||||
|  |  | ||||||
|         // test type `boolean` |  | ||||||
|         $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColTinyint->phpType); |  | ||||||
|  |  | ||||||
|         $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColBit->phpType); |  | ||||||
|  |  | ||||||
|         // test value `-1` |  | ||||||
|         $db->createCommand()->insert($tableName, ['bool_col_tinyint' => -1, 'bool_col_bit' => -1])->execute(); |  | ||||||
|         $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne(); |  | ||||||
|  |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_bit']); |  | ||||||
|  |  | ||||||
|         // test php typecast |  | ||||||
|         $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColTinyint); |  | ||||||
|  |  | ||||||
|         $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColBit); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testBooleanWithValueNull() |  | ||||||
|     { |  | ||||||
|         $db = $this->getConnection(true); |  | ||||||
|         $schema = $db->getSchema(); |  | ||||||
|         $tableName = '{{%boolean}}'; |  | ||||||
|  |  | ||||||
|         if ($db->getTableSchema($tableName)) { |  | ||||||
|             $db->createCommand()->dropTable($tableName)->execute(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $db->createCommand()->createTable( |  | ||||||
|             $tableName, |  | ||||||
|             [ |  | ||||||
|                 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK), |  | ||||||
|                 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN), |  | ||||||
|                 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1), |  | ||||||
|             ] |  | ||||||
|         )->execute(); |  | ||||||
|  |  | ||||||
|         // test type `boolean` |  | ||||||
|         $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColTinyint->phpType); |  | ||||||
|  |  | ||||||
|         $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColBit->phpType); |  | ||||||
|  |  | ||||||
|         // test value `null` |  | ||||||
|         $db->createCommand()->insert($tableName, ['bool_col_tinyint' => null, 'bool_col_bit' => null])->execute(); |  | ||||||
|         $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne(); |  | ||||||
|  |  | ||||||
|         $this->assertNull($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertNull($boolValues['bool_col_bit']); |  | ||||||
|  |  | ||||||
|         // test php typecast |  | ||||||
|         $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertNull($phpTypeCastBoolColTinyint); |  | ||||||
|  |  | ||||||
|         $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']); |  | ||||||
|         $this->assertNull($phpTypeCastBoolColBit); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testBooleanWithValueOverflow() |  | ||||||
|     { |  | ||||||
|         $db = $this->getConnection(true); |  | ||||||
|         $schema = $db->getSchema(); |  | ||||||
|         $tableName = '{{%boolean}}'; |  | ||||||
|  |  | ||||||
|         if ($db->getTableSchema($tableName)) { |  | ||||||
|             $db->createCommand()->dropTable($tableName)->execute(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $db->createCommand()->createTable( |  | ||||||
|             $tableName, |  | ||||||
|             [ |  | ||||||
|                 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK), |  | ||||||
|                 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN), |  | ||||||
|                 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1), |  | ||||||
|             ] |  | ||||||
|         )->execute(); |  | ||||||
|  |  | ||||||
|         // test type `boolean` |  | ||||||
|         $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColTinyint->phpType); |  | ||||||
|  |  | ||||||
|         $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit'); |  | ||||||
|         $this->assertSame('boolean', $columnBoolColBit->phpType); |  | ||||||
|  |  | ||||||
|         // test value `2` |  | ||||||
|         $db->createCommand()->insert($tableName, ['bool_col_tinyint' => 2, 'bool_col_bit' => 2])->execute(); |  | ||||||
|         $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne(); |  | ||||||
|  |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertEquals(1, $boolValues['bool_col_bit']); |  | ||||||
|  |  | ||||||
|         // test php typecast |  | ||||||
|         $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColTinyint); |  | ||||||
|  |  | ||||||
|         $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']); |  | ||||||
|         $this->assertTrue($phpTypeCastBoolColBit); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user
	 Wilmer Arambula
					Wilmer Arambula