Historian value types differ across backends for integer/Boolean nodes (SQL backends Int64, Gateway node type; Gateway Raw Boolean as Double) #698
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up from #693 (review L4). Low; consistency.
Since #693 the node manager passes the node's scalar type to
ReadAtTimeAsync, and only the Gateway uses it:Int32→int)boolDateTimeProposal: decide one rule — return values in the node's DataType on every backend and every read kind — and apply it, e.g. a shared conversion step in the node manager using the same type mapping as
AtTimeValueType.Test gap: add
ShouldBeOfTypeassertions to the shared conformance suite. ShouldlyShouldBecompares across numeric types, which is how the Int64-as-Double evaluator bug survived until #693.Implemented at the node-manager response boundary on all backends: Raw, Modified and AtTime non-null scalar values match the node DataType. Failed conversions yield per-sample null/BadTypeMismatch with timestamps and modification metadata preserved. Array nodes retain stored values; Processed values retain aggregate-specific types. Tests explicitly inspect runtime types for Boolean, Int32 and Float, plus overflow, unknown numeric DateTime encoding, null/array preservation, modified audit metadata and Count on a Boolean node. Ready in the pushed branch; this issue closes when PR #699 merges.
Pushed commit
97668d26; PR: #699.Full solution verified: 14,581 passed, 609 skipped, 0 failed across 62 suites (
dotnet test ZB.MOM.WW.OtOpcUa.slnx --verbosity quiet, exit 0). Independent final review found no important defects. New fixes have not been deployed or live-tested end to end through OPC UA.