Description:
Setting the Unsigned attribute overrides the field display length.
For example:  I can do the following: 
    ALTER TABLE `users` 
    CHANGE COLUMN `is_active` `is_active` TINYINT(1) NOT NULL DEFAULT '1' ;
and the table correctly sets the field display length. But if I do this:
    ALTER TABLE `users` 
    CHANGE COLUMN `is_active` `is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ;
The field length is no longer set. 
when I set TINYINT(1) UNSIGNED, the display length is dropped. 
How to repeat:
STR:
1. Create a table with a field intended to be used as a BOOLEAN;
CREATE TABLE `users` (
  `id` int unsigned NOT NULL AUTO_INCREMENT ,
  `user_name` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `is_active` tinyint(1)  NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2. Observe that the display length on TINYINT(1) is in fact set.
3. Alter the table to make is_active an UNSIGNED value:
ALTER TABLE `users` 
 CHANGE COLUMN `is_active` `is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ;
4. Observe that TINYINT no longer has a display length.
Suggested fix:
I argue that the correct field attribute for a "BOOLEAN" would be unsigned since your options would be 0 or 1. Not negatives. Therefore I would expect that the UNSIGNED behavior for TINYINT(1) be identical to the signed behavior, and field display length would be set / retained.
  
 
 
Description: Setting the Unsigned attribute overrides the field display length. For example: I can do the following: ALTER TABLE `users` CHANGE COLUMN `is_active` `is_active` TINYINT(1) NOT NULL DEFAULT '1' ; and the table correctly sets the field display length. But if I do this: ALTER TABLE `users` CHANGE COLUMN `is_active` `is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ; The field length is no longer set. when I set TINYINT(1) UNSIGNED, the display length is dropped. How to repeat: STR: 1. Create a table with a field intended to be used as a BOOLEAN; CREATE TABLE `users` ( `id` int unsigned NOT NULL AUTO_INCREMENT , `user_name` varchar(50) NOT NULL, `password` varchar(255) NOT NULL, `is_active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; 2. Observe that the display length on TINYINT(1) is in fact set. 3. Alter the table to make is_active an UNSIGNED value: ALTER TABLE `users` CHANGE COLUMN `is_active` `is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ; 4. Observe that TINYINT no longer has a display length. Suggested fix: I argue that the correct field attribute for a "BOOLEAN" would be unsigned since your options would be 0 or 1. Not negatives. Therefore I would expect that the UNSIGNED behavior for TINYINT(1) be identical to the signed behavior, and field display length would be set / retained.