ALTER TABLE comment ADD COLUMN parent_id integer; -- Constraints and index ALTER TABLE comment ADD CONSTRAINT comment_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES comment (id) ON UPDATE CASCADE ON DELETE CASCADE; CREATE INDEX idx_comment_parent ON comment (parent_id); -- Update the parent_id column -- subpath(subpath(0, -1), -1) gets the immediate parent but it fails null checks UPDATE comment SET parent_id = cast(ltree2text (nullif (subpath (nullif (subpath (path, 0, -1), '0'), -1), '0')) AS INTEGER); ALTER TABLE comment DROP COLUMN path; ALTER TABLE comment_aggregates DROP COLUMN child_count; DROP EXTENSION ltree; -- Add back in the read column ALTER TABLE comment ADD COLUMN read boolean DEFAULT FALSE NOT NULL; UPDATE comment c SET read = cr.read FROM comment_reply cr WHERE cr.comment_id = c.id; CREATE VIEW comment_alias_1 AS SELECT * FROM comment; DROP TABLE comment_reply;