ему надо если параметр имеет значение NULL, то оставить значение поля
SET test = COALESCE(:test, test)
. Ну или как у тебя, IFNULL (не люблю эту функцию - и не стандарт, и всё равно маппится на COALESCE).сбегать в базу, чтобы ничего не сделать - это говнокод.
Для удаления использую запрос из документации.
как изменить запрос
В PostgreSQL нет понятия покрывающих индексов.
В PostgreSQL есть частичные индексы