شكرًا لك على تشغيل تلك الاستعلامات يا @Don - لقد أكدت السبب الجذري
تُظهر نتائجك بالضبط ما كنا نشتبه به
لديك مخطط backup يحتوي على نسخة من user_options
لا يزال هذا الجدول يحتوي على القيمة الافتراضية القديمة (column_default = false)
ظهر صف backupقبل صف public في نتائج الاستعلام
عندما أزالت عملية الترحيل القيمة الافتراضية من public.user_options، فإنها لم تمس backup.user_options. بعد ذلك، استعلمت mark_readonly من information_schema.columns دون التصفية حسب المخطط، وحصلت على صف backup أولاً (الذي كان لا يزال يحتوي على القيمة الافتراضية)، وفشلت
الحل هو ببساطة إضافة table_schema = 'public' إلى الاستعلام بحيث يتحقق فقط من المخطط الذي تعمل عليه عمليات الترحيل.