public inbox for [email protected]  
help / color / mirror / Atom feed
[pgAdmin4][RM#4858] Allow user to reconnect to DB server when connection is drop
4+ messages / 2 participants
[nested] [flat]

* [pgAdmin4][RM#4858] Allow user to reconnect to DB server when connection is drop
@ 2020-04-10 13:31  Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 4+ messages in thread

From: Murtuza Zabuawala @ 2020-04-10 13:31 UTC (permalink / raw)
  To: pgadmin-hackers

Hi,

Upon downloading the csv file, we used the prompt for re-connecting to the
database server when there is a database server connection issue. Currently
the user tries to download CSV and there is a connection issue then it is
showing a python exception error.

Steps:
1) Open query tool
2) Execute -> SELECT 1,2,3
3) Disconnect from server from browser tree
4) Click on Download CSV button

Current: Python exception error
Expected: It should display dialog to reconnect the server.


--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Attachments:

  [application/octet-stream] RM_4858.diff (7.8K, 3-RM_4858.diff)
  download | inline diff:
diff --git a/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js b/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js
index 97575c1ea..651ff6e91 100644
--- a/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js
+++ b/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js
@@ -63,6 +63,8 @@ export function handleQueryToolAjaxError(
 
     if(exception.status === 503 && exception.responseJSON.info !== undefined &&
         exception.responseJSON.info == 'CONNECTION_LOST') {
+      // We will display re-connect dialog, no need to display error message again
+      msg = null;
       setTimeout(function() {
         if (stateToSave) {
           handler.saveState(stateToSave, stateParameters);
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index 386a655e4..6d53632a1 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -1370,8 +1370,12 @@ def start_query_download_tool(trans_id):
                 ] = "attachment;filename={0}".format(filename)
 
                 return r
+        except (ConnectionLost, SSHTunnelConnectionLost):
+            raise
         except Exception as e:
-            err_msg = gettext("Error: {0}").format(e.strerror)
+            current_app.logger.error(e)
+            err_msg = "Error: {0}".format(
+                e.strerror if hasattr(e, 'strerror') else str(e))
             return internal_server_error(errormsg=err_msg)
     else:
         return internal_server_error(
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index f5519fcdf..105e4ad30 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -1305,7 +1305,8 @@ define('tools.querytool', [
           let msg = httpErrorHandler.handleQueryToolAjaxError(
             pgAdmin, self, e, null, [], false
           );
-          self.update_msg_history(false, msg);
+          if (msg)
+            self.update_msg_history(false, msg);
         });
     },
 
@@ -2195,9 +2196,10 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, xhr, null, [], false
             );
-            alertify.dlgGetServerPass(
-              gettext('Connect to Server'), msg
-            );
+            if (msg)
+              alertify.dlgGetServerPass(
+                gettext('Connect to Server'), msg
+              );
           });
       },
       /* This function is used to create instance of SQLEditorView,
@@ -2300,10 +2302,10 @@ define('tools.querytool', [
                 msg = httpErrorHandler.handleQueryToolAjaxError(
                   pgAdmin, self, jqx, null, [], false
                 );
-
-                pgBrowser.report_error(
-                  gettext('Error fetching SQL for script: %s.', msg)
-                );
+                if (msg)
+                  pgBrowser.report_error(
+                    gettext('Error fetching SQL for script: %s.', msg)
+                  );
               });
           }
         }
@@ -2484,7 +2486,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_execute_view_data_query', [], true
             );
-            self.update_msg_history(false, msg);
+            if (msg)
+              self.update_msg_history(false, msg);
           });
       },
 
@@ -3237,7 +3240,8 @@ define('tools.querytool', [
             // Enable query tool buttons and cancel button only if query tool
             if(self.is_query_tool)
               self.disable_tool_buttons(false);
-            self.update_msg_history(false, msg);
+            if (msg)
+              self.update_msg_history(false, msg);
           });
       },
 
@@ -3395,7 +3399,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_select_file_handler', stateParams, false
             );
-            alertify.error(msg);
+            if (msg)
+              alertify.error(msg);
             // hide cursor
             $busy_icon_div.removeClass('show_progress');
           });
@@ -3446,7 +3451,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_save_file_handler', stateParams, false
             );
-            alertify.error(msg);
+            if (msg)
+              alertify.error(msg);
           });
       },
 
@@ -3575,7 +3581,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_include_filter', [], true
             );
-            alertify.alert(gettext('Filter By Selection Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Filter By Selection Error'), msg);
           });
       },
 
@@ -3634,7 +3641,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_exclude_filter', [], true
             );
-            alertify.alert(gettext('Filter Exclude Selection Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Filter Exclude Selection Error'), msg);
           });
       },
 
@@ -3672,7 +3680,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_remove_filter', [], true
             );
-            alertify.alert(gettext('Remove Filter Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Remove Filter Error'), msg);
           });
       },
 
@@ -3803,7 +3812,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_set_limit', [], true
             );
-            alertify.alert(gettext('Change limit Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Change limit Error'), msg);
           });
       },
 
@@ -3948,7 +3958,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_cancel_query', [], false
             );
-            alertify.alert(gettext('Cancel Query Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Cancel Query Error'), msg);
           });
       },
 
@@ -4012,7 +4023,6 @@ define('tools.querytool', [
           self.trigger('pgadmin-sqleditor:loading-icon:hide');
         }).fail(function(err) {
           let msg = '';
-
           // Enable the execute button
           $('#btn-flash').prop('disabled', false);
           $('#btn-download').prop('disabled', false);
@@ -4027,7 +4037,9 @@ define('tools.querytool', [
               pgAdmin, self, err, gettext('Download CSV'), [], true
             );
           }
-          alertify.alert(gettext('Download CSV error'), msg);
+          // Check if error message is present
+          if (msg)
+            alertify.alert(gettext('Download CSV error'), msg);
         });
       },
 
@@ -4068,7 +4080,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_auto_rollback', [], true
             );
-            alertify.alert(gettext('Auto Rollback Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Auto Rollback Error'), msg);
           });
       },
 
@@ -4100,7 +4113,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_auto_commit', [], true
             );
-            alertify.alert(gettext('Auto Commit Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Auto Commit Error'), msg);
           });
 
       },


^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: [pgAdmin4][RM#4858] Allow user to reconnect to DB server when connection is drop
@ 2020-04-13 08:58  Akshay Joshi <[email protected]>
  parent: Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 4+ messages in thread

From: Akshay Joshi @ 2020-04-13 08:58 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: pgadmin-hackers

Hi Murtuza

The issue has been fixed with your patch, but there is an existing issue
discover with the fix.
After disconnecting the server and click on Download CSV button
confirmation dialog comes and user needs to click twice.
Following error observed in the browser:

sqleditor.js?ver=42000:1 Uncaught TypeError: Cannot read property 'apply'
of undefined
    at Object.<anonymous> (sqleditor.js?ver=42000:1)
    at Object.callback (vendor.others.js?ver=42000:2)
    at Tt (vendor.others.js?ver=42000:2)
    at Object.Ct (vendor.others.js?ver=42000:2)
    at HTMLDivElement.<anonymous> (vendor.others.js?ver=42000:2)

If possible can you please fix the above and resend the combined patch.

On Fri, Apr 10, 2020 at 7:02 PM Murtuza Zabuawala <
[email protected]> wrote:

> Hi,
>
> Upon downloading the csv file, we used the prompt for re-connecting to the
> database server when there is a database server connection issue. Currently
> the user tries to download CSV and there is a connection issue then it is
> showing a python exception error.
>
> Steps:
> 1) Open query tool
> 2) Execute -> SELECT 1,2,3
> 3) Disconnect from server from browser tree
> 4) Click on Download CSV button
>
> Current: Python exception error
> Expected: It should display dialog to reconnect the server.
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>

-- 
*Thanks & Regards*
*Akshay Joshi*

*Sr. Software Architect*
*EnterpriseDB Software India Private Limited*
*Mobile: +91 976-788-8246*


^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: [pgAdmin4][RM#4858] Allow user to reconnect to DB server when connection is drop
@ 2020-04-15 06:52  Murtuza Zabuawala <[email protected]>
  parent: Akshay Joshi <[email protected]>
  0 siblings, 1 reply; 4+ messages in thread

From: Murtuza Zabuawala @ 2020-04-15 06:52 UTC (permalink / raw)
  To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers

Hi Akshay,

PFA updated patch.


--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



On Mon, Apr 13, 2020 at 2:28 PM Akshay Joshi <[email protected]>
wrote:

> Hi Murtuza
>
> The issue has been fixed with your patch, but there is an existing issue
> discover with the fix.
> After disconnecting the server and click on Download CSV button
> confirmation dialog comes and user needs to click twice.
> Following error observed in the browser:
>
> sqleditor.js?ver=42000:1 Uncaught TypeError: Cannot read property 'apply'
> of undefined
>     at Object.<anonymous> (sqleditor.js?ver=42000:1)
>     at Object.callback (vendor.others.js?ver=42000:2)
>     at Tt (vendor.others.js?ver=42000:2)
>     at Object.Ct (vendor.others.js?ver=42000:2)
>     at HTMLDivElement.<anonymous> (vendor.others.js?ver=42000:2)
>
> If possible can you please fix the above and resend the combined patch.
>
> On Fri, Apr 10, 2020 at 7:02 PM Murtuza Zabuawala <
> [email protected]> wrote:
>
>> Hi,
>>
>> Upon downloading the csv file, we used the prompt for re-connecting to
>> the database server when there is a database server connection issue.
>> Currently the user tries to download CSV and there is a connection issue
>> then it is showing a python exception error.
>>
>> Steps:
>> 1) Open query tool
>> 2) Execute -> SELECT 1,2,3
>> 3) Disconnect from server from browser tree
>> 4) Click on Download CSV button
>>
>> Current: Python exception error
>> Expected: It should display dialog to reconnect the server.
>>
>>
>> --
>> Regards,
>> Murtuza Zabuawala
>> EnterpriseDB: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>>
>
> --
> *Thanks & Regards*
> *Akshay Joshi*
>
> *Sr. Software Architect*
> *EnterpriseDB Software India Private Limited*
> *Mobile: +91 976-788-8246*
>


Attachments:

  [application/octet-stream] RM_4858_v1.diff (8.4K, 3-RM_4858_v1.diff)
  download | inline diff:
diff --git a/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js b/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js
index 97575c1ea..651ff6e91 100644
--- a/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js
+++ b/web/pgadmin/static/js/sqleditor/query_tool_http_error_handler.js
@@ -63,6 +63,8 @@ export function handleQueryToolAjaxError(
 
     if(exception.status === 503 && exception.responseJSON.info !== undefined &&
         exception.responseJSON.info == 'CONNECTION_LOST') {
+      // We will display re-connect dialog, no need to display error message again
+      msg = null;
       setTimeout(function() {
         if (stateToSave) {
           handler.saveState(stateToSave, stateParameters);
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index 386a655e4..6d53632a1 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -1370,8 +1370,12 @@ def start_query_download_tool(trans_id):
                 ] = "attachment;filename={0}".format(filename)
 
                 return r
+        except (ConnectionLost, SSHTunnelConnectionLost):
+            raise
         except Exception as e:
-            err_msg = gettext("Error: {0}").format(e.strerror)
+            current_app.logger.error(e)
+            err_msg = "Error: {0}".format(
+                e.strerror if hasattr(e, 'strerror') else str(e))
             return internal_server_error(errormsg=err_msg)
     else:
         return internal_server_error(
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index f5519fcdf..128e30bb0 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -1305,7 +1305,8 @@ define('tools.querytool', [
           let msg = httpErrorHandler.handleQueryToolAjaxError(
             pgAdmin, self, e, null, [], false
           );
-          self.update_msg_history(false, msg);
+          if (msg)
+            self.update_msg_history(false, msg);
         });
     },
 
@@ -2159,8 +2160,12 @@ define('tools.querytool', [
               if (args.indexOf('connect') == -1) {
                 args.push('connect');
               }
+              if (fn in self) {
+                self[fn].apply(self, args);
+              } else {
+                console.warn('The callback is not valid for this context');
+              }
 
-              self[fn].apply(self, args);
             }
           }, function() {
             self.saveState();
@@ -2195,9 +2200,10 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, xhr, null, [], false
             );
-            alertify.dlgGetServerPass(
-              gettext('Connect to Server'), msg
-            );
+            if (msg)
+              alertify.dlgGetServerPass(
+                gettext('Connect to Server'), msg
+              );
           });
       },
       /* This function is used to create instance of SQLEditorView,
@@ -2300,10 +2306,10 @@ define('tools.querytool', [
                 msg = httpErrorHandler.handleQueryToolAjaxError(
                   pgAdmin, self, jqx, null, [], false
                 );
-
-                pgBrowser.report_error(
-                  gettext('Error fetching SQL for script: %s.', msg)
-                );
+                if (msg)
+                  pgBrowser.report_error(
+                    gettext('Error fetching SQL for script: %s.', msg)
+                  );
               });
           }
         }
@@ -2484,7 +2490,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_execute_view_data_query', [], true
             );
-            self.update_msg_history(false, msg);
+            if (msg)
+              self.update_msg_history(false, msg);
           });
       },
 
@@ -3237,7 +3244,8 @@ define('tools.querytool', [
             // Enable query tool buttons and cancel button only if query tool
             if(self.is_query_tool)
               self.disable_tool_buttons(false);
-            self.update_msg_history(false, msg);
+            if (msg)
+              self.update_msg_history(false, msg);
           });
       },
 
@@ -3395,7 +3403,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_select_file_handler', stateParams, false
             );
-            alertify.error(msg);
+            if (msg)
+              alertify.error(msg);
             // hide cursor
             $busy_icon_div.removeClass('show_progress');
           });
@@ -3446,7 +3455,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_save_file_handler', stateParams, false
             );
-            alertify.error(msg);
+            if (msg)
+              alertify.error(msg);
           });
       },
 
@@ -3575,7 +3585,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_include_filter', [], true
             );
-            alertify.alert(gettext('Filter By Selection Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Filter By Selection Error'), msg);
           });
       },
 
@@ -3634,7 +3645,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_exclude_filter', [], true
             );
-            alertify.alert(gettext('Filter Exclude Selection Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Filter Exclude Selection Error'), msg);
           });
       },
 
@@ -3672,7 +3684,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_remove_filter', [], true
             );
-            alertify.alert(gettext('Remove Filter Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Remove Filter Error'), msg);
           });
       },
 
@@ -3803,7 +3816,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_set_limit', [], true
             );
-            alertify.alert(gettext('Change limit Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Change limit Error'), msg);
           });
       },
 
@@ -3948,7 +3962,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_cancel_query', [], false
             );
-            alertify.alert(gettext('Cancel Query Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Cancel Query Error'), msg);
           });
       },
 
@@ -4012,7 +4027,6 @@ define('tools.querytool', [
           self.trigger('pgadmin-sqleditor:loading-icon:hide');
         }).fail(function(err) {
           let msg = '';
-
           // Enable the execute button
           $('#btn-flash').prop('disabled', false);
           $('#btn-download').prop('disabled', false);
@@ -4024,10 +4038,12 @@ define('tools.querytool', [
             msg = gettext('CSV Download cancelled.');
           } else {
             msg = httpErrorHandler.handleQueryToolAjaxError(
-              pgAdmin, self, err, gettext('Download CSV'), [], true
+              pgAdmin, self, err, 'trigger_csv_download', [], true
             );
           }
-          alertify.alert(gettext('Download CSV error'), msg);
+          // Check if error message is present
+          if (msg)
+            alertify.alert(gettext('Download CSV error'), msg);
         });
       },
 
@@ -4068,7 +4084,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_auto_rollback', [], true
             );
-            alertify.alert(gettext('Auto Rollback Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Auto Rollback Error'), msg);
           });
       },
 
@@ -4100,7 +4117,8 @@ define('tools.querytool', [
             let msg = httpErrorHandler.handleQueryToolAjaxError(
               pgAdmin, self, e, '_auto_commit', [], true
             );
-            alertify.alert(gettext('Auto Commit Error'), msg);
+            if (msg)
+              alertify.alert(gettext('Auto Commit Error'), msg);
           });
 
       },


^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: [pgAdmin4][RM#4858] Allow user to reconnect to DB server when connection is drop
@ 2020-04-15 11:16  Akshay Joshi <[email protected]>
  parent: Murtuza Zabuawala <[email protected]>
  0 siblings, 0 replies; 4+ messages in thread

From: Akshay Joshi @ 2020-04-15 11:16 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: pgadmin-hackers

Thanks, patch applied.

On Wed, Apr 15, 2020 at 12:22 PM Murtuza Zabuawala <
[email protected]> wrote:

> Hi Akshay,
>
> PFA updated patch.
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
>
> On Mon, Apr 13, 2020 at 2:28 PM Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Murtuza
>>
>> The issue has been fixed with your patch, but there is an existing issue
>> discover with the fix.
>> After disconnecting the server and click on Download CSV button
>> confirmation dialog comes and user needs to click twice.
>> Following error observed in the browser:
>>
>> sqleditor.js?ver=42000:1 Uncaught TypeError: Cannot read property 'apply'
>> of undefined
>>     at Object.<anonymous> (sqleditor.js?ver=42000:1)
>>     at Object.callback (vendor.others.js?ver=42000:2)
>>     at Tt (vendor.others.js?ver=42000:2)
>>     at Object.Ct (vendor.others.js?ver=42000:2)
>>     at HTMLDivElement.<anonymous> (vendor.others.js?ver=42000:2)
>>
>> If possible can you please fix the above and resend the combined patch.
>>
>> On Fri, Apr 10, 2020 at 7:02 PM Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> Upon downloading the csv file, we used the prompt for re-connecting to
>>> the database server when there is a database server connection issue.
>>> Currently the user tries to download CSV and there is a connection issue
>>> then it is showing a python exception error.
>>>
>>> Steps:
>>> 1) Open query tool
>>> 2) Execute -> SELECT 1,2,3
>>> 3) Disconnect from server from browser tree
>>> 4) Click on Download CSV button
>>>
>>> Current: Python exception error
>>> Expected: It should display dialog to reconnect the server.
>>>
>>>
>>> --
>>> Regards,
>>> Murtuza Zabuawala
>>> EnterpriseDB: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>>
>>
>> --
>> *Thanks & Regards*
>> *Akshay Joshi*
>>
>> *Sr. Software Architect*
>> *EnterpriseDB Software India Private Limited*
>> *Mobile: +91 976-788-8246*
>>
>

-- 
*Thanks & Regards*
*Akshay Joshi*

*Sr. Software Architect*
*EnterpriseDB Software India Private Limited*
*Mobile: +91 976-788-8246*


^ permalink  raw  reply  [nested|flat] 4+ messages in thread


end of thread, other threads:[~2020-04-15 11:16 UTC | newest]

Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2020-04-10 13:31 [pgAdmin4][RM#4858] Allow user to reconnect to DB server when connection is drop Murtuza Zabuawala <[email protected]>
2020-04-13 08:58 ` Akshay Joshi <[email protected]>
2020-04-15 06:52   ` Murtuza Zabuawala <[email protected]>
2020-04-15 11:16     ` Akshay Joshi <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox