Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fO7qK-0001nY-8w for pgadmin-hackers@arkaria.postgresql.org; Wed, 30 May 2018 20:37:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fO7qI-0004ok-Lr for pgadmin-hackers@arkaria.postgresql.org; Wed, 30 May 2018 20:37:10 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fO7qI-0004oU-43 for pgadmin-hackers@lists.postgresql.org; Wed, 30 May 2018 20:37:10 +0000 Received: from mx0b-00296801.pphosted.com ([148.163.153.148]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fO7qC-0000Ar-S2 for pgadmin-hackers@postgresql.org; Wed, 30 May 2018 20:37:08 +0000 Received: from pps.filterd (m0114585.ppops.net [127.0.0.1]) by mx0b-00296801.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w4UKZqWU026482 for ; Wed, 30 May 2018 20:37:01 GMT Received: from mail-io0-f198.google.com (mail-io0-f198.google.com [209.85.223.198]) by mx0b-00296801.pphosted.com with ESMTP id 2j9euv9054-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Wed, 30 May 2018 20:37:01 +0000 Received: by mail-io0-f198.google.com with SMTP id t9-v6so16511589ioa.2 for ; Wed, 30 May 2018 13:37:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ueF/dmiVPCggTonDsDPN62dBVz580EXJIOrTcHScyXo=; b=K9QkqZP23ynhEmUicsy78fW2qvjyGawe8/KgkzMw90RmDlBfodaEDhufhMGko53ZEU dsOF6cq8f5Uerr0MFgmK/NztOK1L2VAFRT6gjIAfbc6hsKuqfm6sPm57171Hun8w902b 1uHSpqaBw8tI9ukxgek50Lec6m6KzPNSphFTtxYUORY/Fvu89+nRAFG3DIvh4ISDV6YT 75AnDbXgLLB7y7rWVE2yB3ZEYnQEun6TwiYNpQuG2z1drb5Q4OMJNMdxccFkqDRQURXc nSSDHwjTcg+Yf1RbhUhFFYVTguCVmXbvmlKinjm13Asm0ls7ZO5/NkAwlFoAt3W/2iwO EIiQ== X-Gm-Message-State: ALKqPwdpPU44Pw7DARfGE/vbdgSELQcwDVcmWudGZp2ueNMoLVqLQeK8 hErTHfuo7Bkm7eIycDc+HStUQ+L1hwkSfx62MnKDNRfiRPXoTV74/B1ScFysz4b+VW2JSW8bdZk dqbe+PnoWr5WLvf9HrgYMOHWMJiFyEpdgwWUWYYgtbBp1YeDyxyGa8dA5YC+F52ugYBQA X-Received: by 2002:a24:f6c2:: with SMTP id u185-v6mr3088284ith.146.1527712620762; Wed, 30 May 2018 13:37:00 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLndS+m6kojZvV8NhTDtZ4DS68RJ8+AUiqbcPXSnX6EEqB0KW5qm+BXKqNH02I+AwT8DKGM4Q1y00vxUiHn3dY= X-Received: by 2002:a24:f6c2:: with SMTP id u185-v6mr3088239ith.146.1527712620266; Wed, 30 May 2018 13:37:00 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Joao De Almeida Pereira Date: Wed, 30 May 2018 16:36:24 -0400 Message-ID: Subject: Re: [pgAdmin4][RM#3289] Can't query SQL_ASCII database. To: Aditya Toshniwal Cc: pgadmin-hackers Content-Type: multipart/related; boundary="0000000000000fbff9056d7250a0" X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-05-30_09:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=10 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1805220000 definitions=main-1805300219 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000000fbff9056d7250a0 Content-Type: multipart/alternative; boundary="0000000000000fbff7056d72509f" --0000000000000fbff7056d72509f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Aditya, It looks ok and it passes CI. We have some recommendations: - These look like 2 different changes so they should be in separated commit= s - Do we have test coverage for the bug that you are talking about? If not we should, to ensure this problem does not happen again in a future change. Thanks Victoria && Joao On Wed, May 30, 2018 at 3:06 AM Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hi Hackers, > > PFA updated patch after all the permutations, combinations for encoding > for SQL_ASCII database. Also fixed a small glitch for sql editor > connection status check. > > Please note, ERROR: invalid byte sequence for encoding "UTF8": 0xe9 0x73 > is a Postgres DB error and not pgAdmin4 error. > > > > You need to change client_encoding to the appropriate. After changing > client_encoding using command - set client_encoding=3D'XYZ', it will give= not > give error. > > > > > > > > > Thanks and Regards, > Aditya Toshniwal > Software Engineer | EnterpriseDB Software Solutions | Pune > "Don't Complain about Heat, Plant a tree" > > On Wed, May 23, 2018 at 10:13 AM, Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Thank you Victoria, Anthony. >> >> Thanks and Regards, >> Aditya Toshniwal >> Software Engineer | EnterpriseDB Software Solutions | Pune >> "Don't Complain about Heat, Plant a tree" >> >> On Tue, May 22, 2018 at 7:15 PM, Victoria Henry >> wrote: >> >>> Hi Aditya, >>> >>> We made a minor change to make the patch so the python linter can pass. >>> Attached is the change we made. >>> Everything else looks good. >>> >>> Sincerely, >>> >>> Victoria & Anthony >>> >>> On Tue, May 22, 2018 at 4:46 AM Aditya Toshniwal < >>> aditya.toshniwal@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> PFA updated patch. Linter issues are fixed ( we dont have any linter >>>> setup for python :-( ) >>>> Regarding test cases, they run successfully on my system and the reaso= n >>>> it failed for pivotal is timeout exception. I am sorry I can't help wi= th >>>> that. >>>> >>>> Traceback (most recent call last): >>>> File >>>> "/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests/keyboard_s= hortcut_test.py", >>>> line 52, in runTest >>>> self._check_shortcuts() >>>> File >>>> "/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests/keyboard_s= hortcut_test.py", >>>> line 77, in _check_shortcuts >>>> ") and contains(@class, 'open')]") >>>> File >>>> "/root/.pyenv/versions/pgadmin36/lib/python3.6/site-packages/selenium/= webdriver/support/wait.py", >>>> line 80, in until >>>> raise TimeoutException(message, screen, stacktrace) >>>> selenium.common.exceptions.TimeoutException: Message: >>>> >>>> Thanks and Regards, >>>> Aditya Toshniwal >>>> Software Engineer | EnterpriseDB Software Solutions | Pune >>>> "Don't Complain about Heat, Plant a tree" >>>> >>>> On Tue, May 22, 2018 at 1:37 PM, Dave Page wrote: >>>> >>>>> Hi >>>>> >>>>> Pivotal's buildbot is showing problems with this patch: >>>>> >>>>> >>>>> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines/pgadmin-= patch/jobs/run-linter/builds/66 >>>>> (linter failed) >>>>> >>>>> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines/pgadmin-= patch/jobs/run-tests/builds/84 >>>>> (tests failed) >>>>> >>>>> >>>>> On Tue, May 22, 2018 at 7:05 AM, Aditya Toshniwal < >>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>> >>>>>> Hi Hackers, >>>>>> >>>>>> PFA patch for RM#3289 where decode error was thrown on querying a >>>>>> SQL_ASCII database table. Please note, this problem occurs only on w= indows. >>>>>> Sample insert - insert into test_tab values ('=C3=A9'); >>>>>> >>>>>> psycopg2 has a encodings dictionary where Postgres Database Encoding= s >>>>>> are mapped to python equivalent. It uses 'ascii' decoder of python t= o >>>>>> decode for SQL_ASCII encoding. If data has characters beyond the lim= it of >>>>>> ascii then it failed. The solution would be to use utf_8 decoder ins= tead of >>>>>> ascii. I tried setting the client_encoding using >>>>>> set_client_encoding('UTF8') method of a psycopg2 connection but no l= uck >>>>>> (also its not allowed for async connection). I also tried executing = "SET >>>>>> CLIENT_ENCODING=3D'UTF8'" but it didn't work too. >>>>>> So, as in the patch, I had to set encodings dict value directly to >>>>>> 'utf_8' and it seems to be working. Please note, the same is added t= o >>>>>> psycopg3 milestones >>>>>> https://github.com/psycopg/psycopg2/milestone/4 >>>>>> >>>>>> Also fixed a small glitch for sql editor connection status check. >>>>>> >>>>>> Kindly review. >>>>>> >>>>>> Thanks and Regards, >>>>>> Aditya Toshniwal >>>>>> Software Engineer | EnterpriseDB Software Solutions | Pune >>>>>> "Don't Complain about Heat, Plant a tree" >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>> >>>> >> > --0000000000000fbff7056d72509f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello Aditya,

It looks ok and it passes= CI.

We have some recommendations:
- The= se look like 2 different changes so they should be in separated commits
- Do we have test coverage for the bug that you are talking about? I= f not we should, to ensure this problem does not happen again in a future c= hange.


Thanks
Victoria &a= mp;& Joao

On= Wed, May 30, 2018 at 3:06 AM Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrot= e:
Hi Hackers,
PFA updated patch after all the permutations, combinations = for encoding for SQL_ASCII database.=C2=A0 Also fixed a small glitch for sql editor connect= ion status check.

Please note,=C2=A0ERROR: invalid byte sequence fo= r encoding "UTF8": 0xe9 0x73 is a Postgres DB error and not pgAdm= in4 error.



You= need to change client_encoding to the appropriate. After changing client_e= ncoding using command - set client_encoding=3D'XYZ', it will give n= ot give error.




=




Th= anks and Regards,
Ad= itya Toshniwal
Software Engineer |=C2=A0EnterpriseDB Software Solutions |=C2=A0Pune
"Don't Complain about Heat, Plant a tree"=

On Wed, May 23, 2018 at 10:13 AM, Aditya Tos= hniwal <aditya.toshniwal@enterprisedb.com> w= rote:
Thank you Victoria= , Anthony.

Thanks and= Regards,
Aditya Tos= hniwal
= Software Engineer |=C2=A0EnterpriseDB Software Solutions |=C2=A0Pune
"Don't Complain about Heat, Plant a tree"

On Tue, May 22, 2018 at 7:15 PM, Victoria Henry &= lt;vhenry@pivotal.io= > wrote:
H= i Aditya,

We made a minor change to make the patch so th= e python linter can pass.=C2=A0 Attached is the change we made.
E= verything else looks good.

Sincerely,
Victoria & Anthony

On= Tue, May 22, 2018 at 4:46 AM Aditya Toshniwal <aditya.toshniwal@enterprised= b.com> wrote:
Hi,

PFA updated patch. Linter issues are fixed ( we d= ont have any linter setup for python :-( )
Regarding test cases, = they run successfully on my system and the reason it failed for pivotal is = timeout exception. I am sorry I can't help with that.

Traceback (most recent call last):
=C2=A0 File "/tmp/build/a4535= 82b/pgadmin-repo/web/pgadmin/feature_tests/keyboard_shortcut_test.py",= line 52, in runTest
=C2=A0 =C2=A0 self._check_shortcuts()
=C2=A0 Fil= e "/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests/keyboard= _shortcut_test.py", line 77, in _check_shortcuts
=C2=A0 =C2=A0 &quo= t;) and contains(@class, 'open')]")
=C2=A0 File "/root= /.pyenv/versions/pgadmin36/lib/python3.6/site-packages/selenium/webdriver/s= upport/wait.py", line 80, in until
=C2=A0 =C2=A0 raise TimeoutExcep= tion(message, screen, stacktrace)
selenium.common.exceptions.TimeoutExce= ption: Message:

=
Thanks and Regards,
Aditya Toshniwal
<= span style=3D"background-color:rgb(255,255,255)">Software Engineer |=C2=A0Enterpr= iseDB Software Solutions |=C2=A0Pune
"Don't Complain abou= t Heat, Plant a tree"

On Tue, May 22, 2018 at 1:37 PM, Dave Page <= span dir=3D"ltr"><dpage@pgadmin.org> wrote:
=

On Tue, May 22, 2018 at 7:05 AM, Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
Hi Hackers,

<= div>PFA patch for RM#3289 where decode error was thrown on querying a SQL_A= SCII database table. Please note, this problem occurs only on windows.
Sample insert -=C2=A0insert into test_tab values ('=C3=A9');<= /div>

psycopg2 has a encodings dictionary where Postgres= Database Encodings are mapped to python equivalent. It uses 'ascii'= ; decoder of python to decode for SQL_ASCII encoding. If data has character= s beyond the limit of ascii then it failed. The solution would be to use ut= f_8 decoder instead of ascii. I tried setting the client_encoding using set= _client_encoding('UTF8') method of a psycopg2 connection but no luc= k (also its not allowed for async connection). I also tried executing "= ;SET CLIENT_ENCODING=3D'UTF8'" but it didn't work too.
So, as in the patch, I had to set encodings dict value directly to &= #39;utf_8' and it seems to be working. Please note, the same is added t= o psycopg3 milestones

Also fixed a small glitch for sql edit= or connection status check.

Kindly review.
Thanks an= d Regards,
Aditya To= shniwal
Software Engineer |=C2=A0EnterpriseDB Software Solutions |=C2=A0Pune
"Don't Complain about Heat, Plant a tree"



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

Ent= erpriseDB UK: htt= p://www.enterprisedb.com
The Enterprise PostgreSQL Company



--0000000000000fbff7056d72509f-- --0000000000000fbff9056d7250a0 Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_jhsrh5fe0_163afd929dacb31e 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 --0000000000000fbff9056d7250a0 Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_jhsrnphi2_163afddbdda91851 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 UMnBb/L9AAAAAElFTkSuQmCC --0000000000000fbff9056d7250a0--