-- The reservation_slots view was created with security_invoker=true, which means -- it evaluates RLS as the calling user. After removing the broad select policy, -- other members see 0 rows. Switch to security_definer so the view runs as the -- owner (bypassing RLS), while still exposing only the safe columns. drop view if exists public.reservation_slots; create view public.reservation_slots with (security_invoker = false) as select id, boat_id, start_time, end_time, status from public.reservations; grant select on public.reservation_slots to authenticated;