Revert changes to old migrations

This commit is contained in:
Dull Bananas 2024-11-18 17:17:15 -07:00
parent 8b72238686
commit 7fcaca0cb1
36 changed files with 92 additions and 875 deletions

View file

@ -1,16 +1,16 @@
DROP VIEW IF EXISTS mod_remove_post_view; DROP VIEW mod_remove_post_view;
DROP VIEW IF EXISTS mod_lock_post_view; DROP VIEW mod_lock_post_view;
DROP VIEW IF EXISTS mod_remove_comment_view; DROP VIEW mod_remove_comment_view;
DROP VIEW IF EXISTS mod_remove_community_view; DROP VIEW mod_remove_community_view;
DROP VIEW IF EXISTS mod_ban_from_community_view; DROP VIEW mod_ban_from_community_view;
DROP VIEW IF EXISTS mod_ban_view; DROP VIEW mod_ban_view;
DROP VIEW IF EXISTS mod_add_community_view; DROP VIEW mod_add_community_view;
DROP VIEW IF EXISTS mod_add_view; DROP VIEW mod_add_view;

View file

@ -1,39 +1,39 @@
-- functions and triggers -- functions and triggers
DROP TRIGGER IF EXISTS refresh_user ON user_; DROP TRIGGER refresh_user ON user_;
DROP FUNCTION IF EXISTS refresh_user (); DROP FUNCTION refresh_user ();
DROP TRIGGER IF EXISTS refresh_post ON post; DROP TRIGGER refresh_post ON post;
DROP FUNCTION IF EXISTS refresh_post (); DROP FUNCTION refresh_post ();
DROP TRIGGER IF EXISTS refresh_post_like ON post_like; DROP TRIGGER refresh_post_like ON post_like;
DROP FUNCTION IF EXISTS refresh_post_like (); DROP FUNCTION refresh_post_like ();
DROP TRIGGER IF EXISTS refresh_community ON community; DROP TRIGGER refresh_community ON community;
DROP FUNCTION IF EXISTS refresh_community (); DROP FUNCTION refresh_community ();
DROP TRIGGER IF EXISTS refresh_community_follower ON community_follower; DROP TRIGGER refresh_community_follower ON community_follower;
DROP FUNCTION IF EXISTS refresh_community_follower (); DROP FUNCTION refresh_community_follower ();
DROP TRIGGER IF EXISTS refresh_community_user_ban ON community_user_ban; DROP TRIGGER refresh_community_user_ban ON community_user_ban;
DROP FUNCTION IF EXISTS refresh_community_user_ban (); DROP FUNCTION refresh_community_user_ban ();
DROP TRIGGER IF EXISTS refresh_comment ON comment; DROP TRIGGER refresh_comment ON comment;
DROP FUNCTION IF EXISTS refresh_comment (); DROP FUNCTION refresh_comment ();
DROP TRIGGER IF EXISTS refresh_comment_like ON comment_like; DROP TRIGGER refresh_comment_like ON comment_like;
DROP FUNCTION IF EXISTS refresh_comment_like (); DROP FUNCTION refresh_comment_like ();
-- post -- post
-- Recreate the view -- Recreate the view
DROP VIEW IF EXISTS post_view; DROP VIEW post_view;
CREATE VIEW post_view AS CREATE VIEW post_view AS
with all_post AS ( with all_post AS (
@ -167,16 +167,16 @@ FROM
FROM FROM
all_post ap; all_post ap;
DROP VIEW IF EXISTS post_mview; DROP VIEW post_mview;
DROP MATERIALIZED VIEW post_aggregates_mview; DROP MATERIALIZED VIEW post_aggregates_mview;
DROP VIEW IF EXISTS post_aggregates_view; DROP VIEW post_aggregates_view;
-- user -- user
DROP MATERIALIZED VIEW user_mview; DROP MATERIALIZED VIEW user_mview;
DROP VIEW IF EXISTS user_view; DROP VIEW user_view;
CREATE VIEW user_view AS CREATE VIEW user_view AS
SELECT SELECT
@ -226,13 +226,13 @@ FROM
user_ u; user_ u;
-- community -- community
DROP VIEW IF EXISTS community_mview; DROP VIEW community_mview;
DROP MATERIALIZED VIEW community_aggregates_mview; DROP MATERIALIZED VIEW community_aggregates_mview;
DROP VIEW IF EXISTS community_view; DROP VIEW community_view;
DROP VIEW IF EXISTS community_aggregates_view; DROP VIEW community_aggregates_view;
CREATE VIEW community_view AS CREATE VIEW community_view AS
with all_community AS ( with all_community AS (
@ -314,17 +314,17 @@ FROM
all_community ac; all_community ac;
-- reply and comment view -- reply and comment view
DROP VIEW IF EXISTS reply_view; DROP VIEW reply_view;
DROP VIEW IF EXISTS user_mention_view; DROP VIEW user_mention_view;
DROP VIEW IF EXISTS comment_view; DROP VIEW comment_view;
DROP VIEW IF EXISTS comment_mview; DROP VIEW comment_mview;
DROP MATERIALIZED VIEW comment_aggregates_mview; DROP MATERIALIZED VIEW comment_aggregates_mview;
DROP VIEW IF EXISTS comment_aggregates_view; DROP VIEW comment_aggregates_view;
CREATE VIEW comment_view AS CREATE VIEW comment_view AS
with all_comment AS ( with all_comment AS (

View file

@ -1,19 +1,19 @@
-- Drop the dependent views -- Drop the dependent views
DROP VIEW IF EXISTS post_view; DROP VIEW post_view;
DROP VIEW IF EXISTS post_mview; DROP VIEW post_mview;
DROP MATERIALIZED VIEW IF EXISTS post_aggregates_mview; DROP MATERIALIZED VIEW post_aggregates_mview;
DROP VIEW IF EXISTS post_aggregates_view; DROP VIEW post_aggregates_view;
DROP VIEW IF EXISTS mod_remove_post_view; DROP VIEW mod_remove_post_view;
DROP VIEW IF EXISTS mod_sticky_post_view; DROP VIEW mod_sticky_post_view;
DROP VIEW IF EXISTS mod_lock_post_view; DROP VIEW mod_lock_post_view;
DROP VIEW IF EXISTS mod_remove_comment_view; DROP VIEW mod_remove_comment_view;
ALTER TABLE post ALTER TABLE post
ALTER COLUMN name TYPE varchar(100); ALTER COLUMN name TYPE varchar(100);

View file

@ -1,11 +1,5 @@
DROP TABLE activity; DROP TABLE activity;
DROP VIEW community_view, community_mview;
DROP MATERIALIZED VIEW community_aggregates_mview;
DROP VIEW community_aggregates_view;
ALTER TABLE user_ ALTER TABLE user_
DROP COLUMN actor_id, DROP COLUMN actor_id,
DROP COLUMN private_key, DROP COLUMN private_key,
@ -21,126 +15,3 @@ ALTER TABLE community
DROP COLUMN local, DROP COLUMN local,
DROP COLUMN last_refreshed_at; DROP COLUMN last_refreshed_at;
-- Views are the same as before, except `*` does not reference the dropped columns
CREATE VIEW community_aggregates_view AS
SELECT
c.*,
(
SELECT
name
FROM
user_ u
WHERE
c.creator_id = u.id) AS creator_name,
(
SELECT
avatar
FROM
user_ u
WHERE
c.creator_id = u.id) AS creator_avatar,
(
SELECT
name
FROM
category ct
WHERE
c.category_id = ct.id) AS category_name,
(
SELECT
count(*)
FROM
community_follower cf
WHERE
cf.community_id = c.id) AS number_of_subscribers,
(
SELECT
count(*)
FROM
post p
WHERE
p.community_id = c.id) AS number_of_posts,
(
SELECT
count(*)
FROM
comment co,
post p
WHERE
c.id = p.community_id
AND p.id = co.post_id) AS number_of_comments,
hot_rank ((
SELECT
count(*)
FROM community_follower cf
WHERE
cf.community_id = c.id), c.published) AS hot_rank
FROM
community c;
CREATE MATERIALIZED VIEW community_aggregates_mview AS
SELECT
*
FROM
community_aggregates_view;
CREATE UNIQUE INDEX idx_community_aggregates_mview_id ON community_aggregates_mview (id);
CREATE VIEW community_view AS
with all_community AS (
SELECT
ca.*
FROM
community_aggregates_view ca
)
SELECT
ac.*,
u.id AS user_id,
(
SELECT
cf.id::boolean
FROM
community_follower cf
WHERE
u.id = cf.user_id
AND ac.id = cf.community_id) AS subscribed
FROM
user_ u
CROSS JOIN all_community ac
UNION ALL
SELECT
ac.*,
NULL AS user_id,
NULL AS subscribed
FROM
all_community ac;
CREATE VIEW community_mview AS
with all_community AS (
SELECT
ca.*
FROM
community_aggregates_mview ca
)
SELECT
ac.*,
u.id AS user_id,
(
SELECT
cf.id::boolean
FROM
community_follower cf
WHERE
u.id = cf.user_id
AND ac.id = cf.community_id) AS subscribed
FROM
user_ u
CROSS JOIN all_community ac
UNION ALL
SELECT
ac.*,
NULL AS user_id,
NULL AS subscribed
FROM
all_community ac;

View file

@ -1,15 +1,3 @@
DROP VIEW post_mview;
DROP MATERIALIZED VIEW post_aggregates_mview;
DROP VIEW post_view, post_aggregates_view;
DROP VIEW user_mention_view, comment_view, user_mention_mview, reply_view, comment_mview;
DROP MATERIALIZED VIEW comment_aggregates_mview;
DROP VIEW comment_aggregates_view;
ALTER TABLE post ALTER TABLE post
DROP COLUMN ap_id, DROP COLUMN ap_id,
DROP COLUMN local; DROP COLUMN local;
@ -18,526 +6,3 @@ ALTER TABLE comment
DROP COLUMN ap_id, DROP COLUMN ap_id,
DROP COLUMN local; DROP COLUMN local;
-- Views are the same as before, except `*` does not reference the dropped columns
CREATE VIEW post_aggregates_view AS
SELECT
p.*,
(
SELECT
u.banned
FROM
user_ u
WHERE
p.creator_id = u.id) AS banned,
(
SELECT
cb.id::bool
FROM
community_user_ban cb
WHERE
p.creator_id = cb.user_id
AND p.community_id = cb.community_id) AS banned_from_community,
(
SELECT
name
FROM
user_
WHERE
p.creator_id = user_.id) AS creator_name,
(
SELECT
avatar
FROM
user_
WHERE
p.creator_id = user_.id) AS creator_avatar,
(
SELECT
name
FROM
community
WHERE
p.community_id = community.id) AS community_name,
(
SELECT
removed
FROM
community c
WHERE
p.community_id = c.id) AS community_removed,
(
SELECT
deleted
FROM
community c
WHERE
p.community_id = c.id) AS community_deleted,
(
SELECT
nsfw
FROM
community c
WHERE
p.community_id = c.id) AS community_nsfw,
(
SELECT
count(*)
FROM
comment
WHERE
comment.post_id = p.id) AS number_of_comments,
coalesce(sum(pl.score), 0) AS score,
count(
CASE WHEN pl.score = 1 THEN
1
ELSE
NULL
END) AS upvotes,
count(
CASE WHEN pl.score = - 1 THEN
1
ELSE
NULL
END) AS downvotes,
hot_rank (coalesce(sum(pl.score), 0), (
CASE WHEN (p.published < ('now'::timestamp - '1 month'::interval)) THEN
p.published -- Prevents necro-bumps
ELSE
greatest (c.recent_comment_time, p.published)
END)) AS hot_rank,
(
CASE WHEN (p.published < ('now'::timestamp - '1 month'::interval)) THEN
p.published -- Prevents necro-bumps
ELSE
greatest (c.recent_comment_time, p.published)
END) AS newest_activity_time
FROM
post p
LEFT JOIN post_like pl ON p.id = pl.post_id
LEFT JOIN (
SELECT
post_id,
max(published) AS recent_comment_time
FROM
comment
GROUP BY
1) c ON p.id = c.post_id
GROUP BY
p.id,
c.recent_comment_time;
CREATE VIEW post_view AS
with all_post AS (
SELECT
pa.*
FROM
post_aggregates_view pa
)
SELECT
ap.*,
u.id AS user_id,
coalesce(pl.score, 0) AS my_vote,
(
SELECT
cf.id::bool
FROM
community_follower cf
WHERE
u.id = cf.user_id
AND cf.community_id = ap.community_id) AS subscribed,
(
SELECT
pr.id::bool
FROM
post_read pr
WHERE
u.id = pr.user_id
AND pr.post_id = ap.id) AS read,
(
SELECT
ps.id::bool
FROM
post_saved ps
WHERE
u.id = ps.user_id
AND ps.post_id = ap.id) AS saved
FROM
user_ u
CROSS JOIN all_post ap
LEFT JOIN post_like pl ON u.id = pl.user_id
AND ap.id = pl.post_id
UNION ALL
SELECT
ap.*,
NULL AS user_id,
NULL AS my_vote,
NULL AS subscribed,
NULL AS read,
NULL AS saved
FROM
all_post ap;
CREATE MATERIALIZED VIEW post_aggregates_mview AS
SELECT
*
FROM
post_aggregates_view;
CREATE UNIQUE INDEX idx_post_aggregates_mview_id ON post_aggregates_mview (id);
CREATE VIEW post_mview AS
with all_post AS (
SELECT
pa.*
FROM
post_aggregates_mview pa
)
SELECT
ap.*,
u.id AS user_id,
coalesce(pl.score, 0) AS my_vote,
(
SELECT
cf.id::bool
FROM
community_follower cf
WHERE
u.id = cf.user_id
AND cf.community_id = ap.community_id) AS subscribed,
(
SELECT
pr.id::bool
FROM
post_read pr
WHERE
u.id = pr.user_id
AND pr.post_id = ap.id) AS read,
(
SELECT
ps.id::bool
FROM
post_saved ps
WHERE
u.id = ps.user_id
AND ps.post_id = ap.id) AS saved
FROM
user_ u
CROSS JOIN all_post ap
LEFT JOIN post_like pl ON u.id = pl.user_id
AND ap.id = pl.post_id
UNION ALL
SELECT
ap.*,
NULL AS user_id,
NULL AS my_vote,
NULL AS subscribed,
NULL AS read,
NULL AS saved
FROM
all_post ap;
CREATE VIEW comment_aggregates_view AS
SELECT
c.*,
(
SELECT
community_id
FROM
post p
WHERE
p.id = c.post_id), (
SELECT
co.name
FROM
post p,
community co
WHERE
p.id = c.post_id
AND p.community_id = co.id) AS community_name,
(
SELECT
u.banned
FROM
user_ u
WHERE
c.creator_id = u.id) AS banned,
(
SELECT
cb.id::bool
FROM
community_user_ban cb,
post p
WHERE
c.creator_id = cb.user_id
AND p.id = c.post_id
AND p.community_id = cb.community_id) AS banned_from_community,
(
SELECT
name
FROM
user_
WHERE
c.creator_id = user_.id) AS creator_name,
(
SELECT
avatar
FROM
user_
WHERE
c.creator_id = user_.id) AS creator_avatar,
coalesce(sum(cl.score), 0) AS score,
count(
CASE WHEN cl.score = 1 THEN
1
ELSE
NULL
END) AS upvotes,
count(
CASE WHEN cl.score = - 1 THEN
1
ELSE
NULL
END) AS downvotes,
hot_rank (coalesce(sum(cl.score), 0), c.published) AS hot_rank
FROM
comment c
LEFT JOIN comment_like cl ON c.id = cl.comment_id
GROUP BY
c.id;
CREATE MATERIALIZED VIEW comment_aggregates_mview AS
SELECT
*
FROM
comment_aggregates_view;
CREATE UNIQUE INDEX idx_comment_aggregates_mview_id ON comment_aggregates_mview (id);
CREATE VIEW comment_mview AS
with all_comment AS (
SELECT
ca.*
FROM
comment_aggregates_mview ca
)
SELECT
ac.*,
u.id AS user_id,
coalesce(cl.score, 0) AS my_vote,
(
SELECT
cf.id::boolean
FROM
community_follower cf
WHERE
u.id = cf.user_id
AND ac.community_id = cf.community_id) AS subscribed,
(
SELECT
cs.id::bool
FROM
comment_saved cs
WHERE
u.id = cs.user_id
AND cs.comment_id = ac.id) AS saved
FROM
user_ u
CROSS JOIN all_comment ac
LEFT JOIN comment_like cl ON u.id = cl.user_id
AND ac.id = cl.comment_id
UNION ALL
SELECT
ac.*,
NULL AS user_id,
NULL AS my_vote,
NULL AS subscribed,
NULL AS saved
FROM
all_comment ac;
CREATE VIEW reply_view AS
with closereply AS (
SELECT
c2.id,
c2.creator_id AS sender_id,
c.creator_id AS recipient_id
FROM
comment c
INNER JOIN comment c2 ON c.id = c2.parent_id
WHERE
c2.creator_id != c.creator_id
-- Do union where post is null
UNION
SELECT
c.id,
c.creator_id AS sender_id,
p.creator_id AS recipient_id
FROM
comment c,
post p
WHERE
c.post_id = p.id
AND c.parent_id IS NULL
AND c.creator_id != p.creator_id
)
SELECT
cv.*,
closereply.recipient_id
FROM
comment_mview cv,
closereply
WHERE
closereply.id = cv.id;
CREATE VIEW user_mention_mview AS
with all_comment AS (
SELECT
ca.*
FROM
comment_aggregates_mview ca
)
SELECT
ac.id,
um.id AS user_mention_id,
ac.creator_id,
ac.post_id,
ac.parent_id,
ac.content,
ac.removed,
um.read,
ac.published,
ac.updated,
ac.deleted,
ac.community_id,
ac.community_name,
ac.banned,
ac.banned_from_community,
ac.creator_name,
ac.creator_avatar,
ac.score,
ac.upvotes,
ac.downvotes,
ac.hot_rank,
u.id AS user_id,
coalesce(cl.score, 0) AS my_vote,
(
SELECT
cs.id::bool
FROM
comment_saved cs
WHERE
u.id = cs.user_id
AND cs.comment_id = ac.id) AS saved,
um.recipient_id
FROM
user_ u
CROSS JOIN all_comment ac
LEFT JOIN comment_like cl ON u.id = cl.user_id
AND ac.id = cl.comment_id
LEFT JOIN user_mention um ON um.comment_id = ac.id
UNION ALL
SELECT
ac.id,
um.id AS user_mention_id,
ac.creator_id,
ac.post_id,
ac.parent_id,
ac.content,
ac.removed,
um.read,
ac.published,
ac.updated,
ac.deleted,
ac.community_id,
ac.community_name,
ac.banned,
ac.banned_from_community,
ac.creator_name,
ac.creator_avatar,
ac.score,
ac.upvotes,
ac.downvotes,
ac.hot_rank,
NULL AS user_id,
NULL AS my_vote,
NULL AS saved,
um.recipient_id
FROM
all_comment ac
LEFT JOIN user_mention um ON um.comment_id = ac.id;
CREATE VIEW comment_view AS
with all_comment AS (
SELECT
ca.*
FROM
comment_aggregates_view ca
)
SELECT
ac.*,
u.id AS user_id,
coalesce(cl.score, 0) AS my_vote,
(
SELECT
cf.id::boolean
FROM
community_follower cf
WHERE
u.id = cf.user_id
AND ac.community_id = cf.community_id) AS subscribed,
(
SELECT
cs.id::bool
FROM
comment_saved cs
WHERE
u.id = cs.user_id
AND cs.comment_id = ac.id) AS saved
FROM
user_ u
CROSS JOIN all_comment ac
LEFT JOIN comment_like cl ON u.id = cl.user_id
AND ac.id = cl.comment_id
UNION ALL
SELECT
ac.*,
NULL AS user_id,
NULL AS my_vote,
NULL AS subscribed,
NULL AS saved
FROM
all_comment ac;
CREATE VIEW user_mention_view AS
SELECT
c.id,
um.id AS user_mention_id,
c.creator_id,
c.post_id,
c.parent_id,
c.content,
c.removed,
um.read,
c.published,
c.updated,
c.deleted,
c.community_id,
c.community_name,
c.banned,
c.banned_from_community,
c.creator_name,
c.creator_avatar,
c.score,
c.upvotes,
c.downvotes,
c.hot_rank,
c.user_id,
c.my_vote,
c.saved,
um.recipient_id
FROM
user_mention um,
comment_view c
WHERE
um.comment_id = c.id;

View file

@ -5,8 +5,6 @@ ALTER TABLE user_
ADD COLUMN fedi_name varchar(40) NOT NULL DEFAULT 'http://fake.com'; ADD COLUMN fedi_name varchar(40) NOT NULL DEFAULT 'http://fake.com';
ALTER TABLE user_ ALTER TABLE user_
-- Default is only for existing rows
ALTER COLUMN fedi_name DROP DEFAULT,
ADD CONSTRAINT user__name_fedi_name_key UNIQUE (name, fedi_name); ADD CONSTRAINT user__name_fedi_name_key UNIQUE (name, fedi_name);
-- Community -- Community

View file

@ -57,7 +57,7 @@ BEGIN
END END
$$; $$;
DROP TRIGGER IF EXISTS refresh_user ON user_; DROP TRIGGER refresh_user ON user_;
CREATE TRIGGER refresh_user CREATE TRIGGER refresh_user
AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE ON user_ AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE ON user_
@ -125,7 +125,7 @@ FROM
CREATE UNIQUE INDEX idx_user_mview_id ON user_mview (id); CREATE UNIQUE INDEX idx_user_mview_id ON user_mview (id);
-- community -- community
DROP TRIGGER IF EXISTS refresh_community ON community; DROP TRIGGER refresh_community ON community;
CREATE TRIGGER refresh_community CREATE TRIGGER refresh_community
AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE ON community AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE ON community
@ -547,7 +547,7 @@ FROM
FROM FROM
all_post ap; all_post ap;
DROP TRIGGER IF EXISTS refresh_post ON post; DROP TRIGGER refresh_post ON post;
CREATE TRIGGER refresh_post CREATE TRIGGER refresh_post
AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE ON post AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE ON post

View file

@ -493,5 +493,3 @@ SELECT
FROM FROM
post_aggregates_fast pav; post_aggregates_fast pav;
CREATE INDEX idx_post_aggregates_fast_hot_rank_published ON post_aggregates_fast (hot_rank DESC, published DESC);

View file

@ -1,47 +1,47 @@
-- Drops first -- Drops first
DROP VIEW IF EXISTS site_view; DROP VIEW site_view;
DROP TABLE IF EXISTS user_fast; DROP TABLE user_fast;
DROP VIEW IF EXISTS user_view; DROP VIEW user_view;
DROP VIEW IF EXISTS post_fast_view; DROP VIEW post_fast_view;
DROP TABLE IF EXISTS post_aggregates_fast; DROP TABLE post_aggregates_fast;
DROP VIEW IF EXISTS post_view; DROP VIEW post_view;
DROP VIEW IF EXISTS post_aggregates_view; DROP VIEW post_aggregates_view;
DROP VIEW IF EXISTS community_moderator_view; DROP VIEW community_moderator_view;
DROP VIEW IF EXISTS community_follower_view; DROP VIEW community_follower_view;
DROP VIEW IF EXISTS community_user_ban_view; DROP VIEW community_user_ban_view;
DROP VIEW IF EXISTS community_view; DROP VIEW community_view;
DROP VIEW IF EXISTS community_aggregates_view; DROP VIEW community_aggregates_view;
DROP VIEW IF EXISTS community_fast_view; DROP VIEW community_fast_view;
DROP TABLE IF EXISTS community_aggregates_fast; DROP TABLE community_aggregates_fast;
DROP VIEW IF EXISTS private_message_view; DROP VIEW private_message_view;
DROP VIEW IF EXISTS user_mention_view; DROP VIEW user_mention_view;
DROP VIEW IF EXISTS reply_fast_view; DROP VIEW reply_fast_view;
DROP VIEW IF EXISTS comment_fast_view; DROP VIEW comment_fast_view;
DROP VIEW IF EXISTS comment_view; DROP VIEW comment_view;
DROP VIEW IF EXISTS user_mention_fast_view; DROP VIEW user_mention_fast_view;
DROP TABLE IF EXISTS comment_aggregates_fast; DROP TABLE comment_aggregates_fast;
DROP VIEW IF EXISTS comment_aggregates_view; DROP VIEW comment_aggregates_view;
ALTER TABLE site ALTER TABLE site
DROP COLUMN icon, DROP COLUMN icon,

View file

@ -1,11 +1,11 @@
-- Drop first -- Drop first
DROP VIEW IF EXISTS community_view; DROP VIEW community_view;
DROP VIEW IF EXISTS community_aggregates_view; DROP VIEW community_aggregates_view;
DROP VIEW IF EXISTS community_fast_view; DROP VIEW community_fast_view;
DROP TABLE IF EXISTS community_aggregates_fast; DROP TABLE community_aggregates_fast;
CREATE VIEW community_aggregates_view AS CREATE VIEW community_aggregates_view AS
SELECT SELECT

View file

@ -155,8 +155,7 @@ BEGIN
UPDATE UPDATE
post_aggregates_fast AS paf post_aggregates_fast AS paf
SET SET
hot_rank = pav.hot_rank, hot_rank = pav.hot_rank
hot_rank_active = pav.hot_rank_active
FROM FROM
post_aggregates_view AS pav post_aggregates_view AS pav
WHERE WHERE
@ -221,36 +220,14 @@ BEGIN
post_aggregates_view post_aggregates_view
WHERE WHERE
id = NEW.post_id; id = NEW.post_id;
-- Update the comment hot_ranks as of last week -- Force the hot rank as zero on week-older posts
UPDATE
comment_aggregates_fast AS caf
SET
hot_rank = cav.hot_rank,
hot_rank_active = cav.hot_rank_active
FROM
comment_aggregates_view AS cav
WHERE
caf.id = cav.id
AND (cav.published > ('now'::timestamp - '1 week'::interval));
-- Update the post ranks
UPDATE UPDATE
post_aggregates_fast AS paf post_aggregates_fast AS paf
SET SET
hot_rank = pav.hot_rank, hot_rank = 0
hot_rank_active = pav.hot_rank_active
FROM
post_aggregates_view AS pav
WHERE
paf.id = pav.id
AND (pav.published > ('now'::timestamp - '1 week'::interval));
-- Force the hot rank active as zero on 2 day-older posts (necro-bump)
UPDATE
post_aggregates_fast AS paf
SET
hot_rank_active = 0
WHERE WHERE
paf.id = NEW.post_id paf.id = NEW.post_id
AND (paf.published < ('now'::timestamp - '2 days'::interval)); AND (paf.published < ('now'::timestamp - '1 week'::interval));
-- Update community number of comments -- Update community number of comments
UPDATE UPDATE
community_aggregates_fast AS caf community_aggregates_fast AS caf

View file

@ -1,6 +1,6 @@
DROP VIEW IF EXISTS comment_report_view; DROP VIEW comment_report_view;
DROP VIEW IF EXISTS post_report_view; DROP VIEW post_report_view;
DROP TABLE comment_report; DROP TABLE comment_report;

View file

@ -1,5 +1,5 @@
ALTER TABLE activity ALTER TABLE activity
ADD COLUMN user_id INTEGER NOT NULL REFERENCES user_ (id) ON UPDATE CASCADE ON DELETE CASCADE; ADD COLUMN user_id INTEGER;
ALTER TABLE activity ALTER TABLE activity
DROP COLUMN sensitive; DROP COLUMN sensitive;

View file

@ -1,5 +1,3 @@
DROP VIEW user_alias_1, user_alias_2;
ALTER TABLE community ALTER TABLE community
DROP COLUMN followers_url; DROP COLUMN followers_url;
@ -15,16 +13,3 @@ ALTER TABLE user_
ALTER TABLE user_ ALTER TABLE user_
DROP COLUMN shared_inbox_url; DROP COLUMN shared_inbox_url;
-- Views are the same as before, except `*` does not reference the dropped columns
CREATE VIEW user_alias_1 AS
SELECT
*
FROM
user_;
CREATE VIEW user_alias_2 AS
SELECT
*
FROM
user_;

View file

@ -34,9 +34,3 @@ INSERT INTO category (name)
ALTER TABLE community ALTER TABLE community
ADD category_id int REFERENCES category ON UPDATE CASCADE ON DELETE CASCADE NOT NULL DEFAULT 1; ADD category_id int REFERENCES category ON UPDATE CASCADE ON DELETE CASCADE NOT NULL DEFAULT 1;
-- Default is only for existing rows
ALTER TABLE community
ALTER COLUMN category_id DROP DEFAULT;
CREATE INDEX idx_community_category ON community (category_id);

View file

@ -229,7 +229,7 @@ ALTER SEQUENCE person_id_seq
-- Add the columns back in -- Add the columns back in
ALTER TABLE user_ ALTER TABLE user_
ADD COLUMN password_encrypted text NOT NULL DEFAULT 'changeme', ADD COLUMN password_encrypted text NOT NULL DEFAULT 'changeme',
ADD COLUMN email text UNIQUE, ADD COLUMN email text,
ADD COLUMN admin boolean DEFAULT FALSE NOT NULL, ADD COLUMN admin boolean DEFAULT FALSE NOT NULL,
ADD COLUMN show_nsfw boolean DEFAULT FALSE NOT NULL, ADD COLUMN show_nsfw boolean DEFAULT FALSE NOT NULL,
ADD COLUMN theme character varying(20) DEFAULT 'darkly'::character varying NOT NULL, ADD COLUMN theme character varying(20) DEFAULT 'darkly'::character varying NOT NULL,
@ -238,11 +238,7 @@ ALTER TABLE user_
ADD COLUMN lang character varying(20) DEFAULT 'browser'::character varying NOT NULL, ADD COLUMN lang character varying(20) DEFAULT 'browser'::character varying NOT NULL,
ADD COLUMN show_avatars boolean DEFAULT TRUE NOT NULL, ADD COLUMN show_avatars boolean DEFAULT TRUE NOT NULL,
ADD COLUMN send_notifications_to_email boolean DEFAULT FALSE NOT NULL, ADD COLUMN send_notifications_to_email boolean DEFAULT FALSE NOT NULL,
ADD COLUMN matrix_user_id text UNIQUE; ADD COLUMN matrix_user_id text;
-- Default is only for existing rows
ALTER TABLE user_
ALTER COLUMN password_encrypted DROP DEFAULT;
-- Update the user_ table with the local_user data -- Update the user_ table with the local_user data
UPDATE UPDATE
@ -264,8 +260,6 @@ FROM
WHERE WHERE
lu.person_id = u.id; lu.person_id = u.id;
CREATE UNIQUE INDEX idx_user_email_lower ON user_ (lower(email));
CREATE VIEW user_alias_1 AS CREATE VIEW user_alias_1 AS
SELECT SELECT
* *

View file

@ -1,4 +1,2 @@
DROP TABLE secret; DROP TABLE secret;
DROP EXTENSION pgcrypto;

View file

@ -1,6 +1,6 @@
ALTER TABLE post ALTER TABLE post
DROP COLUMN embed_video_url; DROP COLUMN embed_url;
ALTER TABLE post ALTER TABLE post
ADD COLUMN embed_html text; ADD COLUMN embed_video_url text;

View file

@ -116,10 +116,6 @@ FROM
WHERE WHERE
c.id = ct.id; c.id = ct.id;
-- Without this, `DROP EXTENSION` in down.sql throws an object dependency error if up.sql and down.sql
-- are run in the same database connection
DROP TABLE comment_temp;
-- Update the child counts -- Update the child counts
UPDATE UPDATE
comment_aggregates ca comment_aggregates ca

View file

@ -6,7 +6,7 @@ ALTER TABLE site
ADD COLUMN community_creation_admin_only boolean DEFAULT FALSE NOT NULL, ADD COLUMN community_creation_admin_only boolean DEFAULT FALSE NOT NULL,
ADD COLUMN require_email_verification boolean DEFAULT FALSE NOT NULL, ADD COLUMN require_email_verification boolean DEFAULT FALSE NOT NULL,
ADD COLUMN require_application boolean DEFAULT TRUE NOT NULL, ADD COLUMN require_application boolean DEFAULT TRUE NOT NULL,
ADD COLUMN application_question text DEFAULT 'To verify that you are human, please explain why you want to create an account on this site'::text, ADD COLUMN application_question text DEFAULT 'to verify that you are human, please explain why you want to create an account on this site'::text,
ADD COLUMN private_instance boolean DEFAULT FALSE NOT NULL, ADD COLUMN private_instance boolean DEFAULT FALSE NOT NULL,
ADD COLUMN default_theme text DEFAULT 'browser'::text NOT NULL, ADD COLUMN default_theme text DEFAULT 'browser'::text NOT NULL,
ADD COLUMN default_post_listing_type text DEFAULT 'Local'::text NOT NULL, ADD COLUMN default_post_listing_type text DEFAULT 'Local'::text NOT NULL,

View file

@ -65,15 +65,3 @@ CREATE TRIGGER post_aggregates_stickied
WHEN (OLD.stickied IS DISTINCT FROM NEW.stickied) WHEN (OLD.stickied IS DISTINCT FROM NEW.stickied)
EXECUTE PROCEDURE post_aggregates_stickied (); EXECUTE PROCEDURE post_aggregates_stickied ();
CREATE INDEX idx_post_aggregates_stickied_newest_comment_time ON post_aggregates (stickied DESC, newest_comment_time DESC);
CREATE INDEX idx_post_aggregates_stickied_comments ON post_aggregates (stickied DESC, comments DESC);
CREATE INDEX idx_post_aggregates_stickied_hot ON post_aggregates (stickied DESC, hot_rank (score, published) DESC, published DESC);
CREATE INDEX idx_post_aggregates_stickied_active ON post_aggregates (stickied DESC, hot_rank (score, newest_comment_time_necro) DESC, newest_comment_time_necro DESC);
CREATE INDEX idx_post_aggregates_stickied_score ON post_aggregates (stickied DESC, score DESC);
CREATE INDEX idx_post_aggregates_stickied_published ON post_aggregates (stickied DESC, published DESC);

View file

@ -8,7 +8,7 @@ CREATE INDEX idx_post_aggregates_comments ON post_aggregates (comments DESC);
CREATE INDEX idx_post_aggregates_hot ON post_aggregates (hot_rank (score, published) DESC, published DESC); CREATE INDEX idx_post_aggregates_hot ON post_aggregates (hot_rank (score, published) DESC, published DESC);
CREATE INDEX idx_post_aggregates_active ON post_aggregates (hot_rank (score, newest_comment_time_necro) DESC, newest_comment_time_necro DESC); CREATE INDEX idx_post_aggregates_active ON post_aggregates (hot_rank (score, newest_comment_time) DESC, newest_comment_time DESC);
CREATE INDEX idx_post_aggregates_score ON post_aggregates (score DESC); CREATE INDEX idx_post_aggregates_score ON post_aggregates (score DESC);

View file

@ -1,3 +1,3 @@
ALTER TABLE local_site ALTER TABLE local_site
ADD COLUMN federation_debug boolean DEFAULT FALSE NOT NULL; ADD COLUMN federation_debug int DEFAULT 0;

View file

@ -117,7 +117,7 @@ ALTER TABLE local_site
ALTER COLUMN default_post_listing_type TYPE text; ALTER COLUMN default_post_listing_type TYPE text;
ALTER TABLE local_site ALTER TABLE local_site
ALTER COLUMN default_post_listing_type SET DEFAULT 'Local'; ALTER COLUMN default_post_listing_type SET DEFAULT 1;
-- Drop the types -- Drop the types
DROP TYPE listing_type_enum; DROP TYPE listing_type_enum;

View file

@ -1,6 +1,3 @@
ALTER TABLE local_user
ALTER default_sort_type DROP DEFAULT;
-- update the default sort type -- update the default sort type
UPDATE UPDATE
local_user local_user
@ -32,9 +29,6 @@ ALTER TABLE local_user
ALTER COLUMN default_sort_type TYPE sort_type_enum ALTER COLUMN default_sort_type TYPE sort_type_enum
USING default_sort_type::text::sort_type_enum; USING default_sort_type::text::sort_type_enum;
ALTER TABLE local_user
ALTER default_sort_type SET DEFAULT 'Active';
-- drop the old enum -- drop the old enum
DROP TYPE sort_type_enum__; DROP TYPE sort_type_enum__;

View file

@ -1,6 +1,3 @@
ALTER TABLE local_user
ALTER default_sort_type DROP DEFAULT;
-- update the default sort type -- update the default sort type
UPDATE UPDATE
local_user local_user
@ -35,9 +32,6 @@ ALTER TABLE local_user
ALTER COLUMN default_sort_type TYPE sort_type_enum ALTER COLUMN default_sort_type TYPE sort_type_enum
USING default_sort_type::text::sort_type_enum; USING default_sort_type::text::sort_type_enum;
ALTER TABLE local_user
ALTER default_sort_type SET DEFAULT 'Active';
-- drop the old enum -- drop the old enum
DROP TYPE sort_type_enum__; DROP TYPE sort_type_enum__;

View file

@ -26,5 +26,3 @@ DROP TABLE sent_activity;
DROP TABLE received_activity; DROP TABLE received_activity;
CREATE UNIQUE INDEX idx_activity_ap_id ON activity (ap_id);

View file

@ -6,5 +6,3 @@ DROP INDEX idx_person_trigram;
DROP INDEX idx_community_trigram; DROP INDEX idx_community_trigram;
DROP EXTENSION pg_trgm;

View file

@ -14,7 +14,3 @@ WHERE
ALTER TABLE local_user ALTER TABLE local_user
DROP COLUMN admin; DROP COLUMN admin;
CREATE INDEX idx_person_admin ON person (admin)
WHERE
admin;

View file

@ -328,9 +328,7 @@ ALTER TABLE captcha_answer
ALTER COLUMN published TYPE timestamp ALTER COLUMN published TYPE timestamp
USING published; USING published;
DROP FUNCTION hot_rank; CREATE OR REPLACE FUNCTION hot_rank (score numeric, published timestamp without time zone)
CREATE FUNCTION hot_rank (score numeric, published timestamp without time zone)
RETURNS integer RETURNS integer
AS $$ AS $$
DECLARE DECLARE

View file

@ -85,18 +85,3 @@ ALTER TABLE local_user
-- drop the old enum -- drop the old enum
DROP TYPE sort_type_enum__; DROP TYPE sort_type_enum__;
-- Remove int to float conversions that were automatically added to index filters
DROP INDEX idx_comment_aggregates_nonzero_hotrank, idx_community_aggregates_nonzero_hotrank, idx_post_aggregates_nonzero_hotrank;
CREATE INDEX idx_community_aggregates_nonzero_hotrank ON community_aggregates (published)
WHERE
hot_rank != 0;
CREATE INDEX idx_comment_aggregates_nonzero_hotrank ON comment_aggregates (published)
WHERE
hot_rank != 0;
CREATE INDEX idx_post_aggregates_nonzero_hotrank ON post_aggregates (published DESC)
WHERE
hot_rank != 0 OR hot_rank_active != 0;

View file

@ -1,5 +1,5 @@
DROP TABLE login_token; DROP TABLE login_token;
ALTER TABLE local_user ALTER TABLE local_user
ADD COLUMN validator_time timestamptz NOT NULL DEFAULT now(); ADD COLUMN validator_time timestamp NOT NULL DEFAULT now();

View file

@ -1,3 +1,3 @@
ALTER TABLE mod_remove_community ALTER TABLE mod_remove_community
ADD COLUMN expires timestamptz; ADD COLUMN expires timestamp;

View file

@ -148,7 +148,7 @@ ALTER TABLE post_read
ALTER TABLE received_activity ALTER TABLE received_activity
ADD UNIQUE (ap_id), ADD UNIQUE (ap_id),
DROP CONSTRAINT received_activity_pkey, DROP CONSTRAINT received_activity_pkey,
ADD COLUMN id bigserial PRIMARY KEY; ADD COLUMN id serial PRIMARY KEY;
CREATE INDEX idx_post_saved_person_id ON post_saved (person_id); CREATE INDEX idx_post_saved_person_id ON post_saved (person_id);

View file

@ -945,13 +945,6 @@ CREATE TRIGGER site_aggregates_comment_insert
WHEN ((new.local = TRUE)) WHEN ((new.local = TRUE))
EXECUTE FUNCTION site_aggregates_comment_insert (); EXECUTE FUNCTION site_aggregates_comment_insert ();
CREATE TRIGGER site_aggregates_community_delete
AFTER DELETE OR UPDATE OF removed,
deleted ON community
FOR EACH ROW
WHEN (OLD.local = TRUE)
EXECUTE PROCEDURE site_aggregates_community_delete ();
CREATE TRIGGER site_aggregates_community_insert CREATE TRIGGER site_aggregates_community_insert
AFTER INSERT OR UPDATE OF removed, AFTER INSERT OR UPDATE OF removed,
deleted ON community deleted ON community