Re: [pgAdmin4][RM#3289] Can't query SQL_ASCII database.

From: Aditya Toshniwal <aditya(dot)toshniwal(at)enterprisedb(dot)com>
To: Dave Page <dpage(at)pgadmin(dot)org>
Cc: Joao De Almeida Pereira <jdealmeidapereira(at)pivotal(dot)io>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: [pgAdmin4][RM#3289] Can't query SQL_ASCII database.
Date: 2018-06-15 09:03:31
Message-ID: CAM9w-_niwZ+VD4awqOLp1D5eEFtE_G8wWciWC_sg8N2yvER=Nw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi Dave,

On Fri, Jun 15, 2018 at 2:08 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:

> Hi
>
> On Thu, Jun 14, 2018 at 7:05 AM, Aditya Toshniwal <aditya.toshniwal@
> enterprisedb.com> wrote:
>
>> I am sorry I missed the attachment. :(
>> PFA.
>>
>
> It looks like the encoding names are getting munged somewhere. I see
> you've accounted for that to some degree in connection.py (you have both
> SQL_ASCII/MULE_INTERNAL and SQLASCII/MULEINTERNAL), however it doesn't seem
> to be enough as I'm getting the following error when trying to download CSV
> from the query tool. Can we ensure that conn.encoding contains an un-munged
> value at all times, or is that coming from psycopg2?
>
​That is done by pyscopg2 and conn.encoding is a psycopg2 connection
property.​

>
> 2018-06-15 09:32:28,799: INFO werkzeug: 127.0.0.1 - - [15/Jun/2018
> 09:32:28] "GET /sqleditor/query_tool/download/2732923?query=SELECT%
> 20*%20FROM%20public.sql_ascii%0AORDER%20BY%20id%20ASC%20&filename=sql_ascii.csv
> HTTP/1.1" 500 -
> 2018-06-15 09:32:28,801: ERROR werkzeug: Error on request:
> Traceback (most recent call last):
> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py",
> line 270, in run_wsgi
> execute(self.server.app)
> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py",
> line 260, in execute
> for data in application_iter:
> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/wsgi.py",
> line 870, in __next__
> return self._next()
> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-
> packages/werkzeug/wrappers.py", line 82, in _iter_encoded
> for item in iterable:
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
> line 752, in gen
> column_name = column_name.decode(conn_encoding)
> LookupError: unknown encoding: SQLASCII
>

​This is because there is code bug here. Below is code used to decode a
column name. Connection encoding and python encoding are two different
things. Python does not know what SQLASCII is. This will work with UTF-8
because python has decoder with same name. I tried to download CSV with the
original code without changes and it fails there too. I will fix this and
will send the updated patch. I should have checked this.
conn_encoding = cur.connection.encoding
column_name = column_name.decode(conn_encoding)​

>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

--
Thanks and Regards,
Aditya Toshniwal
Software Engineer | EnterpriseDB Software Solutions | Pune
"Don't Complain about Heat, Plant a tree"

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Dave Page 2018-06-15 09:19:02 pgAdmin 4 commit: Add an option to auto-complete keywords in upper case
Previous Message Dave Page 2018-06-15 08:38:19 Re: [pgAdmin4][RM#3289] Can't query SQL_ASCII database.