Important: #106508 - Respect column CHARACTER SET and COLLATE in ext_tables.sql
See forge#106508
Description
TYPO3 now reads column based CHARACTER SET and COLLATION from extension
ext_ files and applies them on column level. This allows
CHARACTER SET and COLLATION column settings different than defaults defined
on table or schema level. This is limited to My and Maria DBMS.
Note
Setting different charset and collation comes with some technical impact
during query time and requires for some queries special handling, for instance
when joining field that have different charsets or collations. Setting special
charsets and collations for single columns should only be used in rare
cases. The support is @internal and should be used with care if at all.
For now,
CHARACTER SET ascii COLLATE ascii_ is used for
sys_ to reduce required space for the index using
single bytes instead of multiple bytes per character.
The introduced database change is considerable non-breaking, because:
- Not applying the database changes still keeps a fully working state.
- Applying database schema change does not require data migrations.
- Targets only
MyandSQL Maria.DB
CREATE TABLE some_table (
col1 CHAR(10) DEFAULT '' NOT NULL CHARACTER SET ascii COLLATE ascii_bin,
col2 CHAR(10) CHARACTER SET ascii COLLATE ascii_bin DEFAULT '' NOT NULL,
col3 VARCHAR(10) DEFAULT '' NOT NULL CHARACTER SET ascii COLLATE ascii_bin,
col4 VARCHAR(10) CHARACTER SET ascii COLLATE ascii_bin DEFAULT '' NOT NULL,
col5 TEXT DEFAULT '' NOT NULL CHARACTER SET ascii COLLATE ascii_bin,
col6 TEXT CHARACTER SET ascii COLLATE ascii_bin DEFAULT '' NOT NULL,
col7 MEDIUMTEXT DEFAULT '' NOT NULL CHARACTER SET ascii COLLATE ascii_bin,
col8 MEDIUMTEXT CHARACTER SET ascii COLLATE ascii_bin DEFAULT '' NOT NULL,
col9 LONGTEXT DEFAULT '' NOT NULL CHARACTER SET ascii COLLATE ascii_bin,
col10 LONGTEXT CHARACTER SET ascii COLLATE ascii_bin DEFAULT '' NOT NULL,
);