Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add observable timestamp to TX_BEGIN operation

...

Response
4 bytesMagic number 49 47 4E 49, or "IGNI". Helps to identify misconfigured SSL or different server on the port.
intPayload length
intServer version major
intServer version minor
intServer version patch
intError code (0 for success)
stringError message (when error code is not 0)
intWhen error code is 0: Server idle timeout
stringWhen error code is 0: Server node id
string When error code is 0: Server node name (consistent id)
binWhen error code is 0: Server features (bitmask)
map (string → any)When error code is 0: Extensions (auth, attributes, etc). Client can skip unknown extension data (when server is newer).

...

Request
intOperation code
intRequest id, generated by client and returned as-is in response
...Operation-specific data


0 for success (when error code is not 0
Response
intType = 0
intRequest id
intFlags (1 = partition assignment changed)
longObservable timestamp (causality token)
uuid or nullTrace id (null for success)
intError code (when trace id is not null)
stringError message (when trace id is not null)
string or nullError stack trace (when trace id is not null)
map or nullError details (when trace id is not null)
...Operation-specific data (when trace id is null)

Request or response without operation-specific data is called basic request or basic response below.

...

Operation codes and request ids are omitted everywhere below for brevity.

TABLE_CREATE = 1

...

...

TABLE_DROP = 2

...

Basic response.

TABLES_GET = 3

Basic request.

Response
map (UUID -> string)map of table ids and names

Note: tables can only be created/deleted with SQL, there are no TABLE_CREATE or TABLE_DROP operations.

TABLE_GET = 4

Request
stringtable name

...

TUPLE_UPSERT = 10

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for all columns in given schema (nil when value is missing for a column)

...

TUPLE_GET = 12

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for key columns (in schema order)

...

TUPLE_UPSERT_ALL = 13

Request
UUIDtable ID
int or niltransaction ID
intschema ID
introw count
valuesrows with values for all columns in given schema (nil when value is missing for a column)

...

TUPLE_GET_ALL = 15

Request
UUIDtable ID
int or niltransaction ID
intschema ID, or nil when result set is empty
introw count
valuesarray of rows with values for key columns (in schema order)

...

TUPLE_GET_AND_UPSERT = 16

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for all columns in given schema (nil when value is missing for a column)

...

TUPLE_INSERT = 18

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for all columns in given schema (nil when value is missing for a column)

...

TUPLE_INSERT_ALL = 20

Request
UUIDtable ID
int or niltransaction ID
intschema ID
introw count
valuesrows with values for all columns in given schema (nil when value is missing for a column)

...

TUPLE_REPLACE = 22

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for all columns in given schema (nil when value is missing for a column)

...

TUPLE_REPLACE_EXACT = 24

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesoldRec: values for all columns in given schema (nil when value is missing for a column)
valuesnewRec: values for all columns in given schema (nil when value is missing for a column)

...

TUPLE_GET_AND_REPLACE = 26

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for all columns in given schema (nil when value is missing for a column)

...

TUPLE_DELETE = 28

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for key columns in given schema

...

Response
boolDelete result

TUPLE_DELETE_ALL = 29

Request
UUIDtable ID
int or niltransaction ID
intschema ID
introw count
valuesrows with values for key columns in a given schema


Response
intschema id, or nil when no rows were skipped
intskipped row count
valuesskipped rows (values for key columns in schema order)

...

TUPLE_DELETE_EXACT = 30

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for all columns in given schema (nil when value is missing for a column)

...

TUPLE_DELETE_ALL_EXACT = 31

Request
UUIDtable ID
int or niltransaction ID
intschema ID
introw count
valuesrows with values for all columns in given schema (nil when value is missing for a column)

...

TUPLE_GET_AND_DELETE = 32

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for all columns in given schema (nil when value is missing for a column)

...

TUPLE_CONTAINS_KEY = 33

Request
UUIDtable ID
int or niltransaction ID
intschema ID
valuesvalues for key columns

...

Response
boolwhether a tuple with the given key exists

TX_BEGIN = 43

Request
boolRead-only tx flag
longObservable timestamp (value from server - see standard response header)


Response
intTransaction ID

TX_COMMIT = 44

Request
intTransaction ID

Basic response

TX_ROLLBACK = 45

Request
intTransaction ID

Basic response

Risks and Assumptions

  • This IEP covers handshake and Tables API, which is the only public API available at the moment.
  • Invoke API is out of scope: code deployment and processor serialization should be designed separately.

...