public inbox for [email protected]
help / color / mirror / Atom feedFrom: Aditya Toshniwal <[email protected]>
To: pgadmin-hackers <[email protected]>
Subject: [pgAdmin][RM4263] "Not connected to the server or the connection to the server has been closed." returned with some queries
Date: Wed, 22 May 2019 10:41:53 +0530
Message-ID: <CAM9w-_kxFJjKOXeTLnYqvoYA8ZbFt2NxEUDVqj29GAu730pRoA@mail.gmail.com> (raw)
Hi Hackers,
Attached is the quick fix for the issue. The problem was with parsing
failure of JSON result in explain plan code. I have added an api test case
to check length of result format to match with JS code expectations for
explain plan.
Kindly review.
--
Thanks and Regards,
Aditya Toshniwal
Software Engineer | EnterpriseDB India | Pune
"Don't Complain about Heat, Plant a TREE"
Attachments:
[application/octet-stream] RM4263.patch (3.7K, 3-RM4263.patch)
download | inline diff:
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index fcc31cf3..41458445 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -2424,7 +2424,7 @@ define('tools.querytool', [
if(data.types[0] && data.types[0].typname === 'json') {
/* json is sent as text, parse it */
- explain_data_json = JSON.parse(data.result[0]);
+ explain_data_json = JSON.parse(data.result[0][0]);
}
if (explain_data_json && explain_data_json[0] &&
diff --git a/web/pgadmin/tools/sqleditor/tests/test_explain_plan.py b/web/pgadmin/tools/sqleditor/tests/test_explain_plan.py
new file mode 100644
index 00000000..9f9d1384
--- /dev/null
+++ b/web/pgadmin/tools/sqleditor/tests/test_explain_plan.py
@@ -0,0 +1,72 @@
+##########################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2019, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+##########################################################################
+
+import json
+
+from pgadmin.browser.server_groups.servers.databases.tests import utils as \
+ database_utils
+from pgadmin.utils.route import BaseTestGenerator
+from regression import parent_node_dict
+from regression.python_test_utils import test_utils as utils
+
+
+class TestExplainPlan(BaseTestGenerator):
+ """ This class will test the explain plan return format. """
+
+ def runTest(self):
+ database_info = parent_node_dict["database"][-1]
+ self.server_id = database_info["server_id"]
+
+ self.db_id = database_info["db_id"]
+ db_con = database_utils.connect_database(self,
+ utils.SERVER_GROUP,
+ self.server_id,
+ self.db_id)
+ if not db_con["info"] == "Database connected.":
+ raise Exception("Could not connect to the database.")
+
+ # Initialize query tool
+ url = '/datagrid/initialize/query_tool/{0}/{1}/{2}'.format(
+ utils.SERVER_GROUP, self.server_id, self.db_id)
+ response = self.tester.post(url)
+ self.assertEquals(response.status_code, 200)
+
+ response_data = json.loads(response.data.decode('utf-8'))
+ self.trans_id = response_data['data']['gridTransId']
+
+ # Start query tool transaction
+ url = '/sqleditor/query_tool/start/{0}'.format(self.trans_id)
+ response = self.tester.post(
+ url, data=json.dumps({
+ "sql": "SELECT 1",
+ "explain_plan": {
+ "format": "json",
+ "analyze": False,
+ "verbose": False,
+ "costs": False,
+ "buffers": False,
+ "timing": False,
+ "verbose": False
+ }
+ }), content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
+ # Query tool polling
+ url = '/sqleditor/poll/{0}'.format(self.trans_id)
+ response = self.tester.get(url)
+ self.assertEquals(response.status_code, 200)
+ response_data = json.loads(response.data.decode('utf-8'))
+
+ # Check the ouput of explain plan
+ self.assertEquals(len(response_data['data']['result']), 1)
+ self.assertEquals(len(response_data['data']['result'][0]), 1)
+
+ # Disconnect the database
+ database_utils.disconnect_database(self, self.server_id, self.db_id)
view thread (2+ 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]
Subject: Re: [pgAdmin][RM4263] "Not connected to the server or the connection to the server has been closed." returned with some queries
In-Reply-To: <CAM9w-_kxFJjKOXeTLnYqvoYA8ZbFt2NxEUDVqj29GAu730pRoA@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