What's Changed
- Push down string_agg to pgduck_server by @sfc-gh-okalaci in #440
- Fix/40 autovacuum logging content filter by @sfc-gh-okalaci in #444
- Add sinh, cosh, tanh pushdown support by @sfc-gh-amzheng in #438
- Fix oid type mapping: BIGINT in Parquet, 'long' in Iceberg metadata by @sfc-gh-amzheng in #443
- Eagerly remove orphaned write-through cache staging files by @sfc-gh-okalaci in #445
- Add CODEOWNERS file by @sfc-gh-dachristensen in #452
- Update pytest_all.yml by @sfc-gh-nsaliaris in #453
- Revert CDWRegionTest environments; skip cross-region tests when creds absent by @sfc-gh-dachristensen in #458
- fix: disallow copy unbounded numerics in nested types by @sfc-gh-abozkurt in #448
- Bump extension versions to 3.5 -- let's not forget these! by @sfc-gh-okalaci in #450
- Fix memory leaks during Iceberg manifest processing by @marknefedov in #454
- duckdb_pglake: bind size-clamp on multi-dimensional arrays by @sfc-gh-okalaci in #461
- Back off base worker restarts with an exponential delay after failures by @sfc-gh-mslot in #447
- Disable the CSV sniffer when reading our own CSVs by column map by @sfc-gh-mslot in #463
- pg_extension_base: keep default_version at 3.5 instead of bumping to 3.6 by @sfc-gh-mslot in #464
- Fix flaky test_sequences_serial_and_generated_columns[rest] by @sfc-gh-mslot in #466
- pg_lake_engine: precompute per-column DuckDB serialization choice by @marknefedov in #476
- pg_lake_engine: hoist element container check out of array output loop by @marknefedov in #479
- pgduck_server: fix typo and stray newlines in socket error messages by @marknefedov in #469
- pgduck_server: free the logical type alias in blob_to_text by @marknefedov in #472
- pg_lake_iceberg: fix off-by-one overflow on partition field names by @marknefedov in #467
- pgduck_server: free partial output buffer on nested conversion errors by @marknefedov in #473
- pgduck_server: stop leaking the per-connection cancellation token by @marknefedov in #471
- pg_lake_table: reset errno before parsing column_stats_mode length by @marknefedov in #468
- pg_lake_engine: don't leak the PGresult when COPY stats parsing throws by @marknefedov in #474
- pgduck_server: free query result when sending CopyDone fails by @marknefedov in #470
- Scale Iceberg TRUNCATE metadata cleanup by @marknefedov in #457
- pg_lake_table: hoist loop-invariant lookups out of data file pruning by @marknefedov in #477
- Document file descriptor limits for partitioned writes by @marknefedov in #487
- pgduck: never re-send a COPY (data-file write) on send failure by @sfc-gh-mslot in #485
- Support iceberg schema type change by @sfc-gh-abozkurt in #223
- pg_extension_base: fix flaky oneshot-worker tests (poll instead of fixed sleep) by @sfc-gh-mslot in #475
- Remove redundant pre-commit stage from pgindent hook by @sfc-gh-dachristensen in #491
- pg_lake_table: mark fully matched data files with a linear merge by @marknefedov in #478
- pg_lake_engine: cap the CSV read buffer DuckDB allocates by @sfc-gh-okalaci in #492
- Fix data race on PgLakeQueryListener active query state by @sfc-gh-mslot in #390
- pg_lake_iceberg: leave dropped attributes out of Iceberg structs by @sfc-gh-mslot in #501
- pg_extension_base: find control files via extension_control_path by @sfc-gh-mslot in #496
- pg_lake_iceberg: skip dropped attributes in struct value serde by @sfc-gh-dachristensen in #504
- pg_lake_iceberg: read object store catalog.json without the file cache by @sfc-gh-okalaci in #480
- pg_lake_iceberg: one-sided primitives for the stored Iceberg representation of a type by @sfc-gh-okalaci in #495
- test_common: bump Apache Polaris REST catalog to 1.7.0 by @sfc-gh-agedemenli in #508
- pg_lake_table: bound memory used by the pre-commit data file diff by @sfc-gh-mslot in #511
- pg_lake_table: fix preload order for the test hideable extension by @sfc-gh-dachristensen in #520
- pg_extension_base: wait for a deregistered base worker to exit by @sfc-gh-dachristensen in #505
- Make Azure append blob writes safe to retry by @sfc-gh-mslot in #514
- Fix nested timetz reads from Iceberg by @marknefedov in #482
- pg_extension_base: let attached workers inherit caller writability by @sfc-gh-mslot in #525
- Use pointer keys in the object storage path hashes by @sfc-gh-mslot in #528
- Preserve numeric precision and scale inside composite types by @sfc-gh-mslot in #526
- Bump PostgreSQL patch versions in CI image to 16.15/17.11/18.6 by @sfc-gh-dachristensen in #532
- Use scratch memory contexts at commit time by @sfc-gh-mslot in #527
- Assert that a path hash key is not NULL by @sfc-gh-mslot in #531
- Expose query progress and connection id as SQL functions by @sfc-gh-mslot in #389
- pg_lake_engine: fix unnest() of an array of a composite type by @sfc-gh-dachristensen in #533
- Hoist per-value type resolution out of PGDuckSerialize by @sfc-gh-mslot in #541
- duckdb_pglake: batch file removal via S3 DeleteObjects by @sfc-gh-dachristensen in #509
- duckdb_pglake: bound postgres_scanner output chunks by size by @sfc-gh-abozkurt in #542
- pg_lake_table: do not push down SQL/JSON expressions by @sfc-gh-mslot in #545
- duckdb_pglake: size the Postgres ctid scan from the relation size by @sfc-gh-mslot in #547
- Batch object-store deletions during cleanup by @sfc-gh-mslot in #539
- Fix write-through cache poisoning and unvalidated Avro block headers by @sfc-gh-okalaci in #550
- Support vended credentials from Iceberg REST catalog by @sfc-gh-npuka in #395
- duckdb_pglake: fix libpq resource leaks in duckdb-postgres by @sfc-gh-mslot in #558
- pgduck_server: manage the file cache by inodes as well as bytes by @sfc-gh-mslot in #513
- pg_lake_engine: write domain-over-array columns as lists by @sfc-gh-mslot in #500
- Wait for reloaded GUCs before the first REST catalog test runs by @sfc-gh-mslot in #560
- duckdb_pglake: verify a copy delivered the whole source before caching it by @sfc-gh-okalaci in #556
- pg_extension_base: do not wait forever for a worker that never attaches by @sfc-gh-mslot in #567
- Support configurable REST catalog base URI (Lakekeeper, Nessie, Unity) by @sfc-gh-rbachala in #507
- flaky tests: take writable REST catalog metadata from the loadTable response by @sfc-gh-mslot in #573
- flaky tests: do not start a database starter into a concurrent DROP by @sfc-gh-mslot in #575
- pg_extension_base: recover from a worker launch that never runs by @sfc-gh-abozkurt in #570
- pg_extension_base: guard GetBaseWorkerPid and document its pid contract by @sfc-gh-mslot in #564
- pgduck_server: stop interrupting a disconnected DuckDB connection by @sfc-gh-mslot in #561
- docs: add commenting guidance to CLAUDE.md by @sfc-gh-dachristensen in #577
- pg_lake_table: analyze field_id_mappings and partition_fields at commit time by @sfc-gh-dachristensen in #582
- pg_extension_base: sleep the configured worker_starter_sleep_time by @sfc-gh-abozkurt in #571
- flaky tests: keep the database starter lock out of a database's lock space by @sfc-gh-mslot in #581
- docker: drop vcpkg build byproducts from the image by @sfc-gh-dachristensen in #584
- pg_lake_engine: make releasing a pgduck connection idempotent by @sfc-gh-mslot in #568
- pg_lake_table: allow debug plan output for restriction nodes by @marknefedov in #486
- Don't leak Horizon client secret via psql by @sfc-gh-mslot in #594
- Validate the length of an Iceberg binary single value by @sfc-gh-mslot in #596
- Map Iceberg fixed[L] to BLOB when reading parquet by @sfc-gh-abozkurt in #600
- Gate bounded-numeric write pushdown on a NaN-free source (CI for #576) by @sfc-gh-dachristensen in #578
- Bump duckdb to v1.5.5 by @sfc-gh-abozkurt in #300
- Anchor object_store tables to the object store catalog's own root by @sfc-gh-agedemenli in #604
- flaky tests: classify region mismatches by status code by @sfc-gh-mslot in #562
- pg_lake_engine: restrict the host in user-supplied Azure URLs by @sfc-gh-mslot in #595
- flaky tests: make the aggressive-autovacuum fixture opt-in by @sfc-gh-mslot in #587
- Groundwork for workload-identity auth against a REST catalog by @sfc-gh-agedemenli in #572
- duckdb_pglake: treat an already-deleted object as removed on Azure by @sfc-gh-mslot in #566
New Contributors
- @sfc-gh-amzheng made their first contribution in #438
- @sfc-gh-nsaliaris made their first contribution in #453
- @marknefedov made their first contribution in #454
Full Changelog: v3.4.4...v3.5.0