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>
0x00header.byte<(number_of_columns + 7) / 8> NULL-Bitmap.
For each column:
If column value is not null:
If
MYSQL_TYPE_DOUBLEtype : DOUBLE Binary encodingIf
MYSQL_TYPE_LONGLONGtype : BIGINT Binary encodingIf
MYSQL_TYPE_INTEGERtype : INTEGER Binary encodingIf
MYSQL_TYPE_MEDIUMINTtype : MEDIUMINT Binary encodingIf
MYSQL_TYPE_FLOATtype : FLOAT Binary encodingIf
MYSQL_TYPE_SMALLINTtype : SMALLINTBinary encodingIf
MYSQL_TYPE_YEARtype : YEAR Binary encodingIf
MYSQL_TYPE_TINYINTtype : TINYINT Binary encodingIf
MYSQL_TYPE_DATEtype : DATE Binary encodingIf
MYSQL_TYPE_TIMESTAMPtype : TIMESTAMP Binary encodingIf
MYSQL_TYPE_DATETIMEtype : TIMESTAMP Binary encodingIf
MYSQL_TYPE_TIMEtype : TIME Binary encodingIf
MYSQL_TYPE_NEWDECIMALtype : 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 0DOUBLE 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?

