Skip to content

Commit 772aa3c

Browse files
authored
feat(dbapi): remove string conversion for numeric fields (#317)
* feat: updated googleapis proto changes for request tags * feat: added support for numberic for python decimal value * feat: added support for converting decimal field to numeric field and removed it's conversion to string
1 parent 070a171 commit 772aa3c

File tree

2 files changed

+2
-27
lines changed

2 files changed

+2
-27
lines changed

google/cloud/spanner_dbapi/parse_utils.py

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -509,25 +509,11 @@ def sql_pyformat_args_to_spanner(sql, params):
509509
resolved_value = pyfmt % params
510510
named_args[key] = resolved_value
511511
else:
512-
named_args[key] = cast_for_spanner(params[i])
512+
named_args[key] = params[i]
513513

514514
return sanitize_literals_for_upload(sql), named_args
515515

516516

517-
def cast_for_spanner(value):
518-
"""Convert the param to its Cloud Spanner equivalent type.
519-
520-
:type value: Any
521-
:param value: The value to convert to a Cloud Spanner type.
522-
523-
:rtype: Any
524-
:returns: The value converted to a Cloud Spanner type.
525-
"""
526-
if isinstance(value, decimal.Decimal):
527-
return str(value)
528-
return value
529-
530-
531517
def get_param_types(params):
532518
"""Determine Cloud Spanner types for the given parameters.
533519

tests/unit/spanner_dbapi/test_parse_utils.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ def test_sql_pyformat_args_to_spanner(self):
307307
),
308308
(
309309
"SELECT (an.p + @a0) AS np FROM an WHERE (an.p + @a1) = @a2",
310-
{"a0": 1, "a1": 1.0, "a2": str(31)},
310+
{"a0": 1, "a1": 1.0, "a2": decimal.Decimal("31")},
311311
),
312312
),
313313
]
@@ -339,17 +339,6 @@ def test_sql_pyformat_args_to_spanner_invalid(self):
339339
lambda: sql_pyformat_args_to_spanner(sql, params),
340340
)
341341

342-
def test_cast_for_spanner(self):
343-
import decimal
344-
345-
from google.cloud.spanner_dbapi.parse_utils import cast_for_spanner
346-
347-
dec = 3
348-
value = decimal.Decimal(dec)
349-
self.assertEqual(cast_for_spanner(value), str(dec))
350-
self.assertEqual(cast_for_spanner(5), 5)
351-
self.assertEqual(cast_for_spanner("string"), "string")
352-
353342
@unittest.skipIf(skip_condition, skip_message)
354343
def test_get_param_types(self):
355344
import datetime

0 commit comments

Comments
 (0)