Skip to content

Commit c520912

Browse files
committed
Merge branch 'develop'
2 parents acf0309 + 0fdf238 commit c520912

File tree

2 files changed

+36
-36
lines changed

2 files changed

+36
-36
lines changed

lib/mysql/connector/protocol.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -359,16 +359,16 @@ def read_text_result(self, sock, version, count=1):
359359
def _parse_binary_integer(self, packet, field):
360360
"""Parse an integer from a binary packet"""
361361
if field[1] == FieldType.TINY:
362-
format_ = 'b'
362+
format_ = '<b'
363363
length = 1
364364
elif field[1] == FieldType.SHORT:
365-
format_ = 'h'
365+
format_ = '<h'
366366
length = 2
367367
elif field[1] in (FieldType.INT24, FieldType.LONG):
368-
format_ = 'i'
368+
format_ = '<i'
369369
length = 4
370370
elif field[1] == FieldType.LONGLONG:
371-
format_ = 'q'
371+
format_ = '<q'
372372
length = 8
373373

374374
if field[7] & FieldFlag.UNSIGNED:
@@ -380,10 +380,10 @@ def _parse_binary_float(self, packet, field):
380380
"""Parse a float/double from a binary packet"""
381381
if field[1] == FieldType.DOUBLE:
382382
length = 8
383-
format_ = 'd'
383+
format_ = '<d'
384384
else:
385385
length = 4
386-
format_ = 'f'
386+
format_ = '<f'
387387

388388
return (packet[length:], struct_unpack(format_, packet[0:length])[0])
389389

@@ -393,15 +393,15 @@ def _parse_binary_timestamp(self, packet, field):
393393
value = None
394394
if length == 4:
395395
value = datetime.date(
396-
year=struct_unpack('H', packet[1:3])[0],
396+
year=struct_unpack('<H', packet[1:3])[0],
397397
month=packet[3],
398398
day=packet[4])
399399
elif length >= 7:
400400
mcs = 0
401401
if length == 11:
402-
mcs = struct_unpack('I', packet[8:length + 1])[0]
402+
mcs = struct_unpack('<I', packet[8:length + 1])[0]
403403
value = datetime.datetime(
404-
year=struct_unpack('H', packet[1:3])[0],
404+
year=struct_unpack('<H', packet[1:3])[0],
405405
month=packet[3],
406406
day=packet[4],
407407
hour=packet[5],
@@ -417,8 +417,8 @@ def _parse_binary_time(self, packet, field):
417417
data = packet[1:length + 1]
418418
mcs = 0
419419
if length > 8:
420-
mcs = struct_unpack('I', data[8:])[0]
421-
days = struct_unpack('I', data[1:5])[0]
420+
mcs = struct_unpack('<I', data[8:])[0]
421+
days = struct_unpack('<I', data[1:5])[0]
422422
if data[0] == 1:
423423
days *= -1
424424
tmp = datetime.timedelta(days=days,
@@ -512,31 +512,31 @@ def _prepare_binary_integer(self, value):
512512
flags = 0
513513
if value < 0:
514514
if value >= -128:
515-
format_ = 'b'
515+
format_ = '<b'
516516
field_type = FieldType.TINY
517517
elif value >= -32768:
518-
format_ = 'h'
518+
format_ = '<h'
519519
field_type = FieldType.SHORT
520520
elif value >= -2147483648:
521-
format_ = 'i'
521+
format_ = '<i'
522522
field_type = FieldType.LONG
523523
else:
524-
format_ = 'q'
524+
format_ = '<q'
525525
field_type = FieldType.LONGLONG
526526
else:
527527
flags = 128
528528
if value <= 255:
529-
format_ = 'B'
529+
format_ = '<B'
530530
field_type = FieldType.TINY
531531
elif value <= 65535:
532-
format_ = 'H'
532+
format_ = '<H'
533533
field_type = FieldType.SHORT
534534
elif value <= 4294967295:
535-
format_ = 'I'
535+
format_ = '<I'
536536
field_type = FieldType.LONG
537537
else:
538538
field_type = FieldType.LONGLONG
539-
format_ = 'Q'
539+
format_ = '<Q'
540540
return (struct.pack(format_, value), field_type, flags)
541541

542542
def _prepare_binary_timestamp(self, value):
@@ -688,7 +688,7 @@ def make_stmt_execute(self, statement_id, data=(), parameters=(),
688688
charset))) + str(value).encode(charset))
689689
field_type = FieldType.DECIMAL
690690
elif isinstance(value, float):
691-
values.append(struct.pack('d', value))
691+
values.append(struct.pack('<d', value))
692692
field_type = FieldType.DOUBLE
693693
elif isinstance(value, (datetime.datetime, datetime.date)):
694694
(packed, field_type) = self._prepare_binary_timestamp(

tests/test_protocol.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -308,14 +308,14 @@ def test__parse_binary_integer(self):
308308
"""Parse an integer from a binary packet"""
309309
# Case = Expected value; pack format; field type; field flag
310310
cases = [
311-
(-128, 'b', FieldType.TINY, 0),
312-
(-32768, 'h', FieldType.SHORT, 0),
313-
(-2147483648, 'i', FieldType.LONG, 0),
314-
(-9999999999, 'q', FieldType.LONGLONG, 0),
315-
(255, 'B', FieldType.TINY, FieldFlag.UNSIGNED),
316-
(65535, 'H', FieldType.SHORT, FieldFlag.UNSIGNED),
317-
(4294967295, 'I', FieldType.LONG, FieldFlag.UNSIGNED),
318-
(9999999999, 'Q', FieldType.LONGLONG, FieldFlag.UNSIGNED),
311+
(-128, '<b', FieldType.TINY, 0),
312+
(-32768, '<h', FieldType.SHORT, 0),
313+
(-2147483648, '<i', FieldType.LONG, 0),
314+
(-9999999999, '<q', FieldType.LONGLONG, 0),
315+
(255, '<B', FieldType.TINY, FieldFlag.UNSIGNED),
316+
(65535, '<H', FieldType.SHORT, FieldFlag.UNSIGNED),
317+
(4294967295, '<I', FieldType.LONG, FieldFlag.UNSIGNED),
318+
(9999999999, '<Q', FieldType.LONGLONG, FieldFlag.UNSIGNED),
319319
]
320320
field_info = [None] * 8
321321
field_info[0] = 'c1'
@@ -427,19 +427,19 @@ def test__prepare_binary_integer(self):
427427
"""Prepare an integer for the MySQL binary protocol"""
428428
# Case = Data; expected value
429429
cases = [
430-
(-128, (struct.pack('b', -128), FieldType.TINY, 0)),
431-
(-32768, (struct.pack('h', -32768), FieldType.SHORT, 0)),
430+
(-128, (struct.pack('<b', -128), FieldType.TINY, 0)),
431+
(-32768, (struct.pack('<h', -32768), FieldType.SHORT, 0)),
432432
(-2147483648,
433-
(struct.pack('i', -2147483648), FieldType.LONG, 0)),
433+
(struct.pack('<i', -2147483648), FieldType.LONG, 0)),
434434
(-9999999999,
435-
(struct.pack('q', -9999999999), FieldType.LONGLONG, 0)),
435+
(struct.pack('<q', -9999999999), FieldType.LONGLONG, 0)),
436436

437-
(255, (struct.pack('B', 255), FieldType.TINY, 128)),
438-
(65535, (struct.pack('H', 65535), FieldType.SHORT, 128)),
437+
(255, (struct.pack('<B', 255), FieldType.TINY, 128)),
438+
(65535, (struct.pack('<H', 65535), FieldType.SHORT, 128)),
439439
(4294967295,
440-
(struct.pack('I', 4294967295), FieldType.LONG, 128)),
440+
(struct.pack('<I', 4294967295), FieldType.LONG, 128)),
441441
(9999999999,
442-
(struct.pack('Q', 9999999999), FieldType.LONGLONG, 128)),
442+
(struct.pack('<Q', 9999999999), FieldType.LONGLONG, 128)),
443443
]
444444
for data, exp in cases:
445445
res = self._protocol._prepare_binary_integer(data)

0 commit comments

Comments
 (0)