Re: pgagent unicode support

From: Neel Patel <neel(dot)patel(at)enterprisedb(dot)com>
To: Sergey Burladyan <eshkinkot(at)gmail(dot)com>
Cc: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>, Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com>, Dave Page <dpage(at)pgadmin(dot)org>
Subject: Re: pgagent unicode support
Date: 2021-02-18 11:42:38
Message-ID: CACCA4P3JvfMmG_LCm8Oeqnp4r=EuJBLuaS2mUieuw+--2ybgFQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi Sergey,

Thank you for the patch. It looks good to me except below.

We have modified the patch as we fixed the memory leak ( review comment
given by Ashesh ) and also fixed the compilation warnings.
Can you please review and let us know ?

Thanks,
Neel Patel

On Mon, Feb 15, 2021 at 6:15 PM Neel Patel <neel(dot)patel(at)enterprisedb(dot)com>
wrote:

> 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 <dpage(at)pgadmin(dot)org> wrote:
>
>> Hi
>>
>> On Sat, Feb 6, 2021 at 5:00 AM Sergey Burladyan <eshkinkot(at)gmail(dot)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(at)postgres ERROR:
>>> unterminated quoted string at or near "'" at character 8
>>> 2021-02-05 23:19:05 UTC [15600-2] postgres(at)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
>>
>>

Attachment Content-Type Size
pgagent_unicode.patch application/octet-stream 2.2 KB

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Nikhil Mohite 2021-02-18 12:52:13 Re: [pgAdmin]: CodeMirror black screen issue on macOS
Previous Message Akshay Joshi 2021-02-18 11:36:09 [Patch] Utilities not working on Windows with WSGI