[wp-trac] [WordPress Trac] #55942: Add a "type" field to the meta and options tables
WordPress Trac
noreply at wordpress.org
Thu Jun 30 20:20:24 UTC 2022
#55942: Add a "type" field to the meta and options tables
-------------------------+---------------------
Reporter: azaozz | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Milestone: 6.1
Component: Database | Version:
Severity: normal | Resolution:
Keywords: 2nd-opinion | Focuses:
-------------------------+---------------------
Changes (by azaozz):
* keywords: => 2nd-opinion
Comment:
Yes, ENUM seems best. Just wondering if we should implement the MySQL
built-in `ENUM()` or do it "by hand" by adding a TINYINT and mapping the
index numbers with PHP constants.
Advantages of using ENUM:
- Wouldn't need additional processing, like mapping index numbers to names
('int', 'float', 'string', etc.). No need of PHP constants to help there.
- Better/readable display when looking directly in the DB (like with
phpMyAdmin).
- Pretty straightforward to add.
Main disadvantages of using ENUM:
- In addition to the defined values there always are `''` (mapped to `0`)
and `NULL`. That may be somewhat confusing.
- A bit tricky `ORDER BY`. Sorting is by index, not by name. That index
depends on the order in which the values were defined. Need to use `CAST(
... as CHAR )` to sort by name.
- Adding more values would require altering the tables.
- Harder to list all possible values, need to look at
INFORMATION_SCHEMA.COLUMNS.
- Perhaps not particularly relevant but ENUM is a MySQL extension, not a
standard ANSI SQL.
Re-reading the above, I'm 50/50 which method would be better. Not sure if
the drawbacks of using ENUM are that significant. On the other hand using
TINYINT and keeping the mapping outside of the DB gives us full control,
even plugins would be able to add to that mapping, eventually.
So, what say you? To ENUM or not to ENUM? :)
--
Ticket URL: <https://core.trac.wordpress.org/ticket/55942#comment:6>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list