class FluentQuery::Drivers::Shared::Results::DBI

PostgreSQL query native token.

Public Class Methods

finalize(id) click to toggle source

Dispatches object destroying.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 58
def self.finalize(id)
    if @@_sources[id]
        @@_sources[id].finish
        @@_sources.delete(id)
    end
end
new(source) click to toggle source

Initializes result.

Calls superclass method
# File lib/fluent-query/drivers/shared/results/dbi.rb, line 43
def initialize(source)
   super()
   
   @_source = source
   @_columns = nil

   ObjectSpace::define_finalizer(self, self.class.method(:finalize).to_proc)
   @@_sources[self.object_id] = @_source
end

Public Instance Methods

all() click to toggle source

Returns all selected rows.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 70
def all
    self.to_enum.map { |i| i }
end
column_names() click to toggle source

Returns the column names.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 142
def column_names
    if @@column_names.nil?
        @@column_names = @_source.column_names.map { |i| i.to_sym }
    end
    
    @@column_names
end
count() click to toggle source

Returns rows count.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 165
def count
    @_source.all.count
end
each(&block) click to toggle source

Handles iterating.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 133
def each(&block)
    self.hash &block
end
free!() click to toggle source

Frees result resources.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 174
def free!
    @_source.finish
    @@_sources.delete(self.object_id)
end
hash() { |result| ... } click to toggle source

Yields all rows as hashes.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 114
def hash
    result = nil
    first = true
    
    while result or first
        first = false
        result = self.one

        if result
            yield result
        end
    end
end
one() click to toggle source

Returns one row.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 79
def one
    row = @_source.fetch_hash
    
    if row
        row = row.map_keys { |i| i.to_sym }
        result = FluentQuery::Data::new(row)
    else
        result = nil
    end

    return result
end
repeat!() click to toggle source

Repeats the query leaded to the result.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 155
def repeat!
    @_source.execute()
    self
end
single() click to toggle source

Returns first value of first row.

# File lib/fluent-query/drivers/shared/results/dbi.rb, line 97
def single
    result = @_source.fetch

    if not result.nil?
        result = result.first
    else
        result = nil
    end

    return result
end