public inbox for [email protected]
help / color / mirror / Atom feedFrom: Murtuza Zabuawala <[email protected]>
To: Akshay Joshi <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: [pgAdmin4[RM#3935] Grant wizard fails to list down functions
Date: Wed, 30 Jan 2019 15:10:17 +0530
Message-ID: <CAKKotZTMNh2r22+_esMWoOYbiXhs3bU0R5oc9oaCPNxs4S8Rkw@mail.gmail.com> (raw)
In-Reply-To: <CANxoLDeqn8TwWfJdwQ7ZGHw_jC+hT-DncaszSMZDTkOnJ_xqLA@mail.gmail.com>
References: <CAKKotZTf=gmr3F6QvgbFfi1DEFZCAtB17Ai9UZD4fBHJqyLCaA@mail.gmail.com>
<CANxoLDckA6XT51xibDmSdt0Jcv_suyAv1G7TBLYLJw6cVxj4+w@mail.gmail.com>
<CAKKotZQhaYR_NvPa_CKdd-7PoWQspCQFODCZj2AuLfU4qE39tA@mail.gmail.com>
<CANxoLDeqn8TwWfJdwQ7ZGHw_jC+hT-DncaszSMZDTkOnJ_xqLA@mail.gmail.com>
Hi,
On Mon, Jan 28, 2019 at 4:38 PM Akshay Joshi <[email protected]>
wrote:
> Hi Murtuza
>
> Here are my review comments:
>
> - Exact error should be logged in the log file and on GUI we should
> show message like "Unable to fetch <function/table> object".
>
> Fixed
>
> - Message should be shown in the status bar.
>
> Fixed
>
> - If there is an error to fetch one kind of object, we should show
> other objects.
>
> Fixed.
Please find the updated patch.
Regards,
Murtuza
>
> On Mon, Jan 28, 2019 at 2:49 PM Murtuza Zabuawala <
> [email protected]> wrote:
>
>> Hi,
>>
>> PFA minor patch, To display an error on UI when there is a backend error
>> for the grant wizard request.
>> Please review.
>>
>> --
>> Regards,
>> Murtuza Zabuawala
>> EnterpriseDB: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>>
>>
>> On Mon, Jan 28, 2019 at 12:48 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Thanks patch applied.
>>>
>>> On Mon, Jan 28, 2019 at 12:01 PM Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> PFA patch to fix the issue where EPAS DB instance running with
>>>> *no-redwood-compat* mode fails to list down functions objects in grant
>>>> wizard due to 'char' -> 'int' type cast error.
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Murtuza Zabuawala
>>>> EnterpriseDB: 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*
>
Attachments:
[image/png] Screen Shot 2019-01-30 at 2.52.03 PM.png (236.4K, 3-Screen%20Shot%202019-01-30%20at%202.52.03%20PM.png)
download | view image
[application/octet-stream] RM_3935_UI_error_handling.diff (6.2K, 4-RM_3935_UI_error_handling.diff)
download | inline diff:
diff --git a/web/pgadmin/static/scss/_alert.scss b/web/pgadmin/static/scss/_alert.scss
index e8676b8c..f5082c37 100644
--- a/web/pgadmin/static/scss/_alert.scss
+++ b/web/pgadmin/static/scss/_alert.scss
@@ -21,7 +21,8 @@
display: inline-block;
}
-.alert.alert-info {
+.alert.alert-info,
+.alert.alert-danger {
padding: 0.5rem;
}
diff --git a/web/pgadmin/tools/grant_wizard/__init__.py b/web/pgadmin/tools/grant_wizard/__init__.py
index 6ef374b1..6ca37204 100644
--- a/web/pgadmin/tools/grant_wizard/__init__.py
+++ b/web/pgadmin/tools/grant_wizard/__init__.py
@@ -191,6 +191,8 @@ def properties(sid, did, node_id, node_type):
server_prop = server_info
res_data = []
+ failed_objects = []
+ msg = None
manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid)
conn = manager.connection(did=did)
@@ -231,11 +233,11 @@ def properties(sid, did, node_id, node_type):
node_id=node_id, type='function')
status, res = conn.execute_dict(SQL)
-
if not status:
- return internal_server_error(errormsg=res)
-
- res_data.extend(res['rows'])
+ current_app.logger.error(res)
+ failed_objects.append('function')
+ else:
+ res_data.extend(res['rows'])
# Fetch procedures only if server type is EPAS or PG >= 11
if (len(server_prop) > 0 and
@@ -250,9 +252,10 @@ def properties(sid, did, node_id, node_type):
status, res = conn.execute_dict(SQL)
if not status:
- return internal_server_error(errormsg=res)
-
- res_data.extend(res['rows'])
+ current_app.logger.error(res)
+ failed_objects.append('procedure')
+ else:
+ res_data.extend(res['rows'])
# Fetch trigger functions
if ntype in ['schema', 'trigger_function']:
@@ -262,9 +265,10 @@ def properties(sid, did, node_id, node_type):
status, res = conn.execute_dict(SQL)
if not status:
- return internal_server_error(errormsg=res)
-
- res_data.extend(res['rows'])
+ current_app.logger.error(res)
+ failed_objects.append('trigger function')
+ else:
+ res_data.extend(res['rows'])
# Fetch Sequences against schema
if ntype in ['schema', 'sequence']:
@@ -274,8 +278,10 @@ def properties(sid, did, node_id, node_type):
status, res = conn.execute_dict(SQL)
if not status:
- return internal_server_error(errormsg=res)
- res_data.extend(res['rows'])
+ current_app.logger.error(res)
+ failed_objects.append('sequence')
+ else:
+ res_data.extend(res['rows'])
# Fetch Tables against schema
if ntype in ['schema', 'table']:
@@ -285,9 +291,10 @@ def properties(sid, did, node_id, node_type):
status, res = conn.execute_dict(SQL)
if not status:
- return internal_server_error(errormsg=res)
-
- res_data.extend(res['rows'])
+ current_app.logger.error(res)
+ failed_objects.append('table')
+ else:
+ res_data.extend(res['rows'])
# Fetch Views against schema
if ntype in ['schema', 'view']:
@@ -297,9 +304,10 @@ def properties(sid, did, node_id, node_type):
status, res = conn.execute_dict(SQL)
if not status:
- return internal_server_error(errormsg=res)
-
- res_data.extend(res['rows'])
+ current_app.logger.error(res)
+ failed_objects.append('view')
+ else:
+ res_data.extend(res['rows'])
# Fetch Materialzed Views against schema
if ntype in ['schema', 'mview']:
@@ -309,12 +317,19 @@ def properties(sid, did, node_id, node_type):
status, res = conn.execute_dict(SQL)
if not status:
- return internal_server_error(errormsg=res)
-
- res_data.extend(res['rows'])
+ current_app.logger.error(res)
+ failed_objects.append('materialized view')
+ else:
+ res_data.extend(res['rows'])
+
+ if len(failed_objects) > 0:
+ msg = gettext('Unable to fetch the {} objects'.format(
+ ",".join(failed_objects))
+ )
- return ajax_response(
- response=res_data,
+ return make_json_response(
+ result=res_data,
+ info=msg,
status=200
)
diff --git a/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js b/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js
index 85d78da2..4dd904b4 100644
--- a/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js
+++ b/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js
@@ -608,9 +608,28 @@ define([
$('.wizard-progress-bar p').show();
coll.fetch({
- success: function() {
+ success: function(c, xhr) {
$('.wizard-progress-bar p').html('');
$('.wizard-progress-bar').hide();
+ c.set(xhr.result, {parse: true});
+ // If some objects failed while fetching then we will notify the user
+ if (xhr && xhr.info && xhr.info !== '') {
+ $('.pg-prop-status-bar .alert-text').html(xhr.info);
+ $('.pg-prop-status-bar').css('visibility', 'visible');
+ }
+ },
+ error: function(m, xhr) {
+ // If the main request fails as whole then
+ let msg;
+ if (xhr && xhr.responseJSON && xhr.responseJSON.errormsg) {
+ msg = xhr.responseJSON.errormsg;
+ }
+
+ if(!msg) {
+ msg = gettext('Unable to fetch the database objects due to an error');
+ }
+ $('.wizard-progress-bar p').removeClass('alert-info').addClass('alert-danger');
+ $('.wizard-progress-bar p').text(msg);
},
reset: true,
}, this);
view thread (6+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: [pgAdmin4[RM#3935] Grant wizard fails to list down functions
In-Reply-To: <CAKKotZTMNh2r22+_esMWoOYbiXhs3bU0R5oc9oaCPNxs4S8Rkw@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox