From f0888021e15182c12746b51ea7cb40921801ddda Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev Date: Thu, 7 Dec 2023 21:40:56 +0300 Subject: [PATCH] Fix input_format_null_as_default for UUID #401 --- clickhouse_driver/columns/uuidcolumn.py | 2 +- tests/columns/test_uuid.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/clickhouse_driver/columns/uuidcolumn.py b/clickhouse_driver/columns/uuidcolumn.py index 80f53731..5327838d 100644 --- a/clickhouse_driver/columns/uuidcolumn.py +++ b/clickhouse_driver/columns/uuidcolumn.py @@ -54,7 +54,7 @@ def before_write_items(self, items, nulls_map=None): try: if not isinstance(item, UUID): - item = UUID(item) + item = UUID(int=item) if item is null_value else UUID(item) except ValueError: raise errors.CannotParseUuidError( diff --git a/tests/columns/test_uuid.py b/tests/columns/test_uuid.py index b9840228..41fcd1c6 100644 --- a/tests/columns/test_uuid.py +++ b/tests/columns/test_uuid.py @@ -60,3 +60,20 @@ def test_nullable(self): inserted = self.client.execute(query) self.assertEqual(inserted, data) + + def test_input_format_null_as_default(self): + with self.create_table('a UUID'): + self.client.execute( + 'INSERT INTO test (a) VALUES', [(None, )], + settings={'input_format_null_as_default': True} + ) + + query = 'SELECT * FROM test' + inserted = self.emit_cli(query) + self.assertEqual(inserted, + '00000000-0000-0000-0000-000000000000\n') + + inserted = self.client.execute(query) + self.assertEqual(inserted, [ + (UUID(int=0), ) + ])