diff --git a/docs/en_US/images/table_advanced.png b/docs/en_US/images/table_advanced.png old mode 100755 new mode 100644 index 7d7f1fd7f61fa26a571b27944ff54cba7d121d33..02228122a77548fe7de14d3b286502719904087f GIT binary patch literal 88949 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 literal 69325 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 diff --git a/docs/en_US/table_dialog.rst b/docs/en_US/table_dialog.rst index d825c43b5..abb009649 100644 --- a/docs/en_US/table_dialog.rst +++ b/docs/en_US/table_dialog.rst @@ -395,6 +395,14 @@ Use the fields in the *Advanced* tab to define advanced features for the table: * Use the *Fill Factor* field to specify a fill factor for the table. The fill factor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. +* Use the *Toast tuple target* field to set toast_tuple_target storage + parameter of the table. The toast_tuple_target value is in bytes and has + minimum value of 128. This field will be enabled only for + PostgreSQL version >= 11 +* Use the *Parallel workers* field to set parallel_workers storage + parameter of the table. The parallel_workers sets the number of workers that + should be used to assist a parallel scan of the table. This field will be + enabled only for PostgreSQL version >= 9.6 * Move the *Has OIDs?* switch to the *Yes* position to specify that each row within a table has a system-assigned object identifier. The default is *No*. * Move the *Unlogged?* switch to the *Yes* position to disable logging for the diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js index 61761794f..f1dd27dc5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js @@ -291,6 +291,8 @@ define('pgadmin.node.table', [ triggercount: undefined, relpersistence: undefined, fillfactor: undefined, + toast_tuple_target: undefined, + parallel_workers: undefined, reloftype: undefined, typname: undefined, labels: undefined, @@ -779,6 +781,26 @@ define('pgadmin.node.table', [ return m.inSchema(); }, },{ + id: 'toast_tuple_target', label: gettext('Toast tuple target'), type: 'int', + mode: ['create', 'edit'], min: 128, min_version: 110000, + group: gettext('advanced'), + disabled: function(m) { + if(m.get('is_partitioned')) { + return true; + } + return m.inSchema(); + }, + },{ + id: 'parallel_workers', label: gettext('Parallel workers'), type: 'int', + mode: ['create', 'edit'], group: gettext('advanced'), min_version: 90600, + disabled: function(m) { + if(m.get('is_partitioned')) { + return true; + } + return m.inSchema(); + }, + }, + { id: 'relhasoids', label: gettext('Has OIDs?'), cell: 'switch', type: 'switch', mode: ['properties', 'create', 'edit'], group: gettext('advanced'), diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql index 478e6d752..dafc87aa2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql @@ -77,7 +77,8 @@ CACHE {{c.seqcache|int}} {% endif %} {% endif %} WITH ( OIDS = {% if data.relhasoids %}TRUE{% else %}FALSE{% endif %}{% if data.fillfactor %}, - FILLFACTOR = {{ data.fillfactor }}{% endif %}{% if data.autovacuum_custom %}, + FILLFACTOR = {{ data.fillfactor }}{% endif %}{% if data.parallel_workers is defined and data.parallel_workers != '' and data.parallel_workers != None %}, + parallel_workers = {{ data.parallel_workers }}{% endif %}{% if data.autovacuum_custom %}, autovacuum_enabled = {% if data.autovacuum_enabled %}TRUE{% else %}FALSE{% endif %}{% endif %}{% if data.toast_autovacuum %}, toast.autovacuum_enabled = {% if data.toast_autovacuum_enabled %}TRUE{% else %}FALSE{% endif %} {% endif %}{% if data.autovacuum_enabled and data.vacuum_table|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/properties.sql index e9bb22827..3d31fe60e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/properties.sql @@ -27,6 +27,7 @@ SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS r WHERE i.inhrelid = rel.oid) AS inherited_tables_cnt, (CASE WHEN rel.relpersistence = 'u' THEN true ELSE false END) AS relpersistence, substring(array_to_string(rel.reloptions, ',') FROM 'fillfactor=([0-9]*)') AS fillfactor, + substring(array_to_string(rel.reloptions, ',') FROM 'parallel_workers=([0-9]*)') AS parallel_workers, (CASE WHEN (substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') = 'true') THEN true ELSE false END) AS autovacuum_enabled, substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS autovacuum_vacuum_threshold, @@ -56,7 +57,7 @@ SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS r typ.typrelid AS typoid, (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable, -- Added for pgAdmin4 - (CASE WHEN array_length(rel.reloptions, 1) > 0 THEN true ELSE false END) AS autovacuum_custom, + (array_to_string(rel.reloptions, ',') like '%autovacuum%') AS autovacuum_custom, (CASE WHEN array_length(tst.reloptions, 1) > 0 AND rel.reltoastrelid != 0 THEN true ELSE false END) AS toast_autovacuum, (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=rel.oid AND sl1.objsubid=0) AS seclabels, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/create.sql new file mode 100644 index 000000000..caec8f520 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/create.sql @@ -0,0 +1,187 @@ +{% import 'macros/schemas/security.macros' as SECLABEL %} +{% import 'macros/schemas/privilege.macros' as PRIVILEGE %} +{% import 'macros/variable.macros' as VARIABLE %} +{% import 'columns/macros/security.macros' as COLUMN_SECLABEL %} +{% import 'columns/macros/privilege.macros' as COLUMN_PRIVILEGE %} +{% import 'tables/sql/macros/constraints.macro' as CONSTRAINTS %} +{% import 'types/macros/get_full_type_sql_format.macros' as GET_TYPE %} +{#===========================================#} +{#====== MAIN TABLE TEMPLATE STARTS HERE ======#} +{#===========================================#} +{# + If user has not provided any details but only name then + add empty bracket with table name +#} +{% set empty_bracket = ""%} +{% if data.coll_inherits|length == 0 and data.columns|length == 0 and not data.typname and not data.like_relation and data.primary_key|length == 0 and data.unique_constraint|length == 0 and data.foreign_key|length == 0 and data.check_constraint|length == 0 and data.exclude_constraint|length == 0 %} +{% set empty_bracket = "\n(\n)"%} +{% endif %} +CREATE {% if data.relpersistence %}UNLOGGED {% endif %}TABLE {{conn|qtIdent(data.schema, data.name)}}{{empty_bracket}} +{% if data.typname %} + OF {{ data.typname }} +{% endif %} +{% if data.like_relation or data.coll_inherits or data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 or data.check_constraint|length > 0 or data.exclude_constraint|length > 0 %} +( +{% endif %} +{% if data.like_relation %} + LIKE {{ data.like_relation }}{% if data.like_default_value %} + + INCLUDING DEFAULTS{% endif %}{% if data.like_constraints %} + + INCLUDING CONSTRAINTS{% endif %}{% if data.like_indexes %} + + INCLUDING INDEXES{% endif %}{% if data.like_storage %} + + INCLUDING STORAGE{% endif %}{% if data.like_comments %} + + INCLUDING COMMENTS{% endif %}{% if data.columns|length > 0 %}, +{% endif %} + +{% endif %} +{### Add columns ###} +{% if data.columns and data.columns|length > 0 %} +{% for c in data.columns %} +{% if c.name and c.cltype %} + {% if c.inheritedfromtable %}-- Inherited from table {{c.inheritedfromtable}}: {% elif c.inheritedfromtype %}-- Inherited from type {{c.inheritedfromtype}}: {% endif %}{{conn|qtIdent(c.name)}} {% if is_sql %}{{c.displaytypname}}{% else %}{{ GET_TYPE.CREATE_TYPE_SQL(conn, c.cltype, c.attlen, c.attprecision, c.hasSqrBracket) }}{% endif %}{% if c.collspcname %} COLLATE {{c.collspcname}}{% endif %}{% if c.attnotnull %} NOT NULL{% endif %}{% if c.defval is defined and c.defval is not none and c.defval != '' %} DEFAULT {{c.defval}}{% endif %} +{% if c.colconstype == 'i' and c.attidentity and c.attidentity != '' %} +{% if c.attidentity == 'a' %} GENERATED ALWAYS AS IDENTITY{% elif c.attidentity == 'd' %} GENERATED BY DEFAULT AS IDENTITY{% endif %} +{% if c.seqincrement or c.seqcycle or c.seqincrement or c.seqstart or c.seqmin or c.seqmax or c.seqcache %} ( {% endif %} +{% if c.seqcycle is defined and c.seqcycle %} +CYCLE {% endif %}{% if c.seqincrement is defined and c.seqincrement|int(-1) > -1 %} +INCREMENT {{c.seqincrement|int}} {% endif %}{% if c.seqstart is defined and c.seqstart|int(-1) > -1%} +START {{c.seqstart|int}} {% endif %}{% if c.seqmin is defined and c.seqmin|int(-1) > -1%} +MINVALUE {{c.seqmin|int}} {% endif %}{% if c.seqmax is defined and c.seqmax|int(-1) > -1%} +MAXVALUE {{c.seqmax|int}} {% endif %}{% if c.seqcache is defined and c.seqcache|int(-1) > -1%} +CACHE {{c.seqcache|int}} {% endif %} +{% if c.seqincrement or c.seqcycle or c.seqincrement or c.seqstart or c.seqmin or c.seqmax or c.seqcache %}){% endif %} +{% endif %} +{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} +{% endif %} +{# Macro to render for constraints #} +{% if data.primary_key|length > 0 %}{% if data.columns|length > 0 %},{% endif %} +{{CONSTRAINTS.PRIMARY_KEY(conn, data.primary_key[0])}}{% endif %}{% if data.unique_constraint|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 %},{% endif %} +{{CONSTRAINTS.UNIQUE(conn, data.unique_constraint)}}{% endif %}{% if data.foreign_key|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 %},{% endif %} +{{CONSTRAINTS.FOREIGN_KEY(conn, data.foreign_key)}}{% endif %}{% if data.check_constraint|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 %},{% endif %} +{{CONSTRAINTS.CHECK(conn, data.check_constraint)}}{% endif %}{% if data.exclude_constraint|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 or data.check_constraint|length > 0 %},{% endif %} +{{CONSTRAINTS.EXCLUDE(conn, data.exclude_constraint)}}{% endif %} +{% if data.like_relation or data.coll_inherits or data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 or data.check_constraint|length > 0 or data.exclude_constraint|length > 0 %} + +){% endif %}{% if data.relkind is defined and data.relkind == 'p' %} PARTITION BY {{ data.partition_scheme }} {% endif %} + +{### If we are inheriting it from another table(s) ###} +{% if data.coll_inherits %} + INHERITS ({% for val in data.coll_inherits %}{% if loop.index != 1 %}, {% endif %}{{val}}{% endfor %}) +{% endif %} +WITH ( + OIDS = {% if data.relhasoids %}TRUE{% else %}FALSE{% endif %}{% if data.fillfactor %}, + FILLFACTOR = {{ data.fillfactor }}{% endif %}{% if data.parallel_workers is defined and data.parallel_workers != '' and data.parallel_workers != None %}, + parallel_workers = {{ data.parallel_workers }}{% endif %}{% if data.toast_tuple_target is defined and data.toast_tuple_target != '' and data.toast_tuple_target != None %}, + toast_tuple_target = {{ data.toast_tuple_target }}{% endif %}{% if data.autovacuum_custom %}, + autovacuum_enabled = {% if data.autovacuum_enabled %}TRUE{% else %}FALSE{% endif %}{% endif %}{% if data.toast_autovacuum %}, + toast.autovacuum_enabled = {% if data.toast_autovacuum_enabled %}TRUE{% else %}FALSE{% endif %} +{% endif %}{% if data.autovacuum_enabled and data.vacuum_table|length > 0 %} +{% for opt in data.vacuum_table %}{% if opt.name and opt.value %} +, + {{opt.name}} = {{opt.value}}{% endif %} +{% endfor %}{% endif %}{% if data.toast_autovacuum_enabled and data.vacuum_toast|length > 0 %} +{% for opt in data.vacuum_toast %}{% if opt.name and opt.value %} +, + toast.{{opt.name}} = {{opt.value}}{% endif %} +{% endfor %}{% endif %} + +{### SQL for Tablespace ###} +{% if data.spcname %} +) +TABLESPACE {{ conn|qtIdent(data.spcname) }}; +{% else %} +); +{% endif %} +{### Alter SQL for Owner ###} +{% if data.relowner %} + +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + OWNER to {{conn|qtIdent(data.relowner)}}; +{% endif %} +{### Security Labels on Table ###} +{% if data.seclabels and data.seclabels|length > 0 %} + +{% for r in data.seclabels %} +{{ SECLABEL.SET(conn, 'TABLE', data.name, r.provider, r.label, data.schema) }} +{% endfor %} +{% endif %} +{### ACL on Table ###} +{% if data.relacl %} + +{% for priv in data.relacl %} +{{ PRIVILEGE.SET(conn, 'TABLE', priv.grantee, data.name, priv.without_grant, priv.with_grant, data.schema) }} +{% endfor %} +{% endif %} +{### SQL for COMMENT ###} +{% if data.description %} +COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} + IS {{data.description|qtLiteral}}; +{% endif %} +{#===========================================#} +{#====== MAIN TABLE TEMPLATE ENDS HERE ======#} +{#===========================================#} +{#===========================================#} +{# COLUMN SPECIFIC TEMPLATES STARTS HERE #} +{#===========================================#} +{% if data.columns and data.columns|length > 0 %} +{% for c in data.columns %} +{% if c.description %} + +COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} + IS {{c.description|qtLiteral}}; +{% endif %} +{### Add variables to column ###} +{% if c.attoptions and c.attoptions|length > 0 %} + +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + {{ VARIABLE.SET(conn, 'COLUMN', c.name, c.attoptions) }} + +{% endif %} +{### Alter column statistics value ###} +{% if c.attstattarget is defined and c.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STATISTICS {{c.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if c.attstorage is defined and c.attstorage != c.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STORAGE {%if c.attstorage == 'p' %} +PLAIN{% elif c.attstorage == 'm'%}MAIN{% elif c.attstorage == 'e'%} +EXTERNAL{% elif c.attstorage == 'x'%}EXTENDED{% endif %}; + +{% endif %} +{### ACL ###} +{% if c.attacl and c.attacl|length > 0 %} + +{% for priv in c.attacl %} +{{ COLUMN_PRIVILEGE.APPLY(conn, data.schema, data.name, c.name, priv.grantee, priv.without_grant, priv.with_grant) }} +{% endfor %} +{% endif %} +{### Security Lables ###} +{% if c.seclabels and c.seclabels|length > 0 %} + +{% for r in c.seclabels %} +{{ COLUMN_SECLABEL.APPLY(conn, 'COLUMN',data.schema, data.name, c.name, r.provider, r.label) }} +{% endfor %} +{% endif %} +{% endfor %} +{% endif %} +{#===========================================#} +{# COLUMN SPECIFIC TEMPLATES ENDS HERE #} +{#===========================================#} +{#======================================#} +{# CONSTRAINTS SPECIFIC TEMPLATES #} +{#======================================#} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.primary_key)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.unique_constraint)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.foreign_key)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.check_constraint)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.exclude_constraint)}} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/properties.sql new file mode 100644 index 000000000..3ac7ceae8 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/properties.sql @@ -0,0 +1,77 @@ +SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS relacl_str, + (CASE WHEN length(spc.spcname) > 0 THEN spc.spcname ELSE + (SELECT sp.spcname FROM pg_database dtb + JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid + WHERE dtb.oid = {{ did }}::oid) + END) as spcname, + (select nspname FROM pg_namespace WHERE oid = {{scid}}::oid ) as schema, + pg_get_userbyid(rel.relowner) AS relowner, rel.relhasoids, rel.relkind, + (CASE WHEN rel.relkind = 'p' THEN true ELSE false END) AS is_partitioned, + rel.relhassubclass, rel.reltuples::bigint, des.description, con.conname, con.conkey, + EXISTS(select 1 FROM pg_trigger + JOIN pg_proc pt ON pt.oid=tgfoid AND pt.proname='logtrigger' + JOIN pg_proc pc ON pc.pronamespace=pt.pronamespace AND pc.proname='slonyversion' + WHERE tgrelid=rel.oid) AS isrepl, + (SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE) AS triggercount, + (SELECT ARRAY(SELECT CASE WHEN (nspname NOT LIKE 'pg\_%') THEN + quote_ident(nspname)||'.'||quote_ident(c.relname) + ELSE quote_ident(c.relname) END AS inherited_tables + FROM pg_inherits i + JOIN pg_class c ON c.oid = i.inhparent + JOIN pg_namespace n ON n.oid=c.relnamespace + WHERE i.inhrelid = rel.oid ORDER BY inhseqno)) AS coll_inherits, + (SELECT count(*) + FROM pg_inherits i + JOIN pg_class c ON c.oid = i.inhparent + JOIN pg_namespace n ON n.oid=c.relnamespace + WHERE i.inhrelid = rel.oid) AS inherited_tables_cnt, + (CASE WHEN rel.relpersistence = 'u' THEN true ELSE false END) AS relpersistence, + substring(array_to_string(rel.reloptions, ',') FROM 'fillfactor=([0-9]*)') AS fillfactor, + substring(array_to_string(rel.reloptions, ',') FROM 'parallel_workers=([0-9]*)') AS parallel_workers, + substring(array_to_string(rel.reloptions, ',') FROM 'toast_tuple_target=([0-9]*)') AS toast_tuple_target, + (CASE WHEN (substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') = 'true') + THEN true ELSE false END) AS autovacuum_enabled, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS autovacuum_vacuum_threshold, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_scale_factor=([0-9]*[.]?[0-9]*)') AS autovacuum_vacuum_scale_factor, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_threshold=([0-9]*)') AS autovacuum_analyze_threshold, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_scale_factor=([0-9]*[.]?[0-9]*)') AS autovacuum_analyze_scale_factor, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_delay=([0-9]*)') AS autovacuum_vacuum_cost_delay, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_limit=([0-9]*)') AS autovacuum_vacuum_cost_limit, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_min_age=([0-9]*)') AS autovacuum_freeze_min_age, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_max_age=([0-9]*)') AS autovacuum_freeze_max_age, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS autovacuum_freeze_table_age, + (CASE WHEN (substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') = 'true') + THEN true ELSE false END) AS toast_autovacuum_enabled, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS toast_autovacuum_vacuum_threshold, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_scale_factor=([0-9]*[.]?[0-9]*)') AS toast_autovacuum_vacuum_scale_factor, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_analyze_threshold=([0-9]*)') AS toast_autovacuum_analyze_threshold, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_analyze_scale_factor=([0-9]*[.]?[0-9]*)') AS toast_autovacuum_analyze_scale_factor, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_cost_delay=([0-9]*)') AS toast_autovacuum_vacuum_cost_delay, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_cost_limit=([0-9]*)') AS toast_autovacuum_vacuum_cost_limit, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_min_age=([0-9]*)') AS toast_autovacuum_freeze_min_age, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_max_age=([0-9]*)') AS toast_autovacuum_freeze_max_age, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS toast_autovacuum_freeze_table_age, + array_to_string(rel.reloptions, ',') AS table_vacuum_settings_str, + array_to_string(tst.reloptions, ',') AS toast_table_vacuum_settings_str, + rel.reloptions AS reloptions, tst.reloptions AS toast_reloptions, rel.reloftype, + CASE WHEN typ.typname IS NOT NULL THEN (select quote_ident(nspname) FROM pg_namespace WHERE oid = {{scid}}::oid )||'.'||quote_ident(typ.typname) ELSE typ.typname END AS typname, + typ.typrelid AS typoid, + (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable, + -- Added for pgAdmin4 + (array_to_string(rel.reloptions, ',') like '%autovacuum%') AS autovacuum_custom, + (CASE WHEN array_length(tst.reloptions, 1) > 0 AND rel.reltoastrelid != 0 THEN true ELSE false END) AS toast_autovacuum, + + (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=rel.oid AND sl1.objsubid=0) AS seclabels, + (CASE WHEN rel.oid <= {{ datlastsysoid}}::oid THEN true ElSE false END) AS is_sys_table + -- Added for partition table + {% if tid %}, (CASE WHEN rel.relkind = 'p' THEN pg_get_partkeydef({{ tid }}::oid) ELSE '' END) AS partition_scheme {% endif %} +FROM pg_class rel + LEFT OUTER JOIN pg_tablespace spc on spc.oid=rel.reltablespace + LEFT OUTER JOIN pg_description des ON (des.objoid=rel.oid AND des.objsubid=0 AND des.classoid='pg_class'::regclass) + LEFT OUTER JOIN pg_constraint con ON con.conrelid=rel.oid AND con.contype='p' + LEFT OUTER JOIN pg_class tst ON tst.oid = rel.reltoastrelid + LEFT JOIN pg_type typ ON rel.reloftype=typ.oid +WHERE rel.relkind IN ('r','s','t','p') AND rel.relnamespace = {{ scid }}::oid +AND NOT rel.relispartition +{% if tid %} AND rel.oid = {{ tid }}::oid {% endif %} +ORDER BY rel.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql new file mode 100644 index 000000000..0f27dbed2 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql @@ -0,0 +1,245 @@ +{% import 'macros/schemas/security.macros' as SECLABEL %} +{% import 'macros/schemas/privilege.macros' as PRIVILEGE %} +{% import 'macros/variable.macros' as VARIABLE %} +{#####################################################} +{## Rename table ##} +{#####################################################} +{% if data.name and data.name != o_data.name %} +ALTER TABLE {{conn|qtIdent(o_data.schema, o_data.name)}} + RENAME TO {{conn|qtIdent(data.name)}}; + +{% endif %} +{#####################################################} +{## Change table schema ##} +{#####################################################} +{% if data.schema and data.schema != o_data.schema %} +ALTER TABLE {{conn|qtIdent(o_data.schema, data.name)}} + SET SCHEMA {{conn|qtIdent(data.schema)}}; + +{% endif %} +{#####################################################} +{## Change table owner ##} +{#####################################################} +{% if data.relowner and data.relowner != o_data.relowner %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + OWNER TO {{conn|qtIdent(data.relowner)}}; + +{% endif %} +{#####################################################} +{## Update Inherits table definition ##} +{#####################################################} +{% if data.coll_inherits_added|length > 0 %} +{% for val in data.coll_inherits_added %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + INHERIT {{val}}; + +{% endfor %} +{% endif %} +{% if data.coll_inherits_removed|length > 0 %} +{% for val in data.coll_inherits_removed %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + NO INHERIT {{val}}; + +{% endfor %} +{% endif %} +{#####################################################} +{## Change hasOID attribute of table ##} +{#####################################################} +{% if data.relhasoids is defined and data.relhasoids != o_data.relhasoids %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET {% if data.relhasoids %}WITH{% else %}WITHOUT{% endif %} OIDS; + +{% endif %} +{#####################################################} +{## Change tablespace ##} +{#####################################################} +{% if data.spcname and data.spcname != o_data.spcname %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET TABLESPACE {{conn|qtIdent(data.spcname)}}; + +{% endif %} +{#####################################################} +{## change fillfactor settings ##} +{#####################################################} +{% if data.fillfactor and data.fillfactor != o_data.fillfactor %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET (FILLFACTOR={{data.fillfactor}}); +{% elif (data.fillfactor == '' or data.fillfactor == None) and data.fillfactor != o_data.fillfactor %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + RESET (FILLFACTOR); + +{% endif %} + +{## change parallel_workers settings ##} +{#####################################################} +{% if (data.parallel_workers == '' or data.parallel_workers == None) and data.parallel_workers != o_data.parallel_workers %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + RESET (parallel_workers); +{% elif data.parallel_workers is defined and data.parallel_workers != o_data.parallel_workers %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET (parallel_workers={{data.parallel_workers}}); + +{% endif %} + +{## change toast_tuple_target settings ##} +{#####################################################} +{% if (data.toast_tuple_target == '' or data.toast_tuple_target == None) and data.toast_tuple_target != o_data.toast_tuple_target %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + RESET (toast_tuple_target); +{% elif data.toast_tuple_target is defined and data.toast_tuple_target != o_data.toast_tuple_target %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET (toast_tuple_target={{data.toast_tuple_target}}); + +{% endif %} + +{###############################} +{## Table AutoVacuum settings ##} +{###############################} +{% if data.vacuum_table is defined and data.vacuum_table.set_values|length > 0 %} +{% set has_vacuum_set = true %} +{% endif %} +{% if data.vacuum_table is defined and data.vacuum_table.reset_values|length > 0 %} +{% set has_vacuum_reset = true %} +{% endif %} +{% if o_data.autovacuum_custom and data.autovacuum_custom == false %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( + autovacuum_enabled, + autovacuum_analyze_scale_factor, + autovacuum_analyze_threshold, + autovacuum_freeze_max_age, + autovacuum_vacuum_cost_delay, + autovacuum_vacuum_cost_limit, + autovacuum_vacuum_scale_factor, + autovacuum_vacuum_threshold, + autovacuum_freeze_min_age, + autovacuum_freeze_table_age +); +{% else %} +{% if data.autovacuum_enabled is defined or has_vacuum_set %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} SET ( +{% if data.autovacuum_enabled is defined and data.autovacuum_enabled != o_data.autovacuum_enabled %} + autovacuum_enabled = {% if data.autovacuum_enabled %}true{% else %}false{% endif %}{% if has_vacuum_set %}, +{% endif %} +{% endif %} +{% if has_vacuum_set %} +{% for opt in data.vacuum_table.set_values %}{% if opt.name and opt.value %} + {{opt.name}} = {{opt.value}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} +{% endif %} + +); +{% endif %} +{% if has_vacuum_reset %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( +{% for opt in data.vacuum_table.reset_values %}{% if opt.name %} + {{opt.name}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} + +); +{% endif %} +{% endif %} +{#####################################} +{## Toast table AutoVacuum settings ##} +{#####################################} +{% if data.vacuum_toast is defined and data.vacuum_toast.set_values|length > 0 %} +{% set has_vacuum_toast_set = true %} +{% endif %} +{% if data.vacuum_toast is defined and data.vacuum_toast.reset_values|length > 0 %} +{% set has_vacuum_toast_reset = true %} +{% endif %} +{% if o_data.toast_autovacuum and data.toast_autovacuum == false %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( + toast.autovacuum_enabled, + toast.autovacuum_freeze_max_age, + toast.autovacuum_vacuum_cost_delay, + toast.autovacuum_vacuum_cost_limit, + toast.autovacuum_vacuum_scale_factor, + toast.autovacuum_vacuum_threshold, + toast.autovacuum_freeze_min_age, + toast.autovacuum_freeze_table_age, + toast.autovacuum_analyze_threshold, + toast.autovacuum_analyze_scale_factor +); +{% else %} +{% if data.toast_autovacuum_enabled is defined or has_vacuum_toast_set %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} SET ( +{% if data.toast_autovacuum_enabled is defined and data.toast_autovacuum_enabled != o_data.toast_autovacuum_enabled %} + toast.autovacuum_enabled = {% if data.toast_autovacuum_enabled %}true{% else %}false{% endif %}{% if has_vacuum_toast_set %}, +{% endif %} +{% endif %} +{% if has_vacuum_toast_set %} +{% for opt in data.vacuum_toast.set_values %}{% if opt.name and opt.value %} + toast.{{opt.name}} = {{opt.value}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} +{% endif %} + +); +{% endif %} +{% if has_vacuum_toast_reset %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( +{% for opt in data.vacuum_toast.reset_values %}{% if opt.name %} + toast.{{opt.name}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} + +); +{% endif %} +{% endif %} +{#####################################################} +{## Change table comments ##} +{#####################################################} +{% if data.description is defined and data.description != o_data.description %} +COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} + IS {{data.description|qtLiteral}}; + +{% endif %} +{#####################################################} +{## Update table Privileges ##} +{#####################################################} +{% if data.relacl %} +{% if 'deleted' in data.relacl %} +{% for priv in data.relacl.deleted %} +{{ PRIVILEGE.UNSETALL(conn, 'TABLE', priv.grantee, data.name, data.schema) }} +{% endfor %} +{% endif %} +{% if 'changed' in data.relacl %} +{% for priv in data.relacl.changed %} +{{ PRIVILEGE.UNSETALL(conn, 'TABLE', priv.grantee, data.name, data.schema) }} +{{ PRIVILEGE.SET(conn, 'TABLE', priv.grantee, data.name, priv.without_grant, priv.with_grant, data.schema) }} +{% endfor %} +{% endif %} +{% if 'added' in data.relacl %} +{% for priv in data.relacl.added %} +{{ PRIVILEGE.SET(conn, 'TABLE', priv.grantee, data.name, priv.without_grant, priv.with_grant, data.schema) }} +{% endfor %} +{% endif %} +{% endif %} +{#####################################################} +{## Update table SecurityLabel ##} +{#####################################################} +{% if data.seclabels and data.seclabels|length > 0 %} +{% set seclabels = data.seclabels %} +{% if 'deleted' in seclabels and seclabels.deleted|length > 0 %} +{% for r in seclabels.deleted %} +{{ SECLABEL.UNSET(conn, 'TABLE', data.name, r.provider, data.schema) }} +{% endfor %} +{% endif %} +{% if 'added' in seclabels and seclabels.added|length > 0 %} +{% for r in seclabels.added %} +{{ SECLABEL.SET(conn, 'TABLE', data.name, r.provider, r.label, data.schema) }} +{% endfor %} +{% endif %} +{% if 'changed' in seclabels and seclabels.changed|length > 0 %} +{% for r in seclabels.changed %} +{{ SECLABEL.SET(conn, 'TABLE', data.name, r.provider, r.label, data.schema) }} +{% endfor %} +{% endif %} + +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql index c52861b0c..486bc3091 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql @@ -17,7 +17,7 @@ {% set empty_bracket = "\n(\n)"%} {% endif %} {% set with_clause = false%} -{% if data.fillfactor or data.autovacuum_custom or data.autovacuum_enabled or data.toast_autovacuum or data.toast_autovacuum_enabled or (data.autovacuum_enabled and data.vacuum_table|length > 0) or (data.toast_autovacuum_enabled and data.vacuum_toast|length > 0) %} +{% if data.fillfactor or data.parallel_workers or data.toast_tuple_target or data.autovacuum_custom or data.autovacuum_enabled or data.toast_autovacuum or data.toast_autovacuum_enabled or (data.autovacuum_enabled and data.vacuum_table|length > 0) or (data.toast_autovacuum_enabled and data.vacuum_toast|length > 0) %} {% set with_clause = true%} {% endif %} CREATE {% if data.relpersistence %}UNLOGGED {% endif %}TABLE {{conn|qtIdent(data.schema, data.name)}}{{empty_bracket}} @@ -86,7 +86,13 @@ CACHE {{c.seqcache|int}} {% endif %} {% set add_comma = false%} WITH ( {% if data.fillfactor %}{% set add_comma = true%} - FILLFACTOR = {{ data.fillfactor }}{% endif %}{% if data.autovacuum_custom %} + FILLFACTOR = {{ data.fillfactor }}{% endif %}{% if data.parallel_workers %} +{% if add_comma %}, +{% endif %} + parallel_workers = {{ data.parallel_workers }}{% set add_comma = true%}{% endif %}{% if data.toast_tuple_target %} +{% if add_comma %}, +{% endif %} + toast_tuple_target = {{ data.toast_tuple_target }}{% set add_comma = true%}{% endif %}{% if data.autovacuum_custom %} {% if add_comma %}, {% endif %} autovacuum_enabled = {% if data.autovacuum_enabled %}TRUE{% else %}FALSE{% endif %}{% set add_comma = true%}{% endif %}{% if data.toast_autovacuum %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql index e7d19055d..3d9b1f622 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql @@ -27,6 +27,8 @@ SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS r WHERE i.inhrelid = rel.oid) AS inherited_tables_cnt, (CASE WHEN rel.relpersistence = 'u' THEN true ELSE false END) AS relpersistence, substring(array_to_string(rel.reloptions, ',') FROM 'fillfactor=([0-9]*)') AS fillfactor, + substring(array_to_string(rel.reloptions, ',') FROM 'parallel_workers=([0-9]*)') AS parallel_workers, + substring(array_to_string(rel.reloptions, ',') FROM 'toast_tuple_target=([0-9]*)') AS toast_tuple_target, (CASE WHEN (substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') = 'true') THEN true ELSE false END) AS autovacuum_enabled, substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS autovacuum_vacuum_threshold, @@ -56,7 +58,7 @@ SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS r typ.typrelid AS typoid, (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable, -- Added for pgAdmin4 - (CASE WHEN array_length(rel.reloptions, 1) > 0 THEN true ELSE false END) AS autovacuum_custom, + (array_to_string(rel.reloptions, ',') like '%autovacuum%') AS autovacuum_custom, (CASE WHEN array_length(tst.reloptions, 1) > 0 AND rel.reltoastrelid != 0 THEN true ELSE false END) AS toast_autovacuum, (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=rel.oid AND sl1.objsubid=0) AS seclabels, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql index 3ed12302d..e2415ad2a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql @@ -61,6 +61,29 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET (FILLFACTOR); {% endif %} + +{## change parallel_workers settings ##} +{#####################################################} +{% if (data.parallel_workers == '' or data.parallel_workers == None) and data.parallel_workers != o_data.parallel_workers %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + RESET (parallel_workers); +{% elif data.parallel_workers is defined and data.parallel_workers != o_data.parallel_workers %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET (parallel_workers={{data.parallel_workers}}); + +{% endif %} + +{## change toast_tuple_target settings ##} +{#####################################################} +{% if (data.toast_tuple_target == '' or data.toast_tuple_target == None) and data.toast_tuple_target != o_data.toast_tuple_target %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + RESET (toast_tuple_target); +{% elif data.toast_tuple_target is defined and data.toast_tuple_target != o_data.toast_tuple_target %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET (toast_tuple_target={{data.toast_tuple_target}}); + +{% endif %} + {###############################} {## Table AutoVacuum settings ##} {###############################} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/create.sql new file mode 100644 index 000000000..87df7a386 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/create.sql @@ -0,0 +1,174 @@ +{% import 'macros/schemas/security.macros' as SECLABEL %} +{% import 'macros/schemas/privilege.macros' as PRIVILEGE %} +{% import 'macros/variable.macros' as VARIABLE %} +{% import 'columns/macros/security.macros' as COLUMN_SECLABEL %} +{% import 'columns/macros/privilege.macros' as COLUMN_PRIVILEGE %} +{% import 'tables/sql/macros/constraints.macro' as CONSTRAINTS %} +{% import 'types/macros/get_full_type_sql_format.macros' as GET_TYPE %} +{#===========================================#} +{#====== MAIN TABLE TEMPLATE STARTS HERE ======#} +{#===========================================#} +{# + If user has not provided any details but only name then + add empty bracket with table name +#} +{% set empty_bracket = ""%} +{% if data.coll_inherits|length == 0 and data.columns|length == 0 and not data.typname and not data.like_relation and data.primary_key|length == 0 and data.unique_constraint|length == 0 and data.foreign_key|length == 0 and data.check_constraint|length == 0 and data.exclude_constraint|length == 0 %} +{% set empty_bracket = "\n(\n)"%} +{% endif %} +CREATE {% if data.relpersistence %}UNLOGGED {% endif %}TABLE {{conn|qtIdent(data.schema, data.name)}}{{empty_bracket}} +{% if data.typname %} + OF {{ data.typname }} +{% endif %} +{% if data.like_relation or data.coll_inherits or data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 or data.check_constraint|length > 0 or data.exclude_constraint|length > 0 %} +( +{% endif %} +{% if data.like_relation %} + LIKE {{ data.like_relation }}{% if data.like_default_value %} + + INCLUDING DEFAULTS{% endif %}{% if data.like_constraints %} + + INCLUDING CONSTRAINTS{% endif %}{% if data.like_indexes %} + + INCLUDING INDEXES{% endif %}{% if data.like_storage %} + + INCLUDING STORAGE{% endif %}{% if data.like_comments %} + + INCLUDING COMMENTS{% endif %}{% if data.columns|length > 0 %}, +{% endif %} + +{% endif %} +{### Add columns ###} +{% if data.columns and data.columns|length > 0 %} +{% for c in data.columns %} +{% if c.name and c.cltype %} + {% if c.inheritedfromtable %}-- Inherited from table {{c.inheritedfromtable}}: {% elif c.inheritedfromtype %}-- Inherited from type {{c.inheritedfromtype}}: {% endif %}{{conn|qtIdent(c.name)}} {% if is_sql %}{{c.displaytypname}}{% else %}{{ GET_TYPE.CREATE_TYPE_SQL(conn, c.cltype, c.attlen, c.attprecision, c.hasSqrBracket) }}{% endif %}{% if c.collspcname %} COLLATE {{c.collspcname}}{% endif %}{% if c.attnotnull %} NOT NULL{% endif %}{% if c.defval is defined and c.defval is not none and c.defval != '' %} DEFAULT {{c.defval}}{% endif %} +{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} +{% endif %} +{# Macro to render for constraints #} +{% if data.primary_key|length > 0 %}{% if data.columns|length > 0 %},{% endif %} +{{CONSTRAINTS.PRIMARY_KEY(conn, data.primary_key[0])}}{% endif %}{% if data.unique_constraint|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 %},{% endif %} +{{CONSTRAINTS.UNIQUE(conn, data.unique_constraint)}}{% endif %}{% if data.foreign_key|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 %},{% endif %} +{{CONSTRAINTS.FOREIGN_KEY(conn, data.foreign_key)}}{% endif %}{% if data.check_constraint|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 %},{% endif %} +{{CONSTRAINTS.CHECK(conn, data.check_constraint)}}{% endif %}{% if data.exclude_constraint|length > 0 %}{% if data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 or data.check_constraint|length > 0 %},{% endif %} +{{CONSTRAINTS.EXCLUDE(conn, data.exclude_constraint)}}{% endif %} +{% if data.like_relation or data.coll_inherits or data.columns|length > 0 or data.primary_key|length > 0 or data.unique_constraint|length > 0 or data.foreign_key|length > 0 or data.check_constraint|length > 0 or data.exclude_constraint|length > 0 %} + +){% endif %}{% if data.relkind is defined and data.relkind == 'p' %} PARTITION BY {{ data.partition_scheme }} {% endif %} + +{### If we are inheriting it from another table(s) ###} +{% if data.coll_inherits %} + INHERITS ({% for val in data.coll_inherits %}{% if loop.index != 1 %}, {% endif %}{{val}}{% endfor %}) +{% endif %} +WITH ( + OIDS = {% if data.relhasoids %}TRUE{% else %}FALSE{% endif %}{% if data.fillfactor %}, + FILLFACTOR = {{ data.fillfactor }}{% endif %}{% if data.parallel_workers is defined and data.parallel_workers != '' and data.parallel_workers != None %}, + parallel_workers = {{ data.parallel_workers }}{% endif %}{% if data.autovacuum_custom %}, + autovacuum_enabled = {% if data.autovacuum_enabled %}TRUE{% else %}FALSE{% endif %}{% endif %}{% if data.toast_autovacuum %}, + toast.autovacuum_enabled = {% if data.toast_autovacuum_enabled %}TRUE{% else %}FALSE{% endif %} +{% endif %}{% if data.autovacuum_enabled and data.vacuum_table|length > 0 %} +{% for opt in data.vacuum_table %}{% if opt.name and opt.value %} +, + {{opt.name}} = {{opt.value}}{% endif %} +{% endfor %}{% endif %}{% if data.toast_autovacuum_enabled and data.vacuum_toast|length > 0 %} +{% for opt in data.vacuum_toast %}{% if opt.name and opt.value %} +, + toast.{{opt.name}} = {{opt.value}}{% endif %} +{% endfor %}{% endif %} + +{### SQL for Tablespace ###} +{% if data.spcname %} +) +TABLESPACE {{ conn|qtIdent(data.spcname) }}; +{% else %} +); +{% endif %} +{### Alter SQL for Owner ###} +{% if data.relowner %} + +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + OWNER to {{conn|qtIdent(data.relowner)}}; +{% endif %} +{### Security Labels on Table ###} +{% if data.seclabels and data.seclabels|length > 0 %} + +{% for r in data.seclabels %} +{{ SECLABEL.SET(conn, 'TABLE', data.name, r.provider, r.label, data.schema) }} +{% endfor %} +{% endif %} +{### ACL on Table ###} +{% if data.relacl %} + +{% for priv in data.relacl %} +{{ PRIVILEGE.SET(conn, 'TABLE', priv.grantee, data.name, priv.without_grant, priv.with_grant, data.schema) }} +{% endfor %} +{% endif %} +{### SQL for COMMENT ###} +{% if data.description %} +COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} + IS {{data.description|qtLiteral}}; +{% endif %} +{#===========================================#} +{#====== MAIN TABLE TEMPLATE ENDS HERE ======#} +{#===========================================#} +{#===========================================#} +{# COLUMN SPECIFIC TEMPLATES STARTS HERE #} +{#===========================================#} +{% if data.columns and data.columns|length > 0 %} +{% for c in data.columns %} +{% if c.description %} + +COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} + IS {{c.description|qtLiteral}}; +{% endif %} +{### Add variables to column ###} +{% if c.attoptions and c.attoptions|length > 0 %} + +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + {{ VARIABLE.SET(conn, 'COLUMN', c.name, c.attoptions) }} + +{% endif %} +{### Alter column statistics value ###} +{% if c.attstattarget is defined and c.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STATISTICS {{c.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if c.attstorage is defined and c.attstorage != c.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STORAGE {%if c.attstorage == 'p' %} +PLAIN{% elif c.attstorage == 'm'%}MAIN{% elif c.attstorage == 'e'%} +EXTERNAL{% elif c.attstorage == 'x'%}EXTENDED{% endif %}; + +{% endif %} +{### ACL ###} +{% if c.attacl and c.attacl|length > 0 %} + +{% for priv in c.attacl %} + {{ COLUMN_PRIVILEGE.APPLY(conn, data.schema, data.name, c.name, priv.grantee, priv.without_grant, priv.with_grant) }} +{% endfor %} +{% endif %} +{### Security Lables ###} +{% if c.seclabels and c.seclabels|length > 0 %} + +{% for r in c.seclabels %} +{{ COLUMN_SECLABEL.APPLY(conn, 'COLUMN',data.schema, data.name, c.name, r.provider, r.label) }} +{% endfor %} +{% endif %} +{% endfor %} +{% endif %} +{#===========================================#} +{# COLUMN SPECIFIC TEMPLATES ENDS HERE #} +{#===========================================#} +{#======================================#} +{# CONSTRAINTS SPECIFIC TEMPLATES #} +{#======================================#} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.primary_key)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.unique_constraint)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.foreign_key)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.check_constraint)}} +{{CONSTRAINTS.CONSTRAINT_COMMENTS(conn, data.schema, data.name, data.exclude_constraint)}} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/properties.sql new file mode 100644 index 000000000..80451f12d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/properties.sql @@ -0,0 +1,72 @@ +SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS relacl_str, + (CASE WHEN length(spc.spcname) > 0 THEN spc.spcname ELSE + (SELECT sp.spcname FROM pg_database dtb + JOIN pg_tablespace sp ON dtb.dattablespace=sp.oid + WHERE dtb.oid = {{ did }}::oid) + END) as spcname, + (select nspname FROM pg_namespace WHERE oid = {{scid}}::oid ) as schema, + pg_get_userbyid(rel.relowner) AS relowner, rel.relhasoids, + rel.relhassubclass, rel.reltuples::bigint, des.description, con.conname, con.conkey, + EXISTS(select 1 FROM pg_trigger + JOIN pg_proc pt ON pt.oid=tgfoid AND pt.proname='logtrigger' + JOIN pg_proc pc ON pc.pronamespace=pt.pronamespace AND pc.proname='slonyversion' + WHERE tgrelid=rel.oid) AS isrepl, + (SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE) AS triggercount, + (SELECT ARRAY(SELECT CASE WHEN (nspname NOT LIKE 'pg\_%') THEN + quote_ident(nspname)||'.'||quote_ident(c.relname) + ELSE quote_ident(c.relname) END AS inherited_tables + FROM pg_inherits i + JOIN pg_class c ON c.oid = i.inhparent + JOIN pg_namespace n ON n.oid=c.relnamespace + WHERE i.inhrelid = rel.oid ORDER BY inhseqno)) AS coll_inherits, + (SELECT count(*) + FROM pg_inherits i + JOIN pg_class c ON c.oid = i.inhparent + JOIN pg_namespace n ON n.oid=c.relnamespace + WHERE i.inhrelid = rel.oid) AS inherited_tables_cnt, + (CASE WHEN rel.relpersistence = 'u' THEN true ELSE false END) AS relpersistence, + substring(array_to_string(rel.reloptions, ',') FROM 'fillfactor=([0-9]*)') AS fillfactor, + substring(array_to_string(rel.reloptions, ',') FROM 'parallel_workers=([0-9]*)') AS parallel_workers, + (CASE WHEN (substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') = 'true') + THEN true ELSE false END) AS autovacuum_enabled, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS autovacuum_vacuum_threshold, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_scale_factor=([0-9]*[.]?[0-9]*)') AS autovacuum_vacuum_scale_factor, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_threshold=([0-9]*)') AS autovacuum_analyze_threshold, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_scale_factor=([0-9]*[.]?[0-9]*)') AS autovacuum_analyze_scale_factor, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_delay=([0-9]*)') AS autovacuum_vacuum_cost_delay, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_limit=([0-9]*)') AS autovacuum_vacuum_cost_limit, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_min_age=([0-9]*)') AS autovacuum_freeze_min_age, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_max_age=([0-9]*)') AS autovacuum_freeze_max_age, + substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS autovacuum_freeze_table_age, + (CASE WHEN (substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') = 'true') + THEN true ELSE false END) AS toast_autovacuum_enabled, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS toast_autovacuum_vacuum_threshold, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_scale_factor=([0-9]*[.]?[0-9]*)') AS toast_autovacuum_vacuum_scale_factor, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_analyze_threshold=([0-9]*)') AS toast_autovacuum_analyze_threshold, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_analyze_scale_factor=([0-9]*[.]?[0-9]*)') AS toast_autovacuum_analyze_scale_factor, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_cost_delay=([0-9]*)') AS toast_autovacuum_vacuum_cost_delay, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_vacuum_cost_limit=([0-9]*)') AS toast_autovacuum_vacuum_cost_limit, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_min_age=([0-9]*)') AS toast_autovacuum_freeze_min_age, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_max_age=([0-9]*)') AS toast_autovacuum_freeze_max_age, + substring(array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS toast_autovacuum_freeze_table_age, + array_to_string(rel.reloptions, ',') AS table_vacuum_settings_str, + array_to_string(tst.reloptions, ',') AS toast_table_vacuum_settings_str, + rel.reloptions AS reloptions, tst.reloptions AS toast_reloptions, rel.reloftype, + CASE WHEN typ.typname IS NOT NULL THEN (select quote_ident(nspname) FROM pg_namespace WHERE oid = {{scid}}::oid )||'.'||quote_ident(typ.typname) ELSE typ.typname END AS typname, + typ.typrelid AS typoid, + (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable, + -- Added for pgAdmin4 + (array_to_string(rel.reloptions, ',') like '%autovacuum%') AS autovacuum_custom, + (CASE WHEN array_length(tst.reloptions, 1) > 0 AND rel.reltoastrelid != 0 THEN true ELSE false END) AS toast_autovacuum, + + (SELECT array_agg(provider || '=' || label) FROM pg_seclabels sl1 WHERE sl1.objoid=rel.oid AND sl1.objsubid=0) AS seclabels, + (CASE WHEN rel.oid <= {{ datlastsysoid}}::oid THEN true ElSE false END) AS is_sys_table +FROM pg_class rel + LEFT OUTER JOIN pg_tablespace spc on spc.oid=rel.reltablespace + LEFT OUTER JOIN pg_description des ON (des.objoid=rel.oid AND des.objsubid=0 AND des.classoid='pg_class'::regclass) + LEFT OUTER JOIN pg_constraint con ON con.conrelid=rel.oid AND con.contype='p' + LEFT OUTER JOIN pg_class tst ON tst.oid = rel.reltoastrelid + LEFT JOIN pg_type typ ON rel.reloftype=typ.oid +WHERE rel.relkind IN ('r','s','t') AND rel.relnamespace = {{ scid }}::oid +{% if tid %} AND rel.oid = {{ tid }}::oid {% endif %} +ORDER BY rel.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/update.sql new file mode 100644 index 000000000..98e9ebf4b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.6_plus/update.sql @@ -0,0 +1,233 @@ +{% import 'macros/schemas/security.macros' as SECLABEL %} +{% import 'macros/schemas/privilege.macros' as PRIVILEGE %} +{% import 'macros/variable.macros' as VARIABLE %} +{#####################################################} +{## Rename table ##} +{#####################################################} +{% if data.name and data.name != o_data.name %} +ALTER TABLE {{conn|qtIdent(o_data.schema, o_data.name)}} + RENAME TO {{conn|qtIdent(data.name)}}; + +{% endif %} +{#####################################################} +{## Change table schema ##} +{#####################################################} +{% if data.schema and data.schema != o_data.schema %} +ALTER TABLE {{conn|qtIdent(o_data.schema, data.name)}} + SET SCHEMA {{conn|qtIdent(data.schema)}}; + +{% endif %} +{#####################################################} +{## Change table owner ##} +{#####################################################} +{% if data.relowner and data.relowner != o_data.relowner %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + OWNER TO {{conn|qtIdent(data.relowner)}}; + +{% endif %} +{#####################################################} +{## Update Inherits table definition ##} +{#####################################################} +{% if data.coll_inherits_added|length > 0 %} +{% for val in data.coll_inherits_added %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + INHERIT {{val}}; + +{% endfor %} +{% endif %} +{% if data.coll_inherits_removed|length > 0 %} +{% for val in data.coll_inherits_removed %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + NO INHERIT {{val}}; + +{% endfor %} +{% endif %} +{#####################################################} +{## Change hasOID attribute of table ##} +{#####################################################} +{% if data.relhasoids is defined and data.relhasoids != o_data.relhasoids %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET {% if data.relhasoids %}WITH{% else %}WITHOUT{% endif %} OIDS; + +{% endif %} +{#####################################################} +{## Change tablespace ##} +{#####################################################} +{% if data.spcname and data.spcname != o_data.spcname %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET TABLESPACE {{conn|qtIdent(data.spcname)}}; + +{% endif %} +{#####################################################} +{## change fillfactor settings ##} +{#####################################################} +{% if data.fillfactor and data.fillfactor != o_data.fillfactor %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET (FILLFACTOR={{data.fillfactor}}); +{% elif (data.fillfactor == '' or data.fillfactor == None) and data.fillfactor != o_data.fillfactor %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + RESET (FILLFACTOR); + +{% endif %} + +{## change parallel_workers settings ##} +{#####################################################} +{% if (data.parallel_workers == '' or data.parallel_workers == None) and data.parallel_workers != o_data.parallel_workers %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + RESET (parallel_workers); +{% elif data.parallel_workers is defined and data.parallel_workers != o_data.parallel_workers %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + SET (parallel_workers={{data.parallel_workers}}); + +{% endif %} +{###############################} +{## Table AutoVacuum settings ##} +{###############################} +{% if data.vacuum_table is defined and data.vacuum_table.set_values|length > 0 %} +{% set has_vacuum_set = true %} +{% endif %} +{% if data.vacuum_table is defined and data.vacuum_table.reset_values|length > 0 %} +{% set has_vacuum_reset = true %} +{% endif %} +{% if o_data.autovacuum_custom and data.autovacuum_custom == false %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( + autovacuum_enabled, + autovacuum_analyze_scale_factor, + autovacuum_analyze_threshold, + autovacuum_freeze_max_age, + autovacuum_vacuum_cost_delay, + autovacuum_vacuum_cost_limit, + autovacuum_vacuum_scale_factor, + autovacuum_vacuum_threshold, + autovacuum_freeze_min_age, + autovacuum_freeze_table_age +); +{% else %} +{% if data.autovacuum_enabled is defined or has_vacuum_set %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} SET ( +{% if data.autovacuum_enabled is defined and data.autovacuum_enabled != o_data.autovacuum_enabled %} + autovacuum_enabled = {% if data.autovacuum_enabled %}true{% else %}false{% endif %}{% if has_vacuum_set %}, +{% endif %} +{% endif %} +{% if has_vacuum_set %} +{% for opt in data.vacuum_table.set_values %}{% if opt.name and opt.value %} + {{opt.name}} = {{opt.value}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} +{% endif %} + +); +{% endif %} +{% if has_vacuum_reset %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( +{% for opt in data.vacuum_table.reset_values %}{% if opt.name %} + {{opt.name}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} + +); +{% endif %} +{% endif %} +{#####################################} +{## Toast table AutoVacuum settings ##} +{#####################################} +{% if data.vacuum_toast is defined and data.vacuum_toast.set_values|length > 0 %} +{% set has_vacuum_toast_set = true %} +{% endif %} +{% if data.vacuum_toast is defined and data.vacuum_toast.reset_values|length > 0 %} +{% set has_vacuum_toast_reset = true %} +{% endif %} +{% if o_data.toast_autovacuum and data.toast_autovacuum == false %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( + toast.autovacuum_enabled, + toast.autovacuum_freeze_max_age, + toast.autovacuum_vacuum_cost_delay, + toast.autovacuum_vacuum_cost_limit, + toast.autovacuum_vacuum_scale_factor, + toast.autovacuum_vacuum_threshold, + toast.autovacuum_freeze_min_age, + toast.autovacuum_freeze_table_age, + toast.autovacuum_analyze_threshold, + toast.autovacuum_analyze_scale_factor +); +{% else %} +{% if data.toast_autovacuum_enabled is defined or has_vacuum_toast_set %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} SET ( +{% if data.toast_autovacuum_enabled is defined and data.toast_autovacuum_enabled != o_data.toast_autovacuum_enabled %} + toast.autovacuum_enabled = {% if data.toast_autovacuum_enabled %}true{% else %}false{% endif %}{% if has_vacuum_toast_set %}, +{% endif %} +{% endif %} +{% if has_vacuum_toast_set %} +{% for opt in data.vacuum_toast.set_values %}{% if opt.name and opt.value %} + toast.{{opt.name}} = {{opt.value}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} +{% endif %} + +); +{% endif %} +{% if has_vacuum_toast_reset %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} RESET ( +{% for opt in data.vacuum_toast.reset_values %}{% if opt.name %} + toast.{{opt.name}}{% if not loop.last %}, +{% endif %} +{% endif %} +{% endfor %} + +); +{% endif %} +{% endif %} +{#####################################################} +{## Change table comments ##} +{#####################################################} +{% if data.description is defined and data.description != o_data.description %} +COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} + IS {{data.description|qtLiteral}}; + +{% endif %} +{#####################################################} +{## Update table Privileges ##} +{#####################################################} +{% if data.relacl %} +{% if 'deleted' in data.relacl %} +{% for priv in data.relacl.deleted %} +{{ PRIVILEGE.UNSETALL(conn, 'TABLE', priv.grantee, data.name, data.schema) }} +{% endfor %} +{% endif %} +{% if 'changed' in data.relacl %} +{% for priv in data.relacl.changed %} +{{ PRIVILEGE.UNSETALL(conn, 'TABLE', priv.grantee, data.name, data.schema) }} +{{ PRIVILEGE.SET(conn, 'TABLE', priv.grantee, data.name, priv.without_grant, priv.with_grant, data.schema) }} +{% endfor %} +{% endif %} +{% if 'added' in data.relacl %} +{% for priv in data.relacl.added %} +{{ PRIVILEGE.SET(conn, 'TABLE', priv.grantee, data.name, priv.without_grant, priv.with_grant, data.schema) }} +{% endfor %} +{% endif %} +{% endif %} +{#####################################################} +{## Update table SecurityLabel ##} +{#####################################################} +{% if data.seclabels and data.seclabels|length > 0 %} +{% set seclabels = data.seclabels %} +{% if 'deleted' in seclabels and seclabels.deleted|length > 0 %} +{% for r in seclabels.deleted %} +{{ SECLABEL.UNSET(conn, 'TABLE', data.name, r.provider, data.schema) }} +{% endfor %} +{% endif %} +{% if 'added' in seclabels and seclabels.added|length > 0 %} +{% for r in seclabels.added %} +{{ SECLABEL.SET(conn, 'TABLE', data.name, r.provider, r.label, data.schema) }} +{% endfor %} +{% endif %} +{% if 'changed' in seclabels and seclabels.changed|length > 0 %} +{% for r in seclabels.changed %} +{{ SECLABEL.SET(conn, 'TABLE', data.name, r.provider, r.label, data.schema) }} +{% endfor %} +{% endif %} + +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/properties.sql index 932e7ffa5..47686a280 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/properties.sql @@ -57,7 +57,7 @@ FROM ( typ.typrelid AS typoid, (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable, -- Added for pgAdmin4 - (CASE WHEN array_length(rel.reloptions, 1) > 0 THEN true ELSE false END) AS autovacuum_custom, + (array_to_string(rel.reloptions, ',') like '%autovacuum%') AS autovacuum_custom, (CASE WHEN array_length(tst.reloptions, 1) > 0 AND rel.reltoastrelid != 0 THEN true ELSE false END) AS toast_autovacuum, ARRAY[]::varchar[] AS seclabels,