pg_statement_rollback

pg_statement_rollback

pg_statement_rollback : Server side rollback at statement level for PostgreSQL like Oracle or DB2

Overview

ID Extension Package Version Category License Language
9130
pg_statement_rollback
pg_statement_rollback
1.5
SIM
ISC
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--sL---
No
Yes
Yes
No
no
no
Relationships
See Also
oracle_fdw
orafce
pgtt
session_variable
safeupdate
pg_dbms_metadata
pg_dbms_lock
pg_hint_plan

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
MIXED
1.5
18
17
16
15
14
pg_statement_rollback -
RPM
PGDG
1.5
18
17
16
15
14
pg_statement_rollback_$v -
DEB
PIGSTY
1.5
18
17
16
15
14
postgresql-$v-pg-statement-rollback -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PGDG 1.5
PGDG 1.4
PGDG 1.4
PGDG 1.4
PGDG 1.4
el8.aarch64
PGDG 1.5
PGDG 1.4
PGDG 1.4
PGDG 1.4
PGDG 1.4
el9.x86_64
PGDG 1.5
PGDG 1.4
PGDG 1.4
PGDG 1.4
PGDG 1.4
el9.aarch64
PGDG 1.5
PGDG 1.4
PGDG 1.4
PGDG 1.4
PGDG 1.4
el10.x86_64
PGDG 1.5
PGDG 1.4
PGDG 1.4
PGDG 1.4
PGDG 1.4
el10.aarch64
PGDG 1.5
PGDG 1.4
PGDG 1.4
PGDG 1.4
PGDG 1.4
d12.x86_64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
d12.aarch64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
d13.x86_64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
d13.aarch64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
u22.x86_64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
u22.aarch64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
u24.x86_64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
u24.aarch64
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
PIGSTY 1.5
Package Version OS ORG SIZE File URL
pg_statement_rollback_18 1.5 el8.x86_64 pgdg 20.1 KiB pg_statement_rollback_18-1.5-1PGDG.rhel8.x86_64.rpm
pg_statement_rollback_18 1.5 el8.aarch64 pgdg 19.8 KiB pg_statement_rollback_18-1.5-1PGDG.rhel8.aarch64.rpm
pg_statement_rollback_18 1.5 el9.x86_64 pgdg 19.5 KiB pg_statement_rollback_18-1.5-1PGDG.rhel9.x86_64.rpm
pg_statement_rollback_18 1.5 el9.aarch64 pgdg 19.1 KiB pg_statement_rollback_18-1.5-1PGDG.rhel9.aarch64.rpm
pg_statement_rollback_18 1.5 el10.x86_64 pgdg 19.8 KiB pg_statement_rollback_18-1.5-1PGDG.rhel10.x86_64.rpm
pg_statement_rollback_18 1.5 el10.aarch64 pgdg 19.8 KiB pg_statement_rollback_18-1.5-1PGDG.rhel10.aarch64.rpm
postgresql-18-pg-statement-rollback 1.5 d12.x86_64 pigsty 28.1 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~bookworm_amd64.deb
postgresql-18-pg-statement-rollback 1.5 d12.aarch64 pigsty 27.9 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~bookworm_arm64.deb
postgresql-18-pg-statement-rollback 1.5 d13.x86_64 pigsty 28.1 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~trixie_amd64.deb
postgresql-18-pg-statement-rollback 1.5 d13.aarch64 pigsty 28.0 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~trixie_arm64.deb
postgresql-18-pg-statement-rollback 1.5 u22.x86_64 pigsty 28.5 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~jammy_amd64.deb
postgresql-18-pg-statement-rollback 1.5 u22.aarch64 pigsty 28.6 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~jammy_arm64.deb
postgresql-18-pg-statement-rollback 1.5 u24.x86_64 pigsty 28.4 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~noble_amd64.deb
postgresql-18-pg-statement-rollback 1.5 u24.aarch64 pigsty 28.4 KiB postgresql-18-pg-statement-rollback_1.5-2PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pg_statement_rollback_17 1.4 el8.x86_64 pgdg 19.6 KiB pg_statement_rollback_17-1.4-3PGDG.rhel8.x86_64.rpm
pg_statement_rollback_17 1.4 el8.aarch64 pgdg 19.5 KiB pg_statement_rollback_17-1.4-3PGDG.rhel8.aarch64.rpm
pg_statement_rollback_17 1.4 el9.x86_64 pgdg 19.5 KiB pg_statement_rollback_17-1.4-3PGDG.rhel9.x86_64.rpm
pg_statement_rollback_17 1.4 el9.aarch64 pgdg 19.4 KiB pg_statement_rollback_17-1.4-3PGDG.rhel9.aarch64.rpm
pg_statement_rollback_17 1.4 el10.x86_64 pgdg 19.8 KiB pg_statement_rollback_17-1.4-4PGDG.rhel10.x86_64.rpm
pg_statement_rollback_17 1.4 el10.aarch64 pgdg 19.8 KiB pg_statement_rollback_17-1.4-4PGDG.rhel10.aarch64.rpm
postgresql-17-pg-statement-rollback 1.5 d12.x86_64 pigsty 28.4 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~bookworm_amd64.deb
postgresql-17-pg-statement-rollback 1.5 d12.aarch64 pigsty 27.9 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~bookworm_arm64.deb
postgresql-17-pg-statement-rollback 1.5 d13.x86_64 pigsty 28.5 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~trixie_amd64.deb
postgresql-17-pg-statement-rollback 1.5 d13.aarch64 pigsty 27.9 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~trixie_arm64.deb
postgresql-17-pg-statement-rollback 1.5 u22.x86_64 pigsty 31.8 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~jammy_amd64.deb
postgresql-17-pg-statement-rollback 1.5 u22.aarch64 pigsty 31.7 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~jammy_arm64.deb
postgresql-17-pg-statement-rollback 1.5 u24.x86_64 pigsty 28.8 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~noble_amd64.deb
postgresql-17-pg-statement-rollback 1.5 u24.aarch64 pigsty 28.4 KiB postgresql-17-pg-statement-rollback_1.5-2PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pg_statement_rollback_16 1.4 el8.x86_64 pgdg 19.5 KiB pg_statement_rollback_16-1.4-2PGDG.rhel8.x86_64.rpm
pg_statement_rollback_16 1.4 el8.aarch64 pgdg 19.4 KiB pg_statement_rollback_16-1.4-2PGDG.rhel8.aarch64.rpm
pg_statement_rollback_16 1.4 el9.x86_64 pgdg 19.3 KiB pg_statement_rollback_16-1.4-2PGDG.rhel9.x86_64.rpm
pg_statement_rollback_16 1.4 el9.aarch64 pgdg 19.1 KiB pg_statement_rollback_16-1.4-2PGDG.rhel9.aarch64.rpm
pg_statement_rollback_16 1.4 el10.x86_64 pgdg 19.8 KiB pg_statement_rollback_16-1.4-4PGDG.rhel10.x86_64.rpm
pg_statement_rollback_16 1.4 el10.aarch64 pgdg 19.9 KiB pg_statement_rollback_16-1.4-4PGDG.rhel10.aarch64.rpm
postgresql-16-pg-statement-rollback 1.5 d12.x86_64 pigsty 28.4 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~bookworm_amd64.deb
postgresql-16-pg-statement-rollback 1.5 d12.aarch64 pigsty 27.9 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~bookworm_arm64.deb
postgresql-16-pg-statement-rollback 1.5 d13.x86_64 pigsty 28.4 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~trixie_amd64.deb
postgresql-16-pg-statement-rollback 1.5 d13.aarch64 pigsty 27.9 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~trixie_arm64.deb
postgresql-16-pg-statement-rollback 1.5 u22.x86_64 pigsty 31.8 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~jammy_amd64.deb
postgresql-16-pg-statement-rollback 1.5 u22.aarch64 pigsty 31.7 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~jammy_arm64.deb
postgresql-16-pg-statement-rollback 1.5 u24.x86_64 pigsty 28.8 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~noble_amd64.deb
postgresql-16-pg-statement-rollback 1.5 u24.aarch64 pigsty 28.4 KiB postgresql-16-pg-statement-rollback_1.5-2PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pg_statement_rollback_15 1.4 el8.x86_64 pgdg 19.3 KiB pg_statement_rollback_15-1.4-1.rhel8.x86_64.rpm
pg_statement_rollback_15 1.3 el8.x86_64 pgdg 36.4 KiB pg_statement_rollback_15-1.3-1.rhel8.x86_64.rpm
pg_statement_rollback_15 1.4 el8.aarch64 pgdg 19.1 KiB pg_statement_rollback_15-1.4-1.rhel8.aarch64.rpm
pg_statement_rollback_15 1.3 el8.aarch64 pgdg 36.2 KiB pg_statement_rollback_15-1.3-1.rhel8.aarch64.rpm
pg_statement_rollback_15 1.4 el9.x86_64 pgdg 19.3 KiB pg_statement_rollback_15-1.4-1.rhel9.x86_64.rpm
pg_statement_rollback_15 1.3 el9.x86_64 pgdg 37.2 KiB pg_statement_rollback_15-1.3-1.rhel9.x86_64.rpm
pg_statement_rollback_15 1.4 el9.aarch64 pgdg 19.1 KiB pg_statement_rollback_15-1.4-1.rhel9.aarch64.rpm
pg_statement_rollback_15 1.3 el9.aarch64 pgdg 36.9 KiB pg_statement_rollback_15-1.3-1.rhel9.aarch64.rpm
pg_statement_rollback_15 1.4 el10.x86_64 pgdg 19.8 KiB pg_statement_rollback_15-1.4-4PGDG.rhel10.x86_64.rpm
pg_statement_rollback_15 1.4 el10.aarch64 pgdg 19.8 KiB pg_statement_rollback_15-1.4-4PGDG.rhel10.aarch64.rpm
postgresql-15-pg-statement-rollback 1.5 d12.x86_64 pigsty 27.9 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~bookworm_amd64.deb
postgresql-15-pg-statement-rollback 1.5 d12.aarch64 pigsty 27.3 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~bookworm_arm64.deb
postgresql-15-pg-statement-rollback 1.5 d13.x86_64 pigsty 27.9 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~trixie_amd64.deb
postgresql-15-pg-statement-rollback 1.5 d13.aarch64 pigsty 27.4 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~trixie_arm64.deb
postgresql-15-pg-statement-rollback 1.5 u22.x86_64 pigsty 31.1 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~jammy_amd64.deb
postgresql-15-pg-statement-rollback 1.5 u22.aarch64 pigsty 30.9 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~jammy_arm64.deb
postgresql-15-pg-statement-rollback 1.5 u24.x86_64 pigsty 28.3 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~noble_amd64.deb
postgresql-15-pg-statement-rollback 1.5 u24.aarch64 pigsty 27.9 KiB postgresql-15-pg-statement-rollback_1.5-2PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pg_statement_rollback_14 1.4 el8.x86_64 pgdg 19.3 KiB pg_statement_rollback_14-1.4-1.rhel8.x86_64.rpm
pg_statement_rollback_14 1.3 el8.x86_64 pgdg 37.0 KiB pg_statement_rollback_14-1.3-1.rhel8.x86_64.rpm
pg_statement_rollback_14 1.4 el8.aarch64 pgdg 19.1 KiB pg_statement_rollback_14-1.4-1.rhel8.aarch64.rpm
pg_statement_rollback_14 1.3 el8.aarch64 pgdg 36.1 KiB pg_statement_rollback_14-1.3-1.rhel8.aarch64.rpm
pg_statement_rollback_14 1.4 el9.x86_64 pgdg 19.3 KiB pg_statement_rollback_14-1.4-1.rhel9.x86_64.rpm
pg_statement_rollback_14 1.4 el9.aarch64 pgdg 19.1 KiB pg_statement_rollback_14-1.4-1.rhel9.aarch64.rpm
pg_statement_rollback_14 1.3 el9.aarch64 pgdg 36.8 KiB pg_statement_rollback_14-1.3-1.rhel9.aarch64.rpm
pg_statement_rollback_14 1.4 el10.x86_64 pgdg 19.8 KiB pg_statement_rollback_14-1.4-4PGDG.rhel10.x86_64.rpm
pg_statement_rollback_14 1.4 el10.aarch64 pgdg 19.8 KiB pg_statement_rollback_14-1.4-4PGDG.rhel10.aarch64.rpm
postgresql-14-pg-statement-rollback 1.5 d12.x86_64 pigsty 27.9 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~bookworm_amd64.deb
postgresql-14-pg-statement-rollback 1.5 d12.aarch64 pigsty 27.3 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~bookworm_arm64.deb
postgresql-14-pg-statement-rollback 1.5 d13.x86_64 pigsty 27.9 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~trixie_amd64.deb
postgresql-14-pg-statement-rollback 1.5 d13.aarch64 pigsty 27.4 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~trixie_arm64.deb
postgresql-14-pg-statement-rollback 1.5 u22.x86_64 pigsty 31.0 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~jammy_amd64.deb
postgresql-14-pg-statement-rollback 1.5 u22.aarch64 pigsty 30.9 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~jammy_arm64.deb
postgresql-14-pg-statement-rollback 1.5 u24.x86_64 pigsty 28.3 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~noble_amd64.deb
postgresql-14-pg-statement-rollback 1.5 u24.aarch64 pigsty 27.9 KiB postgresql-14-pg-statement-rollback_1.5-2PIGSTY~noble_arm64.deb

Source

pig build pkg pg_statement_rollback;		# 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_statement_rollback;		# install via package name, for the active PG version

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

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'pg_statement_rollback';

This extension does not need CREATE EXTENSION DDL command

Usage

pg_statement_rollback: Server side rollback at statement level for PostgreSQL like Oracle or DB2

Provides automatic server-side savepoints before each statement, allowing individual statement failures without aborting the entire transaction.

Enabling

LOAD 'pg_statement_rollback.so';
SET pg_statement_rollback.enabled TO on;

Or in postgresql.conf for all sessions:

session_preload_libraries = 'pg_statement_rollback'
pg_statement_rollback.enabled = on

Basic Usage

BEGIN;
CREATE TABLE test(id integer);
INSERT INTO test SELECT 1;
SELECT COUNT(*) FROM test;         -- returns 1

INSERT INTO test SELECT 'wrong';   -- ERROR: invalid input syntax
ROLLBACK TO SAVEPOINT "PgSLRAutoSvpt";  -- rollback only the failed statement

SELECT COUNT(*) FROM test;         -- still returns 1
COMMIT;

Without this extension, the error would abort the entire transaction and all subsequent statements would fail with “current transaction is aborted”.

Configuration

-- Enable/disable at any time in a session
SET pg_statement_rollback.enabled TO off;

-- Change the savepoint name (superuser only)
SET pg_statement_rollback.savepoint_name TO 'my_savepoint';

-- Limit savepoints to write-only statements (default: on)
SET pg_statement_rollback.enable_writeonly TO off;

Key Behaviors

  • Automatic savepoints are created server-side with minimal performance overhead
  • By default, savepoints are only created after write statements (INSERT, UPDATE, DELETE, etc.)
  • When enable_writeonly is on, SELECT statements do not trigger automatic savepoints
  • The client must still call ROLLBACK TO SAVEPOINT "PgSLRAutoSvpt" when handling errors
Last updated on