Add some extra indexes to the changesets table.
This commit is contained in:
parent
f23e982e72
commit
869da5e228
2 changed files with 28 additions and 0 deletions
13
db/migrate/028_add_more_changeset_indexes.rb
Normal file
13
db/migrate/028_add_more_changeset_indexes.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
class AddMoreChangesetIndexes < ActiveRecord::Migration
|
||||
def self.up
|
||||
add_index "changesets", ["created_at"], :name => "changesets_created_at_idx"
|
||||
add_index "changesets", ["closed_at"], :name => "changesets_closed_at_idx"
|
||||
add_index "changesets", ["min_lat","max_lat","min_lon","max_lon"], :name => "changesets_bbox_idx", :method => "GIST"
|
||||
end
|
||||
|
||||
def self.down
|
||||
remove_index "changesets", :name => "changesets_bbox_idx"
|
||||
remove_index "changesets", :name => "changesets_closed_at_idx"
|
||||
remove_index "changesets", :name => "changesets_created_at_idx"
|
||||
end
|
||||
end
|
|
@ -158,6 +158,21 @@ module ActiveRecord
|
|||
def interval_constant(interval)
|
||||
"'#{interval}'::interval"
|
||||
end
|
||||
|
||||
def add_index(table_name, column_name, options = {})
|
||||
column_names = Array(column_name)
|
||||
index_name = index_name(table_name, :column => column_names)
|
||||
|
||||
if Hash === options # legacy support, since this param was a string
|
||||
index_type = options[:unique] ? "UNIQUE" : ""
|
||||
index_name = options[:name] || index_name
|
||||
index_method = options[:method] || "BTREE"
|
||||
else
|
||||
index_type = options
|
||||
end
|
||||
quoted_column_names = column_names.map { |e| quote_column_name(e) }.join(", ")
|
||||
execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)} USING #{index_method} (#{quoted_column_names})"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue