Module: Clickhouse::Connection::PostQuery
- Included in:
- Clickhouse::Connection
- Defined in:
- lib/clickhouse/connection/post_query.rb
Overview
By default Clickhouse uses GET request for query, but it has limitation for length on server side. So we will allow to use POST request with query in a body.
Instance Method Summary collapse
- #post_query(query) ⇒ Object
- #request(method, query, body = nil) ⇒ Object
- #select_rows(options) ⇒ Object
Instance Method Details
#post_query(query) ⇒ Object
7 8 9 10 11 |
# File 'lib/clickhouse/connection/post_query.rb', line 7 def post_query(query) query = Utils.extract_format(query)[0] query += ' FORMAT JSONCompact' parse_data post(nil, query) end |
#request(method, query, body = nil) ⇒ Object
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 |
# File 'lib/clickhouse/connection/post_query.rb', line 17 def request(method, query, body = nil) raise ArgumentError, 'when query is omitted body must be passed' if query.nil? && body.nil? connect! body = body.strip unless body.nil? query = query.strip unless query.nil? start = Time.now headers = { 'Content-Type' => 'text/plain' } response = client.send(method, path(query), body, headers) status = response.status duration = Time.now - start if query.nil? query, format = Utils.extract_format(body) else query, format = Utils.extract_format(query) end response = parse_body(format, response.body) stats = parse_stats(response) write_log duration, query, stats raise QueryError, "Got status #{status} (expected 200): #{response}" unless status == 200 response rescue Faraday::Error => e raise ConnectionError, e. end |
#select_rows(options) ⇒ Object
13 14 15 |
# File 'lib/clickhouse/connection/post_query.rb', line 13 def select_rows() post_query to_select_query() end |