...
Key tuples are tuples with key columns only. Key columns always come first in the schema. So if there are 2 key columns, first two values of the tuple is the key.
Dynamic schema expansion (Live-schema)
IEP-54: Schema-first Approach includes "dynamic schema expansion" feature, which means that users can insert arbitrary tuples and Ignite will automatically update the schema with extra fields, if any.
To support this feature, we provide schemaless alternatives for all operations that can involve automatic schema updates (upsert, insert, etc).
Handshake
Request |
---|
4 bytes | Magic number 49 47 4E 49, or "IGNI". Helps to identify misconfigured SSL or other apps probing the port. |
int | Payload length |
int | Version major |
int | Version minor |
int | Version patch |
int | Client code (1 for JDBC, 2 for general-purpose client) |
bin | Features (bitmask) |
map (string → any) | Extensions (auth, attributes, etc). Server can skip unknown extension data (when client is newer). |
...
- If columns don't match, request the latest schema and try again.
- If the latest schema still does not match, and live schema is enabled, use TUPLE_UPSERT_SCHEMALESS
TUPLE
...
_
...
Basic response.
TUPLE_GET = 12
Request |
---|
UUID | table ID |
int | schema ID |
values | values for key columns (in schema order) |
...
Request |
---|
UUID | table ID |
int | schema ID |
int | row count |
values | rows with values for all columns in given schema (nil when value is missing for a column) |
Basic response.
TUPLE_UPSERT_ALL_SCHEMALESS = 14
Request |
---|
UUID | table ID |
arr of map | array of tuples |
Basic response.
TUPLE_GET_ALL = 15
...
Response |
---|
int or nil | schema id for the current tuple, or nil when there is no matching record |
values | values for value columns in schema order |
TUPLE
...
_
...
TUPLE_INSERT = 18
Request |
---|
UUID | table ID |
int | schema ID |
values | values for all columns in given schema (nil when value is missing for a column) |
Response |
---|
bool | Insert result |
TUPLE_INSERT_SCHEMALESS = 19
Request |
---|
UUID | table ID |
map | tuple as map |
Response |
---|
bool | Insert result |
...
Response |
---|
int | schema id, or nil when no rows were skipped |
int | skipped row count |
values | skipped rows (values in schema order) |
TUPLE_INSERT_ALL_SCHEMALESS = 21
Request |
---|
UUID | table ID |
arr of map | array of tuples |
Response |
---|
arr of map | skipped rows, or nil when none were skipped |
TUPLE_REPLACE = 22
Request |
---|
UUID | table ID |
int | schema ID |
values | values for all columns in given schema (nil when value is missing for a column) |
Response |
---|
bool | Replace result |
TUPLE_REPLACE_SCHEMALESS = 23
Request |
---|
UUID | table ID |
map | tuple as map |
Response |
---|
bool | Replace result |
...
Response |
---|
bool | Replace result |
TUPLE_
...
TUPLE_GET_AND_REPLACE = 26
Request |
---|
UUID | table ID |
int | schema ID |
values | values for all columns in given schema (nil when value is missing for a column) |
...
Response |
---|
int or nil | schema id for the current tuple, or nil when there is no matching record |
values | values for value columns in schema order |
TUPLE_GET_AND_REPLACE_SCHEMALESS = 27
Request |
---|
UUID | table ID |
map | tuple as map |
Response |
---|
int or nil | schema id for the current tuple, or nil when there is no matching record |
values | tuple values in schema order |
TUPLE_DELETE = 28
...
Request |
---|
UUID | table ID |
int | schema ID |
int | row count |
values | rows with values for key columns in a given schema |
Response |
---|
int | schema id, or nil when no rows were skipped |
int | skipped row count |
values | skipped rows (values for key columns in schema order) |
TUPLE_DELETE_EXACT = 30
Request |
---|
UUID | table ID |
int | schema ID |
values | values for all columns in given schema (nil when value is missing for a column) |
...
Request |
---|
UUID | table ID |
int | schema ID |
int | row count |
values | rows with values for all columns in given schema (nil when value is missing for a column) |
Response |
---|
int | schema id, or nil when no rows were skipped |
int | skipped row count |
values | skipped rows (values for key columns in schema order) |
TUPLE_GET_AND_DELETE = 32
...