Release pgpq 0.12.0 and arrow-json 0.10.0 - #104
Merged
Conversation
pgpq 0.11.1 -> 0.12.0, the breaking release the last few weeks of work was batched into so it would only cost one. arrow-json 0.9.0 -> 0.10.0 picks up the arrow 59 / pyo3 0.29 bumps it has been sitting on. Also refreshes the README's data type table, which had drifted: it still said structs were unsupported, still offered CHAR as an Int8 output, and was missing LargeUtf8/Utf8View/LargeBinary/FixedSizeBinary/LargeList/FixedSizeList entirely.
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.
Merging this publishes.
detect-releasesees a version the registry does not have and therelease jobs push
pgpqto crates.io and PyPI, andarrow-jsonto PyPI.pgpq0.11.1 → 0.12.0 (core/Cargo.toml,py/Cargo.toml,py/pyproject.toml)arrow-json0.9.0 → 0.10.0 (json/pyproject.toml;json/Cargo.tomltracks the workspaceversion as it always has)
Cargo.lockanduv.lockregeneratedWhat's in 0.12.0
The breaking changes were deliberately batched so they would cost one release rather than several.
Breaking
write_headerreturnsResult— the encoder state machine reports misuse instead ofaborting the host process (Refactor encoders to generics; return errors instead of panicking on misuse #89).
PostgresType::UserDefinedcarriesoid: Option<u32>; supply it withArrowToPostgresBinaryEncoder::with_composite_oids, keyed bythe type name the DDL creates, and use
composite_type_names()to learn which names to look up.This replaces a hard-coded
16385that silently collided with real user OIDs on any databasethat had ever created a user-defined type.
Int8can no longer be written asChar(Int8 Char output type is broken: INT2 payload declared as bpchar text, rejected by Postgres on every value #95/Refuse Int8 -> Char instead of emitting output Postgres rejects #101). It declaredbpcharfor a two-byteINT2 payload, so Postgres rejected every value; it is refused at build time now.
f0,f1(Struct support polish: carry real field names into CREATE TYPE DDL; export StructEncoderBuilder to typed Python #97/Carry Arrow field names into composite DDL; export StructEncoderBuilder to typed Python #99), andevery identifier the DDL emits is quoted.
Fixes
Json.oid()returned jsonb's 3802 instead of json's 114, so ajson[]column was rejected bythe server (Composite/array OID correctness: dummy 16385 collides with real user OIDs; Json.oid() returns jsonb's 3802 #96/Json.oid() must be json's 114, not jsonb's 3802 #100).
FixedSizeBinary/FixedSizeListencoders implemented; struct-with-list-field panic fixed (Implement FixedSizeBinary/FixedSizeList encoders; fix struct-with-list-field panic #94).Performance
Also
StructEncoderBuilderis exported to typed Python (Struct support polish: carry real field names into CREATE TYPE DDL; export StructEncoderBuilder to typed Python #97/Carry Arrow field names into composite DDL; export StructEncoderBuilder to typed Python #99).and the snapshot corpus blind spots closed (Generative suite polish: sign-of-zero fidelity, unified float equality, fuzz coverage, snapshot corpus gaps #93).
The README's data type table is refreshed in the same commit — it still claimed structs were
unsupported, still offered
CHARforInt8, and omittedLargeUtf8,Utf8View,LargeBinary,FixedSizeBinary,LargeListandFixedSizeList. It now also documents the composite-OID flow.Verification
cargo test --locked --all-features(290 tests) and the fullpytestsuite (25, including the9 Postgres-backed ones) green locally against a real server, plus
cargo fmt,clippy,uv lock --checkandpre-commit.