Go to file
David Rowley c399248b3b 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:27:11 +13:00
config Remove AIX support 2024-02-28 15:17:23 +04:00
contrib Fix deparsing of Consts in postgres_fdw ORDER BY 2024-03-11 12:27:11 +13:00
doc Catalog changes preparing for builtin collation provider. 2024-03-09 14:48:18 -08:00
src Combine headerscheck and cpluspluscheck scripts 2024-03-10 07:56:17 +01:00
.cirrus.star Remove duplicate words in docs and code comments. 2023-10-09 09:18:47 +05:30
.cirrus.tasks.yml ci: Add test coverage of different pg_upgrade modes 2024-02-19 09:31:23 +01:00
.cirrus.yml ci: Make compute resources for CI configurable 2023-08-23 15:15:28 -07:00
.dir-locals.el Make Emacs perl-mode indent more like perltidy. 2019-01-13 11:32:31 -08:00
.editorconfig Add .editorconfig 2019-12-18 09:13:13 +01:00
.git-blame-ignore-revs Add a few recent commits to .git-blame-ignore-revs. 2024-03-05 14:15:06 -06:00
.gitattributes Remove non-existing file from .gitattributes 2024-02-16 11:39:09 +01:00
.gitignore Update top-level .gitignore. 2022-12-04 15:23:00 -05:00
COPYRIGHT Update copyright for 2024 2024-01-03 20:49:05 -05:00
GNUmakefile.in Combine headerscheck and cpluspluscheck scripts 2024-03-10 07:56:17 +01:00
HISTORY Canonicalize some URLs 2020-02-10 20:47:50 +01:00
Makefile Remove AIX support 2024-02-28 15:17:23 +04:00
README.md Convert README to Markdown. 2024-02-28 14:53:52 -06:00
aclocal.m4 autoconf: Move export_dynamic determination to configure 2022-12-06 18:55:28 -08:00
configure Add --copy-file-range option to pg_upgrade. 2024-03-06 12:01:01 +13:00
configure.ac Add --copy-file-range option to pg_upgrade. 2024-03-06 12:01:01 +13:00
meson.build Add --copy-file-range option to pg_upgrade. 2024-03-06 12:01:01 +13:00
meson_options.txt Add backend support for injection points 2024-01-22 10:15:50 +09:00

README.md

PostgreSQL Database Management System

This directory contains the source code distribution of the PostgreSQL database management system.

PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. This distribution also contains C language bindings.

Copyright and license information can be found in the file COPYRIGHT.

General documentation about this version of PostgreSQL can be found at: https://www.postgresql.org/docs/devel/
In particular, information about building PostgreSQL from the source code can be found at: https://www.postgresql.org/docs/devel/installation.html

The latest version of this software, and related software, may be obtained at https://www.postgresql.org/download/. For more information look at our web site located at https://www.postgresql.org/.