2.2.3.13.10 rdsStatusArray

The rdsStatusArray specifies a variant used to return an array of row statuses for the rows affected by the current request. This parameter is returned as a part of the Synchronize request.

A typical use of Synchronize would be to pass a RecordSet from the client back to the server. That RecordSet contains all of the commands that need to be applied to the data store to synchronize the client and the server. The rdsStatusArray allows a result to be returned for each of the commands in the RecordSet.

The rdsStatusArray MUST be VT-EMPTY if rdsSynchronizationOptions are set to UpdateTransact.

The syntax of rdsStatusArray is as follows.

 rdsStatusArray = VT-ARRAY-I4
                  ZEROBYTE
                  rdsSANumDims
                  rdsSAFeatures
                  rdsSAElementSize
                  rdsStatusElementCount
                  rdsSALowerBound
                  *rdsStatusElement ; rdsStatusElementCount of them
  • rdsSANumDims: MUST be set to 1.

     rdsSANumDims = %x01.00
    
  • rdsSAFeatures: Array features are always %x80.20 for a variant array of VT-I4.

     rdsSAFeatures = %x80.20 ; array of variants VT-I4
    
  • rdsSAElementSize: This is an array of VT-I4. Variants are always 16 bytes long.

     rdsSAElementSize = %x04.00.00.00
    
  • rdsStatusElementCount: MUST be set to the number of parameters that are being sent.

     rdsStatusElementCount = ULONG
    
  • rdsSALowerBound: MUST set to zero.

     rdsSALowerBound = %x00.00.00.00
    
  • rdsStatusElement: Contains rdsStatusElementCount ULONGs. Possible values are as follows.

     rdsStatusElement = seOk /
                        seMultipleChanges /
                        sePendingChanges /
                        seCanceled /
                        seConcurrencyViolation /
                        seDeleted /
                        seNewlyInserted /
                        seIntegrityViolation /
                        seInvalid /
                        seMaxPendingChangesExceeded /
                        seOutofMemory /
                        sePermissionDenied /
                        seLimitReached /
                        seSchemaViolation /
                        seFail
                
                
     seOK                        = %x00.00.00.00
     seMultipleChanges           = %x02.00.00.00
     seCanceled                  = %x04.00.00.00
     seConcurrencyViolation      = %x07.00.00.00
     seDeleted                   = %x08.00.00.00
     seNewlyInserted             = %x0A.00.00.00
     seIntegrityViolation        = %x0B.00.00.00
     seInvalid                   = %x0C.00.00.00
     seMaxPendingChangesExceeded = %x0D.00.00.00
     seOutofMemory               = %x0F.00.00.00
     sePermissionDenied          = %x10.00.00.00
     seLimitReached              = %x11.00.00.00
     seSchemaViolation           = %x12.00.00.00
     seFail                      = %x13.00.00.00
    

     Value

     Meaning

    seOK

    %x00.00.00.00

    The operation on the row succeeded.

    seMultipleChanges

    %x02.00.00.00

    Occurs when updating or deleting a single row caused more than one row to be updated or deleted in the data store.

    seCanceled

    %x04.00.00.00

    Operation on a row was canceled during notification. The row operation was not completed, and the corresponding row status contains this value.

    seConcurrencyViolation

    %x07.00.00.00

    The operation upon the row failed because of a concurrency violation on the backend data store. It is likely that one of the records affected by the operation is currently locked.

    seDeleted

    %x08.00.00.00

    Client referred to a row for which a deletion had been transmitted to the data source, and the requested operation could not be completed. Under these circumstances, the status for the corresponding row contains this value.

    seNewlyInserted

    %x0A.00.00.00

    The row is newly added to the database.

    seIntegrityViolation

    %x0B.00.00.00

    Occurs when the provider recognizes that deleting a referred row violates the integrity constraints for the column or table.

    seInvalid

    %x0C.00.00.00

    The row operation was requested on an invalid row. For instance, the row referenced in the operation is no longer in the backend data store.

    seMaxPendingChangesExceeded

    %x0D.00.00.00

    The operation upon the row failed because the maximum number of pending changes was exceeded.

    seOutofMemory

    %x0F.00.00.00

    The server ran out of memory and was unable to perform the operation for the row.

    sePermissionDenied

    %x10.00.00.00

    The client did not have sufficient permission to perform the operation for the row.

    seLimitReached

    %x11.00.00.00

    A quota or resource limitation applied by the data store has been exceeded.

    seSchemaViolation

    %x12.00.00.00

    The operation upon the row failed because of a schema violation; for instance, a parent/child constraint was violated (as specified in [FIPS127]).

    seFail

    %x13.00.00.00

    A problem on the server was encountered.