aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2023-12-09 00:23:15 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2023-12-09 01:13:53 +0300
commit89c24615f58622ebf40a727d10506d7217b7faaf (patch)
tree189dd8328e8964d1ab6841d698dc3ce07341ed73 /contrib
parent83b8a2f9228353759e59a093cb3c1270ea2c9d5b (diff)
downloadydb-89c24615f58622ebf40a727d10506d7217b7faaf.tar.gz
Update contrib/python/clickhouse-connect to 0.6.21
Diffstat (limited to 'contrib')
-rw-r--r--contrib/python/clickhouse-connect/.dist-info/METADATA2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/__version__.py2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py4
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py7
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py4
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py7
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/errors.py13
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx7
-rw-r--r--contrib/python/clickhouse-connect/ya.make3
10 files changed, 40 insertions, 11 deletions
diff --git a/contrib/python/clickhouse-connect/.dist-info/METADATA b/contrib/python/clickhouse-connect/.dist-info/METADATA
index 2cc7883742..74a30402bf 100644
--- a/contrib/python/clickhouse-connect/.dist-info/METADATA
+++ b/contrib/python/clickhouse-connect/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: clickhouse-connect
-Version: 0.6.20
+Version: 0.6.21
Summary: ClickHouse Database Core Driver for Python, Pandas, and Superset
Home-page: https://github.com/ClickHouse/clickhouse-connect
Author: ClickHouse Inc.
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
index 61f0ae1784..ecb766dd57 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
@@ -1 +1 @@
-version = '0.6.20'
+version = '0.6.21'
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py
index d611f18912..dc4fd0895e 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py
@@ -198,6 +198,10 @@ class UUID(ChSqlaType, UserDefinedType):
python_type = None
+class Point(ChSqlaType, UserDefinedType):
+ python_type = None
+
+
class Date(ChSqlaType, SqlaDate):
pass
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py
index 36e4c23780..445b24140d 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py
@@ -154,6 +154,13 @@ class Tuple(ClickHouseType):
return col
+class Point(Tuple):
+
+ def __init__(self, type_def):
+ super().__init__(type_def)
+ self._name_suffix = ''
+
+
class Map(ClickHouseType):
_slots = 'key_type', 'value_type'
python_type = dict
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py
index 47da6e05af..3544b3776c 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py
@@ -35,6 +35,8 @@ def parse_name(name: str) -> Tuple[str, str, TypeDef]:
elif base.startswith('Tuple'):
keys, values = parse_columns(base[5:])
base = 'Tuple'
+ elif base == 'Point':
+ values = ['Float64', 'Float64']
else:
try:
base, values, _ = parse_callable(base)
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py
index 0b5a81cbcb..efc04df015 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py
@@ -3,6 +3,7 @@ from typing import Sequence, MutableSequence, Union, Collection
from clickhouse_connect.driver.ctypes import data_conv
from clickhouse_connect.datatypes.base import ClickHouseType, TypeDef
+from clickhouse_connect.driver.errors import handle_error
from clickhouse_connect.driver.exceptions import DataError
from clickhouse_connect.driver.insert import InsertContext
from clickhouse_connect.driver.query import QueryContext
@@ -42,12 +43,11 @@ class String(ClickHouseType):
return np.array(column, dtype=f'<U{ctx.max_str_len}')
return column
- # pylint: disable=duplicate-code,too-many-nested-blocks,too-many-branches
def _write_column_binary(self, column: Union[Sequence, MutableSequence], dest: bytearray, ctx: InsertContext):
encoding = None
if not isinstance(self._first_value(column), bytes):
encoding = ctx.encoding or self.encoding
- data_conv.write_str_col(column, self.nullable, encoding, dest)
+ handle_error(data_conv.write_str_col(column, self.nullable, encoding, dest))
def _active_null(self, ctx):
if ctx.use_none:
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py
index 2427272572..c1a9b62aad 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py
@@ -5,7 +5,7 @@ from typing import Sequence, Optional, Any
from uuid import UUID, SafeUUID
from clickhouse_connect.driver.common import int_size
-from clickhouse_connect.driver.exceptions import DataError
+from clickhouse_connect.driver.errors import NONE_IN_NULLABLE_COLUMN
from clickhouse_connect.driver.types import ByteSource
from clickhouse_connect.driver.options import np
@@ -111,12 +111,12 @@ def pivot(data: Sequence[Sequence], start_row: int, end_row: int) -> Sequence[Se
return tuple(zip(*data[start_row: end_row]))
-def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray):
+def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray) -> int:
app = dest.append
for x in column:
if not x:
if not nullable and x is None:
- raise DataError('Invalid None value in non-Nullable column')
+ return NONE_IN_NULLABLE_COLUMN
app(0)
else:
if encoding:
@@ -132,3 +132,4 @@ def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], des
break
app(0x80 | b)
dest += x
+ return 0
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/errors.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/errors.py
new file mode 100644
index 0000000000..0d37890b7e
--- /dev/null
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/errors.py
@@ -0,0 +1,13 @@
+from clickhouse_connect.driver.exceptions import DataError
+
+
+# Error codes used in the Cython API
+NO_ERROR = 0
+NONE_IN_NULLABLE_COLUMN = 1
+
+error_messages = {NONE_IN_NULLABLE_COLUMN: 'Invalid None value in non-Nullable column'}
+
+
+def handle_error(error_num: int):
+ if error_num > 0:
+ raise DataError(error_messages[error_num])
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx b/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx
index 0c9bbc19ae..da3718d116 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx
@@ -19,7 +19,7 @@ from uuid import UUID, SafeUUID
from libc.string cimport memcpy
from datetime import tzinfo
-from clickhouse_connect.driver.exceptions import DataError
+from clickhouse_connect.driver.errors import NONE_IN_NULLABLE_COLUMN
@cython.boundscheck(False)
@cython.wraparound(False)
@@ -255,7 +255,7 @@ cdef inline extend_byte_array(target: bytearray, int start, object source, Py_ss
@cython.boundscheck(False)
@cython.wraparound(False)
-def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray):
+def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray) -> int:
cdef unsigned long long buff_size = len(column) << 5
cdef unsigned long long buff_loc = 0, sz = 0, dsz = 0
cdef unsigned long long array_size = PyByteArray_GET_SIZE(dest)
@@ -268,7 +268,7 @@ def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], des
for x in column:
if not x:
if not nullable and x is None:
- raise DataError('Invalid None value in non-Nullable column')
+ return NONE_IN_NULLABLE_COLUMN
temp_buff[buff_loc] = 0
buff_loc += 1
if buff_loc == buff_size:
@@ -315,3 +315,4 @@ def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], des
finally:
mv.release()
PyMem_Free(<void *>temp_buff)
+ return 0
diff --git a/contrib/python/clickhouse-connect/ya.make b/contrib/python/clickhouse-connect/ya.make
index 292739d8da..01eb1e5ef9 100644
--- a/contrib/python/clickhouse-connect/ya.make
+++ b/contrib/python/clickhouse-connect/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(0.6.20)
+VERSION(0.6.21)
LICENSE(Apache-2.0)
@@ -62,6 +62,7 @@ PY_SRCS(
clickhouse_connect/driver/ctypes.py
clickhouse_connect/driver/dataconv.py
clickhouse_connect/driver/ddl.py
+ clickhouse_connect/driver/errors.py
clickhouse_connect/driver/exceptions.py
clickhouse_connect/driver/external.py
clickhouse_connect/driver/httpclient.py