-- ============================================================================ -- Realtime publication — 데스크톱 CloudSyncService가 구독하는 테이블 추가 -- ============================================================================ -- -- 증상: 로그인 직후 Realtime 채널이 TIMED_OUT으로 떨어짐. -- 원인: initial_schema.sql은 publication에 `transcripts`만 추가했다. -- 데스크톱이 구독하는 meetings / history / dictionary는 누락되어 -- postgres_changes 스트림이 물리적으로 흐를 수 없었다. -- 범위: 웹/모바일도 같은 구독을 쓰므로 후속 클라이언트들도 자동 수혜. -- -- ALTER PUBLICATION ADD TABLE은 IF NOT EXISTS를 지원하지 않으므로 -- pg_publication_tables 카탈로그를 조회해서 conditional 추가한다. -- ============================================================================ DO $$ DECLARE t text; BEGIN FOR t IN SELECT unnest(ARRAY[ 'meetings', 'meeting_memos', 'meeting_documents', 'history', 'dictionary' ]) LOOP IF NOT EXISTS ( SELECT 1 FROM pg_publication_tables WHERE pubname = 'supabase_realtime' AND schemaname = 'public' AND tablename = t ) THEN EXECUTE format( 'ALTER PUBLICATION supabase_realtime ADD TABLE public.%I', t ); END IF; END LOOP; END $$;