clickhouse-activerecord 1.6.4 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a31a5e1d3ea2e5d069ce7167a472e1eb001e9a9dbae0245a3adbc82a1155436d
4
- data.tar.gz: 6e690df8b5088073777b46098ff77659da3c7b1fa7c9593305a07e7f61df2d31
3
+ metadata.gz: 7ce16cbfaa64ba54cd3091dd79916a9041288453b3ac4650331a9df394b0f6af
4
+ data.tar.gz: '039a7716ddaf0eab1644e6c7bcf22b154dd104eb50784dea897fcf168838e30d'
5
5
  SHA512:
6
- metadata.gz: 89075c98153b99021ba858ae4de186beff0ab537780f141d974480f8ac1d44a71dd751d15693c6b605a4fc956a537cb8026ddf5d5bd1d4eaaedd8d7863369ec3
7
- data.tar.gz: c498273b5fd00c0acdd174315783d62220b52e4aa99ffb08f491c61fe5f7a76b3c0fd63bc5ea78c385f53c2947fee4c87f37317c868e0b9d38ece66eb6d92c5a
6
+ metadata.gz: 3c6b8f1e09342a902af8e67fbf2e6a4576a7ecfced018dbf115c3e421f5eb56064779be97e6d011c84f7895c712221bbb0e37104a71beb1766681084059fe25d
7
+ data.tar.gz: c8bb41dc1d3c012a70849d012e3d3996ff402cb32afaf346c8e0196ec2771260f959bc4add1db40c404d21c608bf37f7059fd3457ad1e1e0d503087e0b195cd4
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### Version 1.6.4 (Feb 13, 2026)
1
+ ### Version 1.6.5 (Feb 16, 2026)
2
2
 
3
3
  * Fix error: EOFError (end of file reached)
4
4
 
@@ -54,11 +54,23 @@ module ActiveRecord
54
54
  end
55
55
 
56
56
  # Execute an SQL query and save the result to a file in stream mode
57
- # @return [String]
57
+ # @return [String, nil]
58
58
  def execute_to_file(sql, name = nil, format: @response_format, settings: {})
59
59
  with_response_format(format) do
60
60
  log(sql, [adapter_name, 'Stream', name].compact.join(' ')) do
61
- request(sql, settings: settings, streaming: true)
61
+ statement = Statement.new(sql, format: @response_format)
62
+ result = nil
63
+ @lock.synchronize do
64
+ req = Net::HTTP::Post.new("/?#{settings_params(settings)}", {
65
+ 'Content-Type' => 'application/x-www-form-urlencoded',
66
+ 'User-Agent' => ClickhouseAdapter::USER_AGENT,
67
+ })
68
+ @connection.start unless @connection.started?
69
+ @connection.request(req, statement.formatted_sql) do |response|
70
+ result = statement.streaming_response(response)
71
+ end
72
+ end
73
+ result
62
74
  end
63
75
  end
64
76
  end
@@ -99,7 +111,8 @@ module ActiveRecord
99
111
  # @link https://clickhouse.com/docs/en/sql-reference/statements/delete
100
112
  def exec_delete(sql, name = nil, _binds = [])
101
113
  log(sql, "#{adapter_name} #{name}") do
102
- res = request(sql, raw_response: true)
114
+ statement = Statement.new(sql, format: @response_format)
115
+ res = request(statement)
103
116
  begin
104
117
  data = JSON.parse(res.header['x-clickhouse-summary'])
105
118
  data['result_rows'].to_i
@@ -276,30 +289,22 @@ module ActiveRecord
276
289
  end
277
290
 
278
291
  def raw_execute(sql, settings: {}, except_params: [])
279
- request(sql, settings: settings, except_params: except_params)
292
+ statement = Statement.new(sql, format: @response_format)
293
+ response = request(statement, settings: settings, except_params: except_params)
294
+ statement.processed_response(response)
280
295
  end
281
296
 
282
297
  # Make HTTP request to ClickHouse server
283
- # @param [String] sql
298
+ # @param [ActiveRecord::ConnectionAdapters::Clickhouse::Statement] statement
284
299
  # @param [Hash] settings
285
300
  # @param [Array] except_params
286
301
  # @return [Net::HTTPResponse]
287
- def request(sql, settings: {}, except_params: [], raw_response: false, streaming: false)
302
+ def request(statement, settings: {}, except_params: [])
288
303
  @lock.synchronize do
289
- req = Net::HTTP::Post.new("/?#{settings_params(settings, except: except_params)}", {
290
- 'Content-Type' => 'application/x-www-form-urlencoded',
291
- 'User-Agent' => ClickhouseAdapter::USER_AGENT,
292
- })
293
- statement = Statement.new(sql, format: @response_format)
294
- if streaming
295
- @connection.request(req, statement.formatted_sql) do |response|
296
- return statement.streaming_response(response)
297
- end
298
- else
299
- response = @connection.request(req, statement.formatted_sql)
300
- return response if raw_response
301
- statement.processed_response(response)
302
- end
304
+ @connection.post("/?#{settings_params(settings, except: except_params)}",
305
+ statement.formatted_sql,
306
+ 'Content-Type' => 'application/x-www-form-urlencoded',
307
+ 'User-Agent' => ClickhouseAdapter::USER_AGENT)
303
308
  end
304
309
  end
305
310
 
@@ -1,3 +1,3 @@
1
1
  module ClickhouseActiverecord
2
- VERSION = '1.6.4'
2
+ VERSION = '1.6.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clickhouse-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.4
4
+ version: 1.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Odintsov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-02-13 00:00:00.000000000 Z
11
+ date: 2026-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler