diff --git a/priv/repo/migrations/20260304234205_increase_timescaledb_decompression_limit.exs b/priv/repo/migrations/20260304234205_increase_timescaledb_decompression_limit.exs new file mode 100644 index 00000000..306262f3 --- /dev/null +++ b/priv/repo/migrations/20260304234205_increase_timescaledb_decompression_limit.exs @@ -0,0 +1,20 @@ +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 + execute "ALTER DATABASE #{db_name()} SET timescaledb.max_tuples_decompressed_per_dml_transaction = 0" + end + + def down do + # Restore default limit of 100,000 + execute "ALTER DATABASE #{db_name()} SET timescaledb.max_tuples_decompressed_per_dml_transaction = 100000" + end + + defp db_name do + config = Application.get_env(:towerops, Towerops.Repo) + config[:database] || "towerops_dev" + end +end