View Issue Details

IDProjectCategoryView StatusLast Update
000695010000-004: ServicesSpecpublic2022-12-06 15:47
ReporterJim Luth Assigned ToMatthias Damm  
PrioritynormalSeverityblockReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.05.03 RC1 
Summary0006950: 5.2.5 differentiates between a zero length array and a null array. A definition of what an "empty array" means is missing
Description

In several places in the specification, the term "empty" is used in the context of arrays. E.g. In part 3 for the InputArguments and OutputArguments or part 9 for the ConditionId.

empty can be a null array and empty can be an array with zero length

For arrays there is no definition what it means for the mapping, when an array is empty.

For other mappings, like for variants in 5.1.6 in part 6, it is clearly defined what "empty" means.

Additional Information

Several server implementations exist, including the OPC Foundation Quickstart Alarms & Conditions Server, that accept both a null array and an array of zero length, in the select clause for the SimpleAttributeOperand for the ConditionId.

At least one OPC UA server implementation is known that accepts only an array of zero length and causes interoperability issues with OPC UA clients that use a null array in the SimpleAttributeOperand for the ConditionId.

TagsNo tags attached.
Commit Version
Fix Due Date

Relationships

related to 0006829 closedRandy Armstrong 10000-006: Mappings 5.2.5 differentiates between a zero length array and a null array. A definition of what an "empty array" means is missing 

Activities

Randy Armstrong

2021-05-18 15:20

administrator   ~0014389

Added text to 1.05 RC:

5.1.9 Null, Empty and Zero-Length Arrays

The terms null, empty and zero-length are used to describe array values. A null array has no value. A zero-length or empty array is an array with 0 elements. Some DataEncodings will allow the distinction to be preserved on the wire, however, not all DevelopmentPlatforms will be able to preseve the distinction. For this reason, null, empty and zero length arrays are semantically the same for all DataEncodings. Decoders shall be able to handle all variations supported by the DataEncoding, however, decoders are not required to preserve the distinction. When testing for equality, applications shall treat null and empty arrays as equal. When a DevelopmentPlatform supports the distinction, writing and reading back an array value may result in null array becoming an empty array or vise versa.

Jim Luth

2021-05-18 15:22

administrator   ~0014390

Update Condition Filter and DataChange test to remind users that test for null and empty are equal.

Matthias Damm

2022-12-03 15:33

developer   ~0018219

7.10 DataChangeTrigger
Table 134 – DataChangeTrigger values

Added for 'STATUS_VALUE':
When testing for changes, a Server shall treat null and empty arrays as equal

7.7.3 FilterOperator
Added :
'When testing for equality, a Server shall treat null and empty arrays as equal.'

Jim Luth

2022-12-06 15:47

administrator   ~0018244

Agreed to changes in Virtual F2F.

Issue History

Date Modified Username Field Change
2021-05-18 15:20 Jim Luth New Issue
2021-05-18 15:20 Jim Luth Status new => assigned
2021-05-18 15:20 Jim Luth Assigned To => Matthias Damm
2021-05-18 15:20 Jim Luth Issue generated from: 0006829
2021-05-18 15:20 Jim Luth Note Added: 0014389
2021-05-18 15:20 Jim Luth Relationship added related to 0006829
2021-05-18 15:20 Jim Luth Project 10000-006: Mappings => 10000-004: Services
2021-05-18 15:22 Jim Luth Note Added: 0014390
2022-12-03 15:33 Matthias Damm Status assigned => resolved
2022-12-03 15:33 Matthias Damm Resolution open => fixed
2022-12-03 15:33 Matthias Damm Fixed in Version => 1.05.03 RC1
2022-12-03 15:33 Matthias Damm Note Added: 0018219
2022-12-06 15:47 Jim Luth Status resolved => closed
2022-12-06 15:47 Jim Luth Note Added: 0018244