diff --git a/postgresql/migrations/000008_one_record_per_channel.down.sql b/postgresql/migrations/000008_one_record_per_channel.down.sql new file mode 100644 index 0000000..4ba53f6 --- /dev/null +++ b/postgresql/migrations/000008_one_record_per_channel.down.sql @@ -0,0 +1,21 @@ +ALTER INDEX public.channels_nodeid_idx RENAME TO channels_new_nodeid_idx; +ALTER INDEX public.channels_channel_point_pkey RENAME TO channels_new_channel_point_pkey +ALTER TABLE public.channels RENAME TO channels_new; + +CREATE TABLE public.channels ( + chanid int8 NOT NULL, + channel_point varchar NULL, + nodeid bytea NULL, + last_update timestamp NULL, + CONSTRAINT chanid_pkey PRIMARY KEY (chanid) +); +CREATE INDEX channels_nodeid_idx ON public.channels USING btree (nodeid); + +INSERT INTO public.channels +SELECT initial_chanid chanid, channel_point, nodeid, last_update FROM channels_new; + +INSERT INTO public.channels +SELECT confirmed_chanid chanid, channel_point, nodeid, last_update FROM channels_new + WHERE confirmed_chanid IS NOT NULL AND confirmed_chanid <> initial_chanid; + +DROP TABLE channels_new; diff --git a/postgresql/migrations/000008_one_record_per_channel.up.sql b/postgresql/migrations/000008_one_record_per_channel.up.sql new file mode 100644 index 0000000..2261a23 --- /dev/null +++ b/postgresql/migrations/000008_one_record_per_channel.up.sql @@ -0,0 +1,22 @@ +ALTER INDEX public.channels_nodeid_idx RENAME TO channels_old_nodeid_idx; +ALTER INDEX public.chanid_pkey RENAME TO channels_old_chanid_pkey; +ALTER TABLE public.channels RENAME TO channels_old; + +CREATE TABLE public.channels ( + initial_chanid int8 NOT NULL, + confirmed_chanid int8 NULL, + channel_point varchar NOT NULL, + nodeid bytea NOT NULL, + last_update timestamp NULL, + CONSTRAINT channels_channel_point_pkey PRIMARY KEY (channel_point) +); +CREATE INDEX channels_nodeid_idx ON public.channels USING btree (nodeid); + +INSERT INTO public.channels +SELECT + min(chanid) initial_chanid, + CASE WHEN (max(chanid) >> 40) < (3 << 17) THEN NULL ELSE max(chanid) END confirmed_chanid, + channel_point, nodeid, max(last_update) last_update +FROM channels_old GROUP BY channel_point, nodeid; + +DROP TABLE public.channels_old;