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.



54
55
56
57
58
59
60
# File 'lib/sequel_pg/sequel_pg.rb', line 54

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) ⇒ Object

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



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

def to_hash(key_column, value_column = nil)
  if value_column
    clone(:_sequel_pg_type=>:hash, :_sequel_pg_value=>[key_column, value_column]).fetch_rows(sql){|s| return s}
  else
    super
  end
end

#to_hash_groups(key_column, value_column = nil) ⇒ Object

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



44
45
46
47
48
49
50
# File 'lib/sequel_pg/sequel_pg.rb', line 44

def to_hash_groups(key_column, value_column = nil)
  if value_column
    clone(:_sequel_pg_type=>:hash_groups, :_sequel_pg_value=>[key_column, value_column]).fetch_rows(sql){|s| return s}
  else
    super
  end
end