Binary Protocol
Current protocol version for 3.0.x: 37. Look at Compatibility for retro-compatibility.
Introduction
The OrientDB binary protocol is the fastest way to interface a client application to an OrientDB Server instance. The aim of this page is to provide a starting point from which to build a language binding, maintaining high-performance.
If you’d like to develop a new binding, please take a look to the available ones before starting a new project from scratch: Existent Drivers.
Also, check the available REST implementations.
Before starting, please note that:
- Record is an abstraction of Document. However, keep in mind that in OrientDB you can handle structures at a lower level than Documents. These include positional records, raw strings, raw bytes, etc.
For more in-depth information please look at the Java classes:
- Client side: OStorageRemote.java
- Server side: ONetworkProtocolBinary.java
- Protocol constants: OChannelBinaryProtocol.java
Connection
(Since 0.9.24-SNAPSHOT Nov 25th 2010) Once connected, the server sends a short number (2 byte) containing the binary protocol number. The client should check that it supports that version of the protocol. Every time the protocol changes the version is incremented.
Getting started
After the connection has been established, a client can Connect to the server or request the opening of a database Database Open. Currently, only TCP/IP raw sockets are supported. For this operation use socket APIs appropriate to the language you’re using. After the Connect and Database Open all the client’s requests are sent to the server until the client closes the socket. When the socket is closed, OrientDB Server instance frees resources the used for the connection.
The first operation following the socket-level connection must be one of:
- Connect to the server to work with the OrientDB Server instance
- Open a database to open an existing database
In both cases a Session ID is sent back to the client. The server assigns a unique Session-Id to the client. This value must be used for all further operations against the server. You may open a database after connecting to the server, using the same Session-Id
Session
The session management supports two modes: stateful and stateless:
- the stateful is based on a Session ID
- the stateless is based on a Token
The session mode is selected at open/connect operation.
Session ID
All the operations that follow the open/connect must contain, as the first parameter, the client Session-Id (as Integer, 4 bytes) and it will be sent back on completion of the request just after the result field.
NOTE: In order to create a new server-side connection, the client must send a negative number into the open/connect calls.
This Session-Id can be used into the client to keep track of the requests if it handles multiple session bound to the same connection. In this way the client can implement a sharing policy to save resources. This requires that the client implementation handle the response returned and dispatch it to the correct caller thread.
![]() | Opening multiple TCP/IP sockets against OrientDB Server allows to parallelize requests. However, pay attention to use one Session-id per connection. If multiple sockets use the same Session-Id, requests will not be executed concurrently on the server side. |
Token
All the operation in a stateless session are based on the token, the token is a byte[] that contains all the information for the interaction with the server, the token is acquired at the moment of open or connect, and need to be resend for each request. the session id used in the stateful requests is still there and is used to associate the request to the response. in the response can be resend a token in case of expire renew.
Enable debug messages on protocol
To make the development of a new client easier it’s strongly suggested to activate debug mode on the binary channel. To activate this, edit the file orientdb-server-config.xml and configure the new parameter network.binary.debug on the “binary” or “distributed” listener. E.g.:
...
<listener protocol="distributed" port-range="2424-2430"
ip-address="127.0.0.1">
<parameters>
<parameter name="network.binary.debug" value="true" />
</parameters>
</listener>
...
In the log file (or the console if you have configured the orientdb-server-log.properties file)
all the packets received will be printed.
Exchange
This is the typical exchange of messages between client and server sides:
+------+ +------+
|Client| |Server|
+------+ +------+
| TCP/IP Socket connection |
+-------------------------->|
| DB_OPEN |
+-------------------------->|
| RESPONSE (+ SESSION-ID) |
+<--------------------------+
... ...
| REQUEST (+ SESSION-ID) |
+-------------------------->|
| RESPONSE (+ SESSION-ID) |
+<--------------------------+
... ...
| DB_CLOSE (+ SESSION-ID) |
+-------------------------->|
| TCP/IP Socket close |
+-------------------------->|
Network message format
In explaining the network messages these conventions will be used:
- fields are bracketed by parenthesis and contain the name and the type separated by ‘:’. E.g.
(length:int)
Supported types
The network protocol supports different types of information:
| Type | Minimum length in bytes | Maximum length in bytes | Notes | Example |
|---|---|---|---|---|
| boolean | 1 | 1 | Single byte: 1 = true, 0 = false | 1 |
| byte | 1 | 1 | Single byte, used to store small numbers and booleans | 1 |
| short | 2 | 2 | Signed short type | 01 |
| int | 4 | 4 | Signed integer type | 0001 |
| long | 8 | 8 | Signed long type | 00000001 |
| bytes | 4 | N | Used for binary data. The format is (length:int)[(bytes)]. Send -1 as NULL | 000511111 |
| string | 4 | N | Used for text messages.The format is: (length:int)[(bytes)](content:<length>). Send -1 as NULL | 0005Hello |
| record | 2 | N | An entire record serialized. The format depends if a RID is passed or an entire record with its content. In case of null record then -2 as short is passed. In case of RID -3 is passes as short and then the RID: (-3:short)(cluster-id:short)(cluster-position:long). In case of record: (0:short)(record-type:byte)(cluster-id:short)(cluster-position:long)(record-version:int)(record-content:bytes) | |
| strings | 4 | N | Used for multiple text messages. The format is: (length:int)[(Nth-string:string)] | 00020005Hello0007World! |
Note when the type of a field in a response depends on the values of the previous fields, that field will be written without the type (e.g., (a-field)). The type of the field will be then specified based on the values of the previous fields in the description of the response.
Record format
The record format is choose during the CONNECT or DB_OPEN request, the formats available are:
CSV (serialization-impl value “ORecordDocument2csv”) Binary (serialization-impl value “ORecordSerializerBinary”)
The CSV format is the default for all the versions 0.* and 1.* or for any client with Network Protocol Version < 22
Request
Each request has own format depending of the operation requested. The operation requested is indicated in the first byte:
- 1 byte for the operation. See Operation types for the list
- 4 bytes for the Session-Id number as Integer
- N bytes optional token bytes only present if the REQUEST_CONNECT/REQUEST_DB_OPEN return a token.
- N bytes = message content based on the operation type
Operation types
| Command | Value as byte | Description | Async | Since | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Server (CONNECT Operations) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_SHUTDOWN | 1 | Shut down server. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_CONNECT | 2 | Required initial operation to access to server commands. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_OPEN | 3 | Required initial operation to access to the database. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_CREATE | 4 | Add a new database. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_EXIST | 6 | Check if database exists. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_DROP | 7 | Delete database. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_CONFIG_GET | 70 | Get a configuration property. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_CONFIG_SET | 71 | Set a configuration property. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_CONFIG_LIST | 72 | Get a list of configuration properties. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_LIST | 74 | Get a list of databases. | no | 1.0rc6 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Database (DB_OPEN Operations) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_CLOSE | 5 | Close a database. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_SIZE | 8 | Get the size of a database (in bytes). | no | 0.9.25 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DB_COUNTRECORDS | 9 | Get total number of records in a database. | no | 0.9.25 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DATACLUSTER_ADD (deprecated) | 10 | Add a data cluster. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DATACLUSTER_DROP (deprecated) | 11 | Delete a data cluster. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DATACLUSTER_COUNT (deprecated) | 12 | Get the total number of data clusters. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DATACLUSTER_DATARANGE (deprecated) | 13 | Get the data range of data clusters. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DATACLUSTER_COPY | 14 | Copy a data cluster. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_DATACLUSTER_LH_CLUSTER_IS_USED | 16 | no | 1.2.0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_RECORD_METADATA | 29 | Get metadata from a record. | no | 1.4.0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_RECORD_LOAD | 30 | Load a record. | no | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_RECORD_LOAD_IF_VERSION_NOT_LATEST | 44 | Load a record. | no | 2.1-rc4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_RECORD_CREATE | 31 | Add a record. | yes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| REQUEST_RECORD_UPDATE | 32 | | yes |
| REQUEST_RECORD_DELETE | 33 | Delete a record. | yes | REQUEST_RECORD_COPY | 34 | Copy a record. | yes | REQUEST_RECORD_CLEAN_OUT | 38 | Clean out record. | yes | 1.3.0 | REQUEST_POSITIONS_FLOOR | 39 | Get the last record. | yes | 1.3.0 | REQUEST_COUNT (DEPRECATED) | 40 | See REQUEST_DATACLUSTER_COUNT | no | REQUEST_COMMAND | 41 | Execute a command. | no | REQUEST_POSITIONS_CEILING | 42 | Get the first record. | no | 1.3.0 | REQUEST_QUERY | 45 | Execute a query. | no | 3.0.0 | REQUEST_CLOSE_QUERY | 46 | Close an active query cursor. | no | 3.0.0 | REQUEST_QUERY_NEXT_PAGE | 47 | Get next page of a query result | no | 3.0.0 | REQUEST_TX_COMMIT | 60 | Commit transaction. | no | REQUEST_DB_RELOAD | 73 | Reload database. | no | 1.0rc4 | REQUEST_PUSH_RECORD | 79 | no | 1.0rc6 |
REQUEST_PUSH_DISTRIB_CONFIG | 80 | no | 1.0rc6 |
REQUEST_PUSH_LIVE_QUERY | 81 | no | 2.1-rc2 |
REQUEST_DB_COPY | 90 | no | 1.0rc8 |
REQUEST_REPLICATION | 91 | no | 1.0 |
REQUEST_CLUSTER | 92 | no | 1.0 |
REQUEST_DB_TRANSFER | 93 | no | 1.0.2 |
REQUEST_DB_FREEZE | 94 | no | 1.1.0 |
REQUEST_DB_RELEASE | 95 | no | 1.1.0 |
REQUEST_DATACLUSTER_FREEZE (deprecated) | 96 | no |
| REQUEST_DATACLUSTER_RELEASE (deprecated) | 97 | no |
| REQUEST_CREATE_SBTREE_BONSAI | 110 | Creates an sb-tree bonsai on the remote server | no | 1.7rc1 |
REQUEST_SBTREE_BONSAI_GET | 111 | Get value by key from sb-tree bonsai | no | 1.7rc1 |
REQUEST_SBTREE_BONSAI_FIRST_KEY | 112 | Get first key from sb-tree bonsai | no | 1.7rc1 |
REQUEST_SBTREE_BONSAI_GET_ENTRIES_MAJOR | 113 | Gets the portion of entries greater than the specified one. If returns 0 entries than the specified entrie is the largest | no | 1.7rc1 |
REQUEST_RIDBAG_GET_SIZE | 114 | Rid-bag specific operation. Send but does not save changes of rid bag. Retrieves computed size of rid bag. | no | 1.7rc1 |
REQUEST_INDEX_GET | 120 | Lookup in an index by key | no | 2.1rc4 |
REQUEST_INDEX_PUT | 121 | Create or update an entry in an index | no | 2.1rc4 |
REQUEST_INDEX_REMOVE | 122 | Remove an entry in an index by key | no | 2.1rc4 |
REQUEST_INCREMENTAL_RESTORE | Incremental restore | no | 2.2-rc1 | ResponseEvery request has a response unless the command supports the asynchronous mode (look at the table above).
Push RequestA push request is a message sent by the server without any request from the client, it has a similar structure of a response and is distinguished using the respose status byte:
StatusesEvery time the client sends a request, and the command is not in asynchronous mode (look at the table above), client must read the one-byte response status that indicates OK or ERROR. The rest of response bytes depends on this first byte.
OK response bytes are depends for every request type. ERROR response bytes sequence described below. ErrorsThe format is: The pairs exception-class and exception-message continue while the following byte is 1. A 0 in this position indicates that no more data follows. E.g. (parentheses are used here just to separate fields to make this easier to read: they are not present in the server response):
Example of 2 depth-levels exception:
Since 1.6.1 we also send serialized version of exception thrown on server side. This allows to preserve full stack trace of server exception on client side but this feature can be used by Java clients only. OperationsThis section explains the request and response messages of all suported operations. REQUEST_SHUTDOWNShut down the server. Requires “shutdown” permission to be set in orientdb-server-config.xml file.
Typically the credentials are those of the OrientDB server administrator. This is not the same as the admin user for individual databases. REQUEST_CONNECTThis is the first operation requested by the client when it needs to work with the server instance. This operation returns the Session-Id of the new client to reuse for all the next calls.
Request
Typically the credentials are those of the OrientDB server administrator. This is not the same as the admin user for individual databases. Response
REQUEST_DB_OPENThis is the first operation the client should call. It opens a database on the remote OrientDB Server. This operation returns the Session-Id of the new client to reuse for all the next calls and the list of configured clusters in the opened databse.
Request
Response
REQUEST_DB_REOPENUsed on new sockets for associate the specific socket with the server side session for the specific client, can be used exclusively with the token authentication
REQUEST_DB_CREATECreates a database in the remote OrientDB server instance.
Request
Note: it doesn’t make sense to use REQUEST_DB_CLOSECloses the database and the network connection to the OrientDB server instance. No response is expected.
REQUEST_DB_EXISTAsks if a database exists in the OrientDB server instance.
Request
Response
REQUEST_DB_RELOADReloads information about the given database. Available since
Response
REQUEST_DB_DROPRemoves a database from the OrientDB server instance. This operation returns a successful response if the database is deleted successfully. Otherwise, if the database doesn’t exist on the server, it returns an error (an
Request
REQUEST_DB_SIZEReturns the size of the currently open database.
Response
REQUEST_DB_COUNTRECORDSReturns the number of records in the currently open database.
Response
REQUEST_DATACLUSTER_ADDAdd a new data cluster. Deprecated.
Where: type is one of “PHYSICAL” or “MEMORY”. If cluster-id is -1 (recommended value) new cluster id will be generated. REQUEST_DATACLUSTER_DROPRemove a cluster. Deprecated.
Where:
REQUEST_DATACLUSTER_COUNTReturns the number of records in one or more clusters. Deprecated.
Where:
ExampleRequest the record count for clusters 5, 6 and 7. Note the “03” at the beginning to tell you’re passing 3 cluster ids (as short each). 1,000 as long (8 bytes) is the answer.
REQUEST_DATACLUSTER_DATARANGEReturns the range of record ids for a cluster. Deprecated.
ExampleRequest the range for cluster 7. The range 0-1,000 is returned in the response as 2 longs (8 bytes each).
REQUEST_RECORD_LOADLoads a record by its Record ID, according to a fetch plan.
Request
Response
REQUEST_RECORD_LOAD_IF_VERSION_NOT_LATESTLoads a record by Record ID, according to a fetch plan. The record is only loaded if the persistent version is more recent of the version specified in the request.
Request
Response
REQUEST_RECORD_CREATECreates a new record. Returns the Record ID of the newly created record.. New records can have version > 0 (since
Request
In versions before Response
The last part of response (from REQUEST_RECORD_UPDATEUpdates the record identified by the given Record ID. Returns the new version of the record.
Request
Response
The last part of response (from REQUEST_RECORD_DELETEDelete a record identified by the given Record ID. During the optimistic transaction the record will be deleted only if the given version and the version of the record on the server match. This operation returns true if the record is deleted successfully, false otherwise.
Request
Response
REQUEST_COMMANDExecutes remote commands.
Request
ResponseResponse is different for synchronous and asynchronous request:
REQUEST_QUERYExecutes remote commands.
Request
Response
PROJECTION (OResult) serialization
REQUEST_CLOSE_QUERYCloses open query cursors. Queries always have to be closed to free the cursor memory
REQUEST_QUERY_NEXT_PAGERequests next page from the results of a running query
REQUEST_TX_COMMITCommits a transaction. This operation flushes all the pending changes to the server side.
Request
Transaction entryEach transaction entry can specify one out of three actions to perform: create, update or delete. The general form of a transaction entry (tx-entry above) is:
The first byte means that there’s another entry next. The values of the rest of these attributes depend directly on the operation type. Update
Delete
Create
Transaction IDEach transaction must have an ID; the client is responsible for assigning an ID to each transaction. The ID must be unique in the scope of each session. ResponseThe response contains two parts:
If the version of a created record is not Look at Optimistic Transaction to know how temporary Record IDs are managed. The last part of response (from REQUEST_INDEX_GETLookups in an index by key.
Request
Response
REQUEST_INDEX_PUTCreate or update an entry in index by key.
Where:
REQUEST_INDEX_REMOVERemove an entry by key from an index. It returns true if the entry was present, otherwise false.
Where:
REQUEST_CREATE_SBTREE_BONSAI
See: serialization of collection pointer Creates an sb-tree bonsai on the remote server. REQUEST_SBTREE_BONSAI_GET
See: serialization of collection pointer Get value by key from sb-tree bonsai. Key and value are serialized according to format of tree serializer. If the operation is used by RidBag key is always a RID and value can be null or integer. REQUEST_SBTREE_BONSAI_FIRST_KEY
See: serialization of collection pointer Get first key from sb-tree bonsai. Null if tree is empty. Key are serialized according to format of tree serializer. If the operation is used by RidBag key is null or RID. REQUEST_SBTREE_BONSAI_GET_ENTRIES_MAJOR
See: serialization of collection pointer Gets the portion of entries major than specified one. If returns 0 entries than the specified entry is the largest. Keys and values are serialized according to format of tree serializer. If the operation is used by RidBag key is always a RID and value is integer. Default pageSize is 128. REQUEST_RIDBAG_GET_SIZE
See: serialization of collection pointer, serialization of collection changes Rid-bag specific operation. Send but does not save changes of rid bag. Retrieves computed size of rid bag. Special use of LINKSET types
Starting from 1.0rc8-SNAPSHOT OrientDB can transform collections of links from the classic mode:
to:
For more information look at the announcement of this new feature: https://groups.google.com/d/topic/orient-database/QF52JEwCuTM/discussion In practice to optimize cases with many relationships/edges the collection is transformed in a mvrb-tree. This is because the embedded object. In that case the important thing is the link to the root node of the balanced tree. You can disable this behaviour by setting mvrbtree.ridBinaryThreshold = -1 Where mvrbtree.ridBinaryThreshold is the threshold where OrientDB will use the tree instead of plain collection (as before). -1 means “hey, never use the new mode but leave all as before”. Tree node binary structureTo improve performance this structure is managed in binary form. Below how is made:
Where:
The size of the tree-node on disk (and memory) is fixed to avoid fragmentation. To compute it: 39 bytes + 10 * PAGE-SIZE bytes. For a page-size = 16 you’ll have 39 + 160 = 199 bytes. REQUEST_PUSH_DISTRIB_CONFIG
where: configuration is and oriendb document serialized with the network Record Format, that contain the distributed configuration. REQUEST_PUSH_LIVE_QUERY
where:
message-body is one for each type of message Record Message Body:
where:
query_token the token that identify the relative query of the push message, it match the result token of the live query command request. Usubscribe Message Body:
query_token the token for identify the query that has been usubscribed. Historyversion 36add support for REQUEST_INCREMENTAL_RESTORE version 35command result review: add support for “wrapped types” on command result set, removed support for “simple types”. is now possible a new option the old options version 34Add flags version 33Removed the token data from error heandling header in case of non token session. Removed the db-type from REQUEST_DB_OPEN added REQUEST_DB_REOPEN Version 32Added support of streamable resultset in case of sync command, added a new result of type ‘i’ that stream the result in the same way of async result. Version 31Added new commands to manipulate idexes: REQUEST_INDEX_GET, REQUEST_INDEX_PUT and REQUEST_INDEX_REMOVE. Version 30Added new command REQUEST_RECORD_LOAD_IF_VERSION_NOT_LATEST Version 29Added support support of live query in REQUEST_COMMAND, added new push command REQUEST_PUSH_LIVE_QUERY Version 28Since version 28 the REQUEST_RECORD_LOAD response order is changed from:
Version 27Since version 27 is introduced an extension to allow use a token based session, if this modality is enabled a few things change in the modality the protocol works.
protocol methods changed: REQUEST_DB_OPEN
REQUEST_CONNECT
Version 26Added cluster-id in the REQUEST_CREATE_RECORD response. Version 25Reviewd serialization of index changes in the REQUEST_TX_COMMIT for detais #2676 Removed double serialization of commands parameters, now the parameters are directly serialized in a document see Network Binary Protocol Commands and #2301 Version 24
Version 23
Version 22
Version 21
Version 20
Version 19
Version 18
Version 17
Version 16
Version 15
Version 14
Version 13
Version 12
Version 11
CompatibilityCurrent release of OrientDB server supports older client versions.
| ||||||||||||||||
