From 61ff588c09a4b80e64f367816cbe739fedc1db9b Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Sat, 30 Mar 2019 13:20:31 +0530 Subject: [PATCH] Fixed issue while fetching the view id for view/materialized view. Added schema name in where clause. --- .../servers/databases/schemas/views/__init__.py | 15 ++++++++++++--- .../templates/mview/pg/9.3_plus/sql/view_id.sql | 4 +++- .../templates/mview/pg/9.4_plus/sql/view_id.sql | 4 +++- .../templates/mview/ppas/9.3_plus/sql/view_id.sql | 4 +++- .../templates/view/gpdb_5.0_plus/sql/view_id.sql | 4 +++- .../templates/view/pg/9.1_plus/sql/view_id.sql | 4 +++- .../templates/view/pg/9.2_plus/sql/view_id.sql | 4 +++- .../templates/view/pg/9.3_plus/sql/view_id.sql | 4 +++- .../templates/view/pg/9.4_plus/sql/view_id.sql | 4 +++- .../templates/view/ppas/9.1_plus/sql/view_id.sql | 4 +++- .../templates/view/ppas/9.2_plus/sql/view_id.sql | 4 +++- .../templates/view/ppas/9.3_plus/sql/view_id.sql | 4 +++- .../templates/view/ppas/9.4_plus/sql/view_id.sql | 4 +++- 13 files changed, 48 insertions(+), 15 deletions(-) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py index 9019f74a8..7616aaefe 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py @@ -531,18 +531,27 @@ class ViewNode(PGChildNodeView, VacuumSettings): if not status: return internal_server_error(errormsg=res) + SQL = render_template("/".join( + [self.template_path, 'sql/view_id.sql']), data=data) + status, res_data = self.conn.execute_dict(SQL) + if not status: + return internal_server_error(errormsg=res) + + view_id = res_data['rows'][0]['oid'] + new_view_name = res_data['rows'][0]['relname'] + # Get updated schema oid SQL = render_template("/".join( - [self.template_path, 'sql/get_oid.sql']), vid=vid) + [self.template_path, 'sql/get_oid.sql']), vid=view_id) status, scid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=res) return jsonify( node=self.blueprint.generate_browser_node( - vid, + view_id, scid, - name, + new_view_name, icon="icon-view" if self.node_type == 'view' else "icon-mview" ) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/view_id.sql index 826723d73..b9d053b70 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.3_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ==== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = {{ data.name|qtLiteral }}; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = {{ data.schema|qtLiteral }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/view_id.sql index 826723d73..b9d053b70 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/pg/9.4_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ==== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = {{ data.name|qtLiteral }}; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = {{ data.schema|qtLiteral }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/view_id.sql index 826723d73..b9d053b70 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mview/ppas/9.3_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ==== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = {{ data.name|qtLiteral }}; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = {{ data.schema|qtLiteral }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/gpdb_5.0_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/gpdb_5.0_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/gpdb_5.0_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/gpdb_5.0_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.1_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.1_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.1_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.1_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.2_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.2_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.2_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.2_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.3_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.3_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.3_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.3_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.4_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.4_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.4_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/pg/9.4_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.1_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.1_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.1_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.1_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.2_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.2_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.2_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.2_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.3_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.3_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.3_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.3_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.4_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.4_plus/sql/view_id.sql index 73f6da55f..64181cd64 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.4_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/view/ppas/9.4_plus/sql/view_id.sql @@ -1,4 +1,6 @@ {# ===== Below will provide view id for last created view ===== #} {% if data %} -SELECT c.oid, c.relname FROM pg_class c WHERE c.relname = '{{ data.name }}'; +SELECT c.oid, c.relname FROM pg_class c +LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace +WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; {% endif %}