rubyfb 0.6.4 → 0.6.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 +14 -0
- data/Manifest +6 -7
- data/Rakefile +1 -1
- data/ext/Common.c +74 -0
- data/ext/Common.h +2 -0
- data/ext/Connection.c +0 -1
- data/ext/FireRuby.c +1 -4
- data/ext/Generator.c +0 -1
- data/ext/Statement.c +186 -26
- data/ext/Statement.h +1 -0
- data/ext/Transaction.c +0 -1
- data/ext/TypeMap.c +60 -285
- data/ext/TypeMap.h +2 -10
- data/lib/active_record/connection_adapters/rubyfb_adapter.rb +17 -16
- data/lib/{Connection.rb → connection.rb} +0 -0
- data/lib/{ProcedureCall.rb → procedure_call.rb} +0 -0
- data/lib/result_set.rb +109 -0
- data/lib/row.rb +149 -0
- data/lib/rubyfb.rb +7 -3
- data/lib/rubyfb_lib.so +0 -0
- data/lib/{SQLType.rb → sql_type.rb} +0 -0
- data/lib/statement.rb +17 -0
- data/rubyfb.gemspec +4 -4
- data/test/ResultSetTest.rb +7 -4
- data/test/RowTest.rb +4 -1
- data/test/TypeTest.rb +1 -1
- metadata +14 -12
- data/ext/ResultSet.c +0 -648
- data/ext/ResultSet.h +0 -59
- data/ext/Row.c +0 -678
- data/ext/Row.h +0 -38
    
        data/ext/TypeMap.h
    CHANGED
    
    | @@ -35,17 +35,9 @@ | |
| 35 35 | 
             
                  #define RUBY_H_INCLUDED
         | 
| 36 36 | 
             
               #endif
         | 
| 37 37 |  | 
| 38 | 
            -
               #ifndef FIRERUBY_DATABASE_H
         | 
| 39 | 
            -
                  #include "ResultSet.h"
         | 
| 40 | 
            -
               #endif
         | 
| 41 | 
            -
             | 
| 42 38 | 
             
            /* Function prototypes. */
         | 
| 43 | 
            -
            void Init_TypeMap();
         | 
| 44 | 
            -
            VALUE  | 
| 39 | 
            +
            void Init_TypeMap(VALUE);
         | 
| 40 | 
            +
            VALUE toValue(XSQLVAR *, VALUE, VALUE);
         | 
| 45 41 | 
             
            void setParameters(XSQLDA *, VALUE, VALUE, VALUE);
         | 
| 46 | 
            -
            VALUE getModule(const char *);
         | 
| 47 | 
            -
            VALUE getClass(const char *);
         | 
| 48 | 
            -
            VALUE getClassInModule(const char *, VALUE);
         | 
| 49 | 
            -
            VALUE getModuleInModule(const char *, VALUE);
         | 
| 50 42 |  | 
| 51 43 | 
             
            #endif /* FIRERUBY_TYPE_MAP_H */
         | 
| @@ -918,25 +918,26 @@ module ActiveRecord | |
| 918 918 | 
             
                    end
         | 
| 919 919 |  | 
| 920 920 | 
             
                    def select_raw(sql, name = nil, binds = [])
         | 
| 921 | 
            -
                      fields = []
         | 
| 922 | 
            -
                       | 
| 923 | 
            -
                       | 
| 924 | 
            -
                         | 
| 925 | 
            -
                         | 
| 926 | 
            -
                           | 
| 927 | 
            -
             | 
| 928 | 
            -
             | 
| 929 | 
            -
             | 
| 930 | 
            -
             | 
| 931 | 
            -
             | 
| 932 | 
            -
             | 
| 933 | 
            -
             | 
| 921 | 
            +
                      fields = rows = []
         | 
| 922 | 
            +
                      exec_result = exec_query(sql, name, binds)
         | 
| 923 | 
            +
                      if exec_result.instance_of?(Rubyfb::ResultSet)
         | 
| 924 | 
            +
                        fields = exec_result.statement.metadata.collect{ |m| fb_to_ar_case(m.key) }
         | 
| 925 | 
            +
                        exec_result.each do |row|
         | 
| 926 | 
            +
                          rows << row.values.collect do |value|
         | 
| 927 | 
            +
                            case value
         | 
| 928 | 
            +
                              when Rubyfb::Blob
         | 
| 929 | 
            +
                                value.to_s.tap do
         | 
| 930 | 
            +
                                  value.close
         | 
| 931 | 
            +
                                end
         | 
| 932 | 
            +
                              when Time, DateTime
         | 
| 933 | 
            +
                                create_time_with_default_timezone(value)
         | 
| 934 | 
            +
                              else
         | 
| 935 | 
            +
                                value
         | 
| 936 | 
            +
                            end
         | 
| 934 937 | 
             
                          end
         | 
| 935 | 
            -
                          array_row << value
         | 
| 936 938 | 
             
                        end
         | 
| 937 | 
            -
                        rows << array_row
         | 
| 938 939 | 
             
                      end
         | 
| 939 | 
            -
                      return fields, rows | 
| 940 | 
            +
                      return fields, rows
         | 
| 940 941 | 
             
                    end
         | 
| 941 942 |  | 
| 942 943 | 
             
                    def index_metadata(table_name, pk, name = nil)
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
    
        data/lib/result_set.rb
    ADDED
    
    | @@ -0,0 +1,109 @@ | |
| 1 | 
            +
            module Rubyfb
         | 
| 2 | 
            +
              class ResultSet
         | 
| 3 | 
            +
                include Enumerable
         | 
| 4 | 
            +
                attr_reader :statement, :transaction, :row_count
         | 
| 5 | 
            +
                
         | 
| 6 | 
            +
                def initialize(statement, transaction)
         | 
| 7 | 
            +
                  @statement = statement
         | 
| 8 | 
            +
                  @transaction = transaction
         | 
| 9 | 
            +
                  @active = true
         | 
| 10 | 
            +
                  @row_count = 0
         | 
| 11 | 
            +
                  @manage_statement = false
         | 
| 12 | 
            +
                  @manage_transaction = false
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
                
         | 
| 15 | 
            +
                def initialize_copy(o)
         | 
| 16 | 
            +
                  raise FireRubyException.new("Object cloning is not supported");
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
                
         | 
| 19 | 
            +
                def each
         | 
| 20 | 
            +
                  while row = fetch
         | 
| 21 | 
            +
                    yield row
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                ensure
         | 
| 24 | 
            +
                  close
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
                
         | 
| 27 | 
            +
                def fetch
         | 
| 28 | 
            +
                  row = nil
         | 
| 29 | 
            +
                  case statement.fetch
         | 
| 30 | 
            +
                    when Statement::FETCH_MORE
         | 
| 31 | 
            +
                      @row_count += 1
         | 
| 32 | 
            +
                      row = Row.new(statement.metadata, statement.current_row(transaction), @row_count)
         | 
| 33 | 
            +
                    when Statement::FETCH_COMPLETED
         | 
| 34 | 
            +
                      close
         | 
| 35 | 
            +
                    when Statement::FETCH_ONE
         | 
| 36 | 
            +
                      @row_count = 1
         | 
| 37 | 
            +
                      row = Row.new(statement.metadata, statement.current_row(transaction), @row_count)
         | 
| 38 | 
            +
                      close
         | 
| 39 | 
            +
                    else
         | 
| 40 | 
            +
                      raise FireRubyException.new("Error fetching query row.");
         | 
| 41 | 
            +
                  end if active?
         | 
| 42 | 
            +
                  
         | 
| 43 | 
            +
                  return row
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
                
         | 
| 46 | 
            +
                def close
         | 
| 47 | 
            +
                  return unless active?
         | 
| 48 | 
            +
                  
         | 
| 49 | 
            +
                  @active = false
         | 
| 50 | 
            +
                  statement.close_cursor
         | 
| 51 | 
            +
                  if @manage_statement && statement.prepared?
         | 
| 52 | 
            +
                    statement.close
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
                  if @manage_transaction && transaction.active?
         | 
| 55 | 
            +
                    transaction.commit
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
                
         | 
| 59 | 
            +
                def connection
         | 
| 60 | 
            +
                  statement.connection
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
                
         | 
| 63 | 
            +
                def sql
         | 
| 64 | 
            +
                  statement.sql
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
                
         | 
| 67 | 
            +
                def dialect
         | 
| 68 | 
            +
                  statement.dialect
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
                
         | 
| 71 | 
            +
                def column_name(index)
         | 
| 72 | 
            +
                  with_metadata(index){ |m| m.name }
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
                
         | 
| 75 | 
            +
                def column_alias(index)
         | 
| 76 | 
            +
                  with_metadata(index){ |m| m.alias }
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
                
         | 
| 79 | 
            +
                def column_scale(index)
         | 
| 80 | 
            +
                  with_metadata(index){ |m| m.scale }
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
                
         | 
| 83 | 
            +
                def column_table(index)
         | 
| 84 | 
            +
                  with_metadata(index){ |m| m.relation }
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
                
         | 
| 87 | 
            +
                def get_base_type(index)
         | 
| 88 | 
            +
                  with_metadata(index){ |m| m.type }
         | 
| 89 | 
            +
                end
         | 
| 90 | 
            +
              
         | 
| 91 | 
            +
                def column_count
         | 
| 92 | 
            +
                  statement.metadata.size
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
                
         | 
| 95 | 
            +
                def active?
         | 
| 96 | 
            +
                  @active
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
                
         | 
| 99 | 
            +
                def exhausted?
         | 
| 100 | 
            +
                  !active?
         | 
| 101 | 
            +
                end
         | 
| 102 | 
            +
              private
         | 
| 103 | 
            +
                def with_metadata(index)
         | 
| 104 | 
            +
                  if index >= 0 and index < column_count
         | 
| 105 | 
            +
                    yield statement.metadata[index]
         | 
| 106 | 
            +
                  end
         | 
| 107 | 
            +
                end
         | 
| 108 | 
            +
              end
         | 
| 109 | 
            +
            end
         | 
    
        data/lib/row.rb
    ADDED
    
    | @@ -0,0 +1,149 @@ | |
| 1 | 
            +
            module Rubyfb
         | 
| 2 | 
            +
              class Row
         | 
| 3 | 
            +
                include Enumerable
         | 
| 4 | 
            +
                attr_reader :number
         | 
| 5 | 
            +
                
         | 
| 6 | 
            +
                def initialize(metadata, data, row_number)
         | 
| 7 | 
            +
                  @number = row_number
         | 
| 8 | 
            +
                  @metadata = metadata
         | 
| 9 | 
            +
                  @data = data
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                def column_count
         | 
| 13 | 
            +
                  @metadata.size
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                def column_name(idx)
         | 
| 17 | 
            +
                  @metadata[get_index(idx)].name
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
                
         | 
| 20 | 
            +
                def column_alias(idx)
         | 
| 21 | 
            +
                  @metadata[get_index(idx)].alias
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
                
         | 
| 24 | 
            +
                def column_scale(idx)
         | 
| 25 | 
            +
                  @metadata[get_index(idx)].scale
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
                
         | 
| 28 | 
            +
                def get_base_type(idx)
         | 
| 29 | 
            +
                  @metadata[get_index(idx)].type
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
                
         | 
| 32 | 
            +
                def each
         | 
| 33 | 
            +
                  @metadata.each_with_index do |c, i|
         | 
| 34 | 
            +
                    yield c.key, @data[i]
         | 
| 35 | 
            +
                  end if block_given?
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
                
         | 
| 38 | 
            +
                def each_key
         | 
| 39 | 
            +
                  @metadata.each do |c|
         | 
| 40 | 
            +
                    yield c.key
         | 
| 41 | 
            +
                  end if block_given?
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def each_value
         | 
| 45 | 
            +
                  @data.each do |v|
         | 
| 46 | 
            +
                    yield v
         | 
| 47 | 
            +
                  end if block_given?
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
                
         | 
| 50 | 
            +
                def [](idx)
         | 
| 51 | 
            +
                  @data[get_index(idx)]
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
                
         | 
| 54 | 
            +
                def fetch(index, default=nil)
         | 
| 55 | 
            +
                  soft_value(index) || default || (
         | 
| 56 | 
            +
                    if block_given?
         | 
| 57 | 
            +
                      yield index
         | 
| 58 | 
            +
                    else
         | 
| 59 | 
            +
                      raise IndexError.new("Column identifier #{index} not found in row.")
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
                  )
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
                
         | 
| 64 | 
            +
                def has_key?(key)
         | 
| 65 | 
            +
                  !!@metadata.find{ |col| col.key == key }
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                def has_column?(name)
         | 
| 69 | 
            +
                  !!@metadata.find{ |col| col.name == name }
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
                
         | 
| 72 | 
            +
                def has_alias?(column_alias)
         | 
| 73 | 
            +
                  !!@metadata.find{ |col| col.alias == column_alias }
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
                
         | 
| 76 | 
            +
                def has_value?(value)
         | 
| 77 | 
            +
                  !!@data.find{ |v| v == value }
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                def keys
         | 
| 81 | 
            +
                  @metadata.collect{ |col| col.key }
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                def names
         | 
| 85 | 
            +
                  @metadata.collect{ |col| col.name }
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                def aliases
         | 
| 89 | 
            +
                  @metadata.collect{ |col| col.alias }
         | 
| 90 | 
            +
                end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                def values
         | 
| 93 | 
            +
                  @data
         | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                def select
         | 
| 97 | 
            +
                  block_given? || (raise StandardError.new("No block specified in call to Row#select."))
         | 
| 98 | 
            +
                  
         | 
| 99 | 
            +
                  [].tap do |a|
         | 
| 100 | 
            +
                    @metadata.each_with_index do |c, i|
         | 
| 101 | 
            +
                      a << [c.key, @data[i]] if yield c.key, @data[i]
         | 
| 102 | 
            +
                    end
         | 
| 103 | 
            +
                  end 
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
                
         | 
| 106 | 
            +
                def to_a
         | 
| 107 | 
            +
                  select{ true }
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
                
         | 
| 110 | 
            +
                def to_hash
         | 
| 111 | 
            +
                  {}.tap do |map|
         | 
| 112 | 
            +
                    @metadata.each_with_index do |c, i|
         | 
| 113 | 
            +
                      map[c.key] = @data[i]
         | 
| 114 | 
            +
                    end
         | 
| 115 | 
            +
                  end
         | 
| 116 | 
            +
                end
         | 
| 117 | 
            +
                
         | 
| 118 | 
            +
                def values_at(*columns)
         | 
| 119 | 
            +
                  columns.collect{ |key| soft_value(key) }
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                alias_method :each_pair, :each
         | 
| 123 | 
            +
                alias_method :include?, :has_key?
         | 
| 124 | 
            +
                alias_method :key?, :has_key?
         | 
| 125 | 
            +
                alias_method :member?, :has_key?
         | 
| 126 | 
            +
                alias_method :value?, :has_value?
         | 
| 127 | 
            +
                alias_method :length, :column_count
         | 
| 128 | 
            +
                alias_method :size, :column_count
         | 
| 129 | 
            +
              private
         | 
| 130 | 
            +
                def soft_value(key)
         | 
| 131 | 
            +
                  if index = find_index(key)
         | 
| 132 | 
            +
                    @data[index]
         | 
| 133 | 
            +
                  end
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
                
         | 
| 136 | 
            +
                def find_index(key)
         | 
| 137 | 
            +
                  if key.kind_of?(String)
         | 
| 138 | 
            +
                    @metadata.find_index{ |c| c.key == key }
         | 
| 139 | 
            +
                  else
         | 
| 140 | 
            +
                    key < 0 ? size + key : key
         | 
| 141 | 
            +
                  end
         | 
| 142 | 
            +
                end
         | 
| 143 | 
            +
                
         | 
| 144 | 
            +
                def get_index(key)
         | 
| 145 | 
            +
                  find_index(key) || (raise IndexError.new("Column identifier #{key} not found in row."))
         | 
| 146 | 
            +
                end
         | 
| 147 | 
            +
              end
         | 
| 148 | 
            +
            end
         | 
| 149 | 
            +
             | 
    
        data/lib/rubyfb.rb
    CHANGED
    
    | @@ -1,6 +1,10 @@ | |
| 1 | 
            +
            require 'date'
         | 
| 1 2 | 
             
            require 'rubyfb_options'
         | 
| 3 | 
            +
            require 'result_set'
         | 
| 2 4 | 
             
            require 'rubyfb_lib'
         | 
| 3 | 
            -
            require ' | 
| 4 | 
            -
            require ' | 
| 5 | 
            -
            require ' | 
| 5 | 
            +
            require 'sql_type'
         | 
| 6 | 
            +
            require 'procedure_call'
         | 
| 7 | 
            +
            require 'row'
         | 
| 8 | 
            +
            require 'statement'
         | 
| 9 | 
            +
            require 'connection'
         | 
| 6 10 |  | 
    
        data/lib/rubyfb_lib.so
    CHANGED
    
    | Binary file | 
| 
            File without changes
         | 
    
        data/lib/statement.rb
    ADDED
    
    | @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module Rubyfb
         | 
| 2 | 
            +
              class Statement
         | 
| 3 | 
            +
                attr_reader :metadata
         | 
| 4 | 
            +
                
         | 
| 5 | 
            +
                class ColumnMetadata
         | 
| 6 | 
            +
                  attr_reader :name, :alias, :key, :type, :scale, :relation
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                def create_column_metadata
         | 
| 10 | 
            +
                  ColumnMetadata.new
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
                
         | 
| 13 | 
            +
                def create_result_set(transaction)
         | 
| 14 | 
            +
                  ResultSet.new(self, transaction)
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
    
        data/rubyfb.gemspec
    CHANGED
    
    | @@ -2,16 +2,16 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |s|
         | 
| 4 4 | 
             
              s.name = "rubyfb"
         | 
| 5 | 
            -
              s.version = "0.6. | 
| 5 | 
            +
              s.version = "0.6.7"
         | 
| 6 6 |  | 
| 7 7 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
         | 
| 8 8 | 
             
              s.authors = ["George Georgiev"]
         | 
| 9 | 
            -
              s.date = "2012-03- | 
| 9 | 
            +
              s.date = "2012-03-29"
         | 
| 10 10 | 
             
              s.description = "Firebird SQL access library"
         | 
| 11 11 | 
             
              s.email = "georgiev@heatbs.com"
         | 
| 12 12 | 
             
              s.extensions = ["ext/extconf.rb"]
         | 
| 13 | 
            -
              s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "examples/example01.rb", "ext/extconf.rb", "lib/ | 
| 14 | 
            -
              s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "examples/example01.rb", "ext/AddUser.c", "ext/AddUser.h", "ext/Backup.c", "ext/Backup.h", "ext/Blob.c", "ext/Blob.h", "ext/Common.c", "ext/Common.h", "ext/Connection.c", "ext/Connection.h", "ext/DataArea.c", "ext/DataArea.h", "ext/Database.c", "ext/Database.h", "ext/FireRuby.c", "ext/FireRuby.h", "ext/FireRubyException.c", "ext/FireRubyException.h", "ext/Generator.c", "ext/Generator.h", "ext/RemoveUser.c", "ext/RemoveUser.h", "ext/Restore.c", "ext/Restore.h", "ext/ | 
| 13 | 
            +
              s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "examples/example01.rb", "ext/extconf.rb", "lib/connection.rb", "lib/procedure_call.rb", "lib/result_set.rb", "lib/row.rb", "lib/rubyfb.rb", "lib/rubyfb_options.rb", "lib/sql_type.rb", "lib/src.rb", "lib/statement.rb"]
         | 
| 14 | 
            +
              s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "examples/example01.rb", "ext/AddUser.c", "ext/AddUser.h", "ext/Backup.c", "ext/Backup.h", "ext/Blob.c", "ext/Blob.h", "ext/Common.c", "ext/Common.h", "ext/Connection.c", "ext/Connection.h", "ext/DataArea.c", "ext/DataArea.h", "ext/Database.c", "ext/Database.h", "ext/FireRuby.c", "ext/FireRuby.h", "ext/FireRubyException.c", "ext/FireRubyException.h", "ext/Generator.c", "ext/Generator.h", "ext/RemoveUser.c", "ext/RemoveUser.h", "ext/Restore.c", "ext/Restore.h", "ext/ServiceManager.c", "ext/ServiceManager.h", "ext/Services.c", "ext/Services.h", "ext/Statement.c", "ext/Statement.h", "ext/Transaction.c", "ext/Transaction.h", "ext/TypeMap.c", "ext/TypeMap.h", "ext/extconf.rb", "ext/rfbint.h", "ext/rfbsleep.h", "ext/rfbstr.c", "ext/rfbstr.h", "ext/uncrustify.cfg", "lib/active_record/connection_adapters/rubyfb_adapter.rb", "lib/arel/visitors/fb15/rubyfb.rb", "lib/arel/visitors/rubyfb.rb", "lib/connection.rb", "lib/mkdoc", "lib/procedure_call.rb", "lib/result_set.rb", "lib/row.rb", "lib/rubyfb.rb", "lib/rubyfb_lib.so", "lib/rubyfb_options.rb", "lib/sql_type.rb", "lib/src.rb", "lib/statement.rb", "mswin32fb/fbclient_mingw.def", "mswin32fb/fbclient_mingw.lib", "mswin32fb/fbclient_ms.lib", "mswin32fb/ibase.h", "mswin32fb/iberror.h", "test/AddRemoveUserTest.rb", "test/BackupRestoreTest.rb", "test/BlobTest.rb", "test/CharacterSetTest.rb", "test/ConnectionTest.rb", "test/DDLTest.rb", "test/DatabaseTest.rb", "test/FieldCharacterSetTest.rb", "test/GeneratorTest.rb", "test/KeyTest.rb", "test/ResultSetTest.rb", "test/RoleTest.rb", "test/RowCountTest.rb", "test/RowTest.rb", "test/SQLTest.rb", "test/SQLTypeTest.rb", "test/ServiceManagerTest.rb", "test/StatementTest.rb", "test/StoredProcedureTest.rb", "test/TestSetup.rb", "test/TransactionTest.rb", "test/TypeTest.rb", "rubyfb.gemspec"]
         | 
| 15 15 | 
             
              s.homepage = "http://rubyforge.org/projects/rubyfb"
         | 
| 16 16 | 
             
              s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rubyfb", "--main", "README"]
         | 
| 17 17 | 
             
              s.require_paths = ["lib", "ext"]
         | 
    
        data/test/ResultSetTest.rb
    CHANGED
    
    | @@ -66,15 +66,18 @@ class ResultSetTest < Test::Unit::TestCase | |
| 66 66 | 
             
               def test01
         | 
| 67 67 | 
             
                  r = @connections[0].execute("SELECT * FROM TEST_TABLE ORDER BY TESTID", @transactions[0])
         | 
| 68 68 | 
             
                  assert_equal(Rubyfb::ResultSet, r.class)
         | 
| 69 | 
            +
                  assert(r.kind_of?(Enumerable), "ResultSet should be Enumerable")
         | 
| 69 70 |  | 
| 70 71 | 
             
                  assert(r.connection == @connections[0])
         | 
| 71 72 | 
             
                  assert(r.transaction == @transactions[0])
         | 
| 72 73 | 
             
                  assert(r.sql == "SELECT * FROM TEST_TABLE ORDER BY TESTID")
         | 
| 73 74 | 
             
                  assert(r.dialect == 3)
         | 
| 74 75 |  | 
| 75 | 
            -
                   | 
| 76 | 
            -
                  assert( | 
| 77 | 
            -
                   | 
| 76 | 
            +
                  first_row = r.fetch
         | 
| 77 | 
            +
                  assert(first_row != nil)
         | 
| 78 | 
            +
                  assert_equal(1, first_row.number)
         | 
| 79 | 
            +
                  assert_equal(Row, r.fetch.class)
         | 
| 80 | 
            +
                  assert_equal(30, r.fetch[0])
         | 
| 78 81 | 
             
                  assert(r.fetch[1] == 'Record Four.')
         | 
| 79 82 | 
             
                  r.fetch
         | 
| 80 83 | 
             
                  assert(r.fetch == nil)
         | 
| @@ -83,7 +86,7 @@ class ResultSetTest < Test::Unit::TestCase | |
| 83 86 | 
             
                  r = @connections[0].execute("SELECT * FROM TEST_TABLE ORDER BY TESTID", @transactions[0])
         | 
| 84 87 | 
             
                  assert_equal(Rubyfb::ResultSet, r.class)
         | 
| 85 88 | 
             
                  assert(r.column_count == 2)
         | 
| 86 | 
            -
                   | 
| 89 | 
            +
                  assert_equal('TESTID', r.column_name(0))
         | 
| 87 90 | 
             
                  assert(r.column_name(1) == 'TESTINFO')
         | 
| 88 91 | 
             
                  assert(r.column_name(3) == nil)
         | 
| 89 92 | 
             
                  assert(r.column_name(-1) == nil)
         | 
    
        data/test/RowTest.rb
    CHANGED
    
    | @@ -58,6 +58,9 @@ class RowTest < Test::Unit::TestCase | |
| 58 58 | 
             
                  sql  = 'select COL01 one, COL02 two, COL03 three from rowtest'
         | 
| 59 59 | 
             
                  rows = @connection.execute_immediate(sql)
         | 
| 60 60 | 
             
                  data = rows.fetch
         | 
| 61 | 
            +
                  assert_equal(Rubyfb::Row, data.class)
         | 
| 62 | 
            +
                  assert(data.kind_of?(Enumerable), "Row should be Enumerable")
         | 
| 63 | 
            +
             | 
| 61 64 |  | 
| 62 65 | 
             
                  count = 0
         | 
| 63 66 | 
             
                  data.each do |name, value|
         | 
| @@ -91,7 +94,7 @@ class RowTest < Test::Unit::TestCase | |
| 91 94 | 
             
                  end
         | 
| 92 95 |  | 
| 93 96 | 
             
                  assert(data.has_key?('ONE'))
         | 
| 94 | 
            -
                   | 
| 97 | 
            +
                  assert_equal(false, data.has_key?('TEN'))
         | 
| 95 98 |  | 
| 96 99 | 
             
                  assert(data.has_column?('COL02'))
         | 
| 97 100 | 
             
                  assert(data.has_column?('COL22') == false)
         | 
    
        data/test/TypeTest.rb
    CHANGED
    
    | @@ -77,7 +77,7 @@ class TypeTest < Test::Unit::TestCase | |
| 77 77 | 
             
                     assert(row[1].instance_of?(Float))
         | 
| 78 78 | 
             
                     assert(row[2].instance_of?(Float))
         | 
| 79 79 | 
             
                     assert(row[3].instance_of?(Float))
         | 
| 80 | 
            -
                     assert(row[4].instance_of?(Time))
         | 
| 80 | 
            +
                     assert(row[4].instance_of?(Time), "Time expected but #{row[4].class.name} found")
         | 
| 81 81 | 
             
                     assert(row[5].instance_of?(Time))
         | 
| 82 82 | 
             
                     assert(row[6].instance_of?(String))
         | 
| 83 83 | 
             
                     assert(row[7].instance_of?(Time))
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rubyfb
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.6. | 
| 4 | 
            +
              version: 0.6.7
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-03- | 
| 12 | 
            +
            date: 2012-03-29 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies: []
         | 
| 14 14 | 
             
            description: Firebird SQL access library
         | 
| 15 15 | 
             
            email: georgiev@heatbs.com
         | 
| @@ -22,12 +22,15 @@ extra_rdoc_files: | |
| 22 22 | 
             
            - README
         | 
| 23 23 | 
             
            - examples/example01.rb
         | 
| 24 24 | 
             
            - ext/extconf.rb
         | 
| 25 | 
            -
            - lib/ | 
| 26 | 
            -
            - lib/ | 
| 27 | 
            -
            - lib/ | 
| 25 | 
            +
            - lib/connection.rb
         | 
| 26 | 
            +
            - lib/procedure_call.rb
         | 
| 27 | 
            +
            - lib/result_set.rb
         | 
| 28 | 
            +
            - lib/row.rb
         | 
| 28 29 | 
             
            - lib/rubyfb.rb
         | 
| 29 30 | 
             
            - lib/rubyfb_options.rb
         | 
| 31 | 
            +
            - lib/sql_type.rb
         | 
| 30 32 | 
             
            - lib/src.rb
         | 
| 33 | 
            +
            - lib/statement.rb
         | 
| 31 34 | 
             
            files:
         | 
| 32 35 | 
             
            - CHANGELOG
         | 
| 33 36 | 
             
            - LICENSE
         | 
| @@ -59,10 +62,6 @@ files: | |
| 59 62 | 
             
            - ext/RemoveUser.h
         | 
| 60 63 | 
             
            - ext/Restore.c
         | 
| 61 64 | 
             
            - ext/Restore.h
         | 
| 62 | 
            -
            - ext/ResultSet.c
         | 
| 63 | 
            -
            - ext/ResultSet.h
         | 
| 64 | 
            -
            - ext/Row.c
         | 
| 65 | 
            -
            - ext/Row.h
         | 
| 66 65 | 
             
            - ext/ServiceManager.c
         | 
| 67 66 | 
             
            - ext/ServiceManager.h
         | 
| 68 67 | 
             
            - ext/Services.c
         | 
| @@ -79,17 +78,20 @@ files: | |
| 79 78 | 
             
            - ext/rfbstr.c
         | 
| 80 79 | 
             
            - ext/rfbstr.h
         | 
| 81 80 | 
             
            - ext/uncrustify.cfg
         | 
| 82 | 
            -
            - lib/Connection.rb
         | 
| 83 | 
            -
            - lib/ProcedureCall.rb
         | 
| 84 | 
            -
            - lib/SQLType.rb
         | 
| 85 81 | 
             
            - lib/active_record/connection_adapters/rubyfb_adapter.rb
         | 
| 86 82 | 
             
            - lib/arel/visitors/fb15/rubyfb.rb
         | 
| 87 83 | 
             
            - lib/arel/visitors/rubyfb.rb
         | 
| 84 | 
            +
            - lib/connection.rb
         | 
| 88 85 | 
             
            - lib/mkdoc
         | 
| 86 | 
            +
            - lib/procedure_call.rb
         | 
| 87 | 
            +
            - lib/result_set.rb
         | 
| 88 | 
            +
            - lib/row.rb
         | 
| 89 89 | 
             
            - lib/rubyfb.rb
         | 
| 90 90 | 
             
            - lib/rubyfb_lib.so
         | 
| 91 91 | 
             
            - lib/rubyfb_options.rb
         | 
| 92 | 
            +
            - lib/sql_type.rb
         | 
| 92 93 | 
             
            - lib/src.rb
         | 
| 94 | 
            +
            - lib/statement.rb
         | 
| 93 95 | 
             
            - mswin32fb/fbclient_mingw.def
         | 
| 94 96 | 
             
            - mswin32fb/fbclient_mingw.lib
         | 
| 95 97 | 
             
            - mswin32fb/fbclient_ms.lib
         |