3 class KeyConstraints < ActiveRecord::Migration
 
   6     add_primary_key :current_node_tags, [:id, :k]
 
   7     add_primary_key :current_way_tags, [:id, :k]
 
   8     add_primary_key :current_relation_tags, [:id, :k]
 
  10     add_primary_key :node_tags, [:id, :version, :k]
 
  11     add_primary_key :way_tags, [:id, :version, :k]
 
  12     add_primary_key :relation_tags, [:id, :version, :k]
 
  14     add_primary_key :nodes, [:id, :version]
 
  16     # Remove indexes superseded by primary keys
 
  17     remove_index :current_way_tags, :name => :current_way_tags_id_idx
 
  18     remove_index :current_relation_tags, :name => :current_relation_tags_id_idx
 
  20     remove_index :way_tags, :name => :way_tags_id_version_idx
 
  21     remove_index :relation_tags, :name => :relation_tags_id_version_idx
 
  23     remove_index :nodes, :name => :nodes_uid_idx
 
  25     # Foreign keys (between ways, way_tags, way_nodes, etc.)
 
  26     add_foreign_key :current_node_tags, [:id], :current_nodes
 
  27     add_foreign_key :node_tags, [:id, :version], :nodes
 
  29     add_foreign_key :current_way_tags, [:id], :current_ways
 
  30     add_foreign_key :current_way_nodes, [:id], :current_ways
 
  31     add_foreign_key :way_tags, [:id, :version], :ways
 
  32     add_foreign_key :way_nodes, [:id, :version], :ways
 
  34     add_foreign_key :current_relation_tags, [:id], :current_relations
 
  35     add_foreign_key :current_relation_members, [:id], :current_relations
 
  36     add_foreign_key :relation_tags, [:id, :version], :relations
 
  37     add_foreign_key :relation_members, [:id, :version], :relations
 
  39     # Foreign keys (between different types of primitives)
 
  40     add_foreign_key :current_way_nodes, [:node_id], :current_nodes, [:id]
 
  42     # FIXME: We don't have foreign keys for relation members since the id
 
  43     # might point to a different table depending on the `type' column.
 
  44     # We'd probably need different current_relation_member_nodes,
 
  45     # current_relation_member_ways and current_relation_member_relations
 
  46     # tables for this to work cleanly.
 
  50     raise IrreversibleMigration.new