3.1.4.2 Query Changes Sub-Request Processing

The Query Changes sub-request, as specified in section 2.2.2.1.3, is used by the protocol client to get a full or partial set of data elements for the current state of the file. The server MUST reply back to the client with a Query Changes sub-response, as specified in section 2.2.3.1.2.<30>

If Request Data Element Hashes (section 2.2.2) is 1 or Request Data Element Hashes Instead of Data (section 2.2.2) is 1, the server MUST return Data Element Hashes (section 2.2.2) in the schema specified by Request Hashing Schema (section 2.2.2) for Object Group data elements (section 2.2.1.12.6) that the protocol server has chosen to hash with the specified schema.

If Request Data Element Hashes Instead of Data is 1, the protocol server MUST return an Object Group Object Excluded Data for the Object Declaration of each Object Group data element that includes a Data Element Hash.

A Data Element Hash returned by the protocol server MUST be computed by hashing a byte stream consisting of an ordered concatenation of the Object Data Data binary items, as specified in section 2.2.1.12.6.4, in the Object Group data element being hashed. The concatenation order MUST be by sorted order from smallest to largest using the Object Order Compare Method as specified below.

Object Order Compare Method

The Object Order Compare Method utilizes the Object Extended GUID, as specified in section 2.2.1.12.6.1, and the Object Partition ID, as specified in section 2.2.1.12.6.1, to compare two objects for the purpose of creating the sorted smallest-to-largest concatenation order.

For the purposes of the Object Order Compare Method, the 16-byte GUID portion of an Object Extended GUID, as specified in section 2.2.1.7, is specified as follows.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Data 1

Data 2

Data 3

Data 4

Data 5

Data 6

Data 7

Data 8

Data 9

Data 10

Data 11

Data 1: An unsigned 32 bit integer specifying an opaque value.

Data 2: An unsigned 16 bit integer specifying an opaque value.

Data 3: An unsigned 16 bit integer specifying an opaque value

Data 4: An unsigned 8 bit integer specifying an opaque value.

Data 5: An unsigned 8 bit integer specifying an opaque value.

Data 6: An unsigned 8 bit integer specifying an opaque value.

Data 7: An unsigned 8 bit integer specifying an opaque value.

Data 8: An unsigned 8 bit integer specifying an opaque value.

Data 9: An unsigned 8 bit integer specifying an opaque value.

Data 10: An unsigned 8 bit integer specifying an opaque value.

Data 11: An unsigned 8 bit integer specifying an opaque value.

The following table specifies the compare method for two objects, Object A and Object B.

Step

Data to compare

Compare method

A < B

A = B

A > B

1.

Object Extended GUID: Value

Unsigned 32 bit integer comparison

A is less than B. Stop.

Continue to step 2.

A is greater than B. Stop

2.

Object Extended GUID: Data 1

Unsigned 32 bit integer comparison

A is less than B. Stop.

Continue to step 3.

A is greater than B. Stop

3.

Object Extended GUID: Data 2

Unsigned 16 bit integer comparison

A is less than B. Stop.

Continue to step 4.

A is greater than B. Stop

4.

Object Extended GUID: Data 3

Unsigned 16 bit integer comparison

A is less than B. Stop.

Continue to step 5.

A is greater than B. Stop

5.

Object Extended GUID: Data 4

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 6.

A is greater than B. Stop

6.

Object Extended GUID: Data 5

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 7.

A is greater than B. Stop

7.

Object Extended GUID: Data 6

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 8.

A is greater than B. Stop

8.

Object Extended GUID: Data 7

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 9.

A is greater than B. Stop

9.

Object Extended GUID: Data 8

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 10.

A is greater than B. Stop

10.

Object Extended GUID: Data 9

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 11.

A is greater than B. Stop

11.

Object Extended GUID: Data 10

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 12.

A is greater than B. Stop

12.

Object Extended GUID: Data 11

Unsigned 8 bit integer comparison

A is less than B. Stop.

Continue to step 13.

A is greater than B. Stop

13.

Object Partition ID

Unsigned 64 bit integer comparison.

A is less than B.

Undefined.

A is greater than B.