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:

The byte representation of the string according to client character collation.

Binary Result Set Row

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.

Byte Position
Description

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.

  • If data length > 0:

This page is licensed: CC BY-SA / Gnu FDL

Last updated

Was this helpful?