Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions .docker/clickhouse/single_node_tls/certificates/ca.crt
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
-----BEGIN CERTIFICATE-----
MIIBxDCCAWoCCQCC7Dz9F36rcTAKBggqhkjOPQQDAjBqMQswCQYDVQQGEwJVUzER
MA8GA1UECAwIQ29sb3JhZG8xDzANBgNVBAcMBkRlbnZlcjEYMBYGA1UECgwPQ2xp
Y2tIb3VzZSBJbmMuMR0wGwYDVQQDDBRjbGlja2hvdXNlX3Rlc3Rfcm9vdDAeFw0y
MzA0MjYyMTM4MzhaFw00MzA0MjYyMTM4MzhaMGoxCzAJBgNVBAYTAlVTMREwDwYD
VQQIDAhDb2xvcmFkbzEPMA0GA1UEBwwGRGVudmVyMRgwFgYDVQQKDA9DbGlja0hv
dXNlIEluYy4xHTAbBgNVBAMMFGNsaWNraG91c2VfdGVzdF9yb290MFkwEwYHKoZI
zj0CAQYIKoZIzj0DAQcDQgAE8ajzpmv1YDspmgGcE+KjB2SxAQJ2/awkkP/SBvjw
enD0ibQG5fyA5vxhPv7ImbnqebPS1NXwIt4HCkLXKVPDnzAKBggqhkjOPQQDAgNI
ADBFAiAlQ8IWL7OQua7/dFaE8xbFy/hoKnLvuigDg9MAJNJUXwIhAIa0c3pT6z9P
OX2Sw5mfl/YEDTgsG033S1MeAha3707H
MIICOTCCAd+gAwIBAgIUDVFiObYZ48KdDkTlhKzVRf/KfJ0wCgYIKoZIzj0EAwIw
ajELMAkGA1UEBhMCVVMxETAPBgNVBAgMCENvbG9yYWRvMQ8wDQYDVQQHDAZEZW52
ZXIxGDAWBgNVBAoMD0NsaWNrSG91c2UgSW5jLjEdMBsGA1UEAwwUY2xpY2tob3Vz
ZV90ZXN0X3Jvb3QwHhcNMjUwNDExMTgzOTA5WhcNMjUwNTExMTgzOTA5WjBqMQsw
CQYDVQQGEwJVUzERMA8GA1UECAwIQ29sb3JhZG8xDzANBgNVBAcMBkRlbnZlcjEY
MBYGA1UECgwPQ2xpY2tIb3VzZSBJbmMuMR0wGwYDVQQDDBRjbGlja2hvdXNlX3Rl
c3Rfcm9vdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPGo86Zr9WA7KZoBnBPi
owdksQECdv2sJJD/0gb48Hpw9Im0BuX8gOb8YT7+yJm56nmz0tTV8CLeBwpC1ylT
w5+jYzBhMB0GA1UdDgQWBBSSPtUyuGF0HFuucyfFfWwWMAnF9jAfBgNVHSMEGDAW
gBSSPtUyuGF0HFuucyfFfWwWMAnF9jAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
/wQEAwIBBjAKBggqhkjOPQQDAgNIADBFAiBdgpWahGxpRC1q2faCmxuAnK4Q6CMp
cMybM4fhdKqhiQIhAM07skDAKqviL8mkZY6XDnHlFdpqnAXBXVHKrsDQTMz/
-----END CERTIFICATE-----
23 changes: 13 additions & 10 deletions .docker/clickhouse/single_node_tls/certificates/client.crt
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
-----BEGIN CERTIFICATE-----
MIIBuDCCAV8CCQCvYwZhuT/WEjAKBggqhkjOPQQDAjBqMQswCQYDVQQGEwJVUzER
MA8GA1UECAwIQ29sb3JhZG8xDzANBgNVBAcMBkRlbnZlcjEYMBYGA1UECgwPQ2xp
Y2tIb3VzZSBJbmMuMR0wGwYDVQQDDBRjbGlja2hvdXNlX3Rlc3Rfcm9vdDAeFw0y
MzA0MjYyMjAzMjZaFw00MzA0MjYyMjAzMjZaMF8xCzAJBgNVBAYTAlVTMREwDwYD
VQQIDAhDb2xvcmFkbzEPMA0GA1UEBwwGRGVudmVyMRgwFgYDVQQKDA9DbGlja0hv
dXNlIEluYy4xEjAQBgNVBAMMCWNlcnRfdXNlcjBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABIEhqR0FcbBp0ZdQ6t9c9+rxRVS8TZXlPY2kGlFMkW5AY8/Y05L1q7Cx
mJiwZl6+4U/j8m0EhtVREywb1PENR20wCgYIKoZIzj0EAwIDRwAwRAIgRp0AWMOq
OA8lJTd1h2GrAWDMpiNamMUvLyksxLq5SrgCIA5AwncaSEqGHboq1zHMj0Qnqnua
JQJAbhcsh4sxk8AY
MIICQzCCAemgAwIBAgIUeggQ6+OCjtT3i7jASzwA1qfdDn0wCgYIKoZIzj0EAwIw
ajELMAkGA1UEBhMCVVMxETAPBgNVBAgMCENvbG9yYWRvMQ8wDQYDVQQHDAZEZW52
ZXIxGDAWBgNVBAoMD0NsaWNrSG91c2UgSW5jLjEdMBsGA1UEAwwUY2xpY2tob3Vz
ZV90ZXN0X3Jvb3QwHhcNMjUwNDExMTk1MjMyWhcNNDUwNDExMTk1MjMyWjBfMQsw
CQYDVQQGEwJVUzERMA8GA1UECAwIQ29sb3JhZG8xDzANBgNVBAcMBkRlbnZlcjEY
MBYGA1UECgwPQ2xpY2tIb3VzZSBJbmMuMRIwEAYDVQQDDAljZXJ0X3VzZXIwWTAT
BgcqhkjOPQIBBggqhkjOPQMBBwNCAASBIakdBXGwadGXUOrfXPfq8UVUvE2V5T2N
pBpRTJFuQGPP2NOS9auwsZiYsGZevuFP4/JtBIbVURMsG9TxDUdto3gwdjAdBgNV
HQ4EFgQUJuFP4dlFGBW3wK6vUkqvSxaLMhswHwYDVR0jBBgwFoAUkj7VMrhhdBxb
rnMnxX1sFjAJxfYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBaAwFgYDVR0l
AQH/BAwwCgYIKwYBBQUHAwIwCgYIKoZIzj0EAwIDSAAwRQIgVrbKF3pqkvivLjhz
uhMREwZtkK5jcQboVmHVtKQpkWACIQDYiwq+e8x/CdFdTiZwGrfliPy/pfBSvPSD
sIRougm0nA==
-----END CERTIFICATE-----
28 changes: 13 additions & 15 deletions .docker/clickhouse/single_node_tls/certificates/server.crt
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICrjCCAlSgAwIBAgIJAK9jBmG5P9YRMAoGCCqGSM49BAMCMGoxCzAJBgNVBAYT
AlVTMREwDwYDVQQIDAhDb2xvcmFkbzEPMA0GA1UEBwwGRGVudmVyMRgwFgYDVQQK
DA9DbGlja0hvdXNlIEluYy4xHTAbBgNVBAMMFGNsaWNraG91c2VfdGVzdF9yb290
MB4XDTIzMDQyNjIxNTAxOVoXDTQzMDQyNjIxNTAxOVowbTELMAkGA1UEBhMCVVMx
ETAPBgNVBAgMCENvbG9yYWRvMQ8wDQYDVQQHDAZEZW52ZXIxGDAWBgNVBAoMD0Ns
aWNrSG91c2UgSW5jLjEgMB4GA1UEAwwXc2VydmVyMS5jbGlja2hvdXNlLnRlc3Qw
WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARhjivoy18D47i18Jqg6m9yI17ndMWA
kuyPhXFLgW1PpU2wk3DvpUbkKUxUPlKsNwuHEKJ4kcparrrwWGxKT2Dmo4HfMIHc
MIGEBgNVHSMEfTB7oW6kbDBqMQswCQYDVQQGEwJVUzERMA8GA1UECAwIQ29sb3Jh
ZG8xDzANBgNVBAcMBkRlbnZlcjEYMBYGA1UECgwPQ2xpY2tIb3VzZSBJbmMuMR0w
GwYDVQQDDBRjbGlja2hvdXNlX3Rlc3Rfcm9vdIIJAILsPP0XfqtxMAkGA1UdEwQC
MAAwCwYDVR0PBAQDAgTwMDsGA1UdEQQ0MDKCF3NlcnZlcjEuY2xpY2tob3VzZS50
ZXN0ghdzZXJ2ZXIyLmNsaWNraG91c2UudGVzdDAKBggqhkjOPQQDAgNIADBFAiBM
71Vx9q964BRd9+N0zpbax+N+jWFJQfkOic4wlsPZ7QIhAPBU9Kfbi3Iwy3XwWBOv
YZsvoFRxUfG2RRRlz5cGgKIa
MIICZjCCAg2gAwIBAgIUeggQ6+OCjtT3i7jASzwA1qfdDnswCgYIKoZIzj0EAwIw
ajELMAkGA1UEBhMCVVMxETAPBgNVBAgMCENvbG9yYWRvMQ8wDQYDVQQHDAZEZW52
ZXIxGDAWBgNVBAoMD0NsaWNrSG91c2UgSW5jLjEdMBsGA1UEAwwUY2xpY2tob3Vz
ZV90ZXN0X3Jvb3QwHhcNMjUwNDExMTkzNTE0WhcNNDUwNDExMTkzNTE0WjBtMQsw
CQYDVQQGEwJVUzERMA8GA1UECAwIQ29sb3JhZG8xDzANBgNVBAcMBkRlbnZlcjEY
MBYGA1UECgwPQ2xpY2tIb3VzZSBJbmMuMSAwHgYDVQQDDBdjbGlja2hvdXNlX3Rl
c3Rfc2VydmVyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGGOK+jLXwPjuLXw
mqDqb3IjXud0xYCS7I+FcUuBbU+lTbCTcO+lRuQpTFQ+Uqw3C4cQoniRylquuvBY
bEpPYOajgY0wgYowHQYDVR0OBBYEFMT7NvpCkmSa2HYEyql/pUCxdkWQMB8GA1Ud
IwQYMBaAFJI+1TK4YXQcW65zJ8V9bBYwCcX2MAwGA1UdEwEB/wQCMAAwIgYDVR0R
BBswGYIXc2VydmVyMS5jbGlja2hvdXNlLnRlc3QwFgYDVR0lAQH/BAwwCgYIKwYB
BQUHAwEwCgYIKoZIzj0EAwIDRwAwRAIgDUXjls0mpQwTOJyw9zy0zOA0kfU+fldI
S4qsQwKhpmECID2eUcgU2zv0koUcE1M6UyVzQrJfJviUR48bh8rgkykg
-----END CERTIFICATE-----
5 changes: 2 additions & 3 deletions .github/workflows/on_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,10 @@ jobs:
- '3.12'
- '3.13'
clickhouse-version:
- '24.3'
- '24.8'
- '24.11'
- '24.12'
- '25.1'
- '25.2'
- '25.3'
- latest

name: Local Tests Py=${{ matrix.python-version }} CH=${{ matrix.clickhouse-version }}
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,17 @@ release (0.9.0), unrecognized arguments/keywords for these methods of creating a
instead of being passed as ClickHouse server settings. This is in conjunction with some refactoring in Client construction.
The supported method of passing ClickHouse server settings is to prefix such arguments/query parameters with`ch_`.

## 0.8.17, 2025-04-10
### Bug Fix
- Version 0.8.16 introduced a bug where changing a Client setting value and then changing that setting value back to the
original server value would fail to restore the original setting. This has been fixed. Closes
https://github.com/ClickHouse/clickhouse-connect/issues/487

### Improvement
- There was previously no way to add a path to the ClickHouse server host in cases where the ClickHouse server was
behind a proxy that used path based routing (such as `https://big_proxy:8080/clickhouse). The new `proxy_path`
`get_client` argument can now be used to set that path. Closes https://github.com/ClickHouse/clickhouse-connect/issues/486

## 0.8.16, 2025-03-28
### Bug Fixes
- Don't send a setting value if the setting is already correct according to the `system.settings` table.
Expand Down
2 changes: 1 addition & 1 deletion clickhouse_connect/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version = '0.8.16'
version = '0.8.17'
3 changes: 2 additions & 1 deletion clickhouse_connect/driver/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@ def _validate_setting(self, key: str, value: Any, invalid_action: str) -> Option
str_value = '0'
if key not in self.valid_transport_settings:
setting_def = self.server_settings.get(key)
if setting_def and setting_def.value == str_value:
current_setting = self.get_client_setting(key)
if setting_def and setting_def.value == str_value and (current_setting is None or current_setting == setting_def.value):
return None # don't send settings that are already the expected value
if setting_def is None or setting_def.readonly:
if key in self.optional_transport_settings:
Expand Down
8 changes: 6 additions & 2 deletions clickhouse_connect/driver/httpclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,16 @@ def __init__(self,
apply_server_timezone: Optional[Union[str, bool]] = None,
show_clickhouse_errors: Optional[bool] = None,
autogenerate_session_id: Optional[bool] = None,
tls_mode: Optional[str] = None):
tls_mode: Optional[str] = None,
proxy_path: str = ''):
"""
Create an HTTP ClickHouse Connect client
See clickhouse_connect.get_client for parameters
"""
self.url = f'{interface}://{host}:{port}'
proxy_path = proxy_path.lstrip('/')
if proxy_path:
proxy_path = '/' + proxy_path
self.url = f'{interface}://{host}:{port}{proxy_path}'
self.headers = {}
self.params = dict_copy(HttpClient.params)
ch_settings = dict_copy(settings, self.params)
Expand Down
4 changes: 2 additions & 2 deletions clickhouse_connect/driver/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import pytz

from io import IOBase
from typing import Any, Tuple, Dict, Sequence, Optional, Union, Generator
from typing import Any, Tuple, Dict, Sequence, Optional, Union, Generator, BinaryIO
from datetime import tzinfo

from pytz.exceptions import UnknownTimeZoneError
Expand Down Expand Up @@ -374,7 +374,7 @@ def to_arrow_batches(buffer: IOBase) -> StreamContext:
return StreamContext(buffer, reader)


def arrow_buffer(table, compression: Optional[str] = None) -> Tuple[Sequence[str], bytes]:
def arrow_buffer(table, compression: Optional[str] = None) -> Tuple[Sequence[str], Union[bytes, BinaryIO]]:
pyarrow = check_arrow()
options = None
if compression in ('zstd', 'lz4'):
Expand Down