Class: Jvertica::ResultSet
- Inherits:
-
Object
- Object
- Jvertica::ResultSet
- Includes:
- Enumerable
- Defined in:
- lib/jvertica/result_set.rb
Instance Method Summary collapse
- #close ⇒ Object
- #closed? ⇒ Boolean
- #each ⇒ Object
-
#initialize(rset, &close_callback) ⇒ ResultSet
constructor
A new instance of ResultSet.
Constructor Details
#initialize(rset, &close_callback) ⇒ ResultSet
Returns a new instance of ResultSet.
7 8 9 10 11 12 13 14 15 16 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/jvertica/result_set.rb', line 7 def initialize(rset, &close_callback) unless rset.respond_to?(:get_meta_data) rset.close if rset @closed = true return end @close_callback = close_callback @rset = rset @rsmd = @rset. @num_col = @rsmd.get_column_count @getters = [] @col_labels = [] @col_labels_d = [] (1..@num_col).each do |i| type = @rsmd.get_column_type(i) @getters << case type when java.sql.Types::NUMERIC, java.sql.Types::DECIMAL precision = @rsmd.get_precision(i) scale = @rsmd.get_scale(i) if precision > 0 and scale >= 0 if scale > 0 :getBigDecimal elsif precision <= 9 :getInt elsif precision <= 18 :getLong else :getBigNum end else :getBigDecimal end else Jvertica::Constant::GETTER_MAP.fetch(type) :get_string end label = @rsmd.get_column_label(i) @col_labels << label @col_labels_d << label.downcase end @rownum = -1 @nrow = @rset.next @closed = false end |
Instance Method Details
#close ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/jvertica/result_set.rb', line 89 def close return if closed? @rset.close rescue nil @close_callback.call if @close_callback ensure @closed = true end |
#closed? ⇒ Boolean
97 98 99 |
# File 'lib/jvertica/result_set.rb', line 97 def closed? @closed end |
#each ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/jvertica/result_set.rb', line 59 def each return enum_for(:each) unless block_given? return if closed? while @nrow idx = 0 row = Jvertica::Row.new( @col_labels, @col_labels_d, @getters.map {|gt| case gt when :getBigNum v = @rset.getBigDecimal(idx+=1) @rset.was_null ? nil : v.toPlainString.to_i when :getBigDecimal v = @rset.getBigDecimal(idx+=1) @rset.was_null ? nil : BigDecimal.new(v.toPlainString) else v = @rset.send(gt, idx+=1) @rset.was_null ? nil : v end }, @rownum += 1 ) close unless @nrow = @rset.next yield row end close end |