This covers a case that was missed in the previous patch
that disallowed SET ROLE and
SET SESSION AUTHORIZATION inside
security-definer functions. (See CVE-2007-6600)

Make LOAD of an already-loaded
loadable module into a no-op (Tom)

Formerly, LOAD would attempt to
unload and re-load the module, but this is unsafe and not
all that useful.

Make window function PARTITION
BY and ORDER BY items always
be interpreted as simple expressions (Tom)

In 8.4.0 these lists were parsed following the rules
used for top-level GROUP BY and
ORDER BY lists. But this was not
correct per the SQL standard, and it led to possible
circularity.

Fix several errors in planning of semi-joins (Tom)

These led to wrong query results in some cases where
IN or EXISTS was used together with another
join.

Fix handling of whole-row references to subqueries that
are within an outer join (Tom)

An example is SELECT COUNT(ss.*)
FROM ... LEFT JOIN (SELECT ...) ss ON .... Here,
ss.* would be treated as
ROW(NULL,NULL,...) for
null-extended join rows, which is not the same as a simple
NULL. Now it is treated as a simple NULL.

Fix Windows shared-memory allocation code (Tsutomu
Yamada, Magnus)

This bug led to the often-reported "could not reattach to shared memory" error
message.

Fix locale handling with plperl (Heikki)

This bug could cause the server's locale setting to
change when a plperl function is called, leading to data
corruption.