Hash 128 input bits down to 64 bits of output. This is intended to be a reasonably good hash function.


A subroutine for CityHash128(). Returns a decent 128-bit hash for strings of any length representable in signed long. Based on City and Murmur.

connect(host = "localhost", port = 9000;
    database = "",
    username = "default",
    password = "",
    connection_timeout = DBMS_DEFAULT_CONNECT_TIMEOUT,
    max_insert_block_size = DBMS_DEFAULT_MAX_INSERT_BLOCK,
    send_buffer_size = DBMS_DEFAULT_BUFFER_SIZE

Return ClickHouseSock connected to ClickHouse server with the specified parameters

connect!(sock::ClickHouseSock; force = false)

Connects sock to ClickHouse server using connection settings from sock.settings If force = false and sock already connected then existing connection is used If force = true then sock then the socket is closed and a new connection is created


Insert blocks into a table, reading from an iterable. The iterable is expected to yield values of type Dict{Symbol, Any}.


Execute a query, flattening blocks into a single dict of column arrays.



Macro for defining CH read/writable structs with the support for restricting fields by server revision.

@guarded(sock::ClickHouseSock, expr)

Run `expr` thread-safe under lock of `sock.cond`.
@using_socket(sock::ClickHouseSock, expr)

Set `sock.busy` status and run `expr`.
Raises an exception if `sock` is not connected or already busy.
If an exception occurs during the execution of an expression and this exception
is not a server exception, the socket will disconnect.