In this section we discuss the sequence of message-passing that takes place between a data node and an API node for each of the following operations:
Primary key lookup
Unique key lookup
Table scan or index scan
Explicit commit of a transaction
Rollback of a transaction
Transaction record handling (acquisition and release)
Primary key lookup. An operation using a primary key lookup is performed as shown in the following diagram:
* and + are used here with the meanings “zero or more” and “one or more”, respectively.
The steps making up this process are listed and explained in greater detail here:
The API node sends a
TCKEYREQmessage to the data node. In the event that the necessary information about the key to be used is too large to be contained in theTCKEYREQ, the message may be accompanied by any number ofKEYINFOmessages carrying the remaining key information. If additional attributes are used for the operation and exceed the space available in theTCKEYREQ, or if data is to be sent to the data node as part of a write operation, then these are sent with theTCKEYREQas any number ofATTRINFOmessages.-
The data node sends a message in response to the request, according to whether the operation succeeded or failed:
If the operation was successful, the data node sends a
TCKEYCONFmessage to the API node. If the request was for a read operation, thenTCKEYCONFis accompanied by aTRANSID_AImessage, which contains actual result data. If there is more data than can be contained in a singleTRANSID_AIcan carry, more than one of these messages may be sent.If the operation failed, then the data node sends a
TCKEYREFmessage back to the API node, and no more signalling takes place until the API node makes a new request.
Unique key lookup. This is performed in a manner similar to that performed in a primary key lookup:
A request is made by the API node using a
TCINDXREQmessage which may be accompanied by zero or moreKEYINFOmessages, zero or moreATTRINFOmessages, or both.-
The data node returns a response, depending on whether or not the operation succeeded:
If the operation was a success, the message is
TCINDXCONF. For a successful read operation, this message may be accompanied by one or moreTRANSID_AImessages carrying the result data.If the operation failed, the data node returns a
TCINDXREFmessage.
The exchange of messages involved in a unique key lookup is illustrated in the following diagram:
Table scans and index scans. These are similar in many respects to primary key and unique key lookups, as shown here:
A request is made by the API node using a
SCAN_TABREQmessage, along with zero or moreATTRINFOmessages.KEYINFOmessages are also used with index scans in the event that bounds are used.-
The data node returns a response, according to whether or not the operation succeeded:
-
If the operation was a success, the message is
SCAN_TABCONF. For a successful read operation, this message may be accompanied by one or moreTRANSID_AImessages carrying the result data. However—unlike the case with lookups based on a primary or unique key—it is often necessary to fetch multiple results from the data node. Requests following the first are signalled by the API node using aSCAN_NEXTREQ, which tells the data node to send the next set of results (if there are more results). This is shown here:
-
If the operation failed, the data node returns a
SCAN_TABREFmessage.SCAN_TABREFis also used to signal to the API node that all data resulting from a read has been sent.
-
Committing and rolling back transactions.
The process of performing an explicit commit follows the same
general pattern as shown previously. The API node sends a
TC_COMMITREQ message to the data node,
which responds with either a TC_COMMITCONF
(on success) or a TC_COMMITREF (if the
commit failed). This is shown in the following diagram:
Some operations perform a COMMIT
automatically, so this is not required for every transaction.
Rolling back a transaction also follows this pattern. In this
case, however, the API node sends a
TCROLLBACKTREQ message to the data node.
Either a TCROLLACKCONF or a
TCROLLBACKREF is sent in response, as shown
here:
Handling of transaction records.
Acquiring a transaction record is accomplished when an API
node transmits a TCSEIZEREQ message to a
data node and receives a TCSEIZECONF or
TCSEIZEREF in return, depending on whether
or not the request was successful. This is depicted here:

The release of a transaction record is also handled using the
request-response pattern. In this case, the API node's request
contains a TCRELEASEREQ message, and the data
node's response uses either a TCRELEASECONF
(indicating that the record was released) or a
TCRELEASEREF (indicating that the attempt at
release did not succeed). This series of events is illustrated
in the next diagram:






