Class: Sequel::Postgres::Dataset

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel_pg/sequel_pg.rb

Overview

Add faster versions of Dataset#map, #to_hash, #select_map, #select_order_map, and #select_hash

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optimize_model_loadObject

If this dataset has turned model loading on or off, use the default value from the Database object.



30
31
32
# File 'lib/sequel_pg/sequel_pg.rb', line 30

def optimize_model_load
  defined?(@optimize_model_load) ? @optimize_model_load : db.optimize_model_load
end

Instance Method Details

#eachObject

If model loads are being optimized and this is a model load, use the optimized version.



58
59
60
61
62
63
64
# File 'lib/sequel_pg/sequel_pg.rb', line 58

def each
  if (rp = row_proc) && optimize_model_load?
    clone(:_sequel_pg_type=>:model, :_sequel_pg_value=>rp).fetch_rows(sql, &Proc.new)
  else
    super
  end
end

#map(sym = nil) ⇒ Object

In the case where an argument is given, use an optimized version.



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/sequel_pg/sequel_pg.rb', line 14

def map(sym=nil)
  if sym
    if block_given?
      super
    else
      rows = []
      clone(:_sequel_pg_type=>:map, :_sequel_pg_value=>sym).fetch_rows(sql){|s| rows << s}
      rows
    end
  else
    super
  end
end

#to_hash(key_column, value_column = nil, opts = Sequel::OPTS) ⇒ Object

In the case where both arguments given, use an optimized version.



35
36
37
38
39
40
41
42
43
# File 'lib/sequel_pg/sequel_pg.rb', line 35

def to_hash(key_column, value_column = nil, opts = Sequel::OPTS)
  if value_column && !opts[:hash]
    clone(:_sequel_pg_type=>:hash, :_sequel_pg_value=>[key_column, value_column]).fetch_rows(sql){|s| return s}
  elsif opts.empty?
    super(key_column, value_column)
  else
    super
  end
end

#to_hash_groups(key_column, value_column = nil, opts = Sequel::OPTS) ⇒ Object

In the case where both arguments given, use an optimized version.



46
47
48
49
50
51
52
53
54
# File 'lib/sequel_pg/sequel_pg.rb', line 46

def to_hash_groups(key_column, value_column = nil, opts = Sequel::OPTS)
  if value_column && !opts[:hash]
    clone(:_sequel_pg_type=>:hash_groups, :_sequel_pg_value=>[key_column, value_column]).fetch_rows(sql){|s| return s}
  elsif opts.empty?
    super(key_column, value_column)
  else
    super
  end
end