Wenn man mehrere Spalten in per SELECT updaten will, muss man in Postgres eine spezielle Syntax verwenden. Die Standard Update Syntax funktioniert (noch) nicht mehr hier unter 'Compatibility'.
Das nachfolgende Beispiel zeigt die Möglichkeiten für das gewünschte Update auf mehrere Spalten:
CREATE TEMP TABLE test (id int, a varchar, b varchar);
INSERT INTO test VALUES (1, 'a', 'b');
UPDATE test SET (a, b) = ('c', 'd') WHERE id = 1; -- << OK
UPDATE test SET a = (SELECT 'c'), b = (SELECT 'd') WHERE id = 1; -- << OK
UPDATE test SET (a, b) = (SELECT 'c', 'd') WHERE id = 1; -- << FAIL
UPDATE test SET a = sub.a, b = sub.b FROM (SELECT 'c' AS a, 'd' AS b) sub WHERE id = 1; -- << OK