pg_rewrite

pg_rewrite

pg_rewrite : Tool allows read write to the table during the rewriting

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
5020
pg_rewrite
pg_rewrite
2.1.0
ADMIN
BSD 3-Clause
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--sLd-r
No
Yes
Yes
Yes
yes
no
Relationships
See Also
pg_repack
pg_squeeze
pgfincore
pg_prewarm
pgstattuple
amcheck
pageinspect
pg_visibility

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
PGDG
2.1.0
18
17
16
15
14
pg_rewrite-
RPM
PGDG
2.1.0
18
17
16
15
14
pg_rewrite_$v-
DEB
PGDG
2.1.0
18
17
16
15
14
postgresql-$v-pg-rewrite-
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
el8.aarch64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
el9.x86_64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
el9.aarch64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
el10.x86_64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
el10.aarch64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
d12.x86_64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
d12.aarch64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
d13.x86_64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
d13.aarch64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
u22.x86_64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
u22.aarch64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
u24.x86_64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
u24.aarch64
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PGDG 2.1.0
PackageVersionOSORGSIZEFile URL
pg_rewrite_182.1.0el8.x86_64pgdg38.3 KiBpg_rewrite_18-2.1.0-1PGDG.rhel8.10.x86_64.rpm
pg_rewrite_182.0.0el8.x86_64pgdg37.6 KiBpg_rewrite_18-2.0.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_182.1.0el8.aarch64pgdg36.1 KiBpg_rewrite_18-2.1.0-1PGDG.rhel8.10.aarch64.rpm
pg_rewrite_182.0.0el8.aarch64pgdg35.4 KiBpg_rewrite_18-2.0.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_182.1.0el9.x86_64pgdg38.8 KiBpg_rewrite_18-2.1.0-1PGDG.rhel9.7.x86_64.rpm
pg_rewrite_182.0.0el9.x86_64pgdg38.1 KiBpg_rewrite_18-2.0.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_182.1.0el9.aarch64pgdg37.2 KiBpg_rewrite_18-2.1.0-1PGDG.rhel9.7.aarch64.rpm
pg_rewrite_182.0.0el9.aarch64pgdg36.4 KiBpg_rewrite_18-2.0.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_182.1.0el10.x86_64pgdg39.3 KiBpg_rewrite_18-2.1.0-1PGDG.rhel10.1.x86_64.rpm
pg_rewrite_182.0.0el10.x86_64pgdg39.0 KiBpg_rewrite_18-2.0.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_182.1.0el10.aarch64pgdg37.5 KiBpg_rewrite_18-2.1.0-1PGDG.rhel10.1.aarch64.rpm
pg_rewrite_182.0.0el10.aarch64pgdg37.1 KiBpg_rewrite_18-2.0.0-1PGDG.rhel10.aarch64.rpm
postgresql-18-pg-rewrite2.1.0d12.x86_64pgdg76.6 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg12+1_amd64.deb
postgresql-18-pg-rewrite2.1.0d12.aarch64pgdg71.8 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg12+1_arm64.deb
postgresql-18-pg-rewrite2.1.0d13.x86_64pgdg76.3 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg13+1_amd64.deb
postgresql-18-pg-rewrite2.1.0d13.aarch64pgdg71.7 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg13+1_arm64.deb
postgresql-18-pg-rewrite2.1.0u22.x86_64pgdg79.0 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg22.04+1_amd64.deb
postgresql-18-pg-rewrite2.1.0u22.aarch64pgdg74.0 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg22.04+1_arm64.deb
postgresql-18-pg-rewrite2.1.0u24.x86_64pgdg76.3 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg24.04+1_amd64.deb
postgresql-18-pg-rewrite2.1.0u24.aarch64pgdg71.6 KiBpostgresql-18-pg-rewrite_2.1.0-1.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_rewrite_172.1.0el8.x86_64pgdg37.9 KiBpg_rewrite_17-2.1.0-1PGDG.rhel8.10.x86_64.rpm
pg_rewrite_172.0.0el8.x86_64pigsty37.0 KiBpg_rewrite_17-2.0.0-1PIGSTY.el8.x86_64.rpm
pg_rewrite_172.0.0el8.x86_64pgdg37.2 KiBpg_rewrite_17-2.0.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_172.1.0el8.aarch64pgdg35.8 KiBpg_rewrite_17-2.1.0-1PGDG.rhel8.10.aarch64.rpm
pg_rewrite_172.0.0el8.aarch64pigsty35.0 KiBpg_rewrite_17-2.0.0-1PIGSTY.el8.aarch64.rpm
pg_rewrite_172.0.0el8.aarch64pgdg35.1 KiBpg_rewrite_17-2.0.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_172.1.0el9.x86_64pgdg38.5 KiBpg_rewrite_17-2.1.0-1PGDG.rhel9.7.x86_64.rpm
pg_rewrite_172.0.0el9.x86_64pigsty37.7 KiBpg_rewrite_17-2.0.0-1PIGSTY.el9.x86_64.rpm
pg_rewrite_172.0.0el9.x86_64pgdg37.9 KiBpg_rewrite_17-2.0.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_172.1.0el9.aarch64pgdg36.9 KiBpg_rewrite_17-2.1.0-1PGDG.rhel9.7.aarch64.rpm
pg_rewrite_172.0.0el9.aarch64pigsty36.1 KiBpg_rewrite_17-2.0.0-1PIGSTY.el9.aarch64.rpm
pg_rewrite_172.0.0el9.aarch64pgdg36.2 KiBpg_rewrite_17-2.0.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_172.1.0el10.x86_64pgdg39.0 KiBpg_rewrite_17-2.1.0-1PGDG.rhel10.1.x86_64.rpm
pg_rewrite_172.0.0el10.x86_64pgdg38.7 KiBpg_rewrite_17-2.0.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_172.1.0el10.aarch64pgdg37.5 KiBpg_rewrite_17-2.1.0-1PGDG.rhel10.1.aarch64.rpm
pg_rewrite_172.0.0el10.aarch64pgdg37.2 KiBpg_rewrite_17-2.0.0-1PGDG.rhel10.aarch64.rpm
postgresql-17-pg-rewrite2.1.0d12.x86_64pgdg75.6 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg12+1_amd64.deb
postgresql-17-pg-rewrite2.1.0d12.aarch64pgdg71.2 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg12+1_arm64.deb
postgresql-17-pg-rewrite2.1.0d13.x86_64pgdg75.5 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg13+1_amd64.deb
postgresql-17-pg-rewrite2.1.0d13.aarch64pgdg71.2 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg13+1_arm64.deb
postgresql-17-pg-rewrite2.1.0u22.x86_64pgdg90.4 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg22.04+1_amd64.deb
postgresql-17-pg-rewrite2.1.0u22.aarch64pgdg85.8 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg22.04+1_arm64.deb
postgresql-17-pg-rewrite2.1.0u24.x86_64pgdg75.7 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg24.04+1_amd64.deb
postgresql-17-pg-rewrite2.1.0u24.aarch64pgdg70.9 KiBpostgresql-17-pg-rewrite_2.1.0-1.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_rewrite_162.1.0el8.x86_64pgdg37.9 KiBpg_rewrite_16-2.1.0-1PGDG.rhel8.10.x86_64.rpm
pg_rewrite_162.0.0el8.x86_64pgdg37.3 KiBpg_rewrite_16-2.0.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_161.1.0el8.x86_64pgdg36.0 KiBpg_rewrite_16-1.1.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_162.1.0el8.aarch64pgdg35.8 KiBpg_rewrite_16-2.1.0-1PGDG.rhel8.10.aarch64.rpm
pg_rewrite_162.0.0el8.aarch64pgdg35.1 KiBpg_rewrite_16-2.0.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_161.1.0el8.aarch64pgdg34.1 KiBpg_rewrite_16-1.1.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_162.1.0el9.x86_64pgdg38.4 KiBpg_rewrite_16-2.1.0-1PGDG.rhel9.7.x86_64.rpm
pg_rewrite_162.0.0el9.x86_64pgdg37.9 KiBpg_rewrite_16-2.0.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_161.1.0el9.x86_64pgdg36.4 KiBpg_rewrite_16-1.1.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_162.1.0el9.aarch64pgdg36.9 KiBpg_rewrite_16-2.1.0-1PGDG.rhel9.7.aarch64.rpm
pg_rewrite_162.0.0el9.aarch64pgdg36.3 KiBpg_rewrite_16-2.0.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_161.1.0el9.aarch64pgdg34.9 KiBpg_rewrite_16-1.1.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_162.1.0el10.x86_64pgdg39.0 KiBpg_rewrite_16-2.1.0-1PGDG.rhel10.1.x86_64.rpm
pg_rewrite_162.0.0el10.x86_64pgdg38.7 KiBpg_rewrite_16-2.0.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_161.1.0el10.x86_64pgdg37.3 KiBpg_rewrite_16-1.1.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_162.1.0el10.aarch64pgdg37.5 KiBpg_rewrite_16-2.1.0-1PGDG.rhel10.1.aarch64.rpm
pg_rewrite_162.0.0el10.aarch64pgdg37.2 KiBpg_rewrite_16-2.0.0-1PGDG.rhel10.aarch64.rpm
pg_rewrite_161.1.0el10.aarch64pgdg35.9 KiBpg_rewrite_16-1.1.0-1PGDG.rhel10.aarch64.rpm
postgresql-16-pg-rewrite2.1.0d12.x86_64pgdg75.4 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg12+1_amd64.deb
postgresql-16-pg-rewrite2.1.0d12.aarch64pgdg71.1 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg12+1_arm64.deb
postgresql-16-pg-rewrite2.1.0d13.x86_64pgdg75.4 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg13+1_amd64.deb
postgresql-16-pg-rewrite2.1.0d13.aarch64pgdg71.0 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg13+1_arm64.deb
postgresql-16-pg-rewrite2.1.0u22.x86_64pgdg89.7 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg22.04+1_amd64.deb
postgresql-16-pg-rewrite2.1.0u22.aarch64pgdg85.0 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg22.04+1_arm64.deb
postgresql-16-pg-rewrite2.1.0u24.x86_64pgdg75.4 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg24.04+1_amd64.deb
postgresql-16-pg-rewrite2.1.0u24.aarch64pgdg70.8 KiBpostgresql-16-pg-rewrite_2.1.0-1.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_rewrite_152.1.0el8.x86_64pgdg38.0 KiBpg_rewrite_15-2.1.0-1PGDG.rhel8.10.x86_64.rpm
pg_rewrite_152.0.0el8.x86_64pgdg37.3 KiBpg_rewrite_15-2.0.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_151.1.0el8.x86_64pgdg36.0 KiBpg_rewrite_15-1.1.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_152.1.0el8.aarch64pgdg35.8 KiBpg_rewrite_15-2.1.0-1PGDG.rhel8.10.aarch64.rpm
pg_rewrite_152.0.0el8.aarch64pgdg35.1 KiBpg_rewrite_15-2.0.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_151.1.0el8.aarch64pgdg34.0 KiBpg_rewrite_15-1.1.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_152.1.0el9.x86_64pgdg38.6 KiBpg_rewrite_15-2.1.0-1PGDG.rhel9.7.x86_64.rpm
pg_rewrite_152.0.0el9.x86_64pgdg38.0 KiBpg_rewrite_15-2.0.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_151.1.0el9.x86_64pgdg36.5 KiBpg_rewrite_15-1.1.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_152.1.0el9.aarch64pgdg36.9 KiBpg_rewrite_15-2.1.0-1PGDG.rhel9.7.aarch64.rpm
pg_rewrite_152.0.0el9.aarch64pgdg36.2 KiBpg_rewrite_15-2.0.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_151.1.0el9.aarch64pgdg34.9 KiBpg_rewrite_15-1.1.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_152.1.0el10.x86_64pgdg38.9 KiBpg_rewrite_15-2.1.0-1PGDG.rhel10.1.x86_64.rpm
pg_rewrite_152.0.0el10.x86_64pgdg38.7 KiBpg_rewrite_15-2.0.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_151.1.0el10.x86_64pgdg37.5 KiBpg_rewrite_15-1.1.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_152.1.0el10.aarch64pgdg37.3 KiBpg_rewrite_15-2.1.0-1PGDG.rhel10.1.aarch64.rpm
pg_rewrite_152.0.0el10.aarch64pgdg37.0 KiBpg_rewrite_15-2.0.0-1PGDG.rhel10.aarch64.rpm
pg_rewrite_151.1.0el10.aarch64pgdg36.1 KiBpg_rewrite_15-1.1.0-1PGDG.rhel10.aarch64.rpm
postgresql-15-pg-rewrite2.1.0d12.x86_64pgdg75.4 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg12+1_amd64.deb
postgresql-15-pg-rewrite2.1.0d12.aarch64pgdg70.8 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg12+1_arm64.deb
postgresql-15-pg-rewrite2.1.0d13.x86_64pgdg75.2 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg13+1_amd64.deb
postgresql-15-pg-rewrite2.1.0d13.aarch64pgdg70.6 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg13+1_arm64.deb
postgresql-15-pg-rewrite2.1.0u22.x86_64pgdg89.5 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg22.04+1_amd64.deb
postgresql-15-pg-rewrite2.1.0u22.aarch64pgdg84.5 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg22.04+1_arm64.deb
postgresql-15-pg-rewrite2.1.0u24.x86_64pgdg75.2 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg24.04+1_amd64.deb
postgresql-15-pg-rewrite2.1.0u24.aarch64pgdg70.6 KiBpostgresql-15-pg-rewrite_2.1.0-1.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
pg_rewrite_142.1.0el8.x86_64pgdg38.1 KiBpg_rewrite_14-2.1.0-1PGDG.rhel8.10.x86_64.rpm
pg_rewrite_142.0.0el8.x86_64pgdg37.5 KiBpg_rewrite_14-2.0.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_141.1.0el8.x86_64pgdg36.2 KiBpg_rewrite_14-1.1.0-1PGDG.rhel8.x86_64.rpm
pg_rewrite_142.1.0el8.aarch64pgdg35.8 KiBpg_rewrite_14-2.1.0-1PGDG.rhel8.10.aarch64.rpm
pg_rewrite_142.0.0el8.aarch64pgdg35.2 KiBpg_rewrite_14-2.0.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_141.1.0el8.aarch64pgdg34.0 KiBpg_rewrite_14-1.1.0-1PGDG.rhel8.aarch64.rpm
pg_rewrite_142.1.0el9.x86_64pgdg38.7 KiBpg_rewrite_14-2.1.0-1PGDG.rhel9.7.x86_64.rpm
pg_rewrite_142.0.0el9.x86_64pgdg38.1 KiBpg_rewrite_14-2.0.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_141.1.0el9.x86_64pgdg36.8 KiBpg_rewrite_14-1.1.0-1PGDG.rhel9.x86_64.rpm
pg_rewrite_142.1.0el9.aarch64pgdg37.1 KiBpg_rewrite_14-2.1.0-1PGDG.rhel9.7.aarch64.rpm
pg_rewrite_142.0.0el9.aarch64pgdg36.5 KiBpg_rewrite_14-2.0.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_141.1.0el9.aarch64pgdg35.0 KiBpg_rewrite_14-1.1.0-1PGDG.rhel9.aarch64.rpm
pg_rewrite_142.1.0el10.x86_64pgdg39.2 KiBpg_rewrite_14-2.1.0-1PGDG.rhel10.1.x86_64.rpm
pg_rewrite_142.0.0el10.x86_64pgdg39.0 KiBpg_rewrite_14-2.0.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_141.1.0el10.x86_64pgdg37.6 KiBpg_rewrite_14-1.1.0-1PGDG.rhel10.x86_64.rpm
pg_rewrite_142.1.0el10.aarch64pgdg37.4 KiBpg_rewrite_14-2.1.0-1PGDG.rhel10.1.aarch64.rpm
pg_rewrite_142.0.0el10.aarch64pgdg37.2 KiBpg_rewrite_14-2.0.0-1PGDG.rhel10.aarch64.rpm
pg_rewrite_141.1.0el10.aarch64pgdg36.3 KiBpg_rewrite_14-1.1.0-1PGDG.rhel10.aarch64.rpm
postgresql-14-pg-rewrite2.1.0d12.x86_64pgdg75.6 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg12+1_amd64.deb
postgresql-14-pg-rewrite2.1.0d12.aarch64pgdg71.3 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg12+1_arm64.deb
postgresql-14-pg-rewrite2.1.0d13.x86_64pgdg75.2 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg13+1_amd64.deb
postgresql-14-pg-rewrite2.1.0d13.aarch64pgdg70.9 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg13+1_arm64.deb
postgresql-14-pg-rewrite2.1.0u22.x86_64pgdg89.6 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg22.04+1_amd64.deb
postgresql-14-pg-rewrite2.1.0u22.aarch64pgdg84.9 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg22.04+1_arm64.deb
postgresql-14-pg-rewrite2.1.0u24.x86_64pgdg75.4 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg24.04+1_amd64.deb
postgresql-14-pg-rewrite2.1.0u24.aarch64pgdg71.1 KiBpostgresql-14-pg-rewrite_2.1.0-1.pgdg24.04+1_arm64.deb

Source

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install this extension with pig:

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

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

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'pg_rewrite';

Create this extension with:

CREATE EXTENSION pg_rewrite;

Usage

pg_rewrite: Tool allows read write to the table during the rewriting

pg_rewrite requires wal_level = logical and must be added to shared_preload_libraries. Common use cases include changing column data types, partitioning tables, reordering columns, and moving tables to different tablespaces – all while allowing concurrent reads and writes.

Rewrite a Table

Create the target table with the desired schema, then call rewrite_table():

-- Source table
CREATE TABLE measurement (id int, city_id int NOT NULL, logdate date NOT NULL, peaktemp int, PRIMARY KEY(id, logdate));

-- Target table with new schema (e.g., bigint id + partitioning)
CREATE TABLE measurement_aux (id bigint, city_id int NOT NULL, logdate date NOT NULL, peaktemp int, PRIMARY KEY(id, logdate))
  PARTITION BY RANGE (logdate);

CREATE TABLE measurement_y2006m02 PARTITION OF measurement_aux FOR VALUES FROM ('2006-02-01') TO ('2006-03-01');

-- Perform the rewrite (copies data, applies concurrent changes, then renames)
SELECT rewrite_table('measurement', 'measurement_aux', 'measurement_old');

Both source and target tables must have an identity index (typically a primary key). The function copies all rows, replays concurrent changes via logical decoding, then atomically renames the tables.

Progress Monitoring

SELECT * FROM pg_rewrite_progress;

Shows ins_initial (initial rows copied), ins, upd, del (concurrent changes applied).

Configuration

  • rewrite.max_xlock_time – Maximum time (ms) the exclusive lock is held during the final rename stage. Default 0 (unlimited). Set to e.g. 100 to limit lock duration to 0.1s; the function will retry if exceeded.
SET rewrite.max_xlock_time TO 100;

Constraints Handling

  • PRIMARY KEY, UNIQUE, EXCLUDE: add to target table before calling rewrite_table()
  • CHECK, NOT NULL (PG18+), FOREIGN KEY: created automatically as NOT VALID; validate with ALTER TABLE ... VALIDATE CONSTRAINT ...
Last updated on