View Issue Details

IDProjectCategoryView StatusLast Update
000940610000-003: Address SpaceSpecpublic2024-02-27 17:16
ReporterDavid Levine Assigned ToJeff Harding  
PriorityhighSeveritymajorReproducibilityhave not tried
Status assignedResolutionopen 
Product Version1.05.03 
Target Version1.05.04 RC1 
Summary0009406: Need a way to indicate if an array is fixed or variable length, and if fixed length what the size of each dimension must be.
Description

Currently the ArrayDimensions attribute is optional and "...specifies the maximum supported length of each dimension. If the maximum is unknown the value is 0."

When a Server provides ArrayDimensions with values > 0, Clients have no way of knowing if the values represent a variable length (including 0 length), or if the Server considers it to be a fixed length. A related problem is that a Server may specify ArrayDimensions to be null or 0, even if it requires a fixed length array. This is needed when writing to an array.
 
This leads to incompatibilities with different Servers.

As a strawman proposal, use bit 14 (currently reserved) in the AccessLevelExType to indicate the following:
0: the ArrayDimensions is optional and specifies the maximum supported length of each dimension (i.e. the existing definition)
1: the ArrayDimensions length represents a fixed length array. If the ValueRank is less than 1, or If the ArrayDimensions is null or any of its dimensions is 0, then this bit is ignored (and should be set to 0).

For existing Servers this field is reserved, and the bit is set to 0.

Extra credit: provide a new ErrorCode that indicates a write (non-indexed) to an array failed because the number of elements written did not match the required length as specified in the ArrayDimensions Attribute. This will help existing Clients that are not aware of bit 14.

Extra/extra credit: clarify how ArrayDimensions could be used when the ValueRank == 0, -2 or -3.
For example,
if the VR = -3, then ArrayDimensions could be set to [10] and bit 14 to 1, which would indicate that it is either a scalar or a 1 dimension array with a fixed length of 10.
if VR = 0 or -2, then ArrayDimensions could be used to indicate max or fixed length of any dimension that is used. e.g. AD = [2,3,4,5,6] and the Value contains a 2D array [2,3]. If bit 14 is set then the matrix is a fixed length. If bit 14 is 0 then each rank is variable length. The client still needs to handle a variable number of dimensions,

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Jim Luth

2024-02-27 17:10

administrator   ~0020866

Clarify the use the bit "write full array".

Issue History

Date Modified Username Field Change
2024-02-07 12:39 David Levine New Issue
2024-02-08 12:43 David Levine Description Updated
2024-02-08 12:45 David Levine Description Updated
2024-02-27 17:10 Jim Luth Note Added: 0020866
2024-02-27 17:10 Jim Luth Assigned To => Jeff Harding
2024-02-27 17:10 Jim Luth Status new => assigned