preinfo:
diem/mysql uses normally utf8_general_ci as collation for the database tables.
utf8_general_ci means case-insensititive, additionally german umlauts (ä ö ü) will be converted to their normal equivalents.
In the function "getTagIds" in "lib/doctrine/extension/DmTaggable/Template/DmTaggable.php" a query will be done with whereIn (ids), the result will be added to a check array ($_existingTags).
Afterwards a string match will be done to check if tag is existing and should not be added.
Problem1:
DB: two tags , foo and bar are in the database
if i add 'Foo" (with uppercase character) the check will fail and a insert query will be done which will break (duplicate entry for 'foo') - thanks to Case-Insensitive
Problem2:
DB: two tags , foo and bar are in the database
if i add 'Föo" (with german umlaut) the check will fail and a insert query will be done which will break (duplicate entry for 'foo') - thanks to Case-Insensitive
solution:
see: http://github.com/lerler/dmTagPlugin/commit/1f861c72ac9bdc195cbb36c7898451215928cc19
basically, it does a query for each tag (which is slower), checks the result if existing (mysql converts internally), so the following query with 'föo' finds 'foo'
SELECT *
FROM dm_tag
WHERE name = 'föö'
LIMIT 0 , 30
result: foo