diff --git a/supabase/migrations/20251001164722_9e3a781d-aff3-421c-b6eb-6afdf4a254b1.sql b/supabase/migrations/20251001164722_9e3a781d-aff3-421c-b6eb-6afdf4a254b1.sql new file mode 100644 index 00000000..22b98ea1 --- /dev/null +++ b/supabase/migrations/20251001164722_9e3a781d-aff3-421c-b6eb-6afdf4a254b1.sql @@ -0,0 +1,46 @@ +-- Fix the email_change column NULL handling issue in auth.users +-- This addresses the "Scan error on column index 8, name email_change: converting NULL to string is unsupported" error + +-- First, create a function to safely update any existing NULL email_change values to empty strings +CREATE OR REPLACE FUNCTION public.fix_auth_email_change_nulls() +RETURNS void +LANGUAGE plpgsql +SECURITY DEFINER +SET search_path TO 'auth', 'public' +AS $$ +BEGIN + -- Update any NULL email_change values to empty strings + UPDATE auth.users + SET email_change = '' + WHERE email_change IS NULL; +END; +$$; + +-- Execute the fix for existing data +SELECT public.fix_auth_email_change_nulls(); + +-- Drop the temporary function +DROP FUNCTION public.fix_auth_email_change_nulls(); + +-- Update the cancel_user_email_change function to use empty strings instead of NULL +CREATE OR REPLACE FUNCTION public.cancel_user_email_change(_user_id uuid) +RETURNS boolean +LANGUAGE plpgsql +SECURITY DEFINER +SET search_path TO 'auth', 'public' +AS $$ +BEGIN + -- Clear all email change related fields in auth.users + -- Using empty strings instead of NULL to avoid Supabase Auth scanner issues + UPDATE auth.users + SET + email_change = '', + email_change_sent_at = NULL, + email_change_confirm_status = 0, + email_change_token_current = '', + email_change_token_new = '' + WHERE id = _user_id; + + RETURN FOUND; +END; +$$; \ No newline at end of file