From a real-world production scenario, we've found the current implementation of httpRequest in clickhouse.js is a bit too complicated. It handles both reads (select) and writes (insert). That makes the httpRequest part too hard to be extended and brings some limitations.
e.g.
- No way to buffer the write response by setting
wait_end_of_query. This causes the whole system to fail to handle clickhouse server data-parsing error.
- No way to read back
response.headers['X-ClickHouse-Summary'] without hacking into the source code of this module.
- No way to fetch
X-ClickHouse-Progress upgrades when reading back a large chunk of data.
Thus, I'd like to suggest to separate write and read from module clickhouse.js for their significant different behaviours.
From a real-world production scenario, we've found the current implementation of
httpRequestin clickhouse.js is a bit too complicated. It handles both reads (select) and writes (insert). That makes thehttpRequestpart too hard to be extended and brings some limitations.e.g.
wait_end_of_query. This causes the whole system to fail to handle clickhouse server data-parsing error.response.headers['X-ClickHouse-Summary']without hacking into the source code of this module.X-ClickHouse-Progressupgrades when reading back a large chunk of data.Thus, I'd like to suggest to separate write and read from module clickhouse.js for their significant different behaviours.