Hi, PFA patch for RM1863.
Issue fixed: Correctly interpret composite data type for columns while generating sql. also minor UI improvement in foreign key column tab -- *Harshal Dhumal* *Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py index daa6ef0..b8af0cd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py @@ -275,6 +275,7 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings): self.manager = driver.connection_manager(kwargs['sid']) self.conn = self.manager.connection(did=kwargs['did']) self.qtIdent = driver.qtIdent + self.qtTypeIdent = driver.qtTypeIdent # We need datlastsysoid to check if current table is system table self.datlastsysoid = self.manager.db_info[ did @@ -681,7 +682,13 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings): edit_types_list = list() # We will need present type in edit mode - edit_types_list.append(present_type) + + if column['typnspname'] == "pg_catalog" or column['typnspname'] == "public": + edit_types_list.append(present_type) + else: + t = self.qtTypeIdent(self.conn, column['typnspname'], present_type) + edit_types_list.append(t) + column['cltype'] = t if int(is_reference) == 0: SQL = render_template("/".join([self.column_template_path, @@ -711,10 +718,6 @@ class TableView(PGChildNodeView, DataTypeReader, VacuumSettings): if isArray: column['cltype'] += "[]" - if column['typnspname'] != 'pg_catalog': - column['cltype'] = self.qtIdent(self.conn, column['typnspname']) \ - + '.' + column['cltype'] - if 'indkey' in column: # Current column attnum = str(column['attnum']) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py index 33f585d..be6d121 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py @@ -199,6 +199,7 @@ class ColumnsView(PGChildNodeView, DataTypeReader): ) self.conn = self.manager.connection(did=kwargs['did']) self.qtIdent = driver.qtIdent + self.qtTypeIdent = driver.qtTypeIdent # Set the template path for the SQL scripts if self.manager.version >= 90200: @@ -417,7 +418,12 @@ class ColumnsView(PGChildNodeView, DataTypeReader): edit_types_list = list() # We will need present type in edit mode - edit_types_list.append(present_type) + if data['typnspname'] == "pg_catalog" or data['typnspname'] == "public": + edit_types_list.append(present_type) + else: + t = self.qtTypeIdent(self.conn, data['typnspname'], present_type) + edit_types_list.append(t) + data['cltype'] = t if int(is_reference) == 0: SQL = render_template("/".join([self.template_path, @@ -447,10 +453,6 @@ class ColumnsView(PGChildNodeView, DataTypeReader): if isArray: data['cltype'] += "[]" - if data['typnspname'] != 'pg_catalog': - data['cltype'] = self.qtIdent(self.conn, data['typnspname'])\ - + '.' + data['cltype'] - return data @check_precondition diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js index 9da61f9..4e50873 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js @@ -302,8 +302,8 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) { ' <div class="col-md-4">', ' <label class="control-label"><%-column_label%></label>', ' </div>', - ' <div class="col-md-4" header="local_column"></div>', - ' <div class="col-md-4">', + ' <div class="col-md-6" header="local_column"></div>', + ' <div class="col-md-2">', ' <button class="btn-sm btn-default add fa fa-plus" <%=canAdd ? "" : "disabled=\'disabled\'"%> ></button>', ' </div>', ' </div>', @@ -311,13 +311,13 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) { ' <div class="col-md-4">', ' <label class="control-label"><%-references_label%></label>', ' </div>', - ' <div class="col-md-4" header="references"></div>', + ' <div class="col-md-6" header="references"></div>', ' </div>', ' <div class="row">', ' <div class="col-md-4">', ' <label class="control-label"><%-referenced_label%></label>', ' </div>', - ' <div class="col-md-4" header="referenced"></div>', + ' <div class="col-md-6" header="referenced"></div>', ' </div>', ' </div>', '</div>',].join("\n") diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py index 75bbcd9..4223823 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py @@ -14,7 +14,7 @@ import json from flask import render_template from pgadmin.browser.collection import CollectionNodeModule from pgadmin.utils.ajax import internal_server_error - +from config import PG_DEFAULT_DRIVER class SchemaChildModule(CollectionNodeModule): """ @@ -134,14 +134,8 @@ class DataTypeReader: else: max_val = 10 - # If schema is public, prefix it. Otherwise, we should already have it. - if row['nspname'] == 'public': - rtn_type = "public." + row['typname'] - else: - rtn_type = row['typname'] - res.append({ - 'label': rtn_type, 'value': rtn_type, + 'label': row['typname'], 'value': row['typname'], 'typval': typeval, 'precision': precision, 'length': length, 'min_val': min_val, 'max_val': max_val, 'is_collatable': row['is_collatable'] @@ -243,6 +237,7 @@ class DataTypeReader: else: return name + length + array + def trigger_definition(data): """ This function will set the trigger definition details from the raw data
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers