diff --git a/lib/realtime/tenants/migrations.ex b/lib/realtime/tenants/migrations.ex index 7f4bb96fd..9f979a0c0 100644 --- a/lib/realtime/tenants/migrations.ex +++ b/lib/realtime/tenants/migrations.ex @@ -71,7 +71,8 @@ defmodule Realtime.Tenants.Migrations do RealtimeSendHandleExceptionsRemovePartitionCreation, RealtimeSendSetsConfig, RealtimeSubscriptionUnlogged, - RealtimeSubscriptionLogged + RealtimeSubscriptionLogged, + RemoveUnusedPublications } @migrations [ @@ -133,7 +134,8 @@ defmodule Realtime.Tenants.Migrations do {20_241_220_123_912, RealtimeSendHandleExceptionsRemovePartitionCreation}, {20_241_224_161_212, RealtimeSendSetsConfig}, {20_250_107_150_512, RealtimeSubscriptionUnlogged}, - {20_250_110_162_412, RealtimeSubscriptionLogged} + {20_250_110_162_412, RealtimeSubscriptionLogged}, + {20_250_123_174_212, RemoveUnusedPublications} ] defstruct [:tenant_external_id, :settings] diff --git a/lib/realtime/tenants/replication_connection.ex b/lib/realtime/tenants/replication_connection.ex index 99dbbfdab..a22583335 100644 --- a/lib/realtime/tenants/replication_connection.ex +++ b/lib/realtime/tenants/replication_connection.ex @@ -349,7 +349,7 @@ defmodule Realtime.Tenants.ReplicationConnection do end def publication_name(%__MODULE__{table: table, schema: schema}) do - "supabase_#{schema}_#{table}_publication_#{slot_suffix()}" + "supabase_#{schema}_#{table}_publication" end def replication_slot_name(%__MODULE__{table: table, schema: schema}) do diff --git a/lib/realtime/tenants/repo/migrations/20250123174212_remove_unused_publications.ex b/lib/realtime/tenants/repo/migrations/20250123174212_remove_unused_publications.ex new file mode 100644 index 000000000..76e7e9f07 --- /dev/null +++ b/lib/realtime/tenants/repo/migrations/20250123174212_remove_unused_publications.ex @@ -0,0 +1,20 @@ +defmodule Realtime.Tenants.Migrations.RemoveUnusedPublications do + @moduledoc false + use Ecto.Migration + + # Due to issues on PG Updates we can't use UNLOGGED tables due to the fact that Sequences on PG14 still need to be logged + def change do + execute(""" + DO $$ + DECLARE + r RECORD; + BEGIN + FOR r IN + SELECT pubname FROM pg_publication WHERE pubname LIKE 'realtime_messages%' or pubname LIKE 'supabase_realtime_messages%' + LOOP + EXECUTE 'DROP PUBLICATION IF EXISTS ' || quote_ident(r.pubname) || ';' ; + END LOOP; + END $$; + """) + end +end diff --git a/mix.exs b/mix.exs index b2cb9fa23..0da077e06 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Realtime.MixProject do def project do [ app: :realtime, - version: "2.34.6", + version: "2.34.7", elixir: "~> 1.17.3", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod,