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

Reply via email to