postgresql/contrib
Heikki Linnakangas cb5868cc1b Fix permission checks on constraint violation errors on partitions.
If a cross-partition UPDATE violates a constraint on the target partition,
and the columns in the new partition are in different physical order than
in the parent, the error message can reveal columns that the user does not
have SELECT permission on. A similar bug was fixed earlier in commit
804b6b6db4.

The cause of the bug is that the callers of the
ExecBuildSlotValueDescription() function got confused when constructing
the list of modified columns. If the tuple was routed from a parent, we
converted the tuple to the parent's format, but the list of modified
columns was grabbed directly from the child's RTE entry.

ExecUpdateLockMode() had a similar issue. That lead to confusion on which
columns are key columns, leading to wrong tuple lock being taken on tables
referenced by foreign keys, when a row is updated with INSERT ON CONFLICT
UPDATE. A new isolation test is added for that corner case.

With this patch, the ri_RangeTableIndex field is no longer set for
partitions that don't have an entry in the range table. Previously, it was
set to the RTE entry of the parent relation, but that was confusing.

NOTE: This modifies the ResultRelInfo struct, replacing the
ri_PartitionRoot field with ri_RootResultRelInfo. That's a bit risky to
backpatch, because it breaks any extensions accessing the field. The
change that ri_RangeTableIndex is not set for partitions could potentially
break extensions, too. The ResultRelInfos are visible to FDWs at least,
and this patch required small changes to postgres_fdw. Nevertheless, this
seem like the least bad option. I don't think these fields widely used in
extensions; I don't think there are FDWs out there that uses the FDW
"direct update" API, other than postgres_fdw. If there is, you will get a
compilation error, so hopefully it is caught quickly.

Backpatch to 11, where support for both cross-partition UPDATEs, and unique
indexes on partitioned tables, were added.

Reviewed-by: Amit Langote
Security: CVE-2021-3393
2021-02-08 11:01:55 +02:00
..
adminpack Read until EOF vice stat-reported size in read_binary_file 2020-07-04 06:29:03 -04:00
amcheck Restore lost amcheck TOAST test coverage. 2020-07-31 15:34:23 -07:00
auth_delay Update copyright for 2018 2018-01-02 23:30:12 -05:00
auto_explain Fix ancient memory leak in contrib/auto_explain. 2021-02-02 13:49:08 -05:00
bloom Fix failure with lock mode used for custom relation options 2019-09-25 10:08:30 +09:00
btree_gin Clean up warnings from -Wimplicit-fallthrough. 2018-05-01 19:35:08 -04:00
btree_gist Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
citext Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
cube Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
dblink Initialize dblink remoteConn struct in all cases 2020-05-28 13:45:02 -04:00
dict_int Ensure maxlen is at leat 1 in dict_int 2019-12-03 18:41:29 +01:00
dict_xsyn Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
earthdistance Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
file_fdw Ensure that foreign scans with lateral refs are planned correctly. 2019-02-07 13:11:13 -05:00
fuzzystrmatch Replace search.cpan.org with metacpan.org 2018-06-29 22:02:20 +09:00
hstore Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
hstore_plperl Still further rethinking of build changes for macOS Mojave. 2018-10-18 14:55:23 -04:00
hstore_plpython Fix broken ruleutils support for function TRANSFORM clauses. 2021-01-25 13:03:11 -05:00
intagg Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
intarray Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
isn Provide for contrib and pgxs modules to install include files. 2018-07-31 19:58:39 +01:00
jsonb_plperl Fix handling of "undef" in contrib/jsonb_plperl. 2019-08-04 14:05:35 -04:00
jsonb_plpython In jsonb_plpython.c, suppress warning message from gcc 10. 2020-01-30 18:26:15 -05:00
lo Fix bogus CALLED_AS_TRIGGER() defenses. 2020-04-03 11:24:56 -04:00
ltree Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
ltree_plpython Fix out-of-tree build for transform modules. 2018-09-16 19:13:59 +01:00
oid2name Report the true database name on connection errors 2021-01-26 16:42:13 -03:00
pageinspect Disable vacuum page skipping in selected test cases. 2021-01-20 11:49:29 -05:00
passwordcheck Fix handling of previous password hooks in passwordcheck 2019-08-01 09:38:02 +09:00
pg_buffercache Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
pg_freespacemap Default monitoring roles 2017-03-30 14:18:53 -04:00
pg_prewarm Fix race condition between shutdown and unstarted background workers. 2020-12-24 17:00:43 -05:00
pg_standby Avoid using potentially-under-aligned page buffers. 2018-09-01 15:27:13 -04:00
pg_stat_statements Revoke pg_stat_statements_reset() permissions 2018-09-25 09:56:41 +09:00
pg_trgm pg_trgm: fix crash in 2-item picksplit 2020-11-12 14:57:04 +00:00
pg_visibility Disable vacuum page skipping in selected test cases. 2021-01-20 11:49:29 -05:00
pgcrypto pgcrypto: Detect errors with EVP calls from OpenSSL 2020-12-08 15:22:48 +09:00
pgrowlocks Avoid holding a directory FD open across assorted SRF calls. 2020-03-16 21:05:54 -04:00
pgstattuple pgstatindex, pageinspect: handle partitioned indexes 2018-05-09 14:22:59 -03:00
postgres_fdw Fix permission checks on constraint violation errors on partitions. 2021-02-08 11:01:55 +02:00
seg Make contrib modules' installation scripts more secure. 2020-08-10 10:44:43 -04:00
sepgsql Fix cache reference leak in contrib/sepgsql. 2020-04-16 14:45:54 -04:00
spi Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-04-03 16:26:05 -04:00
sslinfo Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
start-scripts Remove contrib/start-scripts/osx/. 2017-11-17 12:53:20 -05:00
tablefunc Disallow null category in crosstab_hash 2019-12-23 13:33:42 -05:00
tcn Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
test_decoding Propagate ALTER TABLE ... SET STORAGE to indexes 2020-05-08 09:30:57 +02:00
tsm_system_rows Update copyright for 2018 2018-01-02 23:30:12 -05:00
tsm_system_time Update copyright for 2018 2018-01-02 23:30:12 -05:00
unaccent Make contrib/unaccent's unaccent() function work when not in search path. 2018-09-06 10:49:45 -04:00
uuid-ossp Update copyright for 2018 2018-01-02 23:30:12 -05:00
vacuumlo Report the true database name on connection errors 2021-01-26 16:42:13 -03:00
xml2 Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
contrib-global.mk Respect TEMP_CONFIG when pg_regress_check and friends are called 2016-02-27 12:28:21 -05:00
Makefile Transforms for jsonb to PL/Perl 2018-04-03 09:47:18 -04:00
README Rename 'gmake' to 'make' in docs and recommended commands 2014-02-12 17:29:19 -05:00

The PostgreSQL contrib tree
---------------------------

This subtree contains porting tools, analysis utilities, and plug-in
features that are not part of the core PostgreSQL system, mainly
because they address a limited audience or are too experimental to be
part of the main source tree.  This does not preclude their
usefulness.

User documentation for each module appears in the main SGML
documentation.

When building from the source distribution, these modules are not
built automatically, unless you build the "world" target.  You can
also build and install them all by running "make all" and "make
install" in this directory; or to build and install just one selected
module, do the same in that module's subdirectory.

Some directories supply new user-defined functions, operators, or
types.  To make use of one of these modules, after you have installed
the code you need to register the new SQL objects in the database
system by executing a CREATE EXTENSION command.  In a fresh database,
you can simply do

    CREATE EXTENSION module_name;

See the PostgreSQL documentation for more information about this
procedure.