...
int | Length of Payload |
... | Payload |
A simple way to serialize a tuple would be to write a map (String → ...) from column name to value.
However, thanks to schema-first approach, we can avoid sending column names with the values (serializing strings is expensive). Instead, we can write integer schema version, and then an array of values for every column in that schema.
int | Schema version |
arr | Column values in schema order. nil when there is no value for a particular column. |
To read or write a value for a column, we get the column type from the schema and use corresponding MsgPack data type according to Data Types Mapping above.
Request | |
---|---|
4 bytes | Magic number 49 47 4E 49, or "IGNI". Helps identifying 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). |
...