Class: ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
- Defined in:
- lib/postgres_sequence_support.rb
Instance Method Summary collapse
- #create_sequence(sequence, start = nil) ⇒ Object
- #current_in_sequence(sequence) ⇒ Object
- #drop_sequence(sequence) ⇒ Object
-
#next_in_sequence(sequence) ⇒ Object
Returns the next value in sequence.
- #sequence_exists?(sequence) ⇒ Boolean
- #set_sequence(sequence, value, value_used = true) ⇒ Object
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) = '' << " 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)} #{}" 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
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 |