pg_readonly

pg_readonly

pg_readonly : cluster database read only

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
5120
pg_readonly
pg_readonly
1.0.4
ADMIN
PostgreSQL
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--sLd--
No
Yes
Yes
Yes
no
no
Relationships
See Also
pg_permissions
pg_upless
safeupdate
set_user
pgaudit
noset
sepgsql
login_hook

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
MIXED
1.0.4
18
17
16
15
14
pg_readonly-
RPM
PGDG
1.0.4
18
17
16
15
14
pg_readonly_$v-
DEB
PIGSTY
1.0.4
18
17
16
15
14
postgresql-$v-pg-readonly-
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
el8.aarch64
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
el9.x86_64
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
el9.aarch64
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
el10.x86_64
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
el10.aarch64
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
PGDG 1.0.4
d12.x86_64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
d12.aarch64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
d13.x86_64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
d13.aarch64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
u22.x86_64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
u22.aarch64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
u24.x86_64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
u24.aarch64
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PIGSTY 1.0.4
PackageVersionOSORGSIZEFile URL
pg_readonly_181.0.4el8.x86_64pgdg16.4 KiBpg_readonly_18-1.0.4-1PGDG.rhel8.10.x86_64.rpm
pg_readonly_181.0.3el8.x86_64pgdg16.6 KiBpg_readonly_18-1.0.3-5PGDG.rhel8.x86_64.rpm
pg_readonly_181.0.4el8.aarch64pgdg16.3 KiBpg_readonly_18-1.0.4-1PGDG.rhel8.10.aarch64.rpm
pg_readonly_181.0.3el8.aarch64pgdg16.5 KiBpg_readonly_18-1.0.3-5PGDG.rhel8.aarch64.rpm
pg_readonly_181.0.4el9.x86_64pgdg16.0 KiBpg_readonly_18-1.0.4-1PGDG.rhel9.7.x86_64.rpm
pg_readonly_181.0.3el9.x86_64pgdg16.5 KiBpg_readonly_18-1.0.3-5PGDG.rhel9.x86_64.rpm
pg_readonly_181.0.4el9.aarch64pgdg15.8 KiBpg_readonly_18-1.0.4-1PGDG.rhel9.7.aarch64.rpm
pg_readonly_181.0.3el9.aarch64pgdg16.0 KiBpg_readonly_18-1.0.3-5PGDG.rhel9.aarch64.rpm
pg_readonly_181.0.4el10.x86_64pgdg16.1 KiBpg_readonly_18-1.0.4-1PGDG.rhel10.1.x86_64.rpm
pg_readonly_181.0.3el10.x86_64pgdg16.8 KiBpg_readonly_18-1.0.3-5PGDG.rhel10.x86_64.rpm
pg_readonly_181.0.4el10.aarch64pgdg16.1 KiBpg_readonly_18-1.0.4-1PGDG.rhel10.1.aarch64.rpm
pg_readonly_181.0.3el10.aarch64pgdg16.7 KiBpg_readonly_18-1.0.3-5PGDG.rhel10.aarch64.rpm
postgresql-18-pg-readonly1.0.4d12.x86_64pigsty16.6 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~bookworm_amd64.deb
postgresql-18-pg-readonly1.0.4d12.aarch64pigsty16.5 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~bookworm_arm64.deb
postgresql-18-pg-readonly1.0.4d13.x86_64pigsty16.6 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~trixie_amd64.deb
postgresql-18-pg-readonly1.0.4d13.aarch64pigsty16.6 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~trixie_arm64.deb
postgresql-18-pg-readonly1.0.4u22.x86_64pigsty16.9 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~jammy_amd64.deb
postgresql-18-pg-readonly1.0.4u22.aarch64pigsty16.9 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~jammy_arm64.deb
postgresql-18-pg-readonly1.0.4u24.x86_64pigsty17.1 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~noble_amd64.deb
postgresql-18-pg-readonly1.0.4u24.aarch64pigsty17.0 KiBpostgresql-18-pg-readonly_1.0.4-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_readonly_171.0.4el8.x86_64pgdg16.4 KiBpg_readonly_17-1.0.4-1PGDG.rhel8.10.x86_64.rpm
pg_readonly_171.0.3el8.x86_64pgdg16.6 KiBpg_readonly_17-1.0.3-4PGDG.rhel8.x86_64.rpm
pg_readonly_171.0.4el8.aarch64pgdg16.4 KiBpg_readonly_17-1.0.4-1PGDG.rhel8.10.aarch64.rpm
pg_readonly_171.0.3el8.aarch64pgdg16.4 KiBpg_readonly_17-1.0.3-4PGDG.rhel8.aarch64.rpm
pg_readonly_171.0.4el9.x86_64pgdg16.1 KiBpg_readonly_17-1.0.4-1PGDG.rhel9.7.x86_64.rpm
pg_readonly_171.0.3el9.x86_64pgdg16.7 KiBpg_readonly_17-1.0.3-4PGDG.rhel9.x86_64.rpm
pg_readonly_171.0.4el9.aarch64pgdg15.9 KiBpg_readonly_17-1.0.4-1PGDG.rhel9.7.aarch64.rpm
pg_readonly_171.0.3el9.aarch64pgdg16.4 KiBpg_readonly_17-1.0.3-4PGDG.rhel9.aarch64.rpm
pg_readonly_171.0.4el10.x86_64pgdg16.2 KiBpg_readonly_17-1.0.4-1PGDG.rhel10.1.x86_64.rpm
pg_readonly_171.0.3el10.x86_64pgdg17.0 KiBpg_readonly_17-1.0.3-5PGDG.rhel10.x86_64.rpm
pg_readonly_171.0.4el10.aarch64pgdg16.2 KiBpg_readonly_17-1.0.4-1PGDG.rhel10.1.aarch64.rpm
pg_readonly_171.0.3el10.aarch64pgdg16.9 KiBpg_readonly_17-1.0.3-5PGDG.rhel10.aarch64.rpm
postgresql-17-pg-readonly1.0.4d12.x86_64pigsty16.6 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~bookworm_amd64.deb
postgresql-17-pg-readonly1.0.4d12.aarch64pigsty16.5 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~bookworm_arm64.deb
postgresql-17-pg-readonly1.0.4d13.x86_64pigsty16.6 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~trixie_amd64.deb
postgresql-17-pg-readonly1.0.4d13.aarch64pigsty16.6 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~trixie_arm64.deb
postgresql-17-pg-readonly1.0.4u22.x86_64pigsty19.9 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~jammy_amd64.deb
postgresql-17-pg-readonly1.0.4u22.aarch64pigsty19.9 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~jammy_arm64.deb
postgresql-17-pg-readonly1.0.4u24.x86_64pigsty17.2 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~noble_amd64.deb
postgresql-17-pg-readonly1.0.4u24.aarch64pigsty17.1 KiBpostgresql-17-pg-readonly_1.0.4-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_readonly_161.0.4el8.x86_64pgdg16.4 KiBpg_readonly_16-1.0.4-1PGDG.rhel8.10.x86_64.rpm
pg_readonly_161.0.3el8.x86_64pgdg16.4 KiBpg_readonly_16-1.0.3-2.rhel8.1.x86_64.rpm
pg_readonly_161.0.4el8.aarch64pgdg16.4 KiBpg_readonly_16-1.0.4-1PGDG.rhel8.10.aarch64.rpm
pg_readonly_161.0.3el8.aarch64pgdg16.2 KiBpg_readonly_16-1.0.3-2.rhel8.1.aarch64.rpm
pg_readonly_161.0.4el9.x86_64pgdg16.1 KiBpg_readonly_16-1.0.4-1PGDG.rhel9.7.x86_64.rpm
pg_readonly_161.0.3el9.x86_64pgdg16.5 KiBpg_readonly_16-1.0.3-2.rhel9.1.x86_64.rpm
pg_readonly_161.0.4el9.aarch64pgdg15.9 KiBpg_readonly_16-1.0.4-1PGDG.rhel9.7.aarch64.rpm
pg_readonly_161.0.3el9.aarch64pgdg16.1 KiBpg_readonly_16-1.0.3-2.rhel9.1.aarch64.rpm
pg_readonly_161.0.4el10.x86_64pgdg16.2 KiBpg_readonly_16-1.0.4-1PGDG.rhel10.1.x86_64.rpm
pg_readonly_161.0.3el10.x86_64pgdg17.0 KiBpg_readonly_16-1.0.3-5PGDG.rhel10.x86_64.rpm
pg_readonly_161.0.4el10.aarch64pgdg16.2 KiBpg_readonly_16-1.0.4-1PGDG.rhel10.1.aarch64.rpm
pg_readonly_161.0.3el10.aarch64pgdg16.9 KiBpg_readonly_16-1.0.3-5PGDG.rhel10.aarch64.rpm
postgresql-16-pg-readonly1.0.4d12.x86_64pigsty16.6 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~bookworm_amd64.deb
postgresql-16-pg-readonly1.0.4d12.aarch64pigsty16.5 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~bookworm_arm64.deb
postgresql-16-pg-readonly1.0.4d13.x86_64pigsty16.6 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~trixie_amd64.deb
postgresql-16-pg-readonly1.0.4d13.aarch64pigsty16.6 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~trixie_arm64.deb
postgresql-16-pg-readonly1.0.4u22.x86_64pigsty19.8 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~jammy_amd64.deb
postgresql-16-pg-readonly1.0.4u22.aarch64pigsty19.8 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~jammy_arm64.deb
postgresql-16-pg-readonly1.0.4u24.x86_64pigsty17.2 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~noble_amd64.deb
postgresql-16-pg-readonly1.0.4u24.aarch64pigsty17.1 KiBpostgresql-16-pg-readonly_1.0.4-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_readonly_151.0.4el8.x86_64pgdg16.4 KiBpg_readonly_15-1.0.4-1PGDG.rhel8.10.x86_64.rpm
pg_readonly_151.0.3el8.x86_64pgdg30.7 KiBpg_readonly_15-1.0.3-1.rhel8.x86_64.rpm
pg_readonly_151.0.1el8.x86_64pgdg29.2 KiBpg_readonly_15-1.0.1-1.rhel8.x86_64.rpm
pg_readonly_151.0.4el8.aarch64pgdg16.4 KiBpg_readonly_15-1.0.4-1PGDG.rhel8.10.aarch64.rpm
pg_readonly_151.0.3el8.aarch64pgdg30.4 KiBpg_readonly_15-1.0.3-1.rhel8.aarch64.rpm
pg_readonly_151.0.4el9.x86_64pgdg16.1 KiBpg_readonly_15-1.0.4-1PGDG.rhel9.7.x86_64.rpm
pg_readonly_151.0.3el9.x86_64pgdg31.3 KiBpg_readonly_15-1.0.3-1.rhel9.x86_64.rpm
pg_readonly_151.0.1el9.x86_64pgdg29.9 KiBpg_readonly_15-1.0.1-1.rhel9.x86_64.rpm
pg_readonly_151.0.4el9.aarch64pgdg15.9 KiBpg_readonly_15-1.0.4-1PGDG.rhel9.7.aarch64.rpm
pg_readonly_151.0.3el9.aarch64pgdg31.0 KiBpg_readonly_15-1.0.3-1.rhel9.aarch64.rpm
pg_readonly_151.0.4el10.x86_64pgdg16.2 KiBpg_readonly_15-1.0.4-1PGDG.rhel10.1.x86_64.rpm
pg_readonly_151.0.3el10.x86_64pgdg17.0 KiBpg_readonly_15-1.0.3-5PGDG.rhel10.x86_64.rpm
pg_readonly_151.0.4el10.aarch64pgdg16.2 KiBpg_readonly_15-1.0.4-1PGDG.rhel10.1.aarch64.rpm
pg_readonly_151.0.3el10.aarch64pgdg16.9 KiBpg_readonly_15-1.0.3-5PGDG.rhel10.aarch64.rpm
postgresql-15-pg-readonly1.0.4d12.x86_64pigsty16.6 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~bookworm_amd64.deb
postgresql-15-pg-readonly1.0.4d12.aarch64pigsty16.5 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~bookworm_arm64.deb
postgresql-15-pg-readonly1.0.4d13.x86_64pigsty16.6 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~trixie_amd64.deb
postgresql-15-pg-readonly1.0.4d13.aarch64pigsty16.5 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~trixie_arm64.deb
postgresql-15-pg-readonly1.0.4u22.x86_64pigsty19.8 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~jammy_amd64.deb
postgresql-15-pg-readonly1.0.4u22.aarch64pigsty19.8 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~jammy_arm64.deb
postgresql-15-pg-readonly1.0.4u24.x86_64pigsty17.2 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~noble_amd64.deb
postgresql-15-pg-readonly1.0.4u24.aarch64pigsty17.1 KiBpostgresql-15-pg-readonly_1.0.4-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_readonly_141.0.4el8.x86_64pgdg16.3 KiBpg_readonly_14-1.0.4-1PGDG.rhel8.10.x86_64.rpm
pg_readonly_141.0.3el8.x86_64pgdg30.5 KiBpg_readonly_14-1.0.3-1.rhel8.x86_64.rpm
pg_readonly_141.0.1el8.x86_64pgdg29.7 KiBpg_readonly_14-1.0.1-1.rhel8.x86_64.rpm
pg_readonly_141.0.4el8.aarch64pgdg16.3 KiBpg_readonly_14-1.0.4-1PGDG.rhel8.10.aarch64.rpm
pg_readonly_141.0.3el8.aarch64pgdg30.1 KiBpg_readonly_14-1.0.3-1.rhel8.aarch64.rpm
pg_readonly_141.0.4el9.x86_64pgdg16.1 KiBpg_readonly_14-1.0.4-1PGDG.rhel9.7.x86_64.rpm
pg_readonly_141.0.3el9.x86_64pgdg31.1 KiBpg_readonly_14-1.0.3-1.rhel9.x86_64.rpm
pg_readonly_141.0.1el9.x86_64pgdg29.9 KiBpg_readonly_14-1.0.1-1.rhel9.x86_64.rpm
pg_readonly_141.0.4el9.aarch64pgdg15.8 KiBpg_readonly_14-1.0.4-1PGDG.rhel9.7.aarch64.rpm
pg_readonly_141.0.3el9.aarch64pgdg30.7 KiBpg_readonly_14-1.0.3-1.rhel9.aarch64.rpm
pg_readonly_141.0.4el10.x86_64pgdg16.1 KiBpg_readonly_14-1.0.4-1PGDG.rhel10.1.x86_64.rpm
pg_readonly_141.0.3el10.x86_64pgdg16.9 KiBpg_readonly_14-1.0.3-5PGDG.rhel10.x86_64.rpm
pg_readonly_141.0.4el10.aarch64pgdg16.1 KiBpg_readonly_14-1.0.4-1PGDG.rhel10.1.aarch64.rpm
pg_readonly_141.0.3el10.aarch64pgdg16.8 KiBpg_readonly_14-1.0.3-5PGDG.rhel10.aarch64.rpm
postgresql-14-pg-readonly1.0.4d12.x86_64pigsty16.4 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~bookworm_amd64.deb
postgresql-14-pg-readonly1.0.4d12.aarch64pigsty16.2 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~bookworm_arm64.deb
postgresql-14-pg-readonly1.0.4d13.x86_64pigsty16.4 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~trixie_amd64.deb
postgresql-14-pg-readonly1.0.4d13.aarch64pigsty16.3 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~trixie_arm64.deb
postgresql-14-pg-readonly1.0.4u22.x86_64pigsty19.5 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~jammy_amd64.deb
postgresql-14-pg-readonly1.0.4u22.aarch64pigsty19.5 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~jammy_arm64.deb
postgresql-14-pg-readonly1.0.4u24.x86_64pigsty17.0 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~noble_amd64.deb
postgresql-14-pg-readonly1.0.4u24.aarch64pigsty16.9 KiBpostgresql-14-pg-readonly_1.0.4-1PIGSTY~noble_arm64.deb

Source

pig build pkg pg_readonly;		# build deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install pg_readonly;		# install via package name, for the active PG version

pig install pg_readonly -v 18;   # install for PG 18
pig install pg_readonly -v 17;   # install for PG 17
pig install pg_readonly -v 16;   # install for PG 16
pig install pg_readonly -v 15;   # install for PG 15
pig install pg_readonly -v 14;   # install for PG 14

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'pg_readonly';

Create this extension with:

CREATE EXTENSION pg_readonly;

Usage

pg_readonly: cluster database read only

pg_readonly sets all databases in a PostgreSQL cluster to read-only mode at the SQL level. It must be loaded via shared_preload_libraries. The read-only status is managed in shared memory with a global flag (not persisted across restarts).

Check Read-Only Status

SELECT get_cluster_readonly();
-- Returns false (read-write) or true (read-only)

Set Cluster Read-Only

SELECT set_cluster_readonly();

In read-only mode, SELECT statements are allowed (unless they call writing functions), but DML (INSERT, UPDATE, DELETE), DDL (including TRUNCATE), and DCL (GRANT, REVOKE) are blocked:

SELECT * FROM t;              -- OK
UPDATE t SET x = 33;          -- ERROR: pg_readonly: invalid statement because cluster is read-only
CREATE TABLE tmp(c text);     -- ERROR: pg_readonly: invalid statement because cluster is read-only

Note: set_cluster_readonly() terminates all open transactions.

Set Cluster Read-Write

SELECT unset_cluster_readonly();

Note: background processes (checkpointer, bgwriter, walwriter, autovacuum) continue running in read-only mode – the restriction is at the SQL statement level only.

Last updated on