Result Set Packets
MariaDB Server sends the following packets as part of a result set: A resultset consists of different packets:
if not (
MARIADB_CLIENT_CACHE_METADATA
capability set) OR (send metadata == 1)for each column (i.e column_count times)
if not (
CLIENT_DEPRECATE_EOF
capability set) EOF_Packetif error
else
if
CLIENT_DEPRECATE_EOF
capabilityOK_Packet with a 0xFE header
else EOF_Packet
It would be unsafe to assume that any packet with a 0xFE header is an OK packet (OK_Packet) or an EOF packet (EOF_Packet), because result-set row packets (ResultsetRow) can also begin with 0xFE when using the text protocol with a field length greater than 0xFFFFFF. To safely confirm that a packet with a 0xFE header is an OK packet (OK_Packet) or an EOF packet (EOF_Packet), you must also check that the packet length is less than 0xFFFFFF.
Column Count Packet
The column count packet describes the number of columns in the result set. It uses the following format:
int column count
if (
MARIADB_CLIENT_CACHE_METADATA
capability set)int<1> metadata follows (0 / 1)
The metadata indicator byte is only present if both the client and the server declare the MARIADB_CLIENT_CACHE_METADATA
capability.
If the metadata byte is set to 1, the normal metadata will follow the column definitions. If the metadata byte is set to 0, the Column Count Packet is immediately followed by the second EOF packet (EOF_Packet) or the resultset rows if the CLIENT_DEPRECATE_EOF
capability is set.
Column Definition Packet
A column definition packet describes a column in the result set. It uses the following format:
string catalog (always 'def')
string schema
string table alias
string table
string column alias
string column
if extended type supported (see
MARIADB_CLIENT_EXTENDED_METADATA
)int length of fixed fields (=0xC)
int<2> character set number
int<4> max. column size
int<1> decimals
int<2> - unused -
Field types
The column type field in the column definition packet describes the base type of the column. It also indicates how the values are encoded for COM_STMT_EXECUTE parameters and binary resultset rows.
Value
Protocol Column Type
Encoding
6
MYSQL_TYPE_NULL
Not used, nullness is indicated by the NULL-bitmap in the result
17
MYSQL_TYPE_TIMESTAMP2
Used only in the replication protocol
18
MYSQL_TYPE_DATETIME2
Used only in the replication protocol
19
MYSQL_TYPE_TIME2
Used only in the replication protocol
Field Details Flag
The column details flag describes certain column attributes and whether certain column options are set.
It is a bitmask with the following flags:
Flag Value
Flag Name
Flag Description
1
NOT_NULL
field cannot be null
2
PRIMARY_KEY
field is a primary key
4
UNIQUE_KEY
field is unique
8
MULTIPLE_KEY
field is in a multiple key
16
BLOB
is this field a Blob
32
UNSIGNED
is this field unsigned
64
ZEROFILL_FLAG
is this field a zerofill
128
BINARY_COLLATION
whether this field has a binary collation
256
ENUM
Field is an enumeration
512
AUTO_INCREMENT
field auto-increment
1024
TIMESTAMP
field is a timestamp value
2048
SET
field is a SET
4096
NO_DEFAULT_VALUE_FLAG
field doesn't have default value
8192
ON_UPDATE_NOW_FLAG
field is set to NOW on UPDATE
32768
NUM_FLAG
field is num
Extended metadata
This extended column type information can be used to find out more specific details about the column type.
For example:
For a POINT column, the column type field will be
MYSQL_TYPE_GEOMETRY
, but the extended type will indicate 'point'.For a JSON column, the column type field will be
MYSQL_TYPE_STRING
, but the extended type will indicate 'json'.
This page is licensed: CC BY-SA / Gnu FDL
Last updated
Was this helpful?