{"slug": "pg-lake", "name": "pg_lake", "category": "databases", "category_name": "Databases", "description": "", "recommenders": 6, "commenters": 13, "warners": 2, "score": 4.562, "rising": 0.69, "first": "2025-11-04", "latest": "2026-08-19", "why": "I love this. There are definitely shops where the data is a bit too much for postgres but something like Snowflake would be overkill.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 7, "neutral": 6, "compare": 0, "warn": 1}, "spark": [4, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "I love this. There are definitely shops where the data is a bit too much for postgres but something like Snowflake would be overkill.", "kind": "", "icon": true, "domain": null, "github_repo": "github.com/snowflake-labs/pg_lake", "official_url": "https://github.com/Snowflake-Labs/pg_lake", "pricing": "", "aliases": ["pg_lake"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 789805075, "item_id": 49362817, "url": "https://news.ycombinator.com/item?id=49362817", "by": "__s", "date": "2026-08-19", "stance": "recommend", "quote": "You can try similar things with pg_duckdb & pg_lake", "excerpt": "In theory yes, just need s3 fdw I demonstrated this with ClickHouse: https://github.com/ClickHouse/pg_clickhouse/blob/main/doc/offload-partition.sql We're working on a chdb based mechanism to copy to/from s3, maybe with fdw on top we can back table in s3 You can try similar things with pg_duckdb & pg_lake", "context": "", "use_case": "", "switched_from": "", "story": "PostgreSQL for Everything"}, {"id": 787864384, "item_id": 49241524, "url": "https://news.ycombinator.com/item?id=49241524", "by": "evertheylen", "date": "2026-08-10", "stance": "recommend", "quote": "I'm interested in pg_lake", "excerpt": "I'm interested in pg_lake so I wanted to check out your link, but it seems to be internal to snowflake?", "context": "", "use_case": "", "switched_from": "", "story": "How We Pushed CDC into Postgres"}, {"id": 750152690, "item_id": 46884543, "url": "https://news.ycombinator.com/item?id=46884543", "by": "ozgune", "date": "2026-02-04", "stance": "recommend", "quote": "pg_lake provides a solid open source implementation", "excerpt": "I feel this analysis is unfair to PostgreSQL. PG is highly extensible, allowing you to extend write-ahead logs, transaction subsystem, foreign data wrappers (FDW), indexes, types, replication, others. I understand that MySQL follows a specific pluggable storage architecture. I also understand that the direct equivalent in PG appears to be table access methods (TAM). However, you don't need to use TAM to build this - ", "context": "", "use_case": "", "switched_from": "", "story": "AliSQL: Alibaba's open-source MySQL with vector and DuckDB engines"}, {"id": 733954257, "item_id": 45872141, "url": "https://news.ycombinator.com/item?id=45872141", "by": "tehlike", "date": "2025-11-09", "stance": "recommend", "quote": "migrate bits and pieces to pg_lake", "excerpt": "Building https://pricetracker.wtf but life got in the way lately. Now looking to migrate bits and pieces to pg_lake from hydra/citus columnar.", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: What Are You Working On? (Nov 2025)"}, {"id": 733202864, "item_id": 45825179, "url": "https://news.ycombinator.com/item?id=45825179", "by": "ch71r22", "date": "2025-11-05", "stance": "recommend", "quote": "a solution like pg_lake would make your life a lot simpler", "excerpt": "Not sure if I have this right but this is how I understand it > So is the magic here that it's Postgres? What makes being able to query something in Postgres special? There are a bunch of pros and cons to using Postgres vs. DuckDB. The basic difference is OLTP vs. OLAP. It seems pg_lake aims to give you the best of both. You can combine analytics queries with transactional queries. pg_lake also stores and manages the", "context": "", "use_case": "Iceberg tables in Postgres", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 787877200, "item_id": 49242325, "url": "https://news.ycombinator.com/item?id=49242325", "by": "jauntywundrkind", "date": "2026-08-10", "stance": "warn", "quote": "all the CDC stuff is in the repo we don't get access to, that isn't open source", "excerpt": "Apologies, I could have introduced that better. The article links https://github.com/Snowflake-Labs/pg_lake but if you go looking for CDC, it's not there, and all you end up with is links to the private/closed repo that I just linked, in various corners and spots. The point is that all the CDC stuff is in the repo we don't get access to, that isn't open source: https://github.com/snowflake-eng/sfpg-extension-pg_lake_", "context": "", "use_case": "", "switched_from": "", "story": "How We Pushed CDC into Postgres"}, {"id": 773624896, "item_id": 48351556, "url": "https://news.ycombinator.com/item?id=48351556", "by": "buremba", "date": "2026-05-31", "stance": "warn", "quote": "it's missing a lot of pushdown capabilities which made OLAP queries expensive", "excerpt": "Looks interesting! It reminds me of pg_lake, which we evaluated for our startup https://lobu.ai but it's missing a lot of pushdown capabilities which made OLAP queries expensive. I also tried DuckLake but that required us to move away from PG-first approach. I was thinking of using Debezium to create Iceberg on S3 for our append-only PG tables and use DuckDB. I will try Streambed out as well!", "context": "startup that evaluated pg_lake", "use_case": "", "switched_from": "", "story": "Show HN: Streambed \u2013 Stream Postgres to Iceberg on S3, Supports Postgres Wire"}, {"id": 773034613, "item_id": 48314663, "url": "https://news.ycombinator.com/item?id=48314663", "by": "buremba", "date": "2026-05-28", "stance": "warn", "quote": "it's usually a trap as you can't get the value without using the vendor's cloud offerings", "excerpt": "The native extensions are fine but I don't have good experience with any third party extensions, so far tried Timescale, pg_lake, citus, and pgvectorscale. They look very appealing but it's usually a trap as you can't get the value without using the vendor's cloud offerings. I think if you grow enough to look for these extensions, it's usually better to bet on purpose-specific tooling. For example, I use DuckDB/Icebe", "context": "", "use_case": "", "switched_from": "", "story": "Just Use Postgres for Durable Workflows"}]}], "who": [], "tags": [], "use_cases": ["postgres lakehouse", "iceberg tables in postgres", "postgres iceberg data lake access", "data lake on postgres", "open source snowflake on postgres"], "compared": [{"slug": "duckdb", "name": "DuckDB", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "postgresql", "name": "PostgreSQL", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "snowflake", "name": "Snowflake", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "citus", "name": "Citus", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "clickhouse", "name": "ClickHouse", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 733025984, "item_id": 45814124, "url": "https://news.ycombinator.com/item?id=45814124", "by": "pgguru", "date": "2025-11-04", "stance": "neutral", "quote": "We have some level of external iceberg table read-only support", "excerpt": "We have some level of external iceberg table read-only support, but it is limited at the moment. See this example/caveat: https://github.com/Snowflake-Labs/pg_lake/blob/main/docs/file-formats-reference.md#external-iceberg-format", "context": "", "use_case": "", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}], "threads": [{"url": "https://news.ycombinator.com/item?id=45812606", "title": "Pg_lake: Postgres with Iceberg and data lake access", "mentions": 7}, {"url": "https://news.ycombinator.com/item?id=49238050", "title": "How We Pushed CDC into Postgres", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=49361279", "title": "PostgreSQL for Everything", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48841676", "title": "Postgres rewritten in Rust, now passing 100% of the Postgres regression tests", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48348429", "title": "Show HN: Streambed \u2013 Stream Postgres to Iceberg on S3, Supports Postgres Wire", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48313530", "title": "Just Use Postgres for Durable Workflows", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 4, "neutral": 3}, "2025-12": {}, "2026-01": {}, "2026-02": {"recommend": 1}, "2026-03": {}, "2026-04": {}, "2026-05": {"warn": 1}, "2026-06": {}, "2026-07": {"neutral": 1}, "2026-08": {"neutral": 2, "recommend": 2}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 789805075, "item_id": 49362817, "url": "https://news.ycombinator.com/item?id=49362817", "by": "__s", "date": "2026-08-19", "stance": "recommend", "quote": "You can try similar things with pg_duckdb & pg_lake", "excerpt": "In theory yes, just need s3 fdw I demonstrated this with ClickHouse: https://github.com/ClickHouse/pg_clickhouse/blob/main/doc/offload-partition.sql We're working on a chdb based mechanism to copy to/from s3, maybe with fdw on top we can back table in s3 You can try similar things with pg_duckdb & pg_lake", "context": "", "use_case": "", "switched_from": "", "story": "PostgreSQL for Everything"}, {"id": 787877200, "item_id": 49242325, "url": "https://news.ycombinator.com/item?id=49242325", "by": "jauntywundrkind", "date": "2026-08-10", "stance": "warn", "quote": "all the CDC stuff is in the repo we don't get access to, that isn't open source", "excerpt": "Apologies, I could have introduced that better. The article links https://github.com/Snowflake-Labs/pg_lake but if you go looking for CDC, it's not there, and all you end up with is links to the private/closed repo that I just linked, in various corners and spots. The point is that all the CDC stuff is in the repo we don't get access to, that isn't open source: https://github.com/snowflake-eng/sfpg-extension-pg_lake_", "context": "", "use_case": "", "switched_from": "", "story": "How We Pushed CDC into Postgres"}, {"id": 787868976, "item_id": 49241811, "url": "https://news.ycombinator.com/item?id=49241811", "by": "plaur782", "date": "2026-08-10", "stance": "neutral", "quote": "pg_lake is an open source Postgres extension", "excerpt": "pg_lake is an open source Postgres extension based on work done at Crunchy Data prior to the acquisition by Snowflake - you can find the repo here [1] and a blog post with more context on the project here [2] [1] https://github.com/Snowflake-Labs/pg_lake [2] https://www.snowflake.com/en/blog/engineering/pg-lake-postgres-lakehouse-integration/", "context": "", "use_case": "", "switched_from": "", "story": "How We Pushed CDC into Postgres"}, {"id": 787864384, "item_id": 49241524, "url": "https://news.ycombinator.com/item?id=49241524", "by": "evertheylen", "date": "2026-08-10", "stance": "recommend", "quote": "I'm interested in pg_lake", "excerpt": "I'm interested in pg_lake so I wanted to check out your link, but it seems to be internal to snowflake?", "context": "", "use_case": "", "switched_from": "", "story": "How We Pushed CDC into Postgres"}, {"id": 787827504, "item_id": 49239219, "url": "https://news.ycombinator.com/item?id=49239219", "by": "jauntywundrkind", "date": "2026-08-09", "stance": "neutral", "quote": "Although pg_lake is open source, worth noting that it heavily refers to but is missing CDC capabilities.", "excerpt": "Although pg_lake is open source, worth noting that it heavily refers to but is missing CDC capabilities. There's a bunch of comments/links to a closed https://github.com/snowflake-eng/sfpg-extension-pg_lake_replication", "context": "", "use_case": "Postgres lakehouse", "switched_from": "", "story": "How We Pushed CDC into Postgres"}, {"id": 781678098, "item_id": 48854881, "url": "https://news.ycombinator.com/item?id=48854881", "by": "FreakLegion", "date": "2026-07-09", "stance": "neutral", "quote": "pg_lake also uses DuckDB but keeps it external", "excerpt": "pg_mooncake (now effectively abandoned due to being acquired by Databricks, but still up at https://github.com/Mooncake-Labs/pg_mooncake) pulled the DuckDB engine into Postgres wholesale, if I remember right. pg_lake also uses DuckDB but keeps it external, routing through Postgres and managing Iceberg tables (but not the data itself) there (https://github.com/Snowflake-Labs/pg_lake). Both of these were neck and neck ", "context": "", "use_case": "", "switched_from": "", "story": "Postgres rewritten in Rust, now passing 100% of the Postgres regression tests"}, {"id": 773624896, "item_id": 48351556, "url": "https://news.ycombinator.com/item?id=48351556", "by": "buremba", "date": "2026-05-31", "stance": "warn", "quote": "it's missing a lot of pushdown capabilities which made OLAP queries expensive", "excerpt": "Looks interesting! It reminds me of pg_lake, which we evaluated for our startup https://lobu.ai but it's missing a lot of pushdown capabilities which made OLAP queries expensive. I also tried DuckLake but that required us to move away from PG-first approach. I was thinking of using Debezium to create Iceberg on S3 for our append-only PG tables and use DuckDB. I will try Streambed out as well!", "context": "startup that evaluated pg_lake", "use_case": "", "switched_from": "", "story": "Show HN: Streambed \u2013 Stream Postgres to Iceberg on S3, Supports Postgres Wire"}, {"id": 773034613, "item_id": 48314663, "url": "https://news.ycombinator.com/item?id=48314663", "by": "buremba", "date": "2026-05-28", "stance": "warn", "quote": "it's usually a trap as you can't get the value without using the vendor's cloud offerings", "excerpt": "The native extensions are fine but I don't have good experience with any third party extensions, so far tried Timescale, pg_lake, citus, and pgvectorscale. They look very appealing but it's usually a trap as you can't get the value without using the vendor's cloud offerings. I think if you grow enough to look for these extensions, it's usually better to bet on purpose-specific tooling. For example, I use DuckDB/Icebe", "context": "", "use_case": "", "switched_from": "", "story": "Just Use Postgres for Durable Workflows"}, {"id": 750152690, "item_id": 46884543, "url": "https://news.ycombinator.com/item?id=46884543", "by": "ozgune", "date": "2026-02-04", "stance": "recommend", "quote": "pg_lake provides a solid open source implementation", "excerpt": "I feel this analysis is unfair to PostgreSQL. PG is highly extensible, allowing you to extend write-ahead logs, transaction subsystem, foreign data wrappers (FDW), indexes, types, replication, others. I understand that MySQL follows a specific pluggable storage architecture. I also understand that the direct equivalent in PG appears to be table access methods (TAM). However, you don't need to use TAM to build this - ", "context": "", "use_case": "", "switched_from": "", "story": "AliSQL: Alibaba's open-source MySQL with vector and DuckDB engines"}, {"id": 733954257, "item_id": 45872141, "url": "https://news.ycombinator.com/item?id=45872141", "by": "tehlike", "date": "2025-11-09", "stance": "recommend", "quote": "migrate bits and pieces to pg_lake", "excerpt": "Building https://pricetracker.wtf but life got in the way lately. Now looking to migrate bits and pieces to pg_lake from hydra/citus columnar.", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: What Are You Working On? (Nov 2025)"}, {"id": 733202864, "item_id": 45825179, "url": "https://news.ycombinator.com/item?id=45825179", "by": "ch71r22", "date": "2025-11-05", "stance": "recommend", "quote": "a solution like pg_lake would make your life a lot simpler", "excerpt": "Not sure if I have this right but this is how I understand it > So is the magic here that it's Postgres? What makes being able to query something in Postgres special? There are a bunch of pros and cons to using Postgres vs. DuckDB. The basic difference is OLTP vs. OLAP. It seems pg_lake aims to give you the best of both. You can combine analytics queries with transactional queries. pg_lake also stores and manages the", "context": "", "use_case": "Iceberg tables in Postgres", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}, {"id": 733190688, "item_id": 45824418, "url": "https://news.ycombinator.com/item?id=45824418", "by": "mslot", "date": "2025-11-05", "stance": "neutral", "quote": "pg_lake maps types into their Parquet equivalent and otherwise stores as text representation", "excerpt": "In principle, Postgres has an infinite number of possible types :). pg_lake maps types into their Parquet equivalent and otherwise stores as text representation, there are a few limitations like very large numerics. https://github.com/Snowflake-Labs/pg_lake/blob/main/docs/iceberg-tables.md#iceberg-table-options", "context": "", "use_case": "Postgres Iceberg data lake access", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}, {"id": 733062784, "item_id": 45816424, "url": "https://news.ycombinator.com/item?id=45816424", "by": "derefr", "date": "2025-11-04", "stance": "neutral", "quote": "The \"continuous ETL\" process the GP is talking about would be exactly this kind of thing, and just as trivial.", "excerpt": "> This is true, but it's not clear where I'd use this in practice. e.g. if I need to run a complex ETL job, I probably wouldn't do it in pg_cron. Think \"tiered storage.\" See the example under https://github.com/Snowflake-Labs/pg_lake/blob/main/docs/iceberg-tables.md#loading-data-into-an-iceberg-table: select cron.schedule('flush-queue', '* * * * *', $$ with new_rows as ( delete from measurements_staging returning * )", "context": "", "use_case": "", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}, {"id": 733025584, "item_id": 45814099, "url": "https://news.ycombinator.com/item?id=45814099", "by": "fridder", "date": "2025-11-04", "stance": "recommend", "quote": "I love this. There are definitely shops where the data is a bit too much for postgres but something like Snowflake would be overkill.", "excerpt": "I love this. There are definitely shops where the data is a bit too much for postgres but something like Snowflake would be overkill. Wish this was around a couple years ago lol", "context": "", "use_case": "data lake on Postgres", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}, {"id": 733012672, "item_id": 45813292, "url": "https://news.ycombinator.com/item?id=45813292", "by": "onderkalaci", "date": "2025-11-04", "stance": "neutral", "quote": "Maybe this could help:", "excerpt": "Maybe this could help: https://github.com/Snowflake-Labs/pg_lake?tab=readme-ov-file#connecting-pg_lake-to-s3-or-compatible", "context": "", "use_case": "", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}, {"id": 733002720, "item_id": 45812670, "url": "https://news.ycombinator.com/item?id=45812670", "by": "ozgune", "date": "2025-11-04", "stance": "recommend", "quote": "Crunchy\u2019s Postgres extension is by far the most ahead solution in the market.", "excerpt": "This is huge! When people ask me what\u2019s missing in the Postgres market, I used to tell them \u201copen source Snowflake.\u201d Crunchy\u2019s Postgres extension is by far the most ahead solution in the market. Huge congrats to Snowflake and the Crunchy team on open sourcing this.", "context": "", "use_case": "open source Snowflake on Postgres", "switched_from": "", "story": "Pg_lake: Postgres with Iceberg and data lake access"}]}