lolor
lolor
lolor : Logical-replication-friendly replacement for PostgreSQL large objects
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 9570 | 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 | spock
snowflake
|
works on pgedge kernel fork. Requires lolor.node
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY
|
1.2.2 |
18
17
16
15
14
|
lolor |
- |
| RPM | PIGSTY
|
1.2.2 |
18
17
16
15
14
|
lolor_$v |
pgedge_$v |
| DEB | PIGSTY
|
1.2.2 |
18
17
16
15
14
|
pgedge-$v-lolor |
pgedge-$v |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
el8.x86_64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
el8.aarch64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
el9.x86_64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
el9.aarch64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
el10.x86_64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
el10.aarch64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
d12.x86_64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
d12.aarch64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
d13.x86_64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
d13.aarch64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
u22.x86_64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
u22.aarch64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
u24.x86_64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
u24.aarch64
|
MISS
|
PIGSTY 1.2.2
|
MISS
|
MISS
|
MISS
|
Source
pig build pkg lolor; # build rpm/debInstall
Make sure PGDG and PIGSTY repo available:
pig repo add pgsql -u # add both repo and update cacheInstall this extension with pig:
pig install lolor; # install via package name, for the active PG version
pig install lolor -v 17; # install for PG 17Create this extension with:
CREATE EXTENSION lolor;Usage
lolor: Logical-replication-friendly replacement for PostgreSQL large objects
Makes PostgreSQL large objects compatible with logical replication by storing them in non-catalog tables.
Enabling
CREATE EXTENSION lolor;Configure the node identifier in postgresql.conf:
lolor.node = 1 -- unique node ID (1 to 2^28)Optionally adjust the search path:
SET search_path = lolor, "$user", public, pg_catalog;Large Object Operations
Once installed, the standard lo_* functions are redirected to use lolor’s tables:
-- Create a large object
SELECT lo_create(0);
-- Import a file into a large object
SELECT lo_import('/path/to/file.bin');
-- Export a large object to a file
SELECT lo_export(oid, '/path/to/output.bin');
-- Open, read, write, seek, close
SELECT lo_open(oid, x'40000'::int); -- INV_WRITE
SELECT lowrite(fd, 'data'::bytea);
SELECT loread(fd, 1024);
SELECT lo_close(fd);
-- Delete a large object
SELECT lo_unlink(oid);Replication Setup
Add lolor tables to your replication set:
-- For spock/pgedge replication
SELECT spock.repset_add_table('default', 'lolor.pg_largeobject');
SELECT spock.repset_add_table('default', 'lolor.pg_largeobject_metadata');Internal Tables
The extension manages large objects in:
lolor.pg_largeobject- stores object data chunkslolor.pg_largeobject_metadata- stores object metadata
Limitations
- Native PostgreSQL large object functionality cannot be used while lolor is active
- Migration of existing native large objects to lolor is not supported
ALTER LARGE OBJECT,GRANT ON LARGE OBJECT,COMMENT ON LARGE OBJECT, andREVOKE ON LARGE OBJECTare not supported- Requires PostgreSQL 16 or newer
Last updated on