Result Set Row
A result set row represents a database result set unit, which is usually generated by executing a statement that queries the database. Using COM_STMT_EXECUTE, the result set row is in binary format, otherswise in text format.
Text Result Set Row
For each column:
string column data.
The byte representation of the string according to client character collation.
Binary Result Set Row
byte<1>
0x00
header.byte<(number_of_columns + 7) / 8> NULL-Bitmap.
For each column:
If column value is not null:
If
MYSQL_TYPE_DOUBLE
type : DOUBLE Binary encodingIf
MYSQL_TYPE_LONGLONG
type : BIGINT Binary encodingIf
MYSQL_TYPE_INTEGER
type : INTEGER Binary encodingIf
MYSQL_TYPE_MEDIUMINT
type : MEDIUMINT Binary encodingIf
MYSQL_TYPE_FLOAT
type : FLOAT Binary encodingIf
MYSQL_TYPE_SMALLINT
type : SMALLINTBinary encodingIf
MYSQL_TYPE_YEAR
type : YEAR Binary encodingIf
MYSQL_TYPE_TINYINT
type : TINYINT Binary encodingIf
MYSQL_TYPE_DATE
type : DATE Binary encodingIf
MYSQL_TYPE_TIMESTAMP
type : TIMESTAMP Binary encodingIf
MYSQL_TYPE_DATETIME
type : TIMESTAMP Binary encodingIf
MYSQL_TYPE_TIME
type : TIME Binary encodingIf
MYSQL_TYPE_NEWDECIMAL
type : DECIMAL Binary encodingIf
MYSQL_TYPE_TINY_BLOB
,MYSQL_TYPE_MEDIUM_BLOB
,MYSQL_TYPE_LONG_BLOB
,MYSQL_TYPE_BLOB
,MYSQL_TYPE_GEOMETRY
,MYSQL_TYPE_STRING
,MYSQL_TYPE_VARCHAR
,MYSQL_TYPE_VAR_STRING
): byte value
NULL-Bitmap Values
The NULL
-Bitmap indicates if a parameter for a column is null (one bit per parameter) beginning with the 3rd bit. NULL
-bitmap size is (number_of_columns + 7) / 8.
DECIMAL Binary Encoding
DECIMAL
has no fixed size, so will be encoded as string. A DECIMAL(10,2)
with a value of -15.5
is stored as:
06 45 49 53 46 53 48 . - 1 5 . 5 0
DOUBLE Binary Encoding
DOUBLE
is the IEEE 754 floating-point value in Little-endian format on 8 bytes.
BIGINT Binary Encoding
BIGINT
is the value in Little-endian format on 8 bytes. Signed is defined by the Column field detail flag.
INTEGER Binary Encoding
INTEGER
is the value in Little-endian format on 4 bytes. Signed is defined by the Column field detail flag.
MEDIUMINT Binary Encoding
MEDIUMINT
is similar to INTEGER
binary encoding, even if MEDIUM
int is 3-bytes encoded server side. (Last byte will always be 0x00).
FLOAT Binary Encoding
FLOAT
is the IEEE 754 floating-point value in Little-endian format on 4 bytes.
SMALLINT Binary Encoding
SMALLINT
is the value in Little-endian format on 2 bytes. Signed is defined by the Column field detail flag.
YEAR Binary Encoding
YEAR
uses the same format as SMALLINT
.
TINYINT Binary Encoding
TINYINT
is the value of 1 byte. Signed is defined by the Column field detail flag.
DATE Binary Encoding
DATE
uses the same format as TIMESTAMP
binary encoding, with a data length of 0
for the special '0000-00-00
' value and 4
for the standard year/month/day format.
TIMESTAMP Binary Encoding
Data is encoded in 8 bytes without fractional seconds, 12 bytes with fractional seconds.
1
data length : 0 for special '0000-00-00 00:00:00' value. 4 with year + month + day of month only 7 for timestamps without fractional seconds 11 with fractional seconds
2-3
year on 2 bytes little-endian format
4
Month ( 1=january)
5
days of month
6
hour of day (0 if DATE type)
7
minutes (0 if DATE type)
8
seconds (0 if DATE type)
9-12
micro-second on 4 bytes little-endian format (only if data-length is > 7)
TIME Binary Encoding
Data is encoded in 9 bytes without fractional seconds, 13 bytes with fractional seconds.
int<1> data length: 0 for special '00:00:00' value, 8 without fractional seconds, 12 with fractional seconds.
This page is licensed: CC BY-SA / Gnu FDL
Last updated
Was this helpful?