The new v_feed-rewrite migration collided with the existing 006_user_pin_lockout (versions must be unique). Verified against a fresh Postgres: all migrations 001–010 now apply cleanly on startup. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
956 B
SQL
27 lines
956 B
SQL
-- H6: replace v_feed's double LEFT JOIN + COUNT(DISTINCT) (which materializes a
|
||
-- likes×comments Cartesian per upload before de-duping) with correlated scalar
|
||
-- subqueries. Each count now uses its own index (idx_like_upload /
|
||
-- idx_comment_upload) and there is no GROUP BY. The output columns are
|
||
-- unchanged, so every consumer keeps working.
|
||
CREATE OR REPLACE VIEW v_feed AS
|
||
SELECT
|
||
u.id,
|
||
u.event_id,
|
||
u.user_id,
|
||
usr.display_name AS uploader_name,
|
||
usr.is_banned,
|
||
usr.uploads_hidden,
|
||
u.preview_path,
|
||
u.thumbnail_path,
|
||
u.mime_type,
|
||
u.caption,
|
||
u.created_at,
|
||
(SELECT COUNT(*) FROM "like" l
|
||
WHERE l.upload_id = u.id) AS like_count,
|
||
(SELECT COUNT(*) FROM comment c
|
||
WHERE c.upload_id = u.id AND c.deleted_at IS NULL) AS comment_count
|
||
FROM upload u
|
||
JOIN "user" usr ON u.user_id = usr.id
|
||
WHERE u.deleted_at IS NULL
|
||
AND usr.uploads_hidden = FALSE;
|