postgresql/contrib
David Rowley 628c3f2e17 Fix deparsing of Consts in postgres_fdw ORDER BY
For UNION ALL queries where a union child query contained a foreign
table, if the targetlist of that query contained a constant, and the
top-level query performed an ORDER BY which contained the column for the
constant value, then postgres_fdw would find the EquivalenceMember with
the Const and then try to produce an ORDER BY containing that Const.

This caused problems with INT typed Consts as these could appear to be
requests to order by an ordinal column position rather than the constant
value.  This could lead to either an error such as:

ERROR:  ORDER BY position <int const> is not in select list

or worse, if the constant value is a valid column, then we could just
sort by the wrong column altogether.

Here we fix this issue by just not including these Consts in the ORDER
BY clause.

In passing, add a new section for testing ORDER BY in the postgres_fdw
tests and move two existing tests which were misplaced in the WHERE
clause testing section into it.

Reported-by: Michał Kłeczek
Reviewed-by: Ashutosh Bapat, Richard Guo
Bug: #18381
Discussion: https://postgr.es/m/0714C8B8-8D82-4ABB-9F8D-A0C3657E7B6E%40kleczek.org
Discussion: https://postgr.es/m/18381-137456acd168bf93%40postgresql.org
Backpatch-through: 12, oldest supported version
2024-03-11 12:28:40 +13:00
..
adminpack Rename Default Roles to Predefined Roles 2021-04-01 15:32:06 -04:00
amcheck amcheck: Distinguish interrupted page deletion from corruption. 2023-10-30 14:46:09 -07:00
auth_delay
auto_explain Fix EXPLAIN ANALYZE for async-capable nodes. 2021-05-12 14:00:00 +09:00
bloom Replace RelationOpenSmgr() with RelationGetSmgr(). 2022-11-17 16:54:30 -05:00
bool_plperl Fix broken ruleutils support for function TRANSFORM clauses. 2021-01-25 13:03:43 -05:00
btree_gin btree_gin: Fix calculation of leftmost interval value. 2023-10-29 11:14:34 +00:00
btree_gist Fix results of index-only scans on btree_gist char(N) indexes. 2022-01-08 14:54:39 -05:00
citext CREATE INDEX: use the original userid for more ACL checks. 2022-06-25 09:07:44 -07:00
cube Add binary I/O capability for cube datatype. 2021-03-06 12:04:05 -05:00
dblink postgres_fdw: Fix unexpected reporting of empty message. 2021-12-03 17:37:08 +09:00
dict_int
dict_xsyn
earthdistance
file_fdw Rename Default Roles to Predefined Roles 2021-04-01 15:32:06 -04:00
fuzzystrmatch Ensure Soundex difference() function handles empty input sanely. 2023-05-16 10:53:42 -04:00
hstore hstore: Tighten key/value parsing check for whitespaces 2023-06-12 09:14:14 +09:00
hstore_plperl
hstore_plpython In hstore_plpython, avoid crashing when return value isn't a mapping. 2023-04-27 11:55:06 -04:00
intagg
intarray Fix integer-overflow problem in intarray's g_int_decompress(). 2024-01-07 15:19:50 -05:00
isn
jsonb_plperl
jsonb_plpython
lo
ltree Validate ltree siglen GiST option to be int-aligned 2023-04-23 14:31:11 +03:00
ltree_plpython
oid2name Add a copyright notice to perl files lacking one. 2021-05-07 10:56:14 -04:00
old_snapshot Initial pgindent and pgperltidy run for v14. 2021-05-12 13:14:10 -04:00
pageinspect pageinspect: Fix failure with hash_bitmap_info() for partitioned indexes 2023-12-19 18:19:18 +09:00
passwordcheck Revert error handling improvements for cryptohashes 2022-01-14 11:25:39 +09:00
pg_buffercache
pg_freespacemap
pg_prewarm Replace RelationOpenSmgr() with RelationGetSmgr(). 2022-11-17 16:54:30 -05:00
pg_stat_statements pg_stat_statements: Fix second comment related to entry resets 2023-06-29 09:17:34 +09:00
pg_surgery
pg_trgm Fix misbehavior in contrib/pg_trgm with an unsatisfiable regex. 2023-03-11 12:15:41 -05:00
pg_visibility Replace RelationOpenSmgr() with RelationGetSmgr(). 2022-11-17 16:54:30 -05:00
pgcrypto pgcrypto: Fix check for buffer size 2024-01-30 11:15:46 +01:00
pgrowlocks Adjust the order of the prechecks in pgrowlocks() 2023-10-31 16:43:28 +13:00
pgstattuple pgstattuple: Fix failure with pgstathashindex() for partitioned indexes 2023-12-19 15:20:52 +09:00
postgres_fdw Fix deparsing of Consts in postgres_fdw ORDER BY 2024-03-11 12:28:40 +13:00
seg Replace last PushOverrideSearchPath() call with set_config_option(). 2023-05-08 06:14:11 -07:00
sepgsql Adjust sepgsql expected output for 681d9e462 et al. 2023-05-08 11:24:47 -04:00
spi
sslinfo
start-scripts
tablefunc
tcn
test_decoding Fix catalog lookup due to wrong snapshot for subtransactions during decoding. 2024-01-29 10:34:03 +05:30
tsm_system_rows
tsm_system_time
unaccent unaccent: Tweak value of PYTHON when building without Python support 2023-09-27 14:41:23 +09:00
uuid-ossp Reject bogus output from uuid_create(3). 2022-09-09 12:41:36 -04:00
vacuumlo Add a copyright notice to perl files lacking one. 2021-05-07 10:56:14 -04:00
xml2 Fix incompatibilities with libxml2 >= 2.12.0. 2024-01-29 12:06:08 -05:00
contrib-global.mk
Makefile Introduce --with-ssl={openssl} as a configure option 2021-02-01 19:19:44 +09:00
README

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.