Coverage for mindsdb / api / mysql / mysql_proxy / data_types / mysql_packets / resultset_row_package.py: 28%
28 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1"""
2*******************************************************
3 * Copyright (C) 2017 MindsDB Inc. <copyright@mindsdb.com>
4 *
5 * This file is part of MindsDB Server.
6 *
7 * MindsDB Server can not be copied and/or distributed without the express
8 * permission of MindsDB Inc
9 *******************************************************
10"""
12from mindsdb.api.mysql.mysql_proxy.data_types.mysql_datum import Datum
13from mindsdb.api.mysql.mysql_proxy.data_types.mysql_packet import Packet
14from mindsdb.api.mysql.mysql_proxy.libs.constants.mysql import NULL_VALUE
17class ResultsetRowPacket(Packet):
18 """
19 Implementation based on:
20 https://dev.mysql.com/doc/internals/en/com-query-response.html#packet-ProtocolText::ResultsetRow
21 https://mariadb.com/kb/en/resultset-row/
22 """
24 def setup(self):
25 data = self._kwargs.get("data", {})
26 self.value = []
27 for val in data:
28 if val is None:
29 self.value.append(NULL_VALUE)
30 elif isinstance(val, bytes):
31 self.value.append(Datum("byte<lenenc>", val))
32 else:
33 self.value.append(Datum("string<lenenc>", str(val)))
35 @property
36 def body(self):
37 string = b""
38 for x in self.value:
39 if x is NULL_VALUE:
40 string += x
41 else:
42 string += x.toStringPacket()
44 self.setBody(string)
45 return self._body
47 @staticmethod
48 def test():
49 import pprint
51 pprint.pprint(str(ResultsetRowPacket().get_packet_string()))
54if __name__ == "__main__": 54 ↛ 55line 54 didn't jump to line 55 because the condition on line 54 was never true
55 ResultsetRowPacket.test()