Class/Module Index [+]

Quicksearch

Sequel::Postgres::DatasetMethods

Instance methods for datasets that connect to a PostgreSQL database.

Public Class Methods

extended(obj) click to toggle source

Add the disable_insert_returning! mutation method

# File lib/sequel/adapters/shared/postgres.rb, line 616
def self.extended(obj)
  obj.def_mutation_method(:disable_insert_returning)
end
included(mod) click to toggle source

Add the disable_insert_returning! mutation method

# File lib/sequel/adapters/shared/postgres.rb, line 621
def self.included(mod)
  mod.def_mutation_method(:disable_insert_returning)
end

Public Instance Methods

analyze() click to toggle source

Return the results of an ANALYZE query as a string

# File lib/sequel/adapters/shared/postgres.rb, line 626
def analyze
  explain(:analyze=>true)
end
disable_insert_returning() click to toggle source

Disable the use of INSERT RETURNING, even if the server supports it

# File lib/sequel/adapters/shared/postgres.rb, line 631
def disable_insert_returning
  clone(:disable_insert_returning=>true)
end
explain(opts={}) click to toggle source

Return the results of an EXPLAIN query as a string

# File lib/sequel/adapters/shared/postgres.rb, line 636
def explain(opts={})
  with_sql((opts[:analyze] ? EXPLAIN_ANALYZE : EXPLAIN) + select_sql).map(QUERY_PLAN).join("\r\n")
end
for_share() click to toggle source

Return a cloned dataset which will use FOR SHARE to lock returned rows.

# File lib/sequel/adapters/shared/postgres.rb, line 641
def for_share
  lock_style(:share)
end
full_text_search(cols, terms, opts = {}) click to toggle source

PostgreSQL specific full text search syntax, using tsearch2 (included in 8.3 by default, and available for earlier versions as an add-on).

# File lib/sequel/adapters/shared/postgres.rb, line 647
def full_text_search(cols, terms, opts = {})
  lang = opts[:language] || 'simple'
  filter("to_tsvector(#{literal(lang)}, #{full_text_string_join(cols)}) @@ to_tsquery(#{literal(lang)}, #{literal(Array(terms).join(' | '))})")
end
insert(*values) click to toggle source

Insert given values into the database.

# File lib/sequel/adapters/shared/postgres.rb, line 653
def insert(*values)
  if @opts[:sql]
    execute_insert(insert_sql(*values))
  elsif @opts[:disable_insert_returning] || server_version < 80200
    execute_insert(insert_sql(*values), :table=>opts[:from].first, :values=>values.size == 1 ? values.first : values)
  else
    clone(default_server_opts(:sql=>insert_returning_pk_sql(*values))).single_value
  end
end
insert_returning_sql(returning, *values) click to toggle source

Use the RETURNING clause to return the columns listed in returning.

# File lib/sequel/adapters/shared/postgres.rb, line 664
def insert_returning_sql(returning, *values)
  "#{insert_sql(*values)} RETURNING #{column_list(Array(returning))}"
end
insert_select(*values) click to toggle source

Insert a record returning the record inserted

# File lib/sequel/adapters/shared/postgres.rb, line 669
def insert_select(*values)
  return if opts[:disable_insert_returning] || server_version < 80200
  naked.clone(default_server_opts(:sql=>insert_returning_sql(nil, *values))).single_record
end
lock(mode, opts={}) click to toggle source

Locks all tables in the dataset’s FROM clause (but not in JOINs) with the specified mode (e.g. ‘EXCLUSIVE’). If a block is given, starts a new transaction, locks the table, and yields. If a block is not given just locks the tables. Note that PostgreSQL will probably raise an error if you lock the table outside of an existing transaction. Returns nil.

# File lib/sequel/adapters/shared/postgres.rb, line 679
def lock(mode, opts={})
  if block_given? # perform locking inside a transaction and yield to block
    @db.transaction(opts){lock(mode, opts); yield}
  else
    @db.execute(LOCK % [source_list(@opts[:from]), mode], opts) # lock without a transaction
  end
  nil
end
multi_insert_sql(columns, values) click to toggle source

For PostgreSQL version > 8.2, allow inserting multiple rows at once.

# File lib/sequel/adapters/shared/postgres.rb, line 689
def multi_insert_sql(columns, values)
  return super if server_version < 80200
  
  # postgresql 8.2 introduces support for multi-row insert
  [insert_sql(columns, LiteralString.new('VALUES ' + values.map {|r| literal(Array(r))}.join(COMMA_SEPARATOR)))]
end
supports_distinct_on?() click to toggle source

DISTINCT ON is a PostgreSQL extension

# File lib/sequel/adapters/shared/postgres.rb, line 697
def supports_distinct_on?
  true
end
supports_modifying_joins?() click to toggle source

PostgreSQL supports modifying joined datasets

# File lib/sequel/adapters/shared/postgres.rb, line 702
def supports_modifying_joins?
  true
end
supports_timestamp_timezones?() click to toggle source

PostgreSQL supports timezones in literal timestamps

# File lib/sequel/adapters/shared/postgres.rb, line 707
def supports_timestamp_timezones?
  true
end
supports_window_functions?() click to toggle source

PostgreSQL 8.4+ supports window functions

# File lib/sequel/adapters/shared/postgres.rb, line 712
def supports_window_functions?
  server_version >= 80400
end
window(name, opts) click to toggle source

Return a clone of the dataset with an addition named window that can be referenced in window functions.

# File lib/sequel/adapters/shared/postgres.rb, line 717
def window(name, opts)
  clone(:window=>(@opts[:window]||[]) + [[name, SQL::Window.new(opts)]])
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.