singlestoredb 1.15.2__py3-none-any.whl → 1.15.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of singlestoredb might be problematic. Click here for more details.

singlestoredb/__init__.py CHANGED
@@ -13,7 +13,7 @@ Examples
13
13
 
14
14
  """
15
15
 
16
- __version__ = '1.15.2'
16
+ __version__ = '1.15.4'
17
17
 
18
18
  from typing import Any
19
19
 
@@ -647,23 +647,24 @@ class Cursor(connection.Cursor):
647
647
  type_code = types.ColumnType.get_code(data_type)
648
648
  prec, scale = get_precision_scale(col['dataType'])
649
649
  converter = http_converters.get(type_code, None)
650
+
650
651
  if 'UNSIGNED' in data_type:
651
652
  flags = 32
653
+
652
654
  if data_type.endswith('BLOB') or data_type.endswith('BINARY'):
653
655
  converter = functools.partial(
654
656
  b64decode_converter, converter, # type: ignore
655
657
  )
656
658
  charset = 63 # BINARY
659
+
657
660
  if type_code == 0: # DECIMAL
658
661
  type_code = types.ColumnType.get_code('NEWDECIMAL')
659
662
  elif type_code == 15: # VARCHAR / VARBINARY
660
663
  type_code = types.ColumnType.get_code('VARSTRING')
661
- if type_code == 246 and prec is not None: # NEWDECIMAL
662
- prec += 1 # for sign
663
- if scale is not None and scale > 0:
664
- prec += 1 # for decimal
664
+
665
665
  if converter is not None:
666
666
  convs.append((i, None, converter))
667
+
667
668
  description.append(
668
669
  Description(
669
670
  str(col['name']), type_code,
@@ -673,6 +674,7 @@ class Cursor(connection.Cursor):
673
674
  ),
674
675
  )
675
676
  pymy_res.append(PyMyField(col['name'], flags, charset))
677
+
676
678
  self._descriptions.append(description)
677
679
  self._schemas.append(get_schema(self._results_type, description))
678
680
 
@@ -936,7 +938,7 @@ class Cursor(connection.Cursor):
936
938
 
937
939
  def __iter__(self) -> Iterable[Tuple[Any, ...]]:
938
940
  """Return result iterator."""
939
- return iter(self._rows)
941
+ return iter(self._rows[self._row_idx:])
940
942
 
941
943
  def __enter__(self) -> 'Cursor':
942
944
  """Enter a context."""
@@ -324,13 +324,26 @@ class FieldDescriptorPacket(MysqlPacket):
324
324
  raise TypeError(f'unrecognized extended data type: {ext_type_code}')
325
325
 
326
326
  def description(self):
327
- """Provides a 7-item tuple compatible with the Python PEP249 DB Spec."""
327
+ """
328
+ Provides a 9-item tuple.
329
+
330
+ Standard descriptions only have 7 fields according to the Python
331
+ PEP249 DB Spec, but we need to surface information about unsigned
332
+ types and charsetnr for proper type handling.
333
+
334
+ """
335
+ precision = self.get_column_length()
336
+ if self.type_code in (FIELD_TYPE.DECIMAL, FIELD_TYPE.NEWDECIMAL):
337
+ if precision:
338
+ precision -= 1 # for the sign
339
+ if self.scale > 0:
340
+ precision -= 1 # for the decimal point
328
341
  return Description(
329
342
  self.name,
330
343
  self.type_code,
331
344
  None, # TODO: display_length; should this be self.length?
332
345
  self.get_column_length(), # 'internal_size'
333
- self.get_column_length(), # 'precision' # TODO: why!?!?
346
+ precision, # 'precision'
334
347
  self.scale,
335
348
  self.flags % 2 == 0,
336
349
  self.flags,
@@ -0,0 +1,307 @@
1
+ CREATE TABLE IF NOT EXISTS alltypes (
2
+ `id` INT(11),
3
+ `tinyint` TINYINT,
4
+ `unsigned_tinyint` TINYINT UNSIGNED,
5
+ `bool` BOOL,
6
+ `boolean` BOOLEAN,
7
+ `smallint` SMALLINT,
8
+ `unsigned_smallint` SMALLINT UNSIGNED,
9
+ `mediumint` MEDIUMINT,
10
+ `unsigned_mediumint` MEDIUMINT UNSIGNED,
11
+ `int24` MEDIUMINT,
12
+ `unsigned_int24` MEDIUMINT UNSIGNED,
13
+ `int` INT,
14
+ `unsigned_int` INT UNSIGNED,
15
+ `integer` INTEGER,
16
+ `unsigned_integer` INTEGER UNSIGNED,
17
+ `bigint` BIGINT,
18
+ `unsigned_bigint` BIGINT UNSIGNED,
19
+ `float` FLOAT,
20
+ `double` DOUBLE,
21
+ `real` REAL,
22
+ `decimal` DECIMAL(20,6),
23
+ `dec` DEC(20,6),
24
+ `fixed` FIXED(20,6),
25
+ `numeric` NUMERIC(20,6),
26
+ `date` DATE,
27
+ `time` TIME,
28
+ `time_6` TIME(6),
29
+ `datetime` DATETIME,
30
+ `datetime_6` DATETIME(6),
31
+ `timestamp` TIMESTAMP,
32
+ `timestamp_6` TIMESTAMP(6),
33
+ `year` YEAR,
34
+ `char_100` CHAR(100),
35
+ `binary_100` BINARY(100),
36
+ `varchar_200` VARCHAR(200),
37
+ `varbinary_200` VARBINARY(200),
38
+ `longtext` LONGTEXT,
39
+ `mediumtext` MEDIUMTEXT,
40
+ `text` TEXT,
41
+ `tinytext` TINYTEXT,
42
+ `longblob` LONGBLOB,
43
+ `mediumblob` MEDIUMBLOB,
44
+ `blob` BLOB,
45
+ `tinyblob` TINYBLOB,
46
+ `json` JSON,
47
+ -- `geographypoint` GEOGRAPHYPOINT,
48
+ -- `geography` GEOGRAPHY,
49
+ `enum` ENUM('one', 'two', 'three'),
50
+ `set` SET('one', 'two', 'three'),
51
+ `bit` BIT
52
+ )
53
+ COLLATE='utf8_unicode_ci';
54
+
55
+ INSERT INTO alltypes SET
56
+ `id`=0,
57
+ `tinyint`=80,
58
+ `unsigned_tinyint`=85,
59
+ `bool`=0,
60
+ `boolean`=1,
61
+ `smallint`=-27897,
62
+ `unsigned_smallint`=27897,
63
+ `mediumint`=104729,
64
+ `unsigned_mediumint`=120999,
65
+ `int24`=-200899,
66
+ `unsigned_int24`=407709,
67
+ `int`=-1295369311,
68
+ `unsigned_int`=3872362332,
69
+ `integer`=-1741727421,
70
+ `unsigned_integer`=3198387363,
71
+ `bigint`=-266883847,
72
+ `unsigned_bigint`=980007287362,
73
+ `float`=-146486683.754744,
74
+ `double`=-474646154.719356,
75
+ `real`=-901409776.279346,
76
+ `decimal`=28111097.610822,
77
+ `dec`=389451155.931428,
78
+ `fixed`=-143773416.044092,
79
+ `numeric`=866689461.300046,
80
+ `date`='8524-11-10',
81
+ `time`='00:07:00',
82
+ `time_6`='01:10:00.000002',
83
+ `datetime`='9948-03-11 15:29:22',
84
+ `datetime_6`='1756-10-29 02:02:42.000008',
85
+ `timestamp`='1980-12-31 01:10:23',
86
+ `timestamp_6`='1991-01-02 22:15:10.000006',
87
+ `year`=1923,
88
+ `char_100`='This is a test of a 100 character column.',
89
+ `binary_100`=x'000102030405060708090A0B0C0D0E0F',
90
+ `varchar_200`='This is a test of a variable character column.',
91
+ `varbinary_200`=x'000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F',
92
+ `longtext`='This is a longtext column.',
93
+ `mediumtext`='This is a mediumtext column.',
94
+ `text`='This is a text column.',
95
+ `tinytext`='This is a tinytext column.',
96
+ `longblob`=x'000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F',
97
+ `mediumblob`=x'000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F',
98
+ `blob`=x'000102030405060708090A0B0C0D0E0F',
99
+ `tinyblob`=x'0A0B0C0D0E0F',
100
+ `json`='{"a": 10, "b": 2.75, "c": "hello world"}',
101
+ `enum`='one',
102
+ `set`='two',
103
+ `bit`=128
104
+ ;
105
+
106
+ INSERT INTO alltypes SET
107
+ `id`=1,
108
+ `tinyint`=NULL,
109
+ `bool`=NULL,
110
+ `boolean`=NULL,
111
+ `smallint`=NULL,
112
+ `mediumint`=NULL,
113
+ `int24`=NULL,
114
+ `int`=NULL,
115
+ `integer`=NULL,
116
+ `bigint`=NULL,
117
+ `float`=NULL,
118
+ `double`=NULL,
119
+ `real`=NULL,
120
+ `decimal`=NULL,
121
+ `dec`=NULL,
122
+ `fixed`=NULL,
123
+ `numeric`=NULL,
124
+ `date`=NULL,
125
+ `time`=NULL,
126
+ `time_6`=NULL,
127
+ `datetime`=NULL,
128
+ `datetime_6`=NULL,
129
+ `timestamp`=NULL,
130
+ `timestamp_6`=NULL,
131
+ `year`=NULL,
132
+ `char_100`=NULL,
133
+ `binary_100`=NULL,
134
+ `varchar_200`=NULL,
135
+ `longtext`=NULL,
136
+ `mediumtext`=NULL,
137
+ `text`=NULL,
138
+ `tinytext`=NULL,
139
+ `longblob`=NULL,
140
+ `mediumblob`=NULL,
141
+ `blob`=NULL,
142
+ `tinyblob`=NULL,
143
+ `json`=NULL,
144
+ `enum`=NULL,
145
+ `set`=NULL,
146
+ `bit`=NULL
147
+ ;
148
+
149
+ -- Minimum values
150
+ INSERT INTO alltypes SET
151
+ `id`=2,
152
+ `tinyint`=-128,
153
+ `unsigned_tinyint`=0,
154
+ `bool`=-128,
155
+ `boolean`=-128,
156
+ `smallint`=-32768,
157
+ `unsigned_smallint`=0,
158
+ `mediumint`=-8388608,
159
+ `unsigned_mediumint`=0,
160
+ `int24`=-8388608,
161
+ `unsigned_int24`=0,
162
+ `int`=-2147483648,
163
+ `unsigned_int`=0,
164
+ `integer`=-2147483648,
165
+ `unsigned_integer`=0,
166
+ `bigint`=-9223372036854775808,
167
+ `unsigned_bigint`=0,
168
+ `float`=0,
169
+ `double`=-1.7976931348623158e308,
170
+ `real`=-1.7976931348623158e308,
171
+ `decimal`=-99999999999999.999999,
172
+ `dec`=-99999999999999.999999,
173
+ `fixed`=-99999999999999.999999,
174
+ `numeric`=-99999999999999.999999,
175
+ `date`='1000-01-01',
176
+ `time`='-838:59:59',
177
+ `time_6`='-838:59:59.000000',
178
+ `datetime`='1000-01-01 00:00:00',
179
+ `datetime_6`='1000-01-01 00:00:00.000000',
180
+ `timestamp`='1970-01-01 00:00:01',
181
+ `timestamp_6`='1970-01-01 00:00:01.000000',
182
+ `year`=1901,
183
+ `char_100`='',
184
+ `binary_100`=x'',
185
+ `varchar_200`='',
186
+ `varbinary_200`=x'',
187
+ `longtext`='',
188
+ `mediumtext`='',
189
+ `text`='',
190
+ `tinytext`='',
191
+ `longblob`=x'',
192
+ `mediumblob`=x'',
193
+ `blob`=x'',
194
+ `tinyblob`=x'',
195
+ `json`='{}',
196
+ `enum`='one',
197
+ `set`='two',
198
+ `bit`=0
199
+ ;
200
+
201
+ -- Maximum values
202
+ INSERT INTO alltypes SET
203
+ `id`=3,
204
+ `tinyint`=127,
205
+ `unsigned_tinyint`=255,
206
+ `bool`=127,
207
+ `boolean`=127,
208
+ `smallint`=32767,
209
+ `unsigned_smallint`=65535,
210
+ `mediumint`=8388607,
211
+ `unsigned_mediumint`=16777215,
212
+ `int24`=8388607,
213
+ `unsigned_int24`=16777215,
214
+ `int`=2147483647,
215
+ `unsigned_int`=4294967295,
216
+ `integer`=2147483647,
217
+ `unsigned_integer`=4294967295,
218
+ `bigint`=9223372036854775807,
219
+ `unsigned_bigint`=18446744073709551615,
220
+ `float`=0,
221
+ `double`=1.7976931348623158e308,
222
+ `real`=1.7976931348623158e308,
223
+ `decimal`=99999999999999.999999,
224
+ `dec`=99999999999999.999999,
225
+ `fixed`=99999999999999.999999,
226
+ `numeric`=99999999999999.999999,
227
+ `date`='9999-12-31',
228
+ `time`='838:59:59',
229
+ `time_6`='838:59:59.999999',
230
+ `datetime`='9999-12-31 23:59:59',
231
+ `datetime_6`='9999-12-31 23:59:59.999999',
232
+ `timestamp`='2038-01-18 21:14:07',
233
+ `timestamp_6`='2038-01-18 21:14:07.999999',
234
+ `year`=2155,
235
+ `char_100`='',
236
+ `binary_100`=x'',
237
+ `varchar_200`='',
238
+ `varbinary_200`=x'',
239
+ `longtext`='',
240
+ `mediumtext`='',
241
+ `text`='',
242
+ `tinytext`='',
243
+ `longblob`=x'',
244
+ `mediumblob`=x'',
245
+ `blob`=x'',
246
+ `tinyblob`=x'',
247
+ `json`='{}',
248
+ `enum`='one',
249
+ `set`='two',
250
+ `bit`=18446744073709551615
251
+ ;
252
+
253
+ -- Zero values
254
+ --
255
+ -- Note that v8 of SingleStoreDB does not allow zero date/times by
256
+ -- default, so they are set to NULL here.
257
+ --
258
+ INSERT INTO alltypes SET
259
+ `id`=4,
260
+ `tinyint`=0,
261
+ `unsigned_tinyint`=0,
262
+ `bool`=0,
263
+ `boolean`=0,
264
+ `smallint`=0,
265
+ `unsigned_smallint`=0,
266
+ `mediumint`=0,
267
+ `unsigned_mediumint`=0,
268
+ `int24`=0,
269
+ `unsigned_int24`=0,
270
+ `int`=0,
271
+ `unsigned_int`=0,
272
+ `integer`=0,
273
+ `unsigned_integer`=0,
274
+ `bigint`=0,
275
+ `unsigned_bigint`=0,
276
+ `float`=0,
277
+ `double`=0.0,
278
+ `real`=0.0,
279
+ `decimal`=0.0,
280
+ `dec`=0.0,
281
+ `fixed`=0.0,
282
+ `numeric`=0.0,
283
+ `date`=NULL,
284
+ `time`='00:00:00',
285
+ `time_6`='00:00:00.000000',
286
+ `datetime`=NULL,
287
+ `datetime_6`=NULL,
288
+ `timestamp`=NULL,
289
+ `timestamp_6`=NULL,
290
+ `year`=NULL,
291
+ `char_100`='',
292
+ `binary_100`=x'',
293
+ `varchar_200`='',
294
+ `varbinary_200`=x'',
295
+ `longtext`='',
296
+ `mediumtext`='',
297
+ `text`='',
298
+ `tinytext`='',
299
+ `longblob`=x'',
300
+ `mediumblob`=x'',
301
+ `blob`=x'',
302
+ `tinyblob`=x'',
303
+ `json`='{}',
304
+ `enum`='one',
305
+ `set`='two',
306
+ `bit`=0
307
+ ;
@@ -0,0 +1,208 @@
1
+ CREATE TABLE IF NOT EXISTS alltypes_no_nulls (
2
+ `id` INT(11) NOT NULL,
3
+ `tinyint` TINYINT NOT NULL,
4
+ `unsigned_tinyint` TINYINT UNSIGNED NOT NULL,
5
+ `bool` BOOL NOT NULL,
6
+ `boolean` BOOLEAN NOT NULL,
7
+ `smallint` SMALLINT NOT NULL,
8
+ `unsigned_smallint` SMALLINT UNSIGNED NOT NULL,
9
+ `mediumint` MEDIUMINT NOT NULL,
10
+ `unsigned_mediumint` MEDIUMINT UNSIGNED NOT NULL,
11
+ `int24` MEDIUMINT NOT NULL,
12
+ `unsigned_int24` MEDIUMINT UNSIGNED NOT NULL,
13
+ `int` INT NOT NULL,
14
+ `unsigned_int` INT UNSIGNED NOT NULL,
15
+ `integer` INTEGER NOT NULL,
16
+ `unsigned_integer` INTEGER UNSIGNED NOT NULL,
17
+ `bigint` BIGINT NOT NULL,
18
+ `unsigned_bigint` BIGINT UNSIGNED NOT NULL,
19
+ `float` FLOAT NOT NULL,
20
+ `double` DOUBLE NOT NULL,
21
+ `real` REAL NOT NULL,
22
+ `decimal` DECIMAL(20,6) NOT NULL,
23
+ `dec` DEC(20,6) NOT NULL,
24
+ `fixed` FIXED(20,6) NOT NULL,
25
+ `numeric` NUMERIC(20,6) NOT NULL,
26
+ `date` DATE NOT NULL,
27
+ `time` TIME NOT NULL,
28
+ `time_6` TIME(6) NOT NULL,
29
+ `datetime` DATETIME NOT NULL,
30
+ `datetime_6` DATETIME(6) NOT NULL,
31
+ `timestamp` TIMESTAMP NOT NULL,
32
+ `timestamp_6` TIMESTAMP(6) NOT NULL,
33
+ `year` YEAR NOT NULL,
34
+ `char_100` CHAR(100) NOT NULL,
35
+ `binary_100` BINARY(100) NOT NULL,
36
+ `varchar_200` VARCHAR(200) NOT NULL,
37
+ `varbinary_200` VARBINARY(200) NOT NULL,
38
+ `longtext` LONGTEXT NOT NULL,
39
+ `mediumtext` MEDIUMTEXT NOT NULL,
40
+ `text` TEXT NOT NULL,
41
+ `tinytext` TINYTEXT NOT NULL,
42
+ `longblob` LONGBLOB NOT NULL,
43
+ `mediumblob` MEDIUMBLOB NOT NULL,
44
+ `blob` BLOB NOT NULL,
45
+ `tinyblob` TINYBLOB NOT NULL,
46
+ `json` JSON NOT NULL,
47
+ -- `geographypoint` GEOGRAPHYPOINT NOT NULL,
48
+ -- `geography` GEOGRAPHY NOT NULL,
49
+ `enum` ENUM('one', 'two', 'three') NOT NULL,
50
+ `set` SET('one', 'two', 'three') NOT NULL,
51
+ `bit` BIT NOT NULL
52
+ )
53
+ COLLATE='utf8_unicode_ci';
54
+
55
+ INSERT INTO alltypes_no_nulls SET
56
+ `id`=0,
57
+ `tinyint`=80,
58
+ `unsigned_tinyint`=85,
59
+ `bool`=0,
60
+ `boolean`=1,
61
+ `smallint`=-27897,
62
+ `unsigned_smallint`=27897,
63
+ `mediumint`=104729,
64
+ `unsigned_mediumint`=120999,
65
+ `int24`=-200899,
66
+ `unsigned_int24`=407709,
67
+ `int`=-1295369311,
68
+ `unsigned_int`=3872362332,
69
+ `integer`=-1741727421,
70
+ `unsigned_integer`=3198387363,
71
+ `bigint`=-266883847,
72
+ `unsigned_bigint`=980007287362,
73
+ `float`=-146486683.754744,
74
+ `double`=-474646154.719356,
75
+ `real`=-901409776.279346,
76
+ `decimal`=28111097.610822,
77
+ `dec`=389451155.931428,
78
+ `fixed`=-143773416.044092,
79
+ `numeric`=866689461.300046,
80
+ `date`='8524-11-10',
81
+ `time`='00:07:00',
82
+ `time_6`='01:10:00.000002',
83
+ `datetime`='9948-03-11 15:29:22',
84
+ `datetime_6`='1756-10-29 02:02:42.000008',
85
+ `timestamp`='1980-12-31 01:10:23',
86
+ `timestamp_6`='1991-01-02 22:15:10.000006',
87
+ `year`=1923,
88
+ `char_100`='This is a test of a 100 character column.',
89
+ `binary_100`=x'000102030405060708090A0B0C0D0E0F',
90
+ `varchar_200`='This is a test of a variable character column.',
91
+ `varbinary_200`=x'000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F',
92
+ `longtext`='This is a longtext column.',
93
+ `mediumtext`='This is a mediumtext column.',
94
+ `text`='This is a text column.',
95
+ `tinytext`='This is a tinytext column.',
96
+ `longblob`=x'000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F',
97
+ `mediumblob`=x'000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F',
98
+ `blob`=x'000102030405060708090A0B0C0D0E0F',
99
+ `tinyblob`=x'0A0B0C0D0E0F',
100
+ `json`='{"a": 10, "b": 2.75, "c": "hello world"}',
101
+ `enum`='one',
102
+ `set`='two',
103
+ `bit`=128
104
+ ;
105
+
106
+ -- Minimum values
107
+ INSERT INTO alltypes_no_nulls SET
108
+ `id`=2,
109
+ `tinyint`=-128,
110
+ `unsigned_tinyint`=0,
111
+ `bool`=-128,
112
+ `boolean`=-128,
113
+ `smallint`=-32768,
114
+ `unsigned_smallint`=0,
115
+ `mediumint`=-8388608,
116
+ `unsigned_mediumint`=0,
117
+ `int24`=-8388608,
118
+ `unsigned_int24`=0,
119
+ `int`=-2147483648,
120
+ `unsigned_int`=0,
121
+ `integer`=-2147483648,
122
+ `unsigned_integer`=0,
123
+ `bigint`=-9223372036854775808,
124
+ `unsigned_bigint`=0,
125
+ `float`=0,
126
+ `double`=-1.7976931348623158e308,
127
+ `real`=-1.7976931348623158e308,
128
+ `decimal`=-99999999999999.999999,
129
+ `dec`=-99999999999999.999999,
130
+ `fixed`=-99999999999999.999999,
131
+ `numeric`=-99999999999999.999999,
132
+ `date`='1000-01-01',
133
+ `time`='-838:59:59',
134
+ `time_6`='-838:59:59.000000',
135
+ `datetime`='1000-01-01 00:00:00',
136
+ `datetime_6`='1000-01-01 00:00:00.000000',
137
+ `timestamp`='1970-01-01 00:00:01',
138
+ `timestamp_6`='1970-01-01 00:00:01.000000',
139
+ `year`=1901,
140
+ `char_100`='',
141
+ `binary_100`=x'',
142
+ `varchar_200`='',
143
+ `varbinary_200`=x'',
144
+ `longtext`='',
145
+ `mediumtext`='',
146
+ `text`='',
147
+ `tinytext`='',
148
+ `longblob`=x'',
149
+ `mediumblob`=x'',
150
+ `blob`=x'',
151
+ `tinyblob`=x'',
152
+ `json`='{}',
153
+ `enum`='one',
154
+ `set`='two',
155
+ `bit`=0
156
+ ;
157
+
158
+ -- Maximum values
159
+ INSERT INTO alltypes_no_nulls SET
160
+ `id`=3,
161
+ `tinyint`=127,
162
+ `unsigned_tinyint`=255,
163
+ `bool`=127,
164
+ `boolean`=127,
165
+ `smallint`=32767,
166
+ `unsigned_smallint`=65535,
167
+ `mediumint`=8388607,
168
+ `unsigned_mediumint`=16777215,
169
+ `int24`=8388607,
170
+ `unsigned_int24`=16777215,
171
+ `int`=2147483647,
172
+ `unsigned_int`=4294967295,
173
+ `integer`=2147483647,
174
+ `unsigned_integer`=4294967295,
175
+ `bigint`=9223372036854775807,
176
+ `unsigned_bigint`=18446744073709551615,
177
+ `float`=0,
178
+ `double`=1.7976931348623158e308,
179
+ `real`=1.7976931348623158e308,
180
+ `decimal`=99999999999999.999999,
181
+ `dec`=99999999999999.999999,
182
+ `fixed`=99999999999999.999999,
183
+ `numeric`=99999999999999.999999,
184
+ `date`='9999-12-31',
185
+ `time`='838:59:59',
186
+ `time_6`='838:59:59.999999',
187
+ `datetime`='9999-12-31 23:59:59',
188
+ `datetime_6`='9999-12-31 23:59:59.999999',
189
+ `timestamp`='2038-01-18 21:14:07',
190
+ `timestamp_6`='2038-01-18 21:14:07.999999',
191
+ `year`=2155,
192
+ `char_100`='',
193
+ `binary_100`=x'',
194
+ `varchar_200`='',
195
+ `varbinary_200`=x'',
196
+ `longtext`='',
197
+ `mediumtext`='',
198
+ `text`='',
199
+ `tinytext`='',
200
+ `longblob`=x'',
201
+ `mediumblob`=x'',
202
+ `blob`=x'',
203
+ `tinyblob`=x'',
204
+ `json`='{}',
205
+ `enum`='one',
206
+ `set`='two',
207
+ `bit`=18446744073709551615
208
+ ;
@@ -1446,7 +1446,7 @@ class TestConnection(unittest.TestCase):
1446
1446
  # Recent versions of polars have a problem with decimals
1447
1447
  class FixCompare(str):
1448
1448
  def __eq__(self, other):
1449
- return super().__eq__(other.replace('precision=None', 'precision=22'))
1449
+ return super().__eq__(other.replace('precision=None', 'precision=20'))
1450
1450
 
1451
1451
  dtypes = [
1452
1452
  ('id', 'Int32'),
@@ -1469,10 +1469,10 @@ class TestConnection(unittest.TestCase):
1469
1469
  ('float', 'Float32'),
1470
1470
  ('double', 'Float64'),
1471
1471
  ('real', 'Float64'),
1472
- ('decimal', FixCompare('Decimal(precision=22, scale=6)')),
1473
- ('dec', FixCompare('Decimal(precision=22, scale=6)')),
1474
- ('fixed', FixCompare('Decimal(precision=22, scale=6)')),
1475
- ('numeric', FixCompare('Decimal(precision=22, scale=6)')),
1472
+ ('decimal', FixCompare('Decimal(precision=20, scale=6)')),
1473
+ ('dec', FixCompare('Decimal(precision=20, scale=6)')),
1474
+ ('fixed', FixCompare('Decimal(precision=20, scale=6)')),
1475
+ ('numeric', FixCompare('Decimal(precision=20, scale=6)')),
1476
1476
  ('date', 'Date'),
1477
1477
  ('time', "Duration(time_unit='us')"),
1478
1478
  ('time_6', "Duration(time_unit='us')"),
@@ -1593,7 +1593,7 @@ class TestConnection(unittest.TestCase):
1593
1593
  # Recent versions of polars have a problem with decimals
1594
1594
  class FixCompare(str):
1595
1595
  def __eq__(self, other):
1596
- return super().__eq__(other.replace('precision=None', 'precision=22'))
1596
+ return super().__eq__(other.replace('precision=None', 'precision=20'))
1597
1597
 
1598
1598
  dtypes = [
1599
1599
  ('id', 'Int32'),
@@ -1616,10 +1616,10 @@ class TestConnection(unittest.TestCase):
1616
1616
  ('float', 'Float32'),
1617
1617
  ('double', 'Float64'),
1618
1618
  ('real', 'Float64'),
1619
- ('decimal', FixCompare('Decimal(precision=22, scale=6)')),
1620
- ('dec', FixCompare('Decimal(precision=22, scale=6)')),
1621
- ('fixed', FixCompare('Decimal(precision=22, scale=6)')),
1622
- ('numeric', FixCompare('Decimal(precision=22, scale=6)')),
1619
+ ('decimal', FixCompare('Decimal(precision=20, scale=6)')),
1620
+ ('dec', FixCompare('Decimal(precision=20, scale=6)')),
1621
+ ('fixed', FixCompare('Decimal(precision=20, scale=6)')),
1622
+ ('numeric', FixCompare('Decimal(precision=20, scale=6)')),
1623
1623
  ('date', 'Date'),
1624
1624
  ('time', "Duration(time_unit='us')"),
1625
1625
  ('time_6', "Duration(time_unit='us')"),
@@ -1825,10 +1825,10 @@ class TestConnection(unittest.TestCase):
1825
1825
  ('float', 'float'),
1826
1826
  ('double', 'double'),
1827
1827
  ('real', 'double'),
1828
- ('decimal', 'decimal128(22, 6)'),
1829
- ('dec', 'decimal128(22, 6)'),
1830
- ('fixed', 'decimal128(22, 6)'),
1831
- ('numeric', 'decimal128(22, 6)'),
1828
+ ('decimal', 'decimal128(20, 6)'),
1829
+ ('dec', 'decimal128(20, 6)'),
1830
+ ('fixed', 'decimal128(20, 6)'),
1831
+ ('numeric', 'decimal128(20, 6)'),
1832
1832
  ('date', 'date64[ms]'),
1833
1833
  ('time', 'duration[us]'),
1834
1834
  ('time_6', 'duration[us]'),
@@ -1964,10 +1964,10 @@ class TestConnection(unittest.TestCase):
1964
1964
  ('float', 'float'),
1965
1965
  ('double', 'double'),
1966
1966
  ('real', 'double'),
1967
- ('decimal', 'decimal128(22, 6)'),
1968
- ('dec', 'decimal128(22, 6)'),
1969
- ('fixed', 'decimal128(22, 6)'),
1970
- ('numeric', 'decimal128(22, 6)'),
1967
+ ('decimal', 'decimal128(20, 6)'),
1968
+ ('dec', 'decimal128(20, 6)'),
1969
+ ('fixed', 'decimal128(20, 6)'),
1970
+ ('numeric', 'decimal128(20, 6)'),
1971
1971
  ('date', 'date64[ms]'),
1972
1972
  ('time', 'duration[us]'),
1973
1973
  ('time_6', 'duration[us]'),
@@ -269,7 +269,7 @@ class TestRowdat1(unittest.TestCase):
269
269
  def test_numpy_accel(self):
270
270
  dump_res = rowdat_1._dump_numpy_accel(
271
271
  col_types, numpy_row_ids, numpy_data,
272
- ).tobytes()
272
+ )
273
273
  load_res = rowdat_1._load_numpy_accel(col_spec, dump_res)
274
274
 
275
275
  ids = load_res[0]
@@ -294,7 +294,7 @@ class TestRowdat1(unittest.TestCase):
294
294
  def test_numpy(self):
295
295
  dump_res = rowdat_1._dump_numpy(
296
296
  col_types, numpy_row_ids, numpy_data,
297
- ).tobytes()
297
+ )
298
298
  load_res = rowdat_1._load_numpy(col_spec, dump_res)
299
299
 
300
300
  ids = load_res[0]
@@ -387,7 +387,7 @@ class TestRowdat1(unittest.TestCase):
387
387
  with self.assertRaises(res, msg=f'Expected {res} for {data} in {dtype}'):
388
388
  rowdat_1._dump_numpy_accel(
389
389
  [dtype], numpy_row_ids, [(arr, None)],
390
- ).tobytes()
390
+ )
391
391
 
392
392
  # Pure Python
393
393
  if 'mediumint exceeds' in name:
@@ -396,13 +396,13 @@ class TestRowdat1(unittest.TestCase):
396
396
  with self.assertRaises(res, msg=f'Expected {res} for {data} in {dtype}'):
397
397
  rowdat_1._dump_numpy(
398
398
  [dtype], numpy_row_ids, [(arr, None)],
399
- ).tobytes()
399
+ )
400
400
 
401
401
  else:
402
402
  # Accelerated
403
403
  dump_res = rowdat_1._dump_numpy_accel(
404
404
  [dtype], numpy_row_ids, [(arr, None)],
405
- ).tobytes()
405
+ )
406
406
  load_res = rowdat_1._load_numpy_accel([('x', dtype)], dump_res)
407
407
  assert load_res[1][0][0] == res, \
408
408
  f'Expected {res} for {data}, but got {load_res[1][0][0]} in {dtype}'
@@ -410,7 +410,7 @@ class TestRowdat1(unittest.TestCase):
410
410
  # Pure Python
411
411
  dump_res = rowdat_1._dump_numpy(
412
412
  [dtype], numpy_row_ids, [(arr, None)],
413
- ).tobytes()
413
+ )
414
414
  load_res = rowdat_1._load_numpy([('x', dtype)], dump_res)
415
415
  assert load_res[1][0][0] == res, \
416
416
  f'Expected {res} for {data}, but got {load_res[1][0][0]} in {dtype}'
@@ -788,7 +788,7 @@ class TestRowdat1(unittest.TestCase):
788
788
  # Accelerated
789
789
  dump_res = rowdat_1._dump_numpy_accel(
790
790
  [dtype], numpy_row_ids, [(data, None)],
791
- ).tobytes()
791
+ )
792
792
  load_res = rowdat_1._load_numpy_accel([('x', dtype)], dump_res)
793
793
 
794
794
  if name == 'double from float32':
@@ -800,7 +800,7 @@ class TestRowdat1(unittest.TestCase):
800
800
  # Pure Python
801
801
  dump_res = rowdat_1._dump_numpy(
802
802
  [dtype], numpy_row_ids, [(data, None)],
803
- ).tobytes()
803
+ )
804
804
  load_res = rowdat_1._load_numpy([('x', dtype)], dump_res)
805
805
 
806
806
  if name == 'double from float32':
@@ -812,7 +812,7 @@ class TestRowdat1(unittest.TestCase):
812
812
  def test_python(self):
813
813
  dump_res = rowdat_1._dump(
814
814
  col_types, py_row_ids, py_col_data,
815
- ).tobytes()
815
+ )
816
816
  load_res = rowdat_1._load(col_spec, dump_res)
817
817
 
818
818
  ids = load_res[0]
@@ -824,7 +824,7 @@ class TestRowdat1(unittest.TestCase):
824
824
  def test_python_accel(self):
825
825
  dump_res = rowdat_1._dump_accel(
826
826
  col_types, py_row_ids, py_col_data,
827
- ).tobytes()
827
+ )
828
828
  load_res = rowdat_1._load_accel(col_spec, dump_res)
829
829
 
830
830
  ids = load_res[0]
@@ -836,7 +836,7 @@ class TestRowdat1(unittest.TestCase):
836
836
  def test_polars(self):
837
837
  dump_res = rowdat_1._dump_polars(
838
838
  col_types, polars_row_ids, polars_data,
839
- ).tobytes()
839
+ )
840
840
  load_res = rowdat_1._load_polars(col_spec, dump_res)
841
841
 
842
842
  ids = load_res[0]
@@ -861,7 +861,7 @@ class TestRowdat1(unittest.TestCase):
861
861
  def test_polars_accel(self):
862
862
  dump_res = rowdat_1._dump_polars_accel(
863
863
  col_types, polars_row_ids, polars_data,
864
- ).tobytes()
864
+ )
865
865
  load_res = rowdat_1._load_polars_accel(col_spec, dump_res)
866
866
 
867
867
  ids = load_res[0]
@@ -886,7 +886,7 @@ class TestRowdat1(unittest.TestCase):
886
886
  def test_pandas(self):
887
887
  dump_res = rowdat_1._dump_pandas(
888
888
  col_types, pandas_row_ids, pandas_data,
889
- ).tobytes()
889
+ )
890
890
  load_res = rowdat_1._load_pandas(col_spec, dump_res)
891
891
 
892
892
  ids = load_res[0]
@@ -911,7 +911,7 @@ class TestRowdat1(unittest.TestCase):
911
911
  def test_pandas_accel(self):
912
912
  dump_res = rowdat_1._dump_pandas_accel(
913
913
  col_types, pandas_row_ids, pandas_data,
914
- ).tobytes()
914
+ )
915
915
  load_res = rowdat_1._load_pandas_accel(col_spec, dump_res)
916
916
 
917
917
  ids = load_res[0]
@@ -936,7 +936,7 @@ class TestRowdat1(unittest.TestCase):
936
936
  def test_pyarrow(self):
937
937
  dump_res = rowdat_1._dump_arrow(
938
938
  col_types, pyarrow_row_ids, pyarrow_data,
939
- ).tobytes()
939
+ )
940
940
  load_res = rowdat_1._load_arrow(col_spec, dump_res)
941
941
 
942
942
  ids = load_res[0]
@@ -961,7 +961,7 @@ class TestRowdat1(unittest.TestCase):
961
961
  def test_pyarrow_accel(self):
962
962
  dump_res = rowdat_1._dump_arrow_accel(
963
963
  col_types, pyarrow_row_ids, pyarrow_data,
964
- ).tobytes()
964
+ )
965
965
  load_res = rowdat_1._load_arrow_accel(col_spec, dump_res)
966
966
 
967
967
  ids = load_res[0]
@@ -1053,7 +1053,7 @@ class TestJSON(unittest.TestCase):
1053
1053
  def test_pandas(self):
1054
1054
  dump_res = rowdat_1._dump_pandas(
1055
1055
  col_types, pandas_row_ids, pandas_data,
1056
- ).tobytes()
1056
+ )
1057
1057
  load_res = rowdat_1._load_pandas(col_spec, dump_res)
1058
1058
 
1059
1059
  ids = load_res[0]
@@ -1078,7 +1078,7 @@ class TestJSON(unittest.TestCase):
1078
1078
  def test_pyarrow(self):
1079
1079
  dump_res = rowdat_1._dump_arrow(
1080
1080
  col_types, pyarrow_row_ids, pyarrow_data,
1081
- ).tobytes()
1081
+ )
1082
1082
  load_res = rowdat_1._load_arrow(col_spec, dump_res)
1083
1083
 
1084
1084
  ids = load_res[0]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: singlestoredb
3
- Version: 1.15.2
3
+ Version: 1.15.4
4
4
  Summary: Interface to the SingleStoreDB database and workspace management APIs
5
5
  Home-page: https://github.com/singlestore-labs/singlestoredb-python
6
6
  Author: SingleStore
@@ -1,4 +1,4 @@
1
- singlestoredb/__init__.py,sha256=4XuKjp-JxKkJ0tjApI_BD6PPFGZvQNn0kGzz7rEy3Pw,2272
1
+ singlestoredb/__init__.py,sha256=2IMVeTNRjiRom1ypTqkQNA1Ro51sGMnrWIMSlxmf3Ls,2272
2
2
  singlestoredb/auth.py,sha256=u8D9tpKzrqa4ssaHjyZnGDX1q8XBpGtuoOkTkSv7B28,7599
3
3
  singlestoredb/config.py,sha256=aBdMrPEaNSH-QLi1AXoQaSJsZ9f6ZXoFPN-74Trr6sQ,13935
4
4
  singlestoredb/connection.py,sha256=ELk3-UpM6RaB993aIt08MydKiiDnejHQ1s8EFiacrAI,46055
@@ -72,7 +72,7 @@ singlestoredb/fusion/handlers/stage.py,sha256=edViRGlBF7xZUd3ClmpBlMcBc6O4JKdvA9
72
72
  singlestoredb/fusion/handlers/utils.py,sha256=ozHOWUraoN8XGTK9JZdhv5HV8AQR8zfUd1yh1kLvUXY,10685
73
73
  singlestoredb/fusion/handlers/workspace.py,sha256=4xN2TFO4yF7KZB2Fcht7IuvoDdAT6fDfDLjixiHZN8w,27506
74
74
  singlestoredb/http/__init__.py,sha256=A_2ZUCCpvRYIA6YDpPy57wL5R1eZ5SfP6I1To5nfJ2s,912
75
- singlestoredb/http/connection.py,sha256=X5GEPPOE-rMm17d0-TPhcdxUHibcYl-MZAnPhut8xyo,39956
75
+ singlestoredb/http/connection.py,sha256=fCgh3PdYJNYVPMaUe_NlMb7ducxC06se1XfyqOpPpJw,39727
76
76
  singlestoredb/magics/__init__.py,sha256=lZjkT3Webo9c1EQAzlRCRh6B2pckQH8uvNrrB__abcI,1210
77
77
  singlestoredb/magics/run_personal.py,sha256=Y5lVpJ8vqOyEjtZkip04Hwi4uZ7CQLU5Rd1MrCmpNvs,5222
78
78
  singlestoredb/magics/run_shared.py,sha256=czoO4z6gtoq9ek_41efRBRk-XQiHKuHdY0BOdfKkFrc,5130
@@ -96,7 +96,7 @@ singlestoredb/mysql/converters.py,sha256=CVe8SDmjbIAhy1xpQ2N5OKWw6t5eWpw-EU3QTlA
96
96
  singlestoredb/mysql/cursors.py,sha256=aOLfHkj83aYZPOVuhJPkZ83CWByszIBRynq0fqSaWvY,27046
97
97
  singlestoredb/mysql/err.py,sha256=-m5rqXi8yhq6b8SCEJ2h0E5Rudh_15dlAU_WbJ1YrM8,2388
98
98
  singlestoredb/mysql/optionfile.py,sha256=DqL-rOQcqQncD5eVbPRkwZqo7Pj3Vh40VLx3E_e87TU,655
99
- singlestoredb/mysql/protocol.py,sha256=2GG8qTXy5npqo7z2D2K5T0S8PtoUOS-hFDEXy8VConw,14451
99
+ singlestoredb/mysql/protocol.py,sha256=PfdILK1oK2hlg1etmYZtrKf1obPlcLC7FyEJHEpIplc,14885
100
100
  singlestoredb/mysql/times.py,sha256=2j7purNVnJmjhOUgwUze-r3kNlCWqxjXj-jtqOzBfZI,463
101
101
  singlestoredb/mysql/constants/CLIENT.py,sha256=SSvMFPZCTVMU1UWa4zOrfhYMDdR2wG2mS0E5GzJhDsg,878
102
102
  singlestoredb/mysql/constants/COMMAND.py,sha256=TGITAUcNWlq2Gwg2wv5UK2ykdTd4LYTk_EcJJOCpGIc,679
@@ -136,6 +136,8 @@ singlestoredb/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
136
136
  singlestoredb/server/docker.py,sha256=r7b8tOYTGBD9NtS4_KuSDbj4bO9rarBC63BY6TdxheM,14640
137
137
  singlestoredb/server/free_tier.py,sha256=YPtUX6idwcez9LGBaVllcTpKo8Qk2RZp3MaAZvsZcOg,8386
138
138
  singlestoredb/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
+ singlestoredb/tests/alltypes.sql,sha256=S_bUJ20MGZht3F7MhFSEIDRUzWV6jm1d4UwHdLW2kwA,7648
140
+ singlestoredb/tests/alltypes_no_nulls.sql,sha256=MCeBEoeZC6mmeG9-4J7vy9ZOIvvKWqqMgdpHQlvDDzs,6240
139
141
  singlestoredb/tests/empty.sql,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
142
  singlestoredb/tests/local_infile.csv,sha256=sBtqjvfkS9aoOVx8nMXYgYv4rDuT4OuYhqUhNRu0O68,42
141
143
  singlestoredb/tests/test.ipynb,sha256=jrkI2WoSsUA9xQpKTBCHnsDptryQhPdM5QaxfvYRGpg,216
@@ -144,11 +146,11 @@ singlestoredb/tests/test2.ipynb,sha256=yd1PE1VK-DwiRd6mYS4_0cPBtuVkvcDtycvTwD-Yn
144
146
  singlestoredb/tests/test2.sql,sha256=D4U2GSlOVeo39U8-RMM4YziJzYFfi4Ztm2YXJVJVAS8,37
145
147
  singlestoredb/tests/test_basics.py,sha256=Dw1irrtf3gWN7tqGruSH6uhWi5zkmCpJl6ZMQxMqlf4,48446
146
148
  singlestoredb/tests/test_config.py,sha256=63lyIQ2KrvGE6C9403B_4Mc90mX4tp42ys5Bih2sXrE,11184
147
- singlestoredb/tests/test_connection.py,sha256=ax2hBPahn0rFENBbYLoph_JIAR20eYeJLyQPIQGIdX4,120237
149
+ singlestoredb/tests/test_connection.py,sha256=XhJ4XvtvAuXHjmR794dozQsNRKbjfw5BvlhnBK66EuQ,120237
148
150
  singlestoredb/tests/test_dbapi.py,sha256=IKq5Hcwx8WikASP8_AB5fo3TXv7ryWPCVGonoly00gI,652
149
151
  singlestoredb/tests/test_exceptions.py,sha256=tfr_8X2w1UmG4nkSBzWGB0C7ehrf1GAVgj6_ODaG-TM,1131
150
152
  singlestoredb/tests/test_ext_func.py,sha256=_YREceW1Llwx9Wcamj0up2IXLuBTnuvQqCFOWphckKI,46271
151
- singlestoredb/tests/test_ext_func_data.py,sha256=yTADD93nPxX6_rZXXLZaOWEI_yPvYyir9psn5PK9ctU,47695
153
+ singlestoredb/tests/test_ext_func_data.py,sha256=kyNklkX1RxSiahI0LZjpqhg3LGDs0iwv8iHuXW3AcSo,47515
152
154
  singlestoredb/tests/test_fusion.py,sha256=7YQ_nOQoV_7yD4OEpJz2Ov-zok-cBFK9IOJ3FgZ0xo0,50593
153
155
  singlestoredb/tests/test_http.py,sha256=RXasTqBWRn__omj0eLFTJYIbZjd0PPdIV2d4Cqz0MC8,8580
154
156
  singlestoredb/tests/test_management.py,sha256=R5g5QHWCSPxCrwMUOD0BL-touGIDvqQfDve-YmZyhX4,51973
@@ -172,9 +174,9 @@ singlestoredb/utils/results.py,sha256=bJtaUaDiFq26IsPAKZ2FHGB7csMn94EAxLKrP4HaEE
172
174
  singlestoredb/utils/xdict.py,sha256=S9HKgrPrnu_6b7iOwa2KrW8CmU1Uqx0BWdEyogFzWbE,12896
173
175
  sqlx/__init__.py,sha256=aBYiU8DZXCogvWu3yWafOz7bZS5WWwLZXj7oL0dXGyU,85
174
176
  sqlx/magic.py,sha256=JsS9_9aBFaOt91Torm1JPN0c8qB2QmYJmNSKtbSQIY0,3509
175
- singlestoredb-1.15.2.dist-info/LICENSE,sha256=Mlq78idURT-9G026aMYswwwnnrLcgzTLuXeAs5hjDLM,11341
176
- singlestoredb-1.15.2.dist-info/METADATA,sha256=uN82pi4sBQ44TcbZFu0UB1xzpUMwPL58kIWenRWjpRs,5786
177
- singlestoredb-1.15.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
178
- singlestoredb-1.15.2.dist-info/entry_points.txt,sha256=bSLaTWB5zGjpVYPAaI46MkkDup0su-eb3uAhCNYuRV0,48
179
- singlestoredb-1.15.2.dist-info/top_level.txt,sha256=DfFGz7bM4XrshloiCeTABgylT3BUnS8T5pJam3ewT6Q,19
180
- singlestoredb-1.15.2.dist-info/RECORD,,
177
+ singlestoredb-1.15.4.dist-info/LICENSE,sha256=Mlq78idURT-9G026aMYswwwnnrLcgzTLuXeAs5hjDLM,11341
178
+ singlestoredb-1.15.4.dist-info/METADATA,sha256=B4IS-bYjONEdqG0vEG6dI6qlT6uwjAIYtLOsMv26spI,5786
179
+ singlestoredb-1.15.4.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
180
+ singlestoredb-1.15.4.dist-info/entry_points.txt,sha256=bSLaTWB5zGjpVYPAaI46MkkDup0su-eb3uAhCNYuRV0,48
181
+ singlestoredb-1.15.4.dist-info/top_level.txt,sha256=DfFGz7bM4XrshloiCeTABgylT3BUnS8T5pJam3ewT6Q,19
182
+ singlestoredb-1.15.4.dist-info/RECORD,,