Bump duckdb to v1.5.1#300
Open
sfc-gh-abozkurt wants to merge 3 commits into
Open
Conversation
23da792 to
c1646f5
Compare
Signed-off-by: Aykut Bozkurt <aykut.bozkurt@snowflake.com>
612154c to
61133cb
Compare
Signed-off-by: Aykut Bozkurt <aykut.bozkurt@snowflake.com>
07694db to
150fed0
Compare
150fed0 to
8876a79
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bump DuckDB to v1.5.1
Version Updates
1.4.4→1.5.11.4.3→1.5.1httpfs,aws,azurepinned to new commits compatible with 1.5.1Native GeoParquet / GEOMETRY Support
DuckDB 1.5.1 promotes
GEOMETRYto a first-classLogicalTypeId(previously it was aBLOBwith a type alias). This required changes across the stack:pgduck_server — Wire protocol adaptation
duckdb_column_type()now returnsDUCKDB_TYPE_INVALIDforGEOMETRYcolumns. Two new helpers added viaduckdb_pglake:duckdb_pglake_is_geometry_type()— checks whether a logical type isGEOMETRYduckdb_pglake_geometry_get_srid()— extracts SRID from the CRS attached to the type (e.g.EPSG:4326→4326,OGC:CRS84→4326)GEOMETRYcolumn is detected, it is mapped toBLOBinternally so the existing hex-WKB serialization path handles it.inject_srid_into_hex_wkb()function transforms ISO WKB hex into EWKB hex by setting the SRID flag and inserting the SRID bytes, so PostGIS can recover the SRID from the wire format.pg_lake_engine — Read path (
read_data.c)GEOMETRYnative instead of downgrading toBLOB. DuckDB reads GeoParquet columns natively; for old files without GeoParquet metadata, DuckDB castsBLOB→GEOMETRYautomatically.ST_SetCRS(col, ''): Replaces the oldST_GeomFromWKB(col::blob)projection. Stripping CRS is needed because DuckDB 1.5+ requires plainGEOMETRY(without CRS) for implicitPOINT_2Dcasts used by spheroid functions likeST_Distance_Spheroid. SRID preservation relies on PostGIS applying the column typmod.binary(per Iceberg spec), but the PostgreSQL column type isgeometry, the schema entry is overridden toGEOMETRYsoread_parquet()reads it natively.fixed[N]type handling:GetSchemaType()now mapsfixed[N]→binaryto avoid DuckDB parse errors.COALESCE(hex(TRY_CAST(col AS BLOB)), ST_AsHexWKB(TRY_CAST(col AS GEOMETRY)))to handle both BLOB and GEOMETRY sources.pg_lake_engine — Write path (
write_data.c)ST_AsWKB(col)(which wrote a raw blob), the column is now kept as nativeGEOMETRY. When the PostgreSQL column carries an SRID (via typmod),ST_SetCRS(col, 'EPSG:<srid>')is applied so DuckDB's GeoParquet writer emits CRS metadata.DuckDB HTTP Filesystem API Changes
DuckDB 1.5.1 refactored the HTTP filesystem API —
PostRequestandPutRequestnow takeHTTPInput &instead ofFileHandle &, andHTTPFSUtil::GetHTTPUtil()returns a reference instead ofshared_ptr.PgLakeS3FileSystem
PostRequest/PutRequestsignatures updated to acceptHTTPInput &.RegisterContext/LookupContext) with amutex-protected map that associatesHTTPInput*→ClientContext*. This replaces the previous approach of castingFileHandleto access theClientContextfor encryption settings.SetEncryptionFieldsnow takesoptional_ptr<ClientContext>directly instead of a handle reference.RegionAwareS3FileSystem / CachingFileSystem
HTTPFSUtil::GetHTTPUtil()usage from->to.(reference instead of pointer).GetEstimatedCacheMemory()override to cache-related classes.Glob Handling for Special Characters in Partition Paths
Iceberg partition paths can contain glob characters (e.g.,
*in directory names likespecialChars!@#$%^&*()_+). DuckDB's glob machinery interprets these as wildcards. The caching filesystem now checks whether a path with glob characters refers to an actual existing file first, returning it directly without globbing.S3 URL Decoding Fix
Common prefixes returned by S3
ListObjectsV2are now URL-decoded viaS3FileSystem::UrlDecode()before being used as paths, fixing issues with encoded characters in S3 prefixes.Removed
enable_geoparquet_conversionSettingThe
SET GLOBAL enable_geoparquet_conversion TO 'false'initialization command was removed frompgduck_server, as native GeoParquet support is now the intended behavior.DuckDB Patches
return_stats.patchparquet-virtual-column-stats.patchcomposite-type-resolution.patchconnection->Query(nullptr, ...))numeric-nan.patchsnapshot.patchpg_lake Bugs
Test Updates
"HTTP Error: Unable to connect to URL"→"HTTP Error:""NOT FOUND"assertions now use case-insensitive matching (.upper())"Could not establish connection error"→"Could not connect to server error"/"Could not resolve hostname error""READ_PARQUET "(trailing space) →"READ_PARQUET"(trimmed)pgbench -i -I tinitialization (which relied on DuckDB supporting pgbench's DDL through thetinit step) with explicitCREATE TABLEstatements (pgbench runs then by adding WITH options that are not supported by duckdb).iceberg_catalogfixture now depends onextensionto ensure extensions are created before catalog setup.