openstreetmap-website/db/migrate/006_tile_nodes.rb
Andy Allan 479c1575e1 Remove tile_for_point SQL functions
This removes both the pl/pgsql version and the shared library version
of the `tile_for_point` SQL function. This function was only used in some
old migrations, and is not required for production usage.

Removing this function simplifies the installation and configuration for
new developers.

These SQL functions are separate from the `tile_for_point` ruby/C function
which is part of the quad_tile gem. This function is still used when
creating and updating database records.

Fixes #3110.
2022-12-07 17:22:50 +00:00

121 lines
4.3 KiB
Ruby

class TileNodes < ActiveRecord::Migration[4.2]
class Node < ApplicationRecord
self.table_name = "current_nodes"
end
class OldNode < ApplicationRecord
self.table_name = "nodes"
end
def self.upgrade_table(from_table, to_table, model)
execute <<-SQL.squish
INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile)
SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000),
user_id, visible, tags, timestamp, 0
FROM #{from_table}
SQL
model.all.each(&:save!)
end
def self.downgrade_table(from_table, to_table)
execute <<-SQL.squish
INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp)
SELECT id, latitude / 10000000, longitude / 10000000,
user_id, visible, tags, timestamp
FROM #{from_table}
SQL
end
def self.up
remove_index "current_nodes", :name => "current_nodes_timestamp_idx"
rename_table "current_nodes", "current_nodes_v5"
create_table "current_nodes", :id => false do |t|
t.column "id", :bigserial, :primary_key => true, :null => false
t.column "latitude", :integer, :null => false
t.column "longitude", :integer, :null => false
t.column "user_id", :bigint, :null => false
t.column "visible", :boolean, :null => false
t.column "tags", :text, :default => "", :null => false
t.column "timestamp", :datetime, :null => false
t.column "tile", :integer, :null => false
end
add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
add_index "current_nodes", ["tile"], :name => "current_nodes_tile_idx"
change_column "current_nodes", "tile", :bigint
upgrade_table "current_nodes_v5", "current_nodes", Node
drop_table "current_nodes_v5"
remove_index "nodes", :name => "nodes_uid_idx"
remove_index "nodes", :name => "nodes_timestamp_idx"
rename_table "nodes", "nodes_v5"
create_table "nodes", :id => false do |t|
t.column "id", :bigint, :null => false
t.column "latitude", :integer, :null => false
t.column "longitude", :integer, :null => false
t.column "user_id", :bigint, :null => false
t.column "visible", :boolean, :null => false
t.column "tags", :text, :default => "", :null => false
t.column "timestamp", :datetime, :null => false
t.column "tile", :integer, :null => false
end
add_index "nodes", ["id"], :name => "nodes_uid_idx"
add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
add_index "nodes", ["tile"], :name => "nodes_tile_idx"
change_column "nodes", "tile", :bigint
upgrade_table "nodes_v5", "nodes", OldNode
drop_table "nodes_v5"
end
def self.down
rename_table "current_nodes", "current_nodes_v6"
create_table "current_nodes", :id => false do |t|
t.column "id", :bigserial, :primary_key => true, :null => false
t.column "latitude", :float, :limit => 53, :null => false
t.column "longitude", :float, :limit => 53, :null => false
t.column "user_id", :bigint, :null => false
t.column "visible", :boolean, :null => false
t.column "tags", :text, :default => "", :null => false
t.column "timestamp", :datetime, :null => false
end
add_index "current_nodes", %w[latitude longitude], :name => "current_nodes_lat_lon_idx"
add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
downgrade_table "current_nodes_v6", "current_nodes"
drop_table "current_nodes_v6"
rename_table "nodes", "nodes_v6"
create_table "nodes", :id => false do |t|
t.column "id", :bigint, :null => false
t.column "latitude", :float, :limit => 53, :null => false
t.column "longitude", :float, :limit => 53, :null => false
t.column "user_id", :bigint, :null => false
t.column "visible", :boolean, :null => false
t.column "tags", :text, :default => "", :null => false
t.column "timestamp", :datetime, :null => false
end
add_index "nodes", ["id"], :name => "nodes_uid_idx"
add_index "nodes", %w[latitude longitude], :name => "nodes_latlon_idx"
add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
downgrade_table "nodes_v6", "nodes"
drop_table "nodes_v6"
end
end