File tree Expand file tree Collapse file tree 2 files changed +15
-39
lines changed
lib/activerecord_adbc_adapter Expand file tree Collapse file tree 2 files changed +15
-39
lines changed Original file line number Diff line number Diff line change @@ -7,36 +7,26 @@ def perform_query(raw_connection,
7
7
prepare :,
8
8
notification_payload :,
9
9
batch :)
10
- statement = raw_connection . open_statement
11
- begin
10
+ raw_connection . open_statement do |statement |
12
11
statement . sql_query = sql
13
12
if binds . empty?
14
- reader = statement . execute do |r , |
15
- r
16
- end
13
+ statement . execute [ 0 ]
17
14
else
18
15
statement . prepare
19
16
raw_records = { }
20
17
binds . zip ( type_casted_binds ) do |bind , type_casted_bind |
21
18
raw_records [ bind . name ] = [ type_casted_bind ]
22
19
end
23
20
record_batch = Arrow ::RecordBatch . new ( raw_records )
24
- reader = statement . bind ( record_batch ) do
25
- statement . execute do |r , |
26
- r
27
- end
21
+ statement . bind ( record_batch ) do
22
+ statement . execute [ 0 ]
28
23
end
29
24
end
30
- rescue
31
- statement . release
32
- raise
33
- else
34
- Result . new ( statement , reader )
35
25
end
36
26
end
37
27
38
- def cast_result ( result )
39
- result
28
+ def cast_result ( table )
29
+ Result . new ( table )
40
30
end
41
31
42
32
# Borrowed from
Original file line number Diff line number Diff line change @@ -2,10 +2,9 @@ module ActiveRecordADBCAdapter
2
2
class Result
3
3
include Enumerable
4
4
5
- def initialize ( statement , record_batch_reader )
6
- @statement = statement
7
- @record_batch_reader = record_batch_reader
8
- @schema = @record_batch_reader . schema
5
+ def initialize ( table )
6
+ @table = table
7
+ @schema = @table . schema
9
8
end
10
9
11
10
def columns
@@ -48,20 +47,17 @@ def indexed_rows
48
47
end
49
48
50
49
def to_arrow
51
- @table ||= consume_record_batch_reader do
52
- @record_batch_reader . read_all
53
- end
50
+ @table
54
51
end
55
52
56
53
def each_record_batch
57
54
return to_enum ( __method__ ) unless block_given?
58
55
59
- consume_record_batch_reader do
60
- loop do
61
- record_batch = @record_batch_reader . read_next
62
- break if record_batch . nil?
63
- yield ( record_batch )
64
- end
56
+ reader = Arrow ::TableBatchReader . new ( @table )
57
+ loop do
58
+ record_batch = reader . read_next
59
+ break if record_batch . nil?
60
+ yield ( record_batch )
65
61
end
66
62
end
67
63
@@ -70,16 +66,6 @@ def fields
70
66
@fields ||= @schema . fields
71
67
end
72
68
73
- def consume_record_batch_reader
74
- begin
75
- yield
76
- ensure
77
- @record_batch_reader = nil
78
- @statement . release
79
- @statement = nil
80
- end
81
- end
82
-
83
69
def resolve_type ( data_type )
84
70
case data_type
85
71
when Arrow ::Int32DataType
You can’t perform that action at this time.
0 commit comments