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 reason it
failed for pivotal is timeout exception. I am sorry I can't help with that.

Traceback (most recent call last):
  File
"/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests/keyboard_shortcut_test.py",
line 52, in runTest
    self._check_shortcuts()
  File
"/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests/keyboard_shortcut_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 <dp...@pgadmin.org> 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 windows.
>> Sample insert - insert into test_tab values ('é');
>>
>> 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 characters beyond the limit of ascii
>> then it failed. The solution would be to use utf_8 decoder instead of
>> ascii. I tried setting the client_encoding using
>> set_client_encoding('UTF8') method of a psycopg2 connection but no luck
>> (also its not allowed for async connection). I also tried executing "SET
>> CLIENT_ENCODING='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 to
>> 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
>
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index c72505a..fa8b83f 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -1474,7 +1474,8 @@ def query_tool_status(trans_id):
             errormsg=error_msg
         )
 
-    if conn and trans_obj and session_obj:
+    if conn and trans_obj and session_obj \
+        and conn.transaction_status() is not None:
         status = conn.transaction_status()
         return make_json_response(
             data={
diff --git a/web/pgadmin/utils/driver/psycopg2/connection.py b/web/pgadmin/utils/driver/psycopg2/connection.py
index 315631c..8ca30b3 100644
--- a/web/pgadmin/utils/driver/psycopg2/connection.py
+++ b/web/pgadmin/utils/driver/psycopg2/connection.py
@@ -49,6 +49,10 @@ else:
 
 _ = gettext
 
+# Use utf_8 decoder instead of psycopg2 default ascii for
+# SQL_ASCII database to avoid decode errors
+encodings['SQL_ASCII'] = 'utf_8'
+encodings['SQLASCII'] = 'utf_8'
 
 # Register global type caster which will be applicable to all connections.
 register_global_typecasters()

Reply via email to