@@ -7,13 +7,35 @@ Features
77 statements skip re-sending result metadata on EXECUTE, and the driver automatically
88 refreshes cached metadata when the server detects a schema change (DRIVER-153)
99
10+ Bug Fixes
11+ ---------
12+ * Harden prepared-result metadata caching against concurrent schema/client decoder
13+ changes. Cached metadata, ids, and decoder provenance are published atomically;
14+ UDT descriptors are isolated by registered Python class; UDT registration
15+ invalidates cached ids before publishing mapping changes; and futures refresh
16+ their request snapshot before fetching another page or after re-prepare.
17+ * Restrict ``skip_meta `` to immutable snapshots of built-in protocol handlers.
18+ A Session keeps using the immutable configuration it captured, while modified
19+ built-in handlers and custom handlers cannot create an eligible snapshot and
20+ continue to receive full result metadata.
21+ * Stop retrying a prepared query when re-prepare returns a different query id;
22+ the future now remains failed instead of updating metadata and issuing another
23+ request.
24+ * Restore an evicted prepared-statement cache entry through the Cluster's
25+ lock-protected ``add_prepared() `` path during UNPREPARED recovery.
26+
1027Others
1128------
1229* ``PreparedStatement.result_metadata `` and ``PreparedStatement.result_metadata_id `` are
1330 now read-only. They are replaced together by
1431 ``PreparedStatement.update_result_metadata() ``, so a request can never observe a metadata
1532 id paired with result metadata from a different schema version. Code that assigned either
16- attribute directly must call ``update_result_metadata() `` instead.
33+ attribute directly must call ``update_result_metadata() `` instead. The metadata getter
34+ keeps its historical list shape but returns a defensive copy, so mutating it cannot
35+ change the internal metadata/id pair.
36+ * Client-initiated PREPARE responses now use
37+ ``Session.client_protocol_handler ``, matching the handler used for subsequent
38+ EXECUTE responses. This is user-visible for custom protocol handlers.
1739* Message serialization now receives the connection's negotiated ``ProtocolFeatures ``:
1840 ``Connection.send_msg `` passes ``protocol_features `` to the encoder, and
1941 ``_ProtocolHandler.encode_message `` forwards it to each message's ``send_body ``.
@@ -24,8 +46,10 @@ Others
2446 forward it. There is deliberately no compatibility fallback: protocol extensions
2547 are negotiated per connection at STARTUP, so an encoder unaware of
2648 ``protocol_features `` could silently omit fields a negotiated extension requires.
27- This release emits no new bytes on the wire; the parameter is groundwork for
28- upcoming protocol extensions (``SCYLLA_USE_METADATA_ID ``, ``TABLETS_ROUTING_V2 ``).
49+ When ``SCYLLA_USE_METADATA_ID `` is negotiated, EXECUTE messages use this plumbing
50+ to include the extension's metadata id and may request that result metadata be
51+ omitted. Connections that do not negotiate the extension retain their existing
52+ frame layout.
2953
30543.29.11
3155=======
0 commit comments