towerops/priv/repo/migrations/20260304234205_increase_timescaledb_decompression_limit.exs
Graham McIntire 212f9089e0
fix: use current_database() in TimescaleDB migration
Previous version used hardcoded 'towerops_dev' which doesn't exist in production.
Now uses current_database() to get the actual database name at runtime.

This fixes the crash: ERROR 3D000 (invalid_catalog_name) database "towerops_dev" does not exist
2026-03-05 07:54:20 -06:00

27 lines
845 B
Elixir

defmodule Towerops.Repo.Migrations.IncreaseTimescaledbDecompressionLimit do
use Ecto.Migration
def up do
# Increase TimescaleDB tuple decompression limit to unlimited (0)
# This is needed for large interface sync operations during device discovery
# that can touch 100k+ compressed tuples in a single transaction
#
# Use current_database() to get the actual database name at runtime
execute """
DO $$
BEGIN
EXECUTE 'ALTER DATABASE ' || current_database() || ' SET timescaledb.max_tuples_decompressed_per_dml_transaction = 0';
END $$;
"""
end
def down do
# Restore default limit of 100,000
execute """
DO $$
BEGIN
EXECUTE 'ALTER DATABASE ' || current_database() || ' SET timescaledb.max_tuples_decompressed_per_dml_transaction = 100000';
END $$;
"""
end
end