diff --git a/src/firebolt/async_db/_types.py b/src/firebolt/async_db/_types.py index 0d8e17f3d25..f0b1d8567c7 100644 --- a/src/firebolt/async_db/_types.py +++ b/src/firebolt/async_db/_types.py @@ -2,6 +2,7 @@ from collections import namedtuple from datetime import date, datetime, timezone +from decimal import Decimal from enum import Enum from typing import List, Sequence, Union @@ -206,7 +207,7 @@ def format_value(value: ParameterType) -> str: """For python value to be used in a SQL query""" if isinstance(value, bool): return str(int(value)) - if isinstance(value, (int, float)): + if isinstance(value, (int, float, Decimal)): return str(value) elif isinstance(value, str): return f"'{''.join(escape_chars.get(c, c) for c in value)}'" diff --git a/tests/unit/async_db/test_typing_format.py b/tests/unit/async_db/test_typing_format.py index b394cc7e3b4..3dd3b7c25ef 100644 --- a/tests/unit/async_db/test_typing_format.py +++ b/tests/unit/async_db/test_typing_format.py @@ -1,4 +1,5 @@ from datetime import date, datetime, timedelta, timezone +from decimal import Decimal from typing import List from pytest import mark, raises @@ -24,6 +25,8 @@ # Numbers (1, "1"), (1.123, "1.123"), + (Decimal("1.123"), "1.123"), + (Decimal(1.123), "1.1229999999999999982236431605997495353221893310546875"), (True, "1"), (False, "0"), # Date, datetime