Interestingly Postgres also fails here:
[2] pry(main)> DB.query_single('select lower(?)', 'ΣΠΥΡΟΣ')
=> ["σπυροσ"]
Perhaps we should simply special case this quirk in our internal Discourse method that handles calculating username_lower
?
Find all the methods that call username_lower
pipe them to a central function and then have this special case allowed for (I guess we can use a mini_racer call here if we wish or simply call .lower
and fix it up afterwards with a sub
call)
Updating the OP title here to make it clearer.