Re: [pgAdmin4][Patch]: RM #3551 pgAdmin4 doesn't handle \'s in data fields correctly

2018-09-20 Thread Akshay Joshi
Hi Hackers,

Attached is the modified patch with regression tests.

On Wed, Sep 19, 2018 at 11:32 AM, Akshay Joshi <
akshay.jo...@enterprisedb.com> wrote:

> Hi Dave
>
> On Fri, Sep 14, 2018 at 8:02 PM, Dave Page  wrote:
>
>> Hi
>>
>> On Fri, Sep 14, 2018 at 12:48 PM, Akshay Joshi <
>> akshay.jo...@enterprisedb.com> wrote:
>>
>>> Hi Hackers,
>>>
>>> Attached is the patch to fix RM #3551 pgAdmin4 doesn't handle \'s in
>>> data fields correctly.
>>>
>>
>> This doesn't work for me. If I add a new row and enter:
>>
>> \\server\path\to\file
>>
>> as a value, I get the following on the Messages tab:
>>
>
> This works fine for me, I have enter the same value and data is
> stored. I have tested it with character varying column. Though I have found
> some other issues as well. If I fix one issue then another will get
> introduce, so not concluded yet how to fix this and currently working on
> it.
>
>>
>>  500
>> Internal Server Error Internal Server Error The server
>> encountered an internal error and was unable to complete your request.
>> Either the server is overloaded or there is an error in the application.
>>
>> And this on the Python (3.6) console:
>>
>> 2018-09-14 15:30:28,516: INFO werkzeug: 127.0.0.1 - - [14/Sep/2018
>> 15:30:28] "POST /sqleditor/save/4073406 HTTP/1.1" 500 -
>> 2018-09-14 15:30:28,522: ERROR werkzeug: Error on request:
>> Traceback (most recent call last):
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>> line 270, in run_wsgi
>> execute(self.server.app)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>> line 258, in execute
>> application_iter = app(environ, start_response)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1997, in __call__
>> return self.wsgi_app(environ, start_response)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1985, in wsgi_app
>> response = self.handle_exception(e)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1540, in handle_exception
>> reraise(exc_type, exc_value, tb)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
>> line 33, in reraise
>> raise value
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1982, in wsgi_app
>> response = self.full_dispatch_request()
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1614, in full_dispatch_request
>> rv = self.handle_user_exception(e)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1517, in handle_user_exception
>> reraise(exc_type, exc_value, tb)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
>> line 33, in reraise
>> raise value
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1612, in full_dispatch_request
>> rv = self.dispatch_request()
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>> line 1598, in dispatch_request
>> return self.view_functions[rule.endpoint](**req.view_args)
>>   File 
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask_login.py",
>> line 792, in decorated_view
>> return func(*args, **kwargs)
>>   File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/__init__.py",
>> line 785, in save
>> default_conn)
>>   File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/command.py",
>> line 858, in save
>> item['select_sql'], res['rows'][0])
>>   File 
>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>> line 1147, in execute_dict
>> self.__internal_blocking_execute(cur, query, params)
>>   File 
>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>> line 659, in __internal_blocking_execute
>> params = self.escape_params_sqlascii(params)
>>   File 
>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>> line 636, in escape_params_sqlascii
>> for key, val in params.items()
>>   File 
>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>> line 636, in 
>> for key, val in params.items()
>> AttributeError: 'int' object has no attribute 'encode'
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>



-- 
*Akshay Joshi*

*Sr. Software Architect *



*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*


RM_3551_v2.patch
Description: Binary data


Re: [pgAdmin4][Patch]: RM #3551 pgAdmin4 doesn't handle \'s in data fields correctly

2018-09-20 Thread Harshal Dhumal
Hi Akshay,

We can do one minor improvement for python 2. Instead of below check
*if type(val) in (str, unicode) :*
we can check val against *basestring
*

Thanks,
-- 
*Harshal Dhumal*
*Sr. Software Engineer*

EnterpriseDB India: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


On Thu, Sep 20, 2018 at 8:16 PM Akshay Joshi 
wrote:

> Hi Hackers,
>
> Attached is the modified patch with regression tests.
>
> On Wed, Sep 19, 2018 at 11:32 AM, Akshay Joshi <
> akshay.jo...@enterprisedb.com> wrote:
>
>> Hi Dave
>>
>> On Fri, Sep 14, 2018 at 8:02 PM, Dave Page  wrote:
>>
>>> Hi
>>>
>>> On Fri, Sep 14, 2018 at 12:48 PM, Akshay Joshi <
>>> akshay.jo...@enterprisedb.com> wrote:
>>>
 Hi Hackers,

 Attached is the patch to fix RM #3551 pgAdmin4 doesn't handle \'s in
 data fields correctly.

>>>
>>> This doesn't work for me. If I add a new row and enter:
>>>
>>> \\server\path\to\file
>>>
>>> as a value, I get the following on the Messages tab:
>>>
>>
>> This works fine for me, I have enter the same value and data is
>> stored. I have tested it with character varying column. Though I have found
>> some other issues as well. If I fix one issue then another will get
>> introduce, so not concluded yet how to fix this and currently working on
>> it.
>>
>>>
>>>  500
>>> Internal Server Error Internal Server Error The server
>>> encountered an internal error and was unable to complete your request.
>>> Either the server is overloaded or there is an error in the application.
>>>
>>> And this on the Python (3.6) console:
>>>
>>> 2018-09-14 15:30:28,516: INFO werkzeug: 127.0.0.1 - - [14/Sep/2018
>>> 15:30:28] "POST /sqleditor/save/4073406 HTTP/1.1" 500 -
>>> 2018-09-14 15:30:28,522: ERROR werkzeug: Error on request:
>>> Traceback (most recent call last):
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>> line 270, in run_wsgi
>>> execute(self.server.app)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>> line 258, in execute
>>> application_iter = app(environ, start_response)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1997, in __call__
>>> return self.wsgi_app(environ, start_response)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1985, in wsgi_app
>>> response = self.handle_exception(e)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1540, in handle_exception
>>> reraise(exc_type, exc_value, tb)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
>>> line 33, in reraise
>>> raise value
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1982, in wsgi_app
>>> response = self.full_dispatch_request()
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1614, in full_dispatch_request
>>> rv = self.handle_user_exception(e)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1517, in handle_user_exception
>>> reraise(exc_type, exc_value, tb)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
>>> line 33, in reraise
>>> raise value
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1612, in full_dispatch_request
>>> rv = self.dispatch_request()
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
>>> line 1598, in dispatch_request
>>> return self.view_functions[rule.endpoint](**req.view_args)
>>>   File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask_login.py",
>>> line 792, in decorated_view
>>> return func(*args, **kwargs)
>>>   File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/__init__.py", line
>>> 785, in save
>>> default_conn)
>>>   File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/command.py", line
>>> 858, in save
>>> item['select_sql'], res['rows'][0])
>>>   File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>> line 1147, in execute_dict
>>> self.__internal_blocking_execute(cur, query, params)
>>>   File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>> line 659, in __internal_blocking_execute
>>> params = self.escape_params_sqlascii(params)
>>>   File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>> line 636, in escape_params_sqlascii
>>> for key, val in params.items()
>>>   File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>> line 636, in 
>>> for key,

Re: [pgAdmin4][Patch]: RM #3551 pgAdmin4 doesn't handle \'s in data fields correctly

2018-09-20 Thread Akshay Joshi
On Thu, Sep 20, 2018 at 8:38 PM Harshal Dhumal <
harshal.dhu...@enterprisedb.com> wrote:

> Hi Akshay,
>
> We can do one minor improvement for python 2. Instead of below check
> *if type(val) in (str, unicode) :*
> we can check val against *basestring
> *
>

   Fixed. Attached is the updated patch. Thanks

>
>
> Thanks,
> --
> *Harshal Dhumal*
> *Sr. Software Engineer*
>
> EnterpriseDB India: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> On Thu, Sep 20, 2018 at 8:16 PM Akshay Joshi <
> akshay.jo...@enterprisedb.com> wrote:
>
>> Hi Hackers,
>>
>> Attached is the modified patch with regression tests.
>>
>> On Wed, Sep 19, 2018 at 11:32 AM, Akshay Joshi <
>> akshay.jo...@enterprisedb.com> wrote:
>>
>>> Hi Dave
>>>
>>> On Fri, Sep 14, 2018 at 8:02 PM, Dave Page  wrote:
>>>
 Hi

 On Fri, Sep 14, 2018 at 12:48 PM, Akshay Joshi <
 akshay.jo...@enterprisedb.com> wrote:

> Hi Hackers,
>
> Attached is the patch to fix RM #3551 pgAdmin4 doesn't handle \'s in
> data fields correctly.
>

 This doesn't work for me. If I add a new row and enter:

 \\server\path\to\file

 as a value, I get the following on the Messages tab:

>>>
>>> This works fine for me, I have enter the same value and data is
>>> stored. I have tested it with character varying column. Though I have found
>>> some other issues as well. If I fix one issue then another will get
>>> introduce, so not concluded yet how to fix this and currently working on
>>> it.
>>>

  500
 Internal Server Error Internal Server Error The server
 encountered an internal error and was unable to complete your request.
 Either the server is overloaded or there is an error in the 
 application.

 And this on the Python (3.6) console:

 2018-09-14 15:30:28,516: INFO werkzeug: 127.0.0.1 - - [14/Sep/2018
 15:30:28] "POST /sqleditor/save/4073406 HTTP/1.1" 500 -
 2018-09-14 15:30:28,522: ERROR werkzeug: Error on request:
 Traceback (most recent call last):
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
 line 270, in run_wsgi
 execute(self.server.app)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
 line 258, in execute
 application_iter = app(environ, start_response)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1997, in __call__
 return self.wsgi_app(environ, start_response)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1985, in wsgi_app
 response = self.handle_exception(e)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1540, in handle_exception
 reraise(exc_type, exc_value, tb)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
 line 33, in reraise
 raise value
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1982, in wsgi_app
 response = self.full_dispatch_request()
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1614, in full_dispatch_request
 rv = self.handle_user_exception(e)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1517, in handle_user_exception
 reraise(exc_type, exc_value, tb)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
 line 33, in reraise
 raise value
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1612, in full_dispatch_request
 rv = self.dispatch_request()
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1598, in dispatch_request
 return self.view_functions[rule.endpoint](**req.view_args)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask_login.py",
 line 792, in decorated_view
 return func(*args, **kwargs)
   File
 "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/__init__.py", line
 785, in save
 default_conn)
   File
 "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/command.py", line
 858, in save
 item['select_sql'], res['rows'][0])
   File
 "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
 line 1147, in execute_dict
 self.__internal_blocking_execute(cur, query, params)
   File
 "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
 line 659, in __internal_blocking_execute
 params = self.

Re: [pgAdmin4][Patch]: RM #3551 pgAdmin4 doesn't handle \'s in data fields correctly

2018-09-20 Thread Murtuza Zabuawala
Instead, we can utilize in-built 'six' module
 which will work in both Py
2.x & 3.x
>>> isinstance(val, string_types)

-- Murtuza

On Thu, Sep 20, 2018 at 8:38 PM Harshal Dhumal <
harshal.dhu...@enterprisedb.com> wrote:

> Hi Akshay,
>
> We can do one minor improvement for python 2. Instead of below check
> *if type(val) in (str, unicode) :*
> we can check val against *basestring
> *
>
> Thanks,
> --
> *Harshal Dhumal*
> *Sr. Software Engineer*
>
> EnterpriseDB India: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> On Thu, Sep 20, 2018 at 8:16 PM Akshay Joshi <
> akshay.jo...@enterprisedb.com> wrote:
>
>> Hi Hackers,
>>
>> Attached is the modified patch with regression tests.
>>
>> On Wed, Sep 19, 2018 at 11:32 AM, Akshay Joshi <
>> akshay.jo...@enterprisedb.com> wrote:
>>
>>> Hi Dave
>>>
>>> On Fri, Sep 14, 2018 at 8:02 PM, Dave Page  wrote:
>>>
 Hi

 On Fri, Sep 14, 2018 at 12:48 PM, Akshay Joshi <
 akshay.jo...@enterprisedb.com> wrote:

> Hi Hackers,
>
> Attached is the patch to fix RM #3551 pgAdmin4 doesn't handle \'s in
> data fields correctly.
>

 This doesn't work for me. If I add a new row and enter:

 \\server\path\to\file

 as a value, I get the following on the Messages tab:

>>>
>>> This works fine for me, I have enter the same value and data is
>>> stored. I have tested it with character varying column. Though I have found
>>> some other issues as well. If I fix one issue then another will get
>>> introduce, so not concluded yet how to fix this and currently working on
>>> it.
>>>

  500
 Internal Server Error Internal Server Error The server
 encountered an internal error and was unable to complete your request.
 Either the server is overloaded or there is an error in the 
 application.

 And this on the Python (3.6) console:

 2018-09-14 15:30:28,516: INFO werkzeug: 127.0.0.1 - - [14/Sep/2018
 15:30:28] "POST /sqleditor/save/4073406 HTTP/1.1" 500 -
 2018-09-14 15:30:28,522: ERROR werkzeug: Error on request:
 Traceback (most recent call last):
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
 line 270, in run_wsgi
 execute(self.server.app)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
 line 258, in execute
 application_iter = app(environ, start_response)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1997, in __call__
 return self.wsgi_app(environ, start_response)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1985, in wsgi_app
 response = self.handle_exception(e)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1540, in handle_exception
 reraise(exc_type, exc_value, tb)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
 line 33, in reraise
 raise value
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1982, in wsgi_app
 response = self.full_dispatch_request()
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1614, in full_dispatch_request
 rv = self.handle_user_exception(e)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1517, in handle_user_exception
 reraise(exc_type, exc_value, tb)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/_compat.py",
 line 33, in reraise
 raise value
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1612, in full_dispatch_request
 rv = self.dispatch_request()
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask/app.py",
 line 1598, in dispatch_request
 return self.view_functions[rule.endpoint](**req.view_args)
   File
 "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/flask_login.py",
 line 792, in decorated_view
 return func(*args, **kwargs)
   File
 "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/__init__.py", line
 785, in save
 default_conn)
   File
 "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/command.py", line
 858, in save
 item['select_sql'], res['rows'][0])
   File
 "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
 line 1147, in execute_dict
 self.__internal_blocking_execute(cur, query, params)
   File
 "/Users/dpage/git/pga