Hi Dave,

On Fri, Jun 15, 2018 at 2:08 PM, Dave Page <dp...@pgadmin.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"

Reply via email to