Skip to content

Commit 61c2631

Browse files
committed
This patch fixes the speed degradation introduced by BUG#34984850 fix
Change-Id: I1b3df4f8bceaefb57e434aad784f61b566e9c911
1 parent dc204c8 commit 61c2631

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/mysql/connector/abstracts.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2014, 2022, Oracle and/or its affiliates.
1+
# Copyright (c) 2014, 2023, Oracle and/or its affiliates.
22
#
33
# This program is free software; you can redistribute it and/or modify
44
# it under the terms of the GNU General Public License, version 2.0, as
@@ -887,7 +887,9 @@ def time_zone(self, value: str) -> None:
887887
@property
888888
def sql_mode(self) -> str:
889889
"""Get the SQL mode"""
890-
return self.info_query("SELECT @@session.sql_mode")[0]
890+
if self._sql_mode is None:
891+
self._sql_mode = self.info_query("SELECT @@session.sql_mode")[0]
892+
return self._sql_mode
891893

892894
@sql_mode.setter
893895
def sql_mode(self, value: Union[str, Sequence[int]]) -> None:

lib/mysql/connector/cursor.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,13 +436,14 @@ def _process_params_dict(
436436
"""Process query parameters given as dictionary"""
437437
res: Dict[bytes, Any] = {}
438438
try:
439+
sql_mode = self._connection.sql_mode
439440
to_mysql = self._connection.converter.to_mysql
440441
escape = self._connection.converter.escape
441442
quote = self._connection.converter.quote
442443
for key, value in params.items():
443444
conv = value
444445
conv = to_mysql(conv)
445-
conv = escape(conv, self._connection.sql_mode)
446+
conv = escape(conv, sql_mode)
446447
if not isinstance(value, Decimal):
447448
conv = quote(conv)
448449
res[key.encode()] = conv
@@ -458,11 +459,12 @@ def _process_params(
458459
"""Process query parameters."""
459460
res = params[:]
460461
try:
462+
sql_mode = self._connection.sql_mode
461463
to_mysql = self._connection.converter.to_mysql
462464
escape = self._connection.converter.escape
463465
quote = self._connection.converter.quote
464466
res = [to_mysql(value) for value in res]
465-
res = [escape(value, self._connection.sql_mode) for value in res]
467+
res = [escape(value, sql_mode) for value in res]
466468
res = [
467469
quote(value) if not isinstance(params[i], Decimal) else value
468470
for i, value in enumerate(res)

0 commit comments

Comments
 (0)