jdbc-helper 0.7.6 → 0.7.7
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.
- data/CHANGELOG.markdown +8 -0
- data/README.markdown +48 -12
- data/Rakefile +0 -8
- data/jdbc-helper.gemspec +4 -4
- data/lib/jdbc-helper/connection.rb +46 -86
- data/lib/jdbc-helper/connection/callable_statement.rb +6 -6
- data/lib/jdbc-helper/connection/parameterized_statement.rb +8 -11
- data/lib/jdbc-helper/connection/prepared_statement.rb +11 -11
- data/lib/jdbc-helper/connection/result_set_enumerator.rb +3 -2
- data/lib/jdbc-helper/connection/row.rb +5 -0
- data/lib/jdbc-helper/connector/mssql.rb +1 -1
- data/lib/jdbc-helper/connector/mysql.rb +1 -1
- data/lib/jdbc-helper/connector/oracle.rb +2 -2
- data/lib/jdbc-helper/connector/postgresql.rb +1 -1
- data/lib/jdbc-helper/sql/expression.rb +2 -2
- data/lib/jdbc-helper/sql/sql.rb +3 -3
- data/lib/jdbc-helper/sql/sql_prepared.rb +5 -12
- data/lib/jdbc-helper/version.rb +1 -1
- data/lib/jdbc-helper/wrapper/function_wrapper.rb +1 -1
- data/lib/jdbc-helper/wrapper/procedure_wrapper.rb +7 -2
- data/lib/jdbc-helper/wrapper/table_wrapper.rb +58 -10
- data/test/helper.rb +5 -0
- data/test/test_connection.rb +36 -18
- data/test/test_object_wrapper.rb +61 -13
- metadata +23 -22
@@ -9,13 +9,13 @@ class CallableStatement < ParameterizedStatement
|
|
9
9
|
# - IN parameter: value
|
10
10
|
# - OUT parameter: class
|
11
11
|
# - INOUT parameter: [value, class]
|
12
|
-
# (Although class can be inferred from the value,
|
12
|
+
# (Although class can be inferred from the value,
|
13
13
|
# we still need a way to figure out if it's INOUT parameter)
|
14
14
|
def call *params
|
15
15
|
check_closed
|
16
16
|
|
17
17
|
out_params = set_params(params)
|
18
|
-
|
18
|
+
@java_obj.execute
|
19
19
|
|
20
20
|
result = {}
|
21
21
|
out_params.each do |idx, jtype|
|
@@ -28,7 +28,7 @@ class CallableStatement < ParameterizedStatement
|
|
28
28
|
|
29
29
|
private
|
30
30
|
def set_params(params) # :nodoc:
|
31
|
-
hash_params =
|
31
|
+
hash_params =
|
32
32
|
if params.first.kind_of? Hash
|
33
33
|
raise ArgumentError.new("More than one Hash given") if params.length > 1
|
34
34
|
params.first
|
@@ -46,17 +46,17 @@ private
|
|
46
46
|
case value
|
47
47
|
# OUT parameter
|
48
48
|
when Class
|
49
|
-
jtype = JDBCHelper::Connection::RUBY_SQL_TYPE_MAP[value] || java.sql.Types::VARCHAR
|
49
|
+
jtype = JDBCHelper::Connection::RUBY_SQL_TYPE_MAP[value] || Java::java.sql.Types::VARCHAR
|
50
50
|
@java_obj.registerOutParameter(idx_, jtype)
|
51
51
|
out_params[idx] = jtype
|
52
52
|
|
53
53
|
# INOUT parameter
|
54
54
|
when Array
|
55
55
|
set_param(idx_, value.first)
|
56
|
-
jtype = JDBCHelper::Connection::RUBY_SQL_TYPE_MAP[value.last] || java.sql.Types::VARCHAR
|
56
|
+
jtype = JDBCHelper::Connection::RUBY_SQL_TYPE_MAP[value.last] || Java::java.sql.Types::VARCHAR
|
57
57
|
@java_obj.registerOutParameter(idx_, jtype)
|
58
58
|
out_params[idx] = jtype
|
59
|
-
|
59
|
+
|
60
60
|
# IN parameter
|
61
61
|
else
|
62
62
|
set_param(idx_, value)
|
@@ -12,6 +12,7 @@ class ParameterizedStatement
|
|
12
12
|
|
13
13
|
# Underlying Java object
|
14
14
|
attr_reader :java_obj
|
15
|
+
alias java java_obj
|
15
16
|
|
16
17
|
# @param [JDBCHelper::Connection] conn
|
17
18
|
# @param [String] cstmt_str
|
@@ -36,16 +37,16 @@ class ParameterizedStatement
|
|
36
37
|
when Float
|
37
38
|
@java_obj.setDouble idx, param
|
38
39
|
when Time
|
39
|
-
@java_obj.setTimestamp idx, java.sql.Timestamp.new((param.to_f * 1000).to_i)
|
40
|
-
when java.sql.Date
|
40
|
+
@java_obj.setTimestamp idx, Java::java.sql.Timestamp.new((param.to_f * 1000).to_i)
|
41
|
+
when Java::java.sql.Date
|
41
42
|
@java_obj.setDate idx, param
|
42
|
-
when java.sql.Time
|
43
|
+
when Java::java.sql.Time
|
43
44
|
@java_obj.setTime idx, param
|
44
|
-
when java.sql.Timestamp
|
45
|
+
when Java::java.sql.Timestamp
|
45
46
|
@java_obj.setTimestamp idx, param
|
46
|
-
when java.sql.Blob
|
47
|
+
when Java::java.sql.Blob
|
47
48
|
@java_obj.setBinaryStream idx, param.getBinaryStream#, param.length
|
48
|
-
when java.io.InputStream
|
49
|
+
when Java::java.io.InputStream
|
49
50
|
@java_obj.setBinaryStream idx, param
|
50
51
|
else
|
51
52
|
@java_obj.setString idx, param.to_s
|
@@ -65,11 +66,7 @@ class ParameterizedStatement
|
|
65
66
|
|
66
67
|
private
|
67
68
|
def set_null idx, param
|
68
|
-
@java_obj.setNull idx, java.sql.Types::NULL
|
69
|
-
end
|
70
|
-
|
71
|
-
def measure_exec(type, &blk) # :nodoc:
|
72
|
-
@conn.send(:measure_exec, type, &blk)
|
69
|
+
@java_obj.setNull idx, Java::java.sql.Types::NULL
|
73
70
|
end
|
74
71
|
|
75
72
|
def check_closed
|
@@ -32,8 +32,8 @@ class PreparedStatement < ParameterizedStatement
|
|
32
32
|
check_closed
|
33
33
|
|
34
34
|
set_params(params)
|
35
|
-
if
|
36
|
-
ResultSetEnumerator.new(
|
35
|
+
if @java_obj.execute
|
36
|
+
ResultSetEnumerator.new(@java_obj.getResultSet)
|
37
37
|
else
|
38
38
|
@java_obj.getUpdateCount
|
39
39
|
end
|
@@ -44,7 +44,7 @@ class PreparedStatement < ParameterizedStatement
|
|
44
44
|
check_closed
|
45
45
|
|
46
46
|
set_params(params)
|
47
|
-
|
47
|
+
@java_obj.execute_update
|
48
48
|
end
|
49
49
|
|
50
50
|
# @return [Array] Returns an Array if block is not given
|
@@ -53,8 +53,7 @@ class PreparedStatement < ParameterizedStatement
|
|
53
53
|
|
54
54
|
set_params(params)
|
55
55
|
# sorry, ignoring privacy
|
56
|
-
@conn.send(:process_and_close_rset,
|
57
|
-
measure_exec(:p_query) { @java_obj.execute_query }, &blk)
|
56
|
+
@conn.send(:process_and_close_rset, @java_obj.execute_query, &blk)
|
58
57
|
end
|
59
58
|
|
60
59
|
# @return [JDBCHelper::Connection::ResultSetEnumerator]
|
@@ -64,7 +63,7 @@ class PreparedStatement < ParameterizedStatement
|
|
64
63
|
return query(*params, &blk) if block_given?
|
65
64
|
|
66
65
|
set_params(params)
|
67
|
-
ResultSetEnumerator.new(
|
66
|
+
ResultSetEnumerator.new(@java_obj.execute_query)
|
68
67
|
end
|
69
68
|
|
70
69
|
# Adds to the batch
|
@@ -75,14 +74,15 @@ class PreparedStatement < ParameterizedStatement
|
|
75
74
|
set_params(params)
|
76
75
|
@java_obj.add_batch
|
77
76
|
end
|
77
|
+
|
78
78
|
# Executes the batch
|
79
|
+
# @return [Fixnum] Sum of all successful update counts
|
79
80
|
def execute_batch
|
80
81
|
check_closed
|
81
82
|
|
82
|
-
|
83
|
-
@java_obj.executeBatch
|
84
|
-
}
|
83
|
+
@java_obj.executeBatch.select { |e| e > 0 }.inject(:+) || 0
|
85
84
|
end
|
85
|
+
|
86
86
|
# Clears the batch
|
87
87
|
# @return [NilClass]
|
88
88
|
def clear_batch
|
@@ -113,7 +113,7 @@ private
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def set_null idx, param
|
116
|
-
@java_obj.setNull idx, @types ? @types[idx - 1] : java.sql.Types::NULL
|
116
|
+
@java_obj.setNull idx, @types ? @types[idx - 1] : Java::java.sql.Types::NULL
|
117
117
|
end
|
118
118
|
|
119
119
|
def initialize(*args)
|
@@ -123,7 +123,7 @@ private
|
|
123
123
|
@pmd = @java_obj.getParameterMetaData
|
124
124
|
@types = @pmd.getParameterCount.times.map { |idx|
|
125
125
|
# Oracle does not support getParameterType
|
126
|
-
@pmd.getParameterType(idx + 1) rescue java.sql.Types::NULL
|
126
|
+
@pmd.getParameterType(idx + 1) rescue Java::java.sql.Types::NULL
|
127
127
|
}
|
128
128
|
rescue Exception => e
|
129
129
|
Logger.new($stderr).warn e.to_s
|
@@ -113,8 +113,9 @@ private
|
|
113
113
|
JDBCHelper::Connection::GETTER_MAP.fetch(type, :get_string)
|
114
114
|
end
|
115
115
|
|
116
|
-
|
117
|
-
@
|
116
|
+
label = @rsmd.get_column_label(i)
|
117
|
+
@col_labels << label
|
118
|
+
@col_labels_d << label.downcase
|
118
119
|
|
119
120
|
end
|
120
121
|
|
@@ -29,7 +29,7 @@ SqlServer = MSSQL
|
|
29
29
|
module SqlServerConnector
|
30
30
|
extend Connector
|
31
31
|
def self.connect(host, user, password, db,
|
32
|
-
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
32
|
+
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
33
33
|
extra_params = {}, &block)
|
34
34
|
check_params extra_params
|
35
35
|
MSSQL.connect(host, user, password, db,
|
@@ -25,7 +25,7 @@ end#MySQLConnector
|
|
25
25
|
module MySQLConnector
|
26
26
|
extend Connector
|
27
27
|
def self.connect(host, user, password, db,
|
28
|
-
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
28
|
+
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
29
29
|
extra_params = {}, &block)
|
30
30
|
check_params extra_params
|
31
31
|
MySQL.connect(host, user, password, db,
|
@@ -39,7 +39,7 @@ end#OracleConnector
|
|
39
39
|
module OracleConnector
|
40
40
|
extend Connector
|
41
41
|
def self.connect(host, user, password, service_name,
|
42
|
-
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
42
|
+
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
43
43
|
extra_params = {}, &block)
|
44
44
|
check_params extra_params
|
45
45
|
Oracle.connect(host, user, password, service_name,
|
@@ -47,7 +47,7 @@ module OracleConnector
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def self.connect_by_sid(host, user, password, sid,
|
50
|
-
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
50
|
+
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
51
51
|
extra_params = {}, &block)
|
52
52
|
check_params extra_params
|
53
53
|
Oracle.connect_by_sid(host, user, password, sid,
|
@@ -29,7 +29,7 @@ Postgres = PostgreSQL
|
|
29
29
|
module PostgresConnector
|
30
30
|
extend Connector
|
31
31
|
def self.connect(host, user, password, db,
|
32
|
-
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
32
|
+
timeout = Constants::DEFAULT_LOGIN_TIMEOUT,
|
33
33
|
extra_params = {}, &block)
|
34
34
|
check_params extra_params
|
35
35
|
PostgreSQL.connect(host, user, password, db,
|
@@ -82,7 +82,7 @@ module SQL
|
|
82
82
|
def == other
|
83
83
|
self.to_s == other.to_s
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
def eql? other
|
87
87
|
self.class == other.class && self.to_s == other.to_s
|
88
88
|
end
|
@@ -112,7 +112,7 @@ module SQL
|
|
112
112
|
def self.singleton
|
113
113
|
@@singleton ||= NotNullExpression.new
|
114
114
|
end
|
115
|
-
|
115
|
+
|
116
116
|
def initialize
|
117
117
|
end
|
118
118
|
|
data/lib/jdbc-helper/sql/sql.rb
CHANGED
@@ -55,7 +55,7 @@ module SQL
|
|
55
55
|
|
56
56
|
# SQL Helpers
|
57
57
|
# ===========
|
58
|
-
|
58
|
+
|
59
59
|
# Generates insert SQL with hash
|
60
60
|
def self.insert table, data_hash
|
61
61
|
insert_internal 'insert', table, data_hash
|
@@ -83,7 +83,7 @@ module SQL
|
|
83
83
|
def self.select table, opts = {}
|
84
84
|
opts = opts.reject { |k, v| v.nil? }
|
85
85
|
check [
|
86
|
-
"select #{opts.fetch(:select, ['*']).join(', ')} from #{table}",
|
86
|
+
"select #{opts.fetch(:select, ['*']).join(', ')} from #{table}",
|
87
87
|
where_internal(opts.fetch(:where, {})),
|
88
88
|
order(opts.fetch(:order, []).join(', '))
|
89
89
|
].reject(&:empty?).join(' ')
|
@@ -162,7 +162,7 @@ protected
|
|
162
162
|
params = conds[1..-1] || []
|
163
163
|
'(' +
|
164
164
|
base.gsub('?') {
|
165
|
-
param = params.shift
|
165
|
+
param = params.shift
|
166
166
|
param ? value(param) : '?'
|
167
167
|
} + ')'
|
168
168
|
end
|
@@ -52,7 +52,7 @@ module SQLPrepared
|
|
52
52
|
opts = opts.reject { |k, v| v.nil? }
|
53
53
|
w_c, w_b = where_internal(opts.fetch(:where, {}))
|
54
54
|
sql = [
|
55
|
-
"select #{opts.fetch(:select, ['*']).join(', ')} from #{table}",
|
55
|
+
"select #{opts.fetch(:select, ['*']).join(', ')} from #{table}",
|
56
56
|
w_c.to_s,
|
57
57
|
SQL.order(opts.fetch(:order, []).join(', '))
|
58
58
|
].reject(&:empty?).join(' ')
|
@@ -80,8 +80,8 @@ module SQLPrepared
|
|
80
80
|
conds = [conds] unless conds.is_a? Array
|
81
81
|
binds = []
|
82
82
|
clauses = []
|
83
|
-
conds.compact.each do |cond|
|
84
|
-
c, b = where_unit cond
|
83
|
+
conds.compact.each do |cond|
|
84
|
+
c, b = where_unit cond
|
85
85
|
next if c.empty?
|
86
86
|
|
87
87
|
binds += b
|
@@ -129,14 +129,7 @@ module SQLPrepared
|
|
129
129
|
binds << v.begin << v.end
|
130
130
|
">= ? and #{k} <#{'=' unless v.exclude_end?} ?"
|
131
131
|
when Array
|
132
|
-
"in (" +
|
133
|
-
v.map { |e|
|
134
|
-
case e
|
135
|
-
when String
|
136
|
-
SQL.value e
|
137
|
-
else
|
138
|
-
e.to_s
|
139
|
-
end }.join(', ') + ")"
|
132
|
+
"in (" + v.map { |ie| SQL.value ie }.join(', ') + ")"
|
140
133
|
else
|
141
134
|
binds << v
|
142
135
|
"= ?"
|
@@ -147,7 +140,7 @@ module SQLPrepared
|
|
147
140
|
''
|
148
141
|
else
|
149
142
|
binds += conds[1..-1] if conds.length > 1
|
150
|
-
"(#{conds.first})"
|
143
|
+
"(#{conds.first})"
|
151
144
|
end
|
152
145
|
else
|
153
146
|
raise NotImplementedError.new("Parameter to where must be either Hash or String")
|
data/lib/jdbc-helper/version.rb
CHANGED
@@ -11,6 +11,11 @@ class ProcedureWrapper < ObjectWrapper
|
|
11
11
|
# @return [String]
|
12
12
|
alias to_s name
|
13
13
|
|
14
|
+
def initialize conn, name
|
15
|
+
super conn, name
|
16
|
+
@cols = nil
|
17
|
+
end
|
18
|
+
|
14
19
|
# Executes the procedure and returns the values of INOUT & OUT parameters in Hash
|
15
20
|
# @return [Hash]
|
16
21
|
def call(*args)
|
@@ -41,7 +46,7 @@ private
|
|
41
46
|
|
42
47
|
# Alas, metadata lookup can be case-sensitive. e.g. Oracle
|
43
48
|
dbmd = @connection.java_obj.get_meta_data
|
44
|
-
lookups =
|
49
|
+
lookups =
|
45
50
|
if schema
|
46
51
|
[ lambda { dbmd.getProcedureColumns(package, schema, procedure, nil) },
|
47
52
|
lambda { dbmd.getProcedureColumns(package_u, schema_u, procedure_u, nil) } ]
|
@@ -124,7 +129,7 @@ private
|
|
124
129
|
|
125
130
|
final = {}
|
126
131
|
result.each do |idx, ret|
|
127
|
-
key = input.keys.find { |
|
132
|
+
key = input.keys.find { |k| k.to_s.upcase == @cols[idx - 1] }
|
128
133
|
final[key] = ret
|
129
134
|
end
|
130
135
|
final
|
@@ -79,6 +79,7 @@ class TableWrapper < ObjectWrapper
|
|
79
79
|
def insert_ignore data_hash = {}
|
80
80
|
sql, binds = JDBCHelper::SQLPrepared.insert_ignore(name, @query_default.merge(data_hash))
|
81
81
|
pstmt = prepare :insert, sql
|
82
|
+
pstmt.set_fetch_size @fetch_size if @fetch_size
|
82
83
|
pstmt.send @update_method, *binds
|
83
84
|
end
|
84
85
|
|
@@ -124,7 +125,7 @@ class TableWrapper < ObjectWrapper
|
|
124
125
|
self
|
125
126
|
end
|
126
127
|
alias truncate_table! truncate!
|
127
|
-
|
128
|
+
|
128
129
|
# Drops the table.
|
129
130
|
# @note This operation cannot be undone
|
130
131
|
# @return [JDBCHelper::TableWrapper] Self.
|
@@ -181,12 +182,23 @@ class TableWrapper < ObjectWrapper
|
|
181
182
|
# @param [Hash] data_hash Default values
|
182
183
|
# @return [JDBCHelper::TableWrapper]
|
183
184
|
# @since 0.4.5
|
184
|
-
def default data_hash
|
185
|
+
def default data_hash, &block
|
185
186
|
raise ArgumentError.new("Hash required") unless data_hash.kind_of? Hash
|
186
187
|
|
187
188
|
obj = self.dup
|
188
189
|
obj.instance_variable_set :@query_default, @query_default.merge(data_hash)
|
189
|
-
obj
|
190
|
+
ret obj, &block
|
191
|
+
end
|
192
|
+
|
193
|
+
# Returns a new TableWrapper object with the given fetch size.
|
194
|
+
# If a block is given, executes the select statement and yields each row to the block.
|
195
|
+
# @param [Fixnum] fsz Fetch size
|
196
|
+
# @return [JDBCHelper::TableWrapper]
|
197
|
+
# @since 0.7.7
|
198
|
+
def fetch_size fsz, &block
|
199
|
+
obj = self.dup
|
200
|
+
obj.instance_variable_set :@fetch_size, fsz
|
201
|
+
ret obj, &block
|
190
202
|
end
|
191
203
|
|
192
204
|
# Executes a select SQL for the table and returns an Enumerable object,
|
@@ -195,12 +207,12 @@ class TableWrapper < ObjectWrapper
|
|
195
207
|
# @since 0.4.0
|
196
208
|
def each &block
|
197
209
|
sql, binds = JDBCHelper::SQLPrepared.select(
|
198
|
-
name,
|
199
|
-
:select => @query_select,
|
210
|
+
name,
|
211
|
+
:select => @query_select,
|
200
212
|
:where => @query_where,
|
201
213
|
:order => @query_order)
|
202
214
|
pstmt = prepare :select, sql
|
203
|
-
pstmt.enumerate
|
215
|
+
pstmt.enumerate(*binds, &block)
|
204
216
|
end
|
205
217
|
|
206
218
|
# Returns a new TableWrapper object whose subsequent inserts, updates,
|
@@ -227,13 +239,46 @@ class TableWrapper < ObjectWrapper
|
|
227
239
|
@update_method == :add_batch
|
228
240
|
end
|
229
241
|
|
242
|
+
# Clear batched operations.
|
243
|
+
# @param [*Symbol] types Types of batched operations to clear.
|
244
|
+
# If not given, :insert, :update and :delete.
|
245
|
+
# @return [nil]
|
246
|
+
def clear_batch *types
|
247
|
+
types = [:insert, :update, :delete] if types.empty?
|
248
|
+
types.each do |type|
|
249
|
+
raise ArgumentError.new("Invalid type: #{type}") unless @pstmts.has_key?(type)
|
250
|
+
@pstmts[type].values.each(&:clear_batch)
|
251
|
+
end
|
252
|
+
nil
|
253
|
+
end
|
254
|
+
|
255
|
+
# Execute batched operations.
|
256
|
+
# TableWrapper uses multiple PreparedStatements and each of them may have its own homogeneous batched commands.
|
257
|
+
# It is thus not possible for TableWrapper to precisely serialize all the commands when interleaved.
|
258
|
+
# What you can do here is to specify the types of commands (:insert, :update, and :delete) in the order of execution.
|
259
|
+
# The default is to execute deletes first, then updates, and finally inserts.
|
260
|
+
# You can also execute a subset of the three types.
|
261
|
+
# @param [*Symbol] types Types of batched operations to execute in order.
|
262
|
+
# If not given, :delete, :insert and :update.
|
263
|
+
# @return [Hash] Sum of all update counts indexed by operation type
|
264
|
+
def execute_batch *types
|
265
|
+
types = [:delete, :insert, :update] if types.empty?
|
266
|
+
|
267
|
+
Hash.new { 0 }.tap { |cnts|
|
268
|
+
types.each do |type|
|
269
|
+
raise ArgumentError.new("Invalid type: #{type}") unless @pstmts.has_key?(type)
|
270
|
+
cnts[type] += @pstmts[type].values.map(&:execute_batch).select { |e| e > 0 }.inject(:+) || 0
|
271
|
+
end
|
272
|
+
}
|
273
|
+
end
|
274
|
+
|
230
275
|
# Returns the select SQL for this wrapper object
|
231
276
|
# @return [String] Select SQL
|
232
277
|
# @since 0.4.0
|
233
278
|
def sql
|
234
279
|
JDBCHelper::SQL.select(
|
235
|
-
name,
|
236
|
-
:select => @query_select,
|
280
|
+
name,
|
281
|
+
:select => @query_select,
|
237
282
|
:where => @query_where,
|
238
283
|
:order => @query_order)
|
239
284
|
end
|
@@ -243,6 +288,8 @@ class TableWrapper < ObjectWrapper
|
|
243
288
|
@update_method = :update
|
244
289
|
@query_default = {}
|
245
290
|
@query_where = []
|
291
|
+
@query_order = nil
|
292
|
+
@query_select = nil
|
246
293
|
@pstmts = {
|
247
294
|
:select => {},
|
248
295
|
:insert => {},
|
@@ -250,8 +297,9 @@ class TableWrapper < ObjectWrapper
|
|
250
297
|
:count => {},
|
251
298
|
:update => {}
|
252
299
|
}
|
300
|
+
@fetch_size = nil
|
253
301
|
end
|
254
|
-
|
302
|
+
|
255
303
|
# Closes the prepared statements
|
256
304
|
# @since 0.5.0
|
257
305
|
def close
|
@@ -291,7 +339,7 @@ private
|
|
291
339
|
|
292
340
|
def ret obj, &block
|
293
341
|
if block_given?
|
294
|
-
obj.each
|
342
|
+
obj.each(&block)
|
295
343
|
else
|
296
344
|
obj
|
297
345
|
end
|