Thanks Sergey for the patch. Sure Dave. There is some compilation warning in linux, I will fix those and test pgAgent in windows and update the thread.
On Mon, Feb 8, 2021 at 2:55 PM Dave Page <dp...@pgadmin.org> wrote: > Hi > > On Sat, Feb 6, 2021 at 5:00 AM Sergey Burladyan <eshkin...@gmail.com> > wrote: > >> Currently pgagent doesn't handle unicode correctly. >> >> CharToWString function corrupt multibyte characters because it processes >> string one byte at a time: >> 148 std::string s = std::string(cstr); >> 149 std::wstring wsTmp(s.begin(), s.end()); >> >> WStringToChar function does not take into account that there can be >> _multi_byte character on wcstombs output and create buffer with >> size = wcslen: >> 157 int wstr_length = wcslen(wchar_str); >> 158 char *dst = new char[wstr_length + 10]; >> >> Also pgagent do not setup locale with setlocale(), without it all >> wcs/mbs functions cannot handle multibyte strings. >> >> For example: >> >> === step code === >> select 'это проверка кириллицы в теле запроса pgagent' >> ================= >> >> === postgres log === >> 2021-02-05 23:19:05 UTC [15600-1] postgres@postgres ERROR: unterminated >> quoted string at or near "'" at character 8 >> 2021-02-05 23:19:05 UTC [15600-2] postgres@postgres STATEMENT: select ' >> ==================== >> >> Please see attached patch. >> I only test it on GNU/Linux and can't test it on Windows, sorry. >> > > Thanks for the patch! Neel/Ashesh; can you take a look please? It looks OK > to me, but then I'm not overly familiar with multibyte string handling. > What, if anything, needs to be done on Windows? > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EDB: http://www.enterprisedb.com > >