module MultiTenant::MigrationExtensions
Public Instance Methods
citus_version()
click to toggle source
# File lib/activerecord-multi-tenant/migrations.rb, line 30 def citus_version execute("SELECT extversion FROM pg_extension WHERE extname = 'citus'").getvalue(0,0).try(:split, '-').try(:first) rescue ArgumentError => e raise unless e.message == "invalid tuple number 0" end
create_distributed_table(table_name, partition_key)
click to toggle source
# File lib/activerecord-multi-tenant/migrations.rb, line 3 def create_distributed_table(table_name, partition_key) return unless citus_version.present? execute "SELECT create_distributed_table($$#{table_name}$$, $$#{partition_key}$$)" end
create_reference_table(table_name)
click to toggle source
# File lib/activerecord-multi-tenant/migrations.rb, line 8 def create_reference_table(table_name) return unless citus_version.present? execute "SELECT create_reference_table($$#{table_name}$$)" end
enable_extension_on_all_nodes(extension)
click to toggle source
# File lib/activerecord-multi-tenant/migrations.rb, line 26 def enable_extension_on_all_nodes(extension) execute_on_all_nodes "CREATE EXTENSION IF NOT EXISTS \"#{extension}\"" end
execute_on_all_nodes(sql)
click to toggle source
# File lib/activerecord-multi-tenant/migrations.rb, line 13 def execute_on_all_nodes(sql) execute sql case citus_version when '6.0' execute "SELECT citus_run_on_all_workers($$#{sql}$$)" # initial citus_tools.sql with different names when nil # Do nothing, this is regular Postgres else # 6.1 and newer execute "SELECT run_command_on_workers($$#{sql}$$)" end end