Skip to content

Commit 2681957

Browse files
authored
Merge pull request #4 from berenddeboer/fix/emit-number-type-as-number
fix: emit number as number instead of string
2 parents 775d2c7 + 5523c16 commit 2681957

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

tap_oracle/sync_strategies/common.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ def row_to_singer_message(stream, row, version, columns, time_extracted):
5151
elif 'integer' in property_type or property_type == 'integer':
5252
integer_representation = int(elem)
5353
row_to_persist += (integer_representation,)
54+
elif 'number' in property_type or property_type == 'number':
55+
str_representation = str(elem)
56+
if '.' in str_representation:
57+
row_to_persist += (float(elem),)
58+
else:
59+
row_to_persist += (int(elem),)
5460
elif description == 'blob':
5561
base64encode = base64.b64encode(elem)
5662
row_to_persist += (base64encode,)

tests/test_full_table.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -199,31 +199,31 @@ def test_catalog(self):
199199

200200
expected_rec_1 = {'ID' : 1,
201201
'none_column' : None,
202-
'size_number' : decimal.Decimal('0.000001'),
203-
'size_number_*' : decimal.Decimal('100.12345'),
202+
'size_number' : 1E-6,
203+
'size_number_*' : 100.12345,
204204
'size_number_4' : 100,
205205
'size_number_4_0' : 100,
206206
'size_number_*_0' : 2 ** 128,
207-
'size_number_*_38' : decimal.Decimal('0.000001'),
207+
'size_number_*_38' : 1e-06,
208208
'size_number_10_-1' : 310,
209209
'size_number_integer' : 400,
210210
'size_number_int' : 500,
211211
'size_number_smallint': 50000,
212212

213-
'our_number_10_2' : decimal.Decimal('100.11'),
214-
'our_number_38_4' : decimal.Decimal('99999999999999999.9999'),
213+
'our_number_10_2' : 100.11,
214+
'our_number_38_4' : 99999999999999999.9999,
215215

216-
'our_double_precision': decimal.Decimal('1234567.8901234567890123456789012345679'),
217-
'our_float' : decimal.Decimal('1234567.8901234567890123456789012345679'),
218-
'our_real' : decimal.Decimal('1234567.890123456789'),
216+
'our_double_precision': 1234567.890123456789012345679,
217+
'our_float' : 1234567.8901234567,
218+
'our_real' : 1234567.890123456789,
219219

220220

221221

222-
'our_binary_float' : decimal.Decimal('1234567.88'),
223-
'our_binary_double' : decimal.Decimal('1234567.8901229999'), # 1234567.875
222+
'our_binary_double' : 1234567.8901229999, # 1234567.875
223+
'our_binary_float' : 1234567.88,
224224
'our_nan' : None,
225-
'our_+_infinity' : decimal.Decimal('1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'),
226-
'our_-_infinity' : decimal.Decimal('-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'),
225+
'our_+_infinity' : 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
226+
'our_-_infinity' : -1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
227227

228228
'our_date' : '1996-06-06T00:00:00.00+00:00',
229229
'our_ts' : '1997-02-02T02:02:02.722184+00:00',
@@ -249,9 +249,9 @@ def test_catalog(self):
249249
expected_rec_2 = expected_rec_1
250250
expected_rec_2.update({
251251
'ID': decimal.Decimal(2),
252-
'size_number_4_0' : decimal.Decimal('101'),
253-
'our_number_10_2' : decimal.Decimal('101.11') + 1,
254-
'our_double_precision' : our_double_precision + 1,
252+
'size_number_4_0' : 101,
253+
'our_number_10_2' : 101.11 + 1,
254+
'our_double_precision' : 1234568.8901234567,#decimal.Decimal(our_double_precision) + 1,
255255
'our_date' : '1996-06-07T00:00:00.00+00:00',
256256
'NAME_NCHAR' : 'name-nchar II '})
257257
#self.assertTrue(math.isnan(CAUGHT_MESSAGES[4].record.get('our_nan')))

0 commit comments

Comments
 (0)