pg_lake_iceberg
pg_lake : Iceberg implementation in Postgres
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 2565 | pg_lake_iceberg | pg_lake | 3.5 |
OLAP | Apache-2.0 | C |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
| --s-d-- | No | Yes | No | Yes | no | no |
| Relationships | |
|---|---|
| Schemas | lake_iceberg pg_catalog |
| Requires | pg_lake_engine plpgsql |
| Need By | pg_lake_copy pg_lake_table |
| See Also | pg_ducklake pg_parquet pg_duckdb aws_s3 file_fdw pg_bulkload duckdb_fdw pg_mooncake pg_fact_loader pg_clickhouse |
| Siblings | pg_lake pg_extension_base pg_extension_updater pg_map pg_lake_engine pg_lake_table pg_lake_copy |
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 3.5 |
18 17 16 15 14 | pg_lake |
pg_lake_engine, plpgsql |
| RPM | PIGSTY | 3.5.3 |
18 17 16 15 14 | pg_lake_$v |
- |
| DEB | PIGSTY | 3.5.3 |
18 17 16 15 14 | postgresql-$v-pg-lake |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | N/A | N/A | N/A | N/A | N/A |
| el8.aarch64 | N/A | N/A | N/A | N/A | N/A |
| el9.x86_64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| el9.aarch64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| el10.x86_64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| el10.aarch64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| d12.x86_64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| d12.aarch64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| d13.x86_64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| d13.aarch64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| u22.x86_64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| u22.aarch64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| u24.x86_64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| u24.aarch64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| u26.x86_64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
| u26.aarch64 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | PIGSTY 3.5.3 | N/A | N/A |
Source
github.com/Snowflake-Labs/pg_lake/tree/main/pg_lake_iceberg
pg_lake-3.5.3.tar.gz
Install
Make sure PGDG and PIGSTY repo available:
Install this extension with pig:
Create this extension with:
Usage
Sources:
- Official Iceberg table guide
- Version 3.5 control file
- Iceberg metadata SQL API
- Version 3.4 catalog FDW SQL
pg_lake_iceberg implements Iceberg metadata, snapshots, manifests, partition specifications, and catalog integration inside PostgreSQL. The familiar CREATE TABLE ... USING iceberg syntax is exposed by the dependent pg_lake_table component; users normally install both through pg_lake.
The pg_lake release and package version is 3.5.3; the SQL extension version is 3.5. Keep the libraries and query server from the same release.
Create and Inspect an Iceberg Table
Inspect an Iceberg metadata file and its referenced state:
Metadata and Catalog API
iceberg_tables:pg_catalogview combining local managed tables and external catalog entries.iceberg_namespace_properties: catalog namespace properties.lake_iceberg.metadata(uri): raw Iceberg metadata JSON.lake_iceberg.files(uri): manifest path, content kind, data-file path/format, spec ID, record count, and file size.lake_iceberg.snapshots(uri): sequence number, snapshot ID, timestamp, and manifest-list path.lake_iceberg.data_file_stats(uri): per-file sequence and lower/upper bounds; execution is granted tolake_readrather thanPUBLIC.iceberg_catalog: version 3.4 FDW for named PostgreSQL, object-store, or REST catalog configurations.
Define a user-managed REST catalog server and keep credentials in a user mapping:
Catalog and Storage Caveats
- User-created catalog servers require their own
USER MAPPINGcredentials and do not fall back to the built-in REST catalog credential GUCs. - The built-in
postgres,object_store, andrestcatalogs map to immutable extension-owned servers. Configure them through the documented GUCs rather than altering those servers. - External modifications to
iceberg_tablesare blocked by default because changing metadata behind pg_lake can break transaction and query-engine consistency. - Iceberg writes should be batched. Each statement can add Parquet files and snapshots; regular
VACUUMcompacts small files and expires data according to table/GUC policy. - Iceberg has narrower representations for some PostgreSQL values. The default
out_of_range_values = 'error'preserves integrity;clampsilently changes out-of-range temporal values and replaces some unsupported values withNULL.
The 3.4 to 3.5 Iceberg SQL migration is empty, while patch-level catalog and object-deletion fixes require the matching 3.5.3 binaries.