diff --git a/google/cloud/spanner_v1/streamed.py b/google/cloud/spanner_v1/streamed.py index e5f7e4984e..9ee04867b3 100644 --- a/google/cloud/spanner_v1/streamed.py +++ b/google/cloud/spanner_v1/streamed.py @@ -315,6 +315,7 @@ def _merge_struct(lhs, rhs, type_): TypeCode.STRING: _merge_string, TypeCode.STRUCT: _merge_struct, TypeCode.TIMESTAMP: _merge_string, + TypeCode.NUMERIC: _merge_string, } diff --git a/tests/unit/test_streamed.py b/tests/unit/test_streamed.py index 66d6f34e2e..de0c8875bf 100644 --- a/tests/unit/test_streamed.py +++ b/tests/unit/test_streamed.py @@ -164,6 +164,19 @@ def test__merge_chunk_bool(self): with self.assertRaises(Unmergeable): streamed._merge_chunk(chunk) + def test__merge_chunk_numeric(self): + from google.cloud.spanner_v1 import TypeCode + + iterator = _MockCancellableIterator() + streamed = self._make_one(iterator) + FIELDS = [self._make_scalar_field("total", TypeCode.NUMERIC)] + streamed._metadata = self._make_result_set_metadata(FIELDS) + streamed._pending_chunk = self._make_value(u"1234.") + chunk = self._make_value(u"5678") + + merged = streamed._merge_chunk(chunk) + self.assertEqual(merged.string_value, u"1234.5678") + def test__merge_chunk_int64(self): from google.cloud.spanner_v1 import TypeCode