Class: ActiveRecord::ConnectionAdapters::PostgreSQLAdapter

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

Instance Method Summary collapse

Instance Method Details

#create_sequence(sequence, start = nil) ⇒ Object



36
37
38
39
40
# File 'lib/postgres_sequence_support.rb', line 36

def create_sequence(sequence, start = nil)
  options = ''
  options << " START #{quote(start)}" if start # Set start value (ie: value returned by next_in_sequence on next call)
  execute "CREATE SEQUENCE #{quote_table_name(sequence)} #{options}" unless sequence_exists?(sequence)
end

#current_in_sequence(sequence) ⇒ Object



28
29
30
# File 'lib/postgres_sequence_support.rb', line 28

def current_in_sequence(sequence)
  select_value("SELECT currval('#{PGconn.quote_ident(sequence)}')").to_i
end

#drop_sequence(sequence) ⇒ Object



42
43
44
# File 'lib/postgres_sequence_support.rb', line 42

def drop_sequence(sequence)
  execute "DROP SEQUENCE IF EXISTS #{quote_table_name(sequence)}"
end

#next_in_sequence(sequence) ⇒ Object

Returns the next value in sequence.



24
25
26
# File 'lib/postgres_sequence_support.rb', line 24

def next_in_sequence(sequence)
  select_value("SELECT nextval('#{PGconn.quote_ident(sequence)}')").to_i
end

#sequence_exists?(sequence) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/postgres_sequence_support.rb', line 46

def sequence_exists?(sequence)
  query("SELECT relname FROM pg_class WHERE relkind='S'").flatten.include?(sequence)
end

#set_sequence(sequence, value, value_used = true) ⇒ Object



32
33
34
# File 'lib/postgres_sequence_support.rb', line 32

def set_sequence(sequence, value, value_used = true)
  select_value("SELECT setval('#{PGconn.quote_ident(sequence)}', #{quote(value)}, #{quote(value_used)})")
end