{"kind": "role", "major": "18", "item": {"slug": "pg_maintain", "name": "pg_maintain", "name_zh": "pg_maintain", "category": "Maintenance", "summary": "pg_maintain allows executing VACUUM , ANALYZE , CLUSTER , REFRESH MATERIALIZED VIEW , REINDEX , and LOCK TABLE on all relations, as if having MAINTAIN rights on those objects.", "aliases": [], "versions": {"17": {"facts": [{"label": "Name", "value": "pg_maintain"}, {"label": "Manual terminology", "value": "Predefined roles"}], "related": [{"url": "/docs/17/sql-vacuum.html", "label": "VACUUM"}, {"url": "/docs/17/sql-analyze.html", "label": "ANALYZE"}, {"url": "/docs/17/sql-cluster.html", "label": "CLUSTER"}, {"url": "/docs/17/sql-refreshmaterializedview.html", "label": "REFRESH MATERIALIZED VIEW"}, {"url": "/docs/17/sql-reindex.html", "label": "REINDEX"}, {"url": "/docs/17/sql-lock.html", "label": "LOCK TABLE"}], "release": {"ref": "PostgreSQL 17.11 Documentation", "label": "17.11", "major": "17", "channel": "stable", "revision": "64c01b6876124ed9b6190d7418108b81e2f35b6290b0562b8e4466a65e0eb603"}, "sources": [{"url": "/docs/17/predefined-roles.html#PREDEFINED-ROLES-TABLE", "label": "PostgreSQL 17.11 Documentation", "sha256": "64c01b6876124ed9b6190d7418108b81e2f35b6290b0562b8e4466a65e0eb603"}, {"url": "https://www.postgresql.org/docs/17/predefined-roles.html#PREDEFINED-ROLES-TABLE", "label": "PostgreSQL 17 online manual"}], "sections": [], "description": ["Allow executing VACUUM , ANALYZE , CLUSTER , REFRESH MATERIALIZED VIEW , REINDEX , and LOCK TABLE on all relations, as if having MAINTAIN rights on those objects, even without having it explicitly."]}, "18": {"facts": [{"label": "Name", "value": "pg_maintain"}, {"label": "Manual terminology", "value": "Predefined roles"}], "related": [{"url": "/docs/18/sql-vacuum.html", "label": "VACUUM"}, {"url": "/docs/18/sql-analyze.html", "label": "ANALYZE"}, {"url": "/docs/18/sql-cluster.html", "label": "CLUSTER"}, {"url": "/docs/18/sql-refreshmaterializedview.html", "label": "REFRESH MATERIALIZED VIEW"}, {"url": "/docs/18/sql-reindex.html", "label": "REINDEX"}, {"url": "/docs/18/sql-lock.html", "label": "LOCK TABLE"}], "release": {"ref": "PostgreSQL 18.6 Documentation", "label": "18.6", "major": "18", "channel": "stable", "revision": "b7ebd726e6017f55081b4034b96d6a3289ae7937a26adaf72e58b9a08e009c75"}, "sources": [{"url": "/docs/18/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL 18.6 Documentation", "sha256": "b7ebd726e6017f55081b4034b96d6a3289ae7937a26adaf72e58b9a08e009c75"}, {"url": "https://www.postgresql.org/docs/18/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL 18 online manual"}], "sections": [], "description": ["pg_maintain allows executing VACUUM , ANALYZE , CLUSTER , REFRESH MATERIALIZED VIEW , REINDEX , and LOCK TABLE on all relations, as if having MAINTAIN rights on those objects."]}, "19": {"facts": [{"label": "Name", "value": "pg_maintain"}, {"label": "Manual terminology", "value": "Predefined roles"}], "related": [{"url": "/docs/19/sql-vacuum.html", "label": "VACUUM"}, {"url": "/docs/19/sql-analyze.html", "label": "ANALYZE"}, {"url": "/docs/19/sql-cluster.html", "label": "CLUSTER"}, {"url": "/docs/19/sql-repack.html", "label": "REPACK"}, {"url": "/docs/19/sql-refreshmaterializedview.html", "label": "REFRESH MATERIALIZED VIEW"}, {"url": "/docs/19/sql-reindex.html", "label": "REINDEX"}, {"url": "/docs/19/sql-lock.html", "label": "LOCK TABLE"}], "release": {"ref": "PostgreSQL 19beta4 Documentation", "label": "19beta4", "major": "19", "channel": "preview", "revision": "f758684af9560594d8d6fa264fa05b8d9437883c8999dc9a387cc4ed235fcbe6"}, "sources": [{"url": "/docs/19/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL 19beta4 Documentation", "sha256": "f758684af9560594d8d6fa264fa05b8d9437883c8999dc9a387cc4ed235fcbe6"}, {"url": "https://www.postgresql.org/docs/19/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL 19 online manual"}], "sections": [], "description": ["pg_maintain allows executing VACUUM , ANALYZE , CLUSTER , REPACK , REFRESH MATERIALIZED VIEW , REINDEX , and LOCK TABLE on all relations, as if having MAINTAIN rights on those objects."]}, "20": {"facts": [{"label": "Name", "value": "pg_maintain"}, {"label": "Manual terminology", "value": "Predefined roles"}], "related": [{"url": "/docs/devel/sql-vacuum.html", "label": "VACUUM"}, {"url": "/docs/devel/sql-analyze.html", "label": "ANALYZE"}, {"url": "/docs/devel/sql-cluster.html", "label": "CLUSTER"}, {"url": "/docs/devel/sql-repack.html", "label": "REPACK"}, {"url": "/docs/devel/sql-refreshmaterializedview.html", "label": "REFRESH MATERIALIZED VIEW"}, {"url": "/docs/devel/sql-reindex.html", "label": "REINDEX"}, {"url": "/docs/devel/sql-lock.html", "label": "LOCK TABLE"}], "release": {"ref": "PostgreSQL 20devel Documentation", "label": "20devel", "major": "20", "channel": "devel", "revision": "6850783e0465f49a366ff444d6c3b5674ee11d2fc310d6fdaed5c84781e83ca7"}, "sources": [{"url": "/docs/devel/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL 20devel Documentation", "sha256": "6850783e0465f49a366ff444d6c3b5674ee11d2fc310d6fdaed5c84781e83ca7"}, {"url": "https://www.postgresql.org/docs/devel/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL devel online manual"}], "sections": [], "description": ["pg_maintain allows executing VACUUM , ANALYZE , CLUSTER , REPACK , REFRESH MATERIALIZED VIEW , REINDEX , and LOCK TABLE on all relations, as if having MAINTAIN rights on those objects."]}}, "content_hash": "69f17beb21d3eeeda1e7e1b74b617eb04b853d11aec2556d616af51d62d1f08f", "imported_at": "2026-09-27T09:57:59.049"}, "snapshot": {"facts": [{"label": "Name", "value": "pg_maintain"}, {"label": "Manual terminology", "value": "Predefined roles"}], "related": [{"url": "/docs/18/sql-vacuum.html", "label": "VACUUM"}, {"url": "/docs/18/sql-analyze.html", "label": "ANALYZE"}, {"url": "/docs/18/sql-cluster.html", "label": "CLUSTER"}, {"url": "/docs/18/sql-refreshmaterializedview.html", "label": "REFRESH MATERIALIZED VIEW"}, {"url": "/docs/18/sql-reindex.html", "label": "REINDEX"}, {"url": "/docs/18/sql-lock.html", "label": "LOCK TABLE"}], "release": {"ref": "PostgreSQL 18.6 Documentation", "label": "18.6", "major": "18", "channel": "stable", "revision": "b7ebd726e6017f55081b4034b96d6a3289ae7937a26adaf72e58b9a08e009c75"}, "sources": [{"url": "/docs/18/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL 18.6 Documentation", "sha256": "b7ebd726e6017f55081b4034b96d6a3289ae7937a26adaf72e58b9a08e009c75"}, {"url": "https://www.postgresql.org/docs/18/predefined-roles.html#PREDEFINED-ROLE-PG-MAINTAIN", "label": "PostgreSQL 18 online manual"}], "sections": [], "description": ["pg_maintain allows executing VACUUM , ANALYZE , CLUSTER , REFRESH MATERIALIZED VIEW , REINDEX , and LOCK TABLE on all relations, as if having MAINTAIN rights on those objects."]}, "comparison": {"left": "16", "right": "17", "status": "added", "diff": "--- PostgreSQL 16\n+++ PostgreSQL 17\n@@ -1 +1,14 @@\n-Not recorded in this version\n+{\n+  \"facts\": [\n+    {\n+      \"label\": \"Name\",\n+      \"value\": \"pg_maintain\"\n+    },\n+    {\n+      \"label\": \"Manual terminology\",\n+      \"value\": \"Predefined roles\"\n+    }\n+  ],\n+  \"signature\": null,\n+  \"tables\": null\n+}"}}