È necessario utilizzare un predicato di indice per utilizzare un indice univoco parziale. Leggi nella documentazione:
indice_predicato
Utilizzato per consentire l'inferenza di indici univoci parziali. Tutti gli indici che soddisfano il predicato (che non devono essere effettivamente indici parziali) possono essere dedotti. Segue il formato CREATE INDEX.
In questo caso:
INSERT INTO key_value_pair (key, value, is_active) VALUES ('temperature','20', false)
ON CONFLICT (key) WHERE is_active
DO UPDATE
SET value = '33', is_active = true;