fix(drivers): R5 minors - MTConnect session publish+generation atomic and superseded pump joined; MQTT birth-typed writes use the birth's own datatype; AbLegacy dead init join removed + Dispose join test; docs (#602)
Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
@@ -95,6 +95,13 @@ that holds an INTEGER station id can be authored either `"7"` or `7`. A JSON obj
|
||||
is not a value and is refused. On **PostgreSQL** a string bind is sent untyped (`NpgsqlDbType.Unknown`,
|
||||
`PostgresDialect.ConfigureParameter`, STAB-24) so the server infers its type from the compared column;
|
||||
bound as `text`, a `"7"` against an `integer` key fails with `operator does not exist: integer = text`.
|
||||
|
||||
⚠️ **Known limitation — key normalisation.** Row slice-back matches the returned key cell by its *text* form
|
||||
(`Convert.ToString`, ordinal), while the server now matches by the column's inferred type. An authored key the
|
||||
server treats as equal but whose text differs therefore selects a row that the driver then cannot find, and the
|
||||
tag reads **no-row**: `"007"` against an `integer` column (returns `7`), `"1.50"` against `numeric` (returns
|
||||
`1.5`), and an upper-case GUID against a `uuid` column (returned lower-case). Author keys in the column's
|
||||
canonical text form. SQL Server behaves the same way.
|
||||
(They were read asymmetrically until 2026-08-10, so a numerically
|
||||
authored `keyValue` refused the tag while the identically-bound `whereValue` was served — and the
|
||||
deploy gate reported the key as *missing* when it was right there in the blob.)
|
||||
|
||||
Reference in New Issue
Block a user