mirror of
https://github.com/Infinidat/infi.clickhouse_orm.git
synced 2025-02-22 03:00:33 +03:00
NullableField of ArrayField
This commit is contained in:
parent
1b0ea035b8
commit
9b7e7a179e
|
@ -368,8 +368,11 @@ class NullableField(Field):
|
||||||
class_default = None
|
class_default = None
|
||||||
|
|
||||||
def __init__(self, inner_field, default=None, alias=None, materialized=None,
|
def __init__(self, inner_field, default=None, alias=None, materialized=None,
|
||||||
extra_null_values=set()):
|
extra_null_values=None):
|
||||||
self.inner_field = inner_field
|
self.inner_field = inner_field
|
||||||
|
if extra_null_values is None:
|
||||||
|
self._extra_null_values = list()
|
||||||
|
else:
|
||||||
self._extra_null_values = extra_null_values
|
self._extra_null_values = extra_null_values
|
||||||
super(NullableField, self).__init__(default, alias, materialized)
|
super(NullableField, self).__init__(default, alias, materialized)
|
||||||
|
|
||||||
|
|
|
@ -76,13 +76,17 @@ class NullableFieldsTest(unittest.TestCase):
|
||||||
dt = date(1970, 1, 1)
|
dt = date(1970, 1, 1)
|
||||||
self.database.insert([
|
self.database.insert([
|
||||||
ModelWithNullable(date_field='2016-08-30',
|
ModelWithNullable(date_field='2016-08-30',
|
||||||
null_str='', null_int=42, null_date=dt),
|
null_str='', null_int=42, null_date=dt,
|
||||||
|
null_array=None),
|
||||||
ModelWithNullable(date_field='2016-08-30',
|
ModelWithNullable(date_field='2016-08-30',
|
||||||
null_str='nothing', null_int=None, null_date=None),
|
null_str='nothing', null_int=None, null_date=None,
|
||||||
|
null_array=[1, 2, 3]),
|
||||||
ModelWithNullable(date_field='2016-08-31',
|
ModelWithNullable(date_field='2016-08-31',
|
||||||
null_str=None, null_int=42, null_date=dt),
|
null_str=None, null_int=42, null_date=dt,
|
||||||
|
null_array=[]),
|
||||||
ModelWithNullable(date_field='2016-08-31',
|
ModelWithNullable(date_field='2016-08-31',
|
||||||
null_str=None, null_int=None, null_date=None)
|
null_str=None, null_int=None, null_date=None,
|
||||||
|
null_array=[3, 2, 1])
|
||||||
])
|
])
|
||||||
|
|
||||||
def _assert_sample_data(self, results):
|
def _assert_sample_data(self, results):
|
||||||
|
@ -101,6 +105,11 @@ class NullableFieldsTest(unittest.TestCase):
|
||||||
self.assertIsNone(results[3].null_str)
|
self.assertIsNone(results[3].null_str)
|
||||||
self.assertIsNone(results[3].null_date)
|
self.assertIsNone(results[3].null_date)
|
||||||
|
|
||||||
|
self.assertIsNone(results[0].null_array)
|
||||||
|
self.assertEquals(results[1].null_array, [1, 2, 3])
|
||||||
|
self.assertEquals(results[2].null_array, [])
|
||||||
|
self.assertEquals(results[3].null_array, [3, 2, 1])
|
||||||
|
|
||||||
def test_insert_and_select(self):
|
def test_insert_and_select(self):
|
||||||
self._insert_sample_data()
|
self._insert_sample_data()
|
||||||
query = 'SELECT * from $table ORDER BY date_field'
|
query = 'SELECT * from $table ORDER BY date_field'
|
||||||
|
@ -120,5 +129,6 @@ class ModelWithNullable(Model):
|
||||||
null_str = NullableField(StringField(), extra_null_values={''})
|
null_str = NullableField(StringField(), extra_null_values={''})
|
||||||
null_int = NullableField(Int32Field())
|
null_int = NullableField(Int32Field())
|
||||||
null_date = NullableField(DateField())
|
null_date = NullableField(DateField())
|
||||||
|
null_array = NullableField(ArrayField(Int32Field()))
|
||||||
|
|
||||||
engine = MergeTree('date_field', ('date_field',))
|
engine = MergeTree('date_field', ('date_field',))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user