THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
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.
Code Block | ||||
---|---|---|---|---|
| ||||
for (Column col : tuple) {
switch (col.type().spec()) {
case BYTE:
packer.packByte(tuple.byteValue(col.name()));
break;
case SHORT:
... |
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). |
...