File: test_nullable.py

package info (click to toggle)
python-clickhouse-driver 0.2.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,516 kB
  • sloc: python: 10,950; pascal: 42; makefile: 31; sh: 3
file content (44 lines) | stat: -rw-r--r-- 1,393 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from tests.testcase import BaseTestCase
from clickhouse_driver import errors

ErrorCodes = errors.ErrorCodes


class NullableTestCase(BaseTestCase):
    def test_simple(self):
        columns = 'a Nullable(Int32)'

        data = [(3, ), (None, ), (2, )]
        with self.create_table(columns):
            self.client.execute(
                'INSERT INTO test (a) VALUES', data
            )

            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            self.assertEqual(
                inserted, '3\n\\N\n2\n'
            )

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

    def test_nullable_inside_nullable(self):
        columns = 'a Nullable(Nullable(Int32))'

        with self.assertRaises(errors.ServerException) as e:
            self.client.execute(
                'CREATE TABLE test ({}) ''ENGINE = Memory'.format(columns)
            )

        self.assertEqual(e.exception.code, ErrorCodes.ILLEGAL_TYPE_OF_ARGUMENT)

    def test_nullable_array(self):
        columns = 'a Nullable(Array(Nullable(Array(Nullable(Int32)))))'

        with self.assertRaises(errors.ServerException) as e:
            self.client.execute(
                'CREATE TABLE test ({}) ''ENGINE = Memory'.format(columns)
            )

        self.assertEqual(e.exception.code, ErrorCodes.ILLEGAL_TYPE_OF_ARGUMENT)