View Issue Details

IDProjectCategoryView StatusLast Update
001039210000-004: ServicesSpecpublic2025-09-25 14:00
ReporterAlexander Allmendinger Assigned ToMatthias Damm  
PrioritynormalSeverityminorReproducibilitysometimes
Status closedResolutionfixed 
Fixed in Version1.05.06 
Summary0010392: Clarification for IndexRanges on Arrays of Strings and ByteStrings
Description

In UA Part 4: Services - 7.27 NumericRange it is described how to handle out off bounds indexes and also that in case of a String or ByteString the IndexRange can be used to get a substring.

The products behave differently for the case where the string in the first element of a string array is longer than the others. Some of the servers provide a partial results / null values and some a Bad_IndexRangeNoData.

Example:

  • String Array: ["TestString", "Test", "String"]
  • CreateMonitoredItem with IndexRange "0:2,7:9".

In the UA WG Meeting on 24th of June 2025 the group agreed that in this case partial results need to be returned and the expected results for the values outlined above the expectation is to receive:
["ing", [Opc Ua Null String], [Opc Ua Null String]
The reason the group decided for this option is that otherwise in such scenarios it will not be possible to receive the values without changing the client configuration to read the full values, if one value becomes null or is shorter than others.

Since this is not clear in the specification, UA Part 4: Services - 7.27 NumericRange needs to be updated to describe this scenario. Here is a text proposal:

The NumericRange can also be used to specify substrings for ByteString and String values. Arrays of ByteString and String values are treated as two dimensional arrays where the final index specifies the substring range within the ByteString or String value. If the last element of the specified IndexRange refers to a substring, the Server shall return partial results accordingly. For any element in the array where the specified IndexRange is out of bounds, the Server shall return a null or empty value.

Also add a pointer in the earlier paragraph to this definition, so implementers are not missing it. Extend this paragraph:
When reading a value and any of the lower bounds of the indexes is out of range the Server shall return a Bad_IndexRangeNoData. If any of the upper bounds of the indexes is out of range, the Server shall return partial results. For arrays of the ByteStrings and Strings find more details in the paragraphs below.

TagsNo tags attached.
Commit Version1.05.06
Fix Due Date2025-09-15

Activities

Matthias Damm

2025-09-22 16:50

developer   ~0023325

Added the proposed tex additions

Jim Luth

2025-09-25 09:47

administrator   ~0023357

Matthias needs to add an example.

Jim Luth

2025-09-25 14:00

administrator   ~0023372

Agreed to changes edited in F2F meeting.

Issue History

Date Modified Username Field Change
2025-06-25 12:22 Alexander Allmendinger New Issue
2025-07-15 16:30 Jim Luth Assigned To => Matthias Damm
2025-07-15 16:30 Jim Luth Status new => assigned
2025-07-15 16:30 Jim Luth Commit Version => 1.05.06
2025-07-15 16:30 Jim Luth Fix Due Date => 2025-09-15
2025-09-22 16:50 Matthias Damm Status assigned => resolved
2025-09-22 16:50 Matthias Damm Resolution open => fixed
2025-09-22 16:50 Matthias Damm Fixed in Version => 1.05.06
2025-09-22 16:50 Matthias Damm Note Added: 0023325
2025-09-25 09:47 Jim Luth Note Added: 0023357
2025-09-25 14:00 Jim Luth Status resolved => closed
2025-09-25 14:00 Jim Luth Note Added: 0023372