What's Changed
- Add PostgreSQL 19 support by @sfc-gh-okalaci in #404
- Bump extension versions to 3.6 by @sfc-gh-okalaci in #612
- Let DuckDB detect the CSV line terminator by @sfc-gh-mslot in #617
- Pushdown isfinite function by @sfc-gh-rsirma in #613
- Push down char_length, character_length and translate by @sfc-gh-rsirma in #610
- Pushdown interval_um function by @sfc-gh-rsirma in #611
- Push down to_hex(int4) and to_hex(int8) by @sfc-gh-rsirma in #609
- Stop recording a sniffed line terminator on CSV foreign tables by @sfc-gh-okalaci in #619
- Accept gcs:// as well as gs:// by @sfc-gh-mslot in #620
- Time out autovacuum lock waits instead of blocking the whole pass by @sfc-gh-mslot in #626
- Read a quoted "" in external CSV as an empty string, not NULL by @sfc-gh-okalaci in #618
- pg_lake_table: don't read a relcache tuple descriptor after dropping its pin by @sfc-gh-okalaci in #631
- pg_lake_table: copy relcache tuple descriptors used across catalog lookups by @sfc-gh-okalaci in #633
- Defer Azure overwrite truncate so files are never published empty by @sfc-gh-agedemenli in #622
- pg_lake_table: clamp partitioned-write FD limit to max_safe_fds / 3 by @sfc-gh-rbachala in #630
- ci: bump GitHub Actions off deprecated Node 20 runtime by @sfc-gh-dachristensen in #615
- pgduck: emit classified, PII-free engine error logs for observability by @sfc-gh-rsirma in #602
- Add test for geometry preservation during Iceberg compaction by @ehddnr301 in #639
- Remove legacy Azure append catalogs when autovacuum starts by @sfc-gh-mslot in #642
- Store builtin geometric types as text, including inside composites by @sfc-gh-abozkurt in #644
- ci: wait for pgduck_server socket before installcheck tests by @sfc-gh-rsirma in #623
- pg_lake_iceberg: auto-detect catalog prefix from GET /v1/config by @sfc-gh-rbachala in #625
- pg_lake_copy: exclude generated columns from COPY TO without explicit list by @sfc-gh-rbachala in #629
- pg_lake_iceberg: distinguish non-existent REST catalog from missing namespace by @sfc-gh-rbachala in #649
- Ridvansirma/pgduck engine server side error logs by @sfc-gh-rsirma in #648
- Fix three defects in the internal CSV exchange writer by @sfc-gh-mslot in #654
- pg_lake_iceberg: never publish a nameless table in catalog.json by @sfc-gh-abozkurt in #656
- Select the DeleteObjects secret from the objects, not the bucket by @sfc-gh-mslot in #655
- iceberg: skip reading manifests that have no deleted entries by @sfc-gh-mslot in #646
- Validate the S3 region and the recovery procedure's extension membership by @sfc-gh-amzheng in #664
- test_common: bump Apache Polaris REST catalog to 1.8.0 by @sfc-gh-okalaci in #665
- docs: give the GitHub Pages site a real theme and navigation by @sfc-gh-mslot in #670
- Bump duckdb to v1.5.6 by @sfc-gh-mslot in #671
- Redact vended Azure, GCS and encryption-key credentials in HTTP traces by @sfc-gh-agedemenli in #677
- Report vended credentials pg_lake cannot use instead of ignoring them by @sfc-gh-agedemenli in #667
- pg_lake_iceberg: support unauthenticated REST catalog access by @sfc-gh-rbachala in #662
- pgduck: expose BuildIcebergReadConversion by @sfc-gh-amzheng in #680
- Consume vended Azure SAS tokens by @sfc-gh-agedemenli in #679
- Set es_snapshot on the update tracking executor state by @sfc-gh-dachristensen in #683
- flaky tests: keep autovacuum off the files a dropped table leaves behind by @sfc-gh-mslot in #685
- flaky tests: retry the Gradle distribution download the Polaris build needs by @sfc-gh-mslot in #687
- pg_lake_table: build the commit operations from the catalog for appends by @sfc-gh-mslot in #647
- docs: restructure and expand the documentation site by @sfc-gh-mslot in #672
- pg_lake_table: dedicated catalog export worker by @sfc-gh-mslot in #673
- Clear the file cleanup queues in finish_postgres_recovery by @sfc-gh-mslot in #681
- pg_lake_engine: register GUCs during pg_upgrade by @sfc-gh-dachristensen in #696
- pg_extension_base: end an attached worker when its registrant exits by @sfc-gh-okalaci in #689
- Add lowercase_column_names option for read-only external catalog tables by @sfc-gh-mslot in #684
- pg_lake_engine: limit GUC registration during pg_upgrade by @sfc-gh-dachristensen in #699
- Treat S3 400 ExpiredToken as an auth error in PostRequest and PutRequest by @sfc-gh-mslot in #700
- Check Avro array and map sizes for overflow before allocating by @sfc-gh-dachristensen in #703
- pgduck_server: return after invalid message reads by @sfc-gh-dachristensen in #706
- Do not run a base worker launched from a deregistered registration by @sfc-gh-mslot in #694
- flaky tests: retry the module teardown's DROP EXTENSION through a worker deadlock by @sfc-gh-mslot in #686
- Reload configuration in the cache worker on SIGHUP by @ehddnr301 in #710
- Fall back to uppercase catalog identifiers for read-only REST tables by @sfc-gh-mslot in #708
- Publish the docs site with a GitHub Actions workflow by @sfc-gh-mslot in #695
- rest catalog: keep '/' in catalog prefix when building REST URLs by @richiebachala in #715
- Read Parquet equality deletes in external Iceberg v2 tables by @Ecthlion in #691
- docs: improve Open Graph description and add social card image by @sfc-gh-mslot in #713
- iceberg: skip reading manifest entries during expiry on append-only commits by @sfc-gh-mslot in #709
- flaky tests: stop test_autovac_compacts_when_option_default racing its own worker by @sfc-gh-mslot in #652
- iceberg: write the spec's key-value metadata into manifest files by @sfc-gh-mslot in #676
- Fix Rocky Linux build: add krb5 and numa dev packages, limit parallel jobs on low-RAM machines by @sfc-gh-mslot in #721
- Drain the deletion queue across tables in autovacuum by @sfc-gh-mslot in #674
- pg_lake_table: clean up catalog rows when dropping read-only iceberg tables by @sfc-gh-mslot in #660
- Reduce log noise from cache worker and deletion queue by @sfc-gh-mslot in #669
- flaky tests: send the delayed-restart wake after the worker's exit handler by @sfc-gh-mslot in #724
- Add batch delete support for Azure Blob Storage by @sfc-gh-mslot in #668
- flaky tests: retry the Spark session start when the jars do not resolve by @sfc-gh-mslot in #580
- flaky tests: install pipenv dependencies in the test jobs on a cache miss by @sfc-gh-mslot in #725
- pg_lake_table: per-tuple hook on the foreign scan by @sfc-gh-abozkurt in #711
- pgduck_server: evict cache inodes to a target well above the floor by @sfc-gh-mslot in #661
- duckdb_pglake: preserve final scan chunks at task boundaries by @sfc-gh-dachristensen in #730
- Do not push down subscripts on map types by @t0k0shi in #728
- Fix dbt query-context corruption when walking nested queries by @ifinik in #737
- flaky tests: wait for the reloaded REST catalog settings in the token refresh test by @sfc-gh-mslot in #760
- cache worker: wait for pgduck_server instead of exiting by @sfc-gh-dachristensen in #755
- flaky tests: do not assume the autovacuum pass order in test_autovacuum_lock_timeout by @sfc-gh-mslot in #651
- Let writable REST catalog tables use a catalog prefix other than the database name by @sfc-gh-rbachala in #744
- string_agg: push down a NULL constant delimiter as '' by @t0k0shi in #759
- Flush the REST catalog token cache when credential GUCs change by @sfc-gh-rbachala in #740
- Do not push down negative array subscripts by @t0k0shi in #758
- fix(iceberg): enforce the documented redirect cap and correct timeout docs in http_client by @AUTHENSOR in #746
- Use long for http_client curl option constants by @sfc-gh-mslot in #765
- cache worker: retry every 10 seconds while pgduck_server is down by @sfc-gh-mslot in #764
- Validate URLs passed to lake_file_cache.add and remove by @sfc-gh-mslot in #767
- pgduck_server: add --ca_cert_file option by @sfc-gh-mslot in #766
- flaky tests: do not rely on deletion-queue claim order in test_deletion_queue_batch_isolates_failing_path by @sfc-gh-mslot in #763
- Undo queued REST catalog work on ROLLBACK TO SAVEPOINT (fixes DROP TABLE data loss) by @sfc-gh-rbachala in #756
- REST catalog: send warehouse on GET /v1/config by @sfc-gh-rbachala in #738
- pg_lake_iceberg: name the object store catalog export in its own errors by @sfc-gh-mslot in #640
- Add pg_lake_iceberg.horizon_tls_ca_path by @sfc-gh-dachristensen in #779
- Do not use column min/max stats to prove that all rows in a file match by @sfc-gh-mslot in #776
- Import fastavro only in the helper that reads manifests by @sfc-gh-okalaci in #782
- Fix truncate partition pruning on smallint columns by @dhruv-techdev in #772
- Do not push down built-ins that read query engine state by @sfc-gh-mslot in #769
- Do not take a vended S3 secret's endpoint from the catalog by @sfc-gh-mslot in #775
- Do not let a catalog choose the Azure account a vended secret reaches by @sfc-gh-agedemenli in #787
- pg_extension_base: run attached workers with the caller's search_path by @sfc-gh-mslot in #784
- iceberg: read the current manifest list once when building a snapshot by @sfc-gh-mslot in #793
- pg_extension_base: pin the search_path of base workers by @sfc-gh-dachristensen in #792
- Do not crash on NULL map entries or on internal stub functions by @sfc-gh-dachristensen in #794
- flaky tests: cache the ivy repository the Spark fixture resolves from by @sfc-gh-mslot in #781
- Do not let catalog responses delete local files or PANIC at commit by @sfc-gh-dachristensen in #797
- Check JSON types when reading Iceberg table metadata by @sfc-gh-dachristensen in #795
- pgduck_server: do not crash on NULL nested lists or long S3 URLs by @sfc-gh-dachristensen in #796
- flaky tests: let a shutdown signal reach the only thread that can act on it by @sfc-gh-mslot in #774
- Resolve an external catalog once per read by @sfc-gh-okalaci in #741
- pg_lake_engine: number every Parquet leaf when reading footer statistics by @sfc-gh-okalaci in #806
- Fix object store catalog force-push reading stale data in REPEATABLE READ by @sfc-gh-mslot in #770
- Use catalog-assigned identity and storage for writable REST tables by @sfc-gh-rbachala in #745
- Add pushdown support for uuid_extract_timestamp and uuid_extract_version functions by @darshil929 in #449
- pg_extension_base: export the attached worker's top-level SQL runner by @sfc-gh-okalaci in #812
- Do not record min/max for float columns that hold NaN by @sfc-gh-okalaci in #820
- Drop cached vended credentials once the catalog stops vending them by @sfc-gh-agedemenli in #816
- Keep Iceberg catalog URLs in object storage by @sfc-gh-agedemenli in #821
- pgduck_server: fail the query instead of exiting on 1 GB result values by @sfc-gh-dachristensen in #804
- Prune external Iceberg data files on their manifest bounds by @sfc-gh-okalaci in #811
- Validate the table location a writable REST catalog loads by @sfc-gh-rbachala in #827
- Deduplicate repeated row IDs in DELETE with joins by @sfc-gh-mslot in #768
- Drain single-row query results before closing pgduck connections by @Ecthlion in #786
- pg_lake_iceberg: identify pg_lake in the User-Agent of its HTTP requests by @sfc-gh-agedemenli in #833
- pg_lake_iceberg: log catalog errors in a form that is safe to collect by @sfc-gh-agedemenli in #778
- Read the catalog's copy of metadata for read-only REST tables by @sfc-gh-rbachala in #828
- Only reuse inferred struct types owned by the current user by @sfc-gh-mslot in #777
- Prune Iceberg equality-delete files using manifest bounds by @Ecthlion in #723
- Disallow ADD CONSTRAINT ... NOT NULL on pg_lake tables by @sfc-gh-mslot in #836
- Only use a REST catalog's inlined metadata for the table it was loaded for by @sfc-gh-mslot in #838
- Check the tracker temp table before using it as the extension owner by @sfc-gh-mslot in #837
- Give case-distinct Iceberg columns unique DuckDB names by @sfc-gh-dlevankou in #831
- Group Azure batch deletes by secret and account, not just by container by @sfc-gh-mslot in #842
New Contributors
- @ehddnr301 made their first contribution in #639
- @richiebachala made their first contribution in #715
- @Ecthlion made their first contribution in #691
- @t0k0shi made their first contribution in #728
- @ifinik made their first contribution in #737
- @AUTHENSOR made their first contribution in #746
- @dhruv-techdev made their first contribution in #772
- @darshil929 made their first contribution in #449
- @sfc-gh-dlevankou made their first contribution in #831
Full Changelog: v3.5.10...v3.6.0