diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/properties.sql index 14ebf5791..ed74e310a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/properties.sql @@ -1,21 +1,18 @@ -SELECT att.attname as name, att.*, def.*, pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS defval, - CASE WHEN att.attndims > 0 THEN 1 ELSE 0 END AS isarray, - format_type(ty.oid,NULL) AS typname, +SELECT att.attname as name, att.atttypid, att.attlen, att.attnum, att.attndims, + att.atttypmod, att.attacl, att.attnotnull, att.attoptions, att.attstattarget, + att.attstorage, att.attidentity, + pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS defval, + format_type(ty.oid,NULL) AS typname, format_type(ty.oid,att.atttypmod) AS displaytypname, + format_type(ty.oid,att.atttypmod) AS cltype, CASE WHEN ty.typelem > 0 THEN ty.typelem ELSE ty.oid END as elemoid, - tn.nspname as typnspname, et.typname as elemtypname, - ty.typstorage AS defaultstorage, cl.relname, na.nspname, - concat(quote_ident(na.nspname) ,'.', quote_ident(cl.relname)) AS parent_tbl, - att.attstattarget, description, cs.relname AS sername, - ns.nspname AS serschema, + (SELECT nspname FROM pg_namespace WHERE oid = ty.typnamespace) as typnspname, + ty.typstorage AS defaultstorage, + description, pi.indkey, (SELECT count(1) FROM pg_type t2 WHERE t2.typname=ty.typname) > 1 AS isdup, - indkey, coll.collname, nspc.nspname as collnspname , attoptions, - -- Start pgAdmin4, added to save time on client side parsing CASE WHEN length(coll.collname) > 0 AND length(nspc.nspname) > 0 THEN concat(quote_ident(nspc.nspname),'.',quote_ident(coll.collname)) ELSE '' END AS collspcname, - format_type(ty.oid,att.atttypmod) AS cltype, - -- End pgAdmin4 EXISTS(SELECT 1 FROM pg_constraint WHERE conrelid=att.attrelid AND contype='f' AND att.attnum=ANY(conkey)) As is_fk, (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=att.attrelid AND sl1.objsubid=att.attnum) AS seclabels, (CASE WHEN (att.attnum < 1) THEN true ElSE false END) AS is_sys_column, @@ -23,14 +20,9 @@ SELECT att.attname as name, att.*, def.*, pg_catalog.pg_get_expr(def.adbin, def. seq.* FROM pg_attribute att JOIN pg_type ty ON ty.oid=atttypid - JOIN pg_namespace tn ON tn.oid=ty.typnamespace - JOIN pg_class cl ON cl.oid=att.attrelid - JOIN pg_namespace na ON na.oid=cl.relnamespace - LEFT OUTER JOIN pg_type et ON et.oid=ty.typelem LEFT OUTER JOIN pg_attrdef def ON adrelid=att.attrelid AND adnum=att.attnum LEFT OUTER JOIN pg_description des ON (des.objoid=att.attrelid AND des.objsubid=att.attnum AND des.classoid='pg_class'::regclass) - LEFT OUTER JOIN (pg_depend JOIN pg_class cs ON classid='pg_class'::regclass AND objid=cs.oid AND cs.relkind='S') ON refobjid=att.attrelid AND refobjsubid=att.attnum - LEFT OUTER JOIN pg_namespace ns ON ns.oid=cs.relnamespace + LEFT OUTER JOIN (pg_depend dep JOIN pg_class cs ON dep.classid='pg_class'::regclass AND dep.objid=cs.oid AND cs.relkind='S') ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum LEFT OUTER JOIN pg_index pi ON pi.indrelid=att.attrelid AND indisprimary LEFT OUTER JOIN pg_collation coll ON att.attcollation=coll.oid LEFT OUTER JOIN pg_namespace nspc ON coll.collnamespace=nspc.oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/properties.sql index 84b6f3748..bb7db0791 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/properties.sql @@ -1,21 +1,18 @@ -SELECT att.attname as name, att.*, def.*, pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS defval, - CASE WHEN att.attndims > 0 THEN 1 ELSE 0 END AS isarray, - format_type(ty.oid,NULL) AS typname, +SELECT att.attname as name, att.atttypid, att.attlen, att.attnum, att.attndims, + att.atttypmod, att.attacl, att.attnotnull, att.attoptions, att.attstattarget, + att.attstorage, att.attidentity, + pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS defval, + format_type(ty.oid,NULL) AS typname, format_type(ty.oid,att.atttypmod) AS displaytypname, + format_type(ty.oid,att.atttypmod) AS cltype, CASE WHEN ty.typelem > 0 THEN ty.typelem ELSE ty.oid END as elemoid, - tn.nspname as typnspname, et.typname as elemtypname, - ty.typstorage AS defaultstorage, cl.relname, na.nspname, - concat(quote_ident(na.nspname) ,'.', quote_ident(cl.relname)) AS parent_tbl, - att.attstattarget, description, cs.relname AS sername, - ns.nspname AS serschema, + (SELECT nspname FROM pg_namespace WHERE oid = ty.typnamespace) as typnspname, + ty.typstorage AS defaultstorage, + description, pi.indkey, (SELECT count(1) FROM pg_type t2 WHERE t2.typname=ty.typname) > 1 AS isdup, - indkey, coll.collname, nspc.nspname as collnspname , attoptions, - -- Start pgAdmin4, added to save time on client side parsing CASE WHEN length(coll.collname) > 0 AND length(nspc.nspname) > 0 THEN concat(quote_ident(nspc.nspname),'.',quote_ident(coll.collname)) ELSE '' END AS collspcname, - format_type(ty.oid,att.atttypmod) AS cltype, - -- End pgAdmin4 EXISTS(SELECT 1 FROM pg_constraint WHERE conrelid=att.attrelid AND contype='f' AND att.attnum=ANY(conkey)) As is_fk, (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=att.attrelid AND sl1.objsubid=att.attnum) AS seclabels, (CASE WHEN (att.attnum < 1) THEN true ElSE false END) AS is_sys_column, @@ -24,14 +21,9 @@ SELECT att.attname as name, att.*, def.*, pg_catalog.pg_get_expr(def.adbin, def. seq.* FROM pg_attribute att JOIN pg_type ty ON ty.oid=atttypid - JOIN pg_namespace tn ON tn.oid=ty.typnamespace - JOIN pg_class cl ON cl.oid=att.attrelid - JOIN pg_namespace na ON na.oid=cl.relnamespace - LEFT OUTER JOIN pg_type et ON et.oid=ty.typelem LEFT OUTER JOIN pg_attrdef def ON adrelid=att.attrelid AND adnum=att.attnum LEFT OUTER JOIN pg_description des ON (des.objoid=att.attrelid AND des.objsubid=att.attnum AND des.classoid='pg_class'::regclass) - LEFT OUTER JOIN (pg_depend JOIN pg_class cs ON classid='pg_class'::regclass AND objid=cs.oid AND cs.relkind='S') ON refobjid=att.attrelid AND refobjsubid=att.attnum - LEFT OUTER JOIN pg_namespace ns ON ns.oid=cs.relnamespace + LEFT OUTER JOIN (pg_depend dep JOIN pg_class cs ON dep.classid='pg_class'::regclass AND dep.objid=cs.oid AND cs.relkind='S') ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum LEFT OUTER JOIN pg_index pi ON pi.indrelid=att.attrelid AND indisprimary LEFT OUTER JOIN pg_collation coll ON att.attcollation=coll.oid LEFT OUTER JOIN pg_namespace nspc ON coll.collnamespace=nspc.oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/properties.sql index 5619a93d6..9d27f65a5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/properties.sql @@ -1,34 +1,25 @@ -SELECT att.attname as name, att.*, def.*, pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS defval, - CASE WHEN att.attndims > 0 THEN 1 ELSE 0 END AS isarray, - format_type(ty.oid,NULL) AS typname, +SELECT att.attname as name, att.atttypid, att.attlen, att.attnum, att.attndims, + att.atttypmod, att.attacl, att.attnotnull, att.attoptions, att.attstattarget, + att.attstorage, pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS defval, + format_type(ty.oid,NULL) AS typname, format_type(ty.oid,att.atttypmod) AS displaytypname, + format_type(ty.oid,att.atttypmod) AS cltype, CASE WHEN ty.typelem > 0 THEN ty.typelem ELSE ty.oid END as elemoid, - tn.nspname as typnspname, et.typname as elemtypname, - ty.typstorage AS defaultstorage, cl.relname, na.nspname, - concat(quote_ident(na.nspname) ,'.', quote_ident(cl.relname)) AS parent_tbl, - att.attstattarget, description, cs.relname AS sername, - ns.nspname AS serschema, + (SELECT nspname FROM pg_namespace WHERE oid = ty.typnamespace) as typnspname, + ty.typstorage AS defaultstorage, + description, pi.indkey, (SELECT count(1) FROM pg_type t2 WHERE t2.typname=ty.typname) > 1 AS isdup, - indkey, coll.collname, nspc.nspname as collnspname , attoptions, - -- Start pgAdmin4, added to save time on client side parsing CASE WHEN length(coll.collname) > 0 AND length(nspc.nspname) > 0 THEN concat(quote_ident(nspc.nspname),'.',quote_ident(coll.collname)) ELSE '' END AS collspcname, - format_type(ty.oid,att.atttypmod) AS cltype, - -- End pgAdmin4 EXISTS(SELECT 1 FROM pg_constraint WHERE conrelid=att.attrelid AND contype='f' AND att.attnum=ANY(conkey)) As is_fk, (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=att.attrelid AND sl1.objsubid=att.attnum) AS seclabels, (CASE WHEN (att.attnum < 1) THEN true ElSE false END) AS is_sys_column FROM pg_attribute att JOIN pg_type ty ON ty.oid=atttypid - JOIN pg_namespace tn ON tn.oid=ty.typnamespace - JOIN pg_class cl ON cl.oid=att.attrelid - JOIN pg_namespace na ON na.oid=cl.relnamespace - LEFT OUTER JOIN pg_type et ON et.oid=ty.typelem LEFT OUTER JOIN pg_attrdef def ON adrelid=att.attrelid AND adnum=att.attnum LEFT OUTER JOIN pg_description des ON (des.objoid=att.attrelid AND des.objsubid=att.attnum AND des.classoid='pg_class'::regclass) - LEFT OUTER JOIN (pg_depend JOIN pg_class cs ON classid='pg_class'::regclass AND objid=cs.oid AND cs.relkind='S') ON refobjid=att.attrelid AND refobjsubid=att.attnum - LEFT OUTER JOIN pg_namespace ns ON ns.oid=cs.relnamespace + LEFT OUTER JOIN (pg_depend dep JOIN pg_class cs ON dep.classid='pg_class'::regclass AND dep.objid=cs.oid AND cs.relkind='S') ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum LEFT OUTER JOIN pg_index pi ON pi.indrelid=att.attrelid AND indisprimary LEFT OUTER JOIN pg_collation coll ON att.attcollation=coll.oid LEFT OUTER JOIN pg_namespace nspc ON coll.collnamespace=nspc.oid @@ -41,4 +32,4 @@ WHERE att.attrelid = {{tid}}::oid AND att.attnum > 0 {% endif %} AND att.attisdropped IS FALSE - ORDER BY att.attnum + ORDER BY att.attnum; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/edit_mode_types.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/edit_mode_types.sql index dc2dc2690..9834299a1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/edit_mode_types.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/edit_mode_types.sql @@ -1,11 +1,9 @@ SELECT tt.oid, format_type(tt.oid,NULL) AS typname FROM pg_type tt -WHERE tt.oid in ( - SELECT casttarget from pg_cast - WHERE castsource = {{type_id}} - AND castcontext IN ('i', 'a') - UNION - SELECT typbasetype from pg_type where oid = {{type_id}} - UNION - SELECT oid FROM pg_type WHERE typbasetype = {{type_id}} -) + JOIN pg_cast pc ON tt.oid=pc.casttarget + WHERE pc.castsource= {{type_id}} + AND pc.castcontext IN ('i', 'a') +UNION +SELECT tt.oid, format_type(tt.oid,NULL) AS typname +FROM pg_type tt +WHERE tt.typbasetype = {{type_id}}