если программный - то при чём тут "Rebuild в биосе"? Биос о программном рейде, конечно, ничего не знает и не его это дело, что там ОС дискам командует делать.
Единая точка отказа - это автоматика failover базы как таковая. Там где такое есть - число аварий возрастает, а не уменьшается. Не забудьте учесть хоть как-нибудь в планах риски дополнительных аварий по причине именно добавленного autofailover. А так же сопутствующей возросшей сложности администрирования. Я предупредил.
кратковременное нажатие кнопки обрабатывает операционная система. Туда и вопрос, какую логику настроено применять. Вполне может быть выбрано "ничего не делать"
долгое нажатие (более 4 секунд) обрабатывает материнка и даёт сигнал блоку питания прервать подачу питания. Любое прерывание питания в неожиданный для операционной системы момент - риск для сохранности данных на всех накопителях этой системы. В общем чревато незапланированными приключениями.
прежде чем ремонтировать и менять железо - проверьте, а не софтовая ли это вообще проблема - загрузитесь с какого-нибудь livecd или memtest86. Потому что это не такая уж исключительная история, когда именно винда вдруг решает что память ей не нужна.
case не нужен вообще здесь. Зачем убирать null из массива, если их туда можно не добавлять?
Именно этим filter(where ) синтаксис и занимается для произвольных агрегирующих функций - фильтр, какие из значений нужно передавать агрегирующей функции.
array_agg(attr.name) filter(where тут ваше условие вместо when)
Несомненно. Прямо эталонный образец бесконечной рекурсии триггера.
Смотрите по порядку:
after update on contact вызывается триггер, этот триггер делает UPDATE contact - есть хоть одна причина, почему этот update в теле триггера не вызовет этот же самый триггер? Нет, таких причин нет. Триггер будет вызван второй раз для нового update в этой таблице, этот вызов триггера спровоцирует ещё один update, раз был update - значит вызываем триггер. И так далее без какого-либо условия выхода из рекурсии.