libsql: avoid redundant threaded locale resets
Some checks failed
build / Linux asan (push) Has been cancelled
build / Linux release (push) Has been cancelled
build / FreeBSD build (push) Has been cancelled

This commit is contained in:
server
2026-04-14 16:35:43 +02:00
parent e306c7c500
commit e56d93ad53

View File

@@ -46,10 +46,14 @@ bool CAsyncSQL::QueryLocaleSet()
return true;
}
const char* current_charset = mysql_character_set_name(&m_hDB);
if (current_charset && m_stLocale == current_charset)
return true;
if (mysql_set_character_set(&m_hDB, m_stLocale.c_str()))
{
sys_err("cannot set locale %s by 'mysql_set_character_set', errno %u %s",
m_stLocale.c_str(), mysql_errno(&m_hDB), mysql_error(&m_hDB));
sys_err("cannot set locale %s by 'mysql_set_character_set' (current=%s), errno %u %s",
m_stLocale.c_str(), current_charset ? current_charset : "<unknown>", mysql_errno(&m_hDB), mysql_error(&m_hDB));
return false;
}
@@ -614,5 +618,7 @@ size_t CAsyncSQL::EscapeString(char* dst, size_t dstSize, const char* src, size_
void CAsyncSQL2::SetLocale(const std::string& stLocale)
{
m_stLocale = stLocale;
QueryLocaleSet();
if (!HasWorkerThread())
QueryLocaleSet();
}