View Issue Details

IDProjectCategoryView StatusLast Update
0007084OXID eShop (all versions)4.06. Language and translationspublic2020-11-11 10:55
ReporterHelmut L. Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version6.1.5 
Target Version6.2.3Fixed in Version6.2.3 
Summary0007084: OXID in _set tables has wrong collation
DescriptionIn the main tables the OXID column is always created with "CHARACTER SET latin1 COLLATE latin1_general_ci", but in the _set tables the OXID column is created without a specified character set and collation, thus using the default of the table which is normally utf8.
This will result in having a latin1 column compared with a utf8 column in queries, which causes MySQL to convert the value from one of the columns to the charset of the other column. For smaller tables this might not be a big performance problem, but for big tables it will definitely slow down the queries.
Steps To ReproduceAdd languages in the admin until the _set tables are created.
Additional InformationThe corresponding code is in /vendor/oxid-esales/oxideshop-ce/source/Core/DbMetaDataHandler.php, line 223
TagsNo tags attached.
ThemeNot defined
BrowserNot defined
PHP VersionNot defined
Database VersionNot defined

Activities

QA

2020-02-06 14:15

administrator   ~0013115

Reproduced.

1. edit config.inc.php and add this command: $this->iLangPerTable = 2;
2. goto admin, create one new language
3. compare oxarticles.oxid with oxarticles_set1.oxid. The field oxid from oxarticles has the collation latin1_general_ci, whereby the field oxid from oxarticles_set1 is utf8_general_ci.

-MK