lolor
lolor : Logical-replication-friendly replacement for PostgreSQL large objects
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 9580 | lolor | lolor | 1.2.2 |
ETL | PostgreSQL | C |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
| --s-dt- | No | Yes | No | Yes | no | yes |
| Relationships | |
|---|---|
| Schemas | lolor |
| See Also | lo pglogical spock mimeo pgl_ddl_deploy logical_ddl pg_surgery pg_repack |
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.2.2 |
18 17 16 15 14 | lolor |
- |
| RPM | PIGSTY | 18.6 |
18 17 16 15 14 | pgedge-$v |
- |
| DEB | PIGSTY | 18.6 |
18 17 16 15 14 | pgedge-$v |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| el8.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| el9.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| el9.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| el10.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| el10.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| d12.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| d12.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| d13.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| d13.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| u22.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| u22.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| u24.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| u24.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| u26.x86_64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
| u26.aarch64 | PIGSTY 18.6 | PIGSTY 17.11 | PIGSTY 16.15 | PIGSTY 15.19 | N/A |
Source
github.com/pgEdge/lolor
lolor-1.2.2.tar.gz
Install
Make sure PGDG and PIGSTY repo available:
Install this extension with pig:
Create this extension with:
Usage
Sources:
- v1.2.2 README
- Control file
- Version 1.2.2 migration
- Usage reference
- Release notes
lolor1.2.2 stores large-object chunks and metadata in ordinary tables so logical replication can include them. Enabling it replaces the database’s native large-object routines; it is a database-wide behavior change, not an independent object store.
Configure and Enable
Assign each writing node a distinct nonzero lolor.node before creating large objects. Upstream documents values from 1 through 2^28. Configure the server’s parameter and create the extension in each participating database:
The control file fixes schema lolor, declares trusted installation and disallows relocation. The upstream README requires PostgreSQL 16 or newer; the current Pigsty pgEdge bundle has separately tested builds for 15–18. That packaging result does not establish support for arbitrary stock PostgreSQL 15 installations.
Large Object Workflow
Standard calls such as lo_create(), lo_get(), lo_put() and lo_unlink() use the replacement routines. Descriptor-based access through lo_open(), loread(), lowrite() and lo_close() must stay within the same transaction. File import/export operates on server-side paths and remains subject to the relevant function and filesystem privileges.
The extension uses lolor.pg_largeobject and lolor.pg_largeobject_metadata. Existing catalog routines are retained with renamed originals so disabling or removing the extension can restore the native function names.
Replication
With a configured Spock replication set, include both tables:
Install compatible versions and coordinate node identifiers and object ownership on every node. Creating the extension alone does not create a logical-replication topology.
Upgrade and Boundaries
Version 1.2.2 repairs extension and major-version upgrade behavior and adds lolor.disable(), lolor.enable() and lolor.is_enabled(). Update lolor before running pg_upgrade; the fix does not retroactively repair a major upgrade already attempted with older extension files:
Disabling changes which native function names are active; it does not migrate stored large objects. Native large-object migration is not provided. Native large-object functionality and lolor storage cannot be used interchangeably while lolor is enabled. Upstream excludes ALTER LARGE OBJECT, GRANT ON LARGE OBJECT, COMMENT ON LARGE OBJECT and REVOKE ON LARGE OBJECT. Plan backup, restore and replication for both ordinary tables.