From c5f04d03c62efff8eb25c1dbc1e5283804d7de2f Mon Sep 17 00:00:00 2001 From: Murtuza Zabuawala Date: Fri, 16 Sep 2016 16:06:29 +0100 Subject: [PATCH] Fix an issue where several default privileges cause error on database. Fixes #1670 --- .../schema/pg/9.1_plus/sql/properties.sql | 21 +++++++++++-- .../schema/pg/9.2_plus/sql/properties.sql | 28 ++++++++++++++--- .../schema/ppas/9.1_plus/sql/properties.sql | 21 +++++++++++-- .../schema/ppas/9.2_plus/sql/properties.sql | 28 ++++++++++++++--- .../databases/sql/9.1_plus/properties.sql | 21 +++++++++++-- .../databases/sql/9.2_plus/properties.sql | 30 +++++++++++++++---- .../databases/sql/9.3_plus/properties.sql | 30 +++++++++++++++---- 7 files changed, 152 insertions(+), 27 deletions(-) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.1_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.1_plus/sql/properties.sql index 8c9d47a1f..7e1897328 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.1_plus/sql/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.1_plus/sql/properties.sql @@ -12,9 +12,24 @@ SELECT CASE WHEN nspname LIKE E'pg\\_%' THEN true ELSE false END AS is_sys_object, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid) AS tblacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid) AS seqacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid) AS funcacl, + {### Default ACL for Tables ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid + ), ', ')) AS tblacl, + {### Default ACL for Sequnces ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid + ), ', ')) AS seqacl, + {### Default ACL for Functions ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid + ), ', ')) AS funcacl, (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=nsp.oid) AS seclabels FROM pg_namespace nsp diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.2_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.2_plus/sql/properties.sql index e46a630b2..3cb057256 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.2_plus/sql/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/pg/9.2_plus/sql/properties.sql @@ -12,10 +12,30 @@ SELECT CASE WHEN nspname LIKE E'pg\\_%' THEN true ELSE false END AS is_sys_object, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid) AS tblacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid) AS seqacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid) AS funcacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'T' AND defaclnamespace = nsp.oid) AS typeacl, + {### Default ACL for Tables ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid + ), ', ')) AS tblacl, + {### Default ACL for Sequnces ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid + ), ', ')) AS seqacl, + {### Default ACL for Functions ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid + ), ', ')) AS funcacl, + {### Default ACL for Type ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'T' AND defaclnamespace = nsp.oid + ), ', ')) AS typeacl, (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=nsp.oid) AS seclabels FROM pg_namespace nsp diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.1_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.1_plus/sql/properties.sql index fcb31cecf..f3e7a080c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.1_plus/sql/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.1_plus/sql/properties.sql @@ -12,9 +12,24 @@ SELECT CASE WHEN nspname LIKE E'pg\\_%' THEN true ELSE false END AS is_sys_object, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid) AS tblacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid) AS seqacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid) AS funcacl + {### Default ACL for Tables ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid + ), ', ')) AS tblacl, + {### Default ACL for Sequnces ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid + ), ', ')) AS seqacl, + {### Default ACL for Functions ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid + ), ', ')) AS funcacl FROM pg_namespace nsp LEFT OUTER JOIN pg_description des ON diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.2_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.2_plus/sql/properties.sql index 001b1ab01..33dc16c38 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.2_plus/sql/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/ppas/9.2_plus/sql/properties.sql @@ -12,10 +12,30 @@ SELECT CASE WHEN nspname LIKE E'pg\\_%' THEN true ELSE false END AS is_sys_object, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid) AS tblacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid) AS seqacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid) AS funcacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'T' AND defaclnamespace = nsp.oid) AS typeacl + {### Default ACL for Tables ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'r' AND defaclnamespace = nsp.oid + ), ', ')) AS tblacl, + {### Default ACL for Sequnces ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'S' AND defaclnamespace = nsp.oid + ), ', ')) AS seqacl, + {### Default ACL for Functions ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'f' AND defaclnamespace = nsp.oid + ), ', ')) AS funcacl, + {### Default ACL for Type ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'T' AND defaclnamespace = nsp.oid + ), ', ')) AS typeacl FROM pg_namespace nsp LEFT OUTER JOIN pg_description des ON diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.1_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.1_plus/properties.sql index 34969d64b..65711cefe 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.1_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.1_plus/properties.sql @@ -5,9 +5,24 @@ SELECT has_database_privilege(db.oid, 'CREATE') as cancreate, current_setting('default_tablespace') AS default_tablespace, descr.description as comments, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'r' AND defaclnamespace = 0::OID) AS tblacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'S' AND defaclnamespace = 0::OID) AS seqacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'f' AND defaclnamespace = 0::OID) AS funcacl, + {### Default ACL for Tables ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'r' AND defaclnamespace = 0::OID + ), ', ')) AS tblacl, + {### Default ACL for Sequnces ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'S' AND defaclnamespace = 0::OID + ), ', ')) AS seqacl, + {### Default ACL for Functions ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'f' AND defaclnamespace = 0::OID + ), ', ')) AS funcacl, array_to_string(datacl::text[], ', ') AS acl FROM pg_database db LEFT OUTER JOIN pg_tablespace ta ON db.dattablespace=ta.OID diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.2_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.2_plus/properties.sql index 3c6a7499e..d51982304 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.2_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.2_plus/properties.sql @@ -5,10 +5,30 @@ SELECT has_database_privilege(db.oid, 'CREATE') as cancreate, current_setting('default_tablespace') AS default_tablespace, descr.description as comments, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'r' AND defaclnamespace = 0::OID) AS tblacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'S' AND defaclnamespace = 0::OID) AS seqacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'f' AND defaclnamespace = 0::OID) AS funcacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'T' AND defaclnamespace = 0::OID) AS typeacl, + {### Default ACL for Tables ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'r' AND defaclnamespace = 0::OID + ), ', ')) AS tblacl, + {### Default ACL for Sequnces ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'S' AND defaclnamespace = 0::OID + ), ', ')) AS seqacl, + {### Default ACL for Functions ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'f' AND defaclnamespace = 0::OID + ), ', ')) AS funcacl, + {### Default ACL for Type ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'T' AND defaclnamespace = 0::OID + ), ', ')) AS typeacl, (SELECT array_agg(provider || '=' || label) FROM pg_shseclabel sl1 WHERE sl1.objoid=db.oid) AS seclabels, array_to_string(datacl::text[], ', ') AS acl FROM pg_database db @@ -22,4 +42,4 @@ db.datname = {{ name|qtLiteral }}::text{% else %} db.oid > {{ last_system_oid|qtLiteral }}::OID {% endif %}{% endif %} -ORDER BY datname +ORDER BY datname; \ No newline at end of file diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.3_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.3_plus/properties.sql index 3c6a7499e..d51982304 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.3_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/9.3_plus/properties.sql @@ -5,10 +5,30 @@ SELECT has_database_privilege(db.oid, 'CREATE') as cancreate, current_setting('default_tablespace') AS default_tablespace, descr.description as comments, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'r' AND defaclnamespace = 0::OID) AS tblacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'S' AND defaclnamespace = 0::OID) AS seqacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'f' AND defaclnamespace = 0::OID) AS funcacl, - (SELECT array_to_string(defaclacl::text[], ', ') FROM pg_default_acl WHERE defaclobjtype = 'T' AND defaclnamespace = 0::OID) AS typeacl, + {### Default ACL for Tables ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'r' AND defaclnamespace = 0::OID + ), ', ')) AS tblacl, + {### Default ACL for Sequnces ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'S' AND defaclnamespace = 0::OID + ), ', ')) AS seqacl, + {### Default ACL for Functions ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'f' AND defaclnamespace = 0::OID + ), ', ')) AS funcacl, + {### Default ACL for Type ###} + (SELECT array_to_string(ARRAY( + SELECT array_to_string(defaclacl::text[], ', ') + FROM pg_default_acl + WHERE defaclobjtype = 'T' AND defaclnamespace = 0::OID + ), ', ')) AS typeacl, (SELECT array_agg(provider || '=' || label) FROM pg_shseclabel sl1 WHERE sl1.objoid=db.oid) AS seclabels, array_to_string(datacl::text[], ', ') AS acl FROM pg_database db @@ -22,4 +42,4 @@ db.datname = {{ name|qtLiteral }}::text{% else %} db.oid > {{ last_system_oid|qtLiteral }}::OID {% endif %}{% endif %} -ORDER BY datname +ORDER BY datname; \ No newline at end of file