Skip to content

Commit

Permalink
Tests & lints
Browse files Browse the repository at this point in the history
  • Loading branch information
DaniilAnichin committed Apr 24, 2024
1 parent 04b45b8 commit 36f203c
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
11 changes: 5 additions & 6 deletions clickhouse_driver/columns/datecolumn.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,20 @@
epoch_end = date(2149, 6, 6)

epoch_start_date32 = date(1900, 1, 1)
# Why was it 17 year earlier that limit set in clickhouse?
# epoch_end_date32 = date(2283, 11, 11)
epoch_end_date32 = date(2299, 12, 31)


class LazyLUT(dict):
def __init__(self, *args, _default_factory, **kwargs):
def __init__(self, *args, _factory, **kwargs):
super().__init__(*args, **kwargs)
self._default_factory = _default_factory
self._default_factory = _factory

def __missing__(self, key):
return self.setdefault(key, self._default_factory(key))


lazy_date_lut = LazyLUT(_default_factory=lambda x: epoch_start + timedelta(x))
lazy_date_lut_reverse = LazyLUT(_default_factory=lambda x: (x - epoch_start).days)
lazy_date_lut = LazyLUT(_factory=lambda x: epoch_start + timedelta(x))
lazy_date_lut_reverse = LazyLUT(_factory=lambda x: (x - epoch_start).days)


class DateColumn(FormatColumn):
Expand Down Expand Up @@ -68,6 +66,7 @@ def after_read_items(self, items, nulls_map=None):
for i, is_null in enumerate(nulls_map)
)


class Date32Column(DateColumn):
ch_type = 'Date32'
format = 'i'
Expand Down
12 changes: 8 additions & 4 deletions tests/columns/test_date.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,26 @@ def test_wrong_date_insert(self):
data = [
(date(5555, 1, 1), ),
(date(1, 1, 1), ),
(date(2284, 1, 1), )
(date(2300, 1, 1), ),
(date(1899, 12, 31), )
]
self.client.execute('INSERT INTO test (a) VALUES', data)
query = 'SELECT * FROM test'
inserted = self.emit_cli(query)
self.assertEqual(inserted, '1970-01-01\n1970-01-01\n1970-01-01\n')
self.assertEqual(
inserted,
'1970-01-01\n1970-01-01\n1970-01-01\n1970-01-01\n',
)

@require_server_version(22, 8)
def test_boundaries_1900(self):
with self.create_table('a Date32'):
data = [(date(1900, 1, 1),)]
data = [(date(1900, 1, 1),), (date(2299, 12, 31), )]
self.client.execute('INSERT INTO test (a) VALUES', data)

query = 'SELECT * FROM test'
inserted = self.emit_cli(query)
self.assertEqual(inserted, '1900-01-01\n')
self.assertEqual(inserted, '1900-01-01\n2299-12-31\n')

inserted = self.client.execute(query)
self.assertEqual(inserted, data)
Expand Down

0 comments on commit 36f203c

Please sign in to comment.