View Issue Details

IDProjectCategoryView StatusLast Update
000840110000-006: MappingsSpecpublic2023-09-20 11:40
ReporterBernd Edlinger Assigned ToRandy Armstrong  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version1.05.03 
Fixed in Version1.05.03 
Summary0008401: Unclear Encoding rules for Variant of 1-dimensional matrix
Description

Part 6: 5.2.5 Arrays
clearly says that a structure field of type matrix has 2 or more dimensions,
and allows single array dimensions to be 0, or -1.

But on the other hand,
Part 6: 5.2.2.16 Variant

does not say anything if the ArrayDimensions Length may be 1 or not,
but instead requires each dimension to be greater than zero.

Moreover, currently the implementation in the .NET standard stack does
look like it would let 1-dimensional Matrix values pass thru, whether or
not they are used in Variant or in Structure field encoding context.
See: private Variant ReadVariantValue(string fieldName) for the Variant value decoding,
and: public Array ReadArray() for the Structure value decoding.
In case of valueRank >= ValueRanks.TwoDimensions the resulting number of
matrix dimensions is not checked to be 2 or more.

We would like to know how exactly we should treat such 1-dimensional
matrix values, if they happen to occur in the binary encoding.

TagsNo tags attached.
Commit Version1.05.03
Fix Due Date

Activities

Randy Armstrong

2022-12-28 10:00

administrator   ~0018361

Updated 5.2.2.16 to specify what happens if one or more dimensions is 0 or -1.

Jim Luth

2023-01-17 16:37

administrator   ~0018522

Agreed to changes in telecon.

Matthias Damm

2023-09-14 13:43

developer   ~0019989

This is a breaking change as we have a check that declines dimensions below one and all peers using such dimensions will receive a decoding error for the complete UA Message. If behavior between matrix in variant and in structures is to be unified it should be changed for structures as this is the newer one and arguably the lesser used, however I would prefer no breaking changes at all in the binary encoding.

The check for dimensions below one is based on the shall that we have since beginning:
"All dimensions shall be specified and shall be greater than zero."

Randy Armstrong

2023-09-20 11:40

administrator   ~0020028

changed ArrayDimensions to:
All dimensions shall be specified and shall be greater than zero.

Jim Luth

2023-09-20 11:40

administrator   ~0020029

Agreed to changes in F2F.

Issue History

Date Modified Username Field Change
2022-10-11 08:23 Bernd Edlinger New Issue
2022-10-11 16:16 Jim Luth Assigned To => Randy Armstrong
2022-10-11 16:16 Jim Luth Status new => assigned
2022-12-28 10:00 Randy Armstrong Status assigned => resolved
2022-12-28 10:00 Randy Armstrong Resolution open => fixed
2022-12-28 10:00 Randy Armstrong Fixed in Version => 1.05.03 RC1
2022-12-28 10:00 Randy Armstrong Note Added: 0018361
2023-01-17 16:37 Jim Luth Status resolved => closed
2023-01-17 16:37 Jim Luth Note Added: 0018522
2023-09-14 13:43 Matthias Damm Status closed => feedback
2023-09-14 13:43 Matthias Damm Resolution fixed => reopened
2023-09-14 13:43 Matthias Damm Note Added: 0019989
2023-09-20 11:40 Randy Armstrong Status feedback => resolved
2023-09-20 11:40 Randy Armstrong Resolution reopened => fixed
2023-09-20 11:40 Randy Armstrong Fixed in Version 1.05.03 RC1 => 1.05.03
2023-09-20 11:40 Randy Armstrong Note Added: 0020028
2023-09-20 11:40 Jim Luth Status resolved => closed
2023-09-20 11:40 Jim Luth Commit Version => 1.05.03
2023-09-20 11:40 Jim Luth Note Added: 0020029