Files
mostlymatter/db
Agniva De Sarker 474dbe46dd Add DB enums (#20601)
* Add DB enums

```release-note
Upgrade note:
Several schema changes are made which imposes additional
DB constraints to make the data more strict.

Here are the times taken:

Postgres (131869 channels, 2 teams):
[bigdb] # CREATE TYPE channel_type AS ENUM ('P', 'G', 'O', 'D');
CREATE TYPE
Time: 14.114 ms
[bigdb] # ALTER TABLE channels alter column type type channel_type using type::channel_type;
ALTER TABLE
Time: 3856.790 ms (00:03.857)
[bigdb] # CREATE TYPE team_type AS ENUM ('I', 'O');
CREATE TYPE
Time: 4.191 ms
[bigdb] # ALTER TABLE teams alter column type type team_type using type::team_type;
ALTER TABLE
Time: 116.205 ms
[bigdb] # CREATE TYPE upload_session_type AS ENUM ('attachment', 'import');
CREATE TYPE
Time: 4.266 ms
[bigdb] # ALTER TABLE uploadsessions alter column type type upload_session_type using type::upload_session_type;
ALTER TABLE
Time: 37.099 ms

MySQL (270959 channels, 2 teams):
mysql> ALTER TABLE Channels MODIFY COLUMN Type ENUM("D", "O", "G", "P");
Query OK, 270959 rows affected (13.24 sec)
Records: 270959  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE Teams MODIFY COLUMN Type ENUM("I", "O");
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE UploadSessions MODIFY COLUMN Type ENUM("attachment", "import");
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

All the commands were tested on a 8 core, 16GB RAM machine.
```

https://mattermost.atlassian.net/browse/MM-45508

```release-note
NONE
```

* Added migration list

```release-note
NONE
```
2022-07-12 15:11:35 +05:30
..
2022-07-12 15:11:35 +05:30