postgresql/src/test
Tom Lane 6ee3261e9b Fix confusion about the return rowtype of SQL-language procedures.
There is a very ancient hack in check_sql_fn_retval that allows a
single SELECT targetlist entry of composite type to be taken as
supplying all the output columns of a function returning composite.
(This is grotty and fundamentally ambiguous, but it's really hard
to do nested composite-returning functions without it.)

As far as I know, that doesn't cause any problems in ordinary
functions.  It's disastrous for procedures however.  All procedures
that have any output parameters are labeled with prorettype RECORD,
and the CALL code expects it will get back a record with one column
per output parameter, regardless of whether any of those parameters
is composite.  Doing something else leads to an assertion failure
or core dump.

This is simple enough to fix: we just need to not apply that rule
when considering procedures.  However, that requires adding another
argument to check_sql_fn_retval, which at least in principle might be
getting called by external callers.  Therefore, in the back branches
convert check_sql_fn_retval into an ABI-preserving wrapper around a
new function check_sql_fn_retval_ext.

Per report from Yahor Yuzefovich.  This has been broken since we
implemented procedures, so back-patch to all supported branches.

Discussion: https://postgr.es/m/CABz5gWHSjj2df6uG0NRiDhZ_Uz=Y8t0FJP-_SVSsRsnrQT76Gg@mail.gmail.com
2024-03-12 18:16:25 -04:00
..
authentication Update copyright for 2024 2024-01-03 20:49:05 -05:00
examples Update copyright for 2024 2024-01-03 20:49:05 -05:00
icu Update copyright for 2024 2024-01-03 20:49:05 -05:00
isolation Use printf's %m format instead of strerror(errno) in more places 2024-03-12 10:02:54 +09:00
kerberos Update copyright for 2024 2024-01-03 20:49:05 -05:00
ldap Update copyright for 2024 2024-01-03 20:49:05 -05:00
locale Update copyright for 2024 2024-01-03 20:49:05 -05:00
mb
modules libpq: Add encrypted and non-blocking query cancellation routines 2024-03-12 17:32:25 +01:00
perl Simplify and merge unwanted-module drop logic in AdjustUpgrade.pm. 2024-03-09 16:20:44 -05:00
recovery Keep replication slot statistics on invalidation 2024-03-12 14:22:31 +09:00
regress Fix confusion about the return rowtype of SQL-language procedures. 2024-03-12 18:16:25 -04:00
ssl Fix documentation comments for test CA config files 2024-02-28 22:57:00 +01:00
subscription Fix the intermittent buildfarm failures in 031_column_list. 2024-02-22 12:06:44 +05:30
Makefile Refactor PG_TEST_EXTRA logic in autoconf build 2022-09-20 11:24:16 -07:00
README Remove the option to build thread_test.c outside configure. 2020-10-21 12:08:48 -04:00
meson.build Update copyright for 2024 2024-01-03 20:49:05 -05:00

README

PostgreSQL tests
================

This directory contains a variety of test infrastructure as well as some of the
tests in PostgreSQL. Not all tests are here -- in particular, there are more in
individual contrib/ modules and in src/bin.

Not all these tests get run by "make check". Check src/test/Makefile to see
which tests get run automatically.

authentication/
  Tests for authentication (but see also below)

examples/
  Demonstration programs for libpq that double as regression tests via
  "make check"

isolation/
  Tests for concurrent behavior at the SQL level

kerberos/
  Tests for Kerberos/GSSAPI authentication and encryption

ldap/
  Tests for LDAP-based authentication

locale/
  Sanity checks for locale data, encodings, etc

mb/
  Tests for multibyte encoding (UTF-8) support

modules/
  Extensions used only or mainly for test purposes, generally not suitable
  for installing in production databases

perl/
  Infrastructure for Perl-based TAP tests

recovery/
  Test suite for recovery and replication

regress/
  PostgreSQL's main regression test suite, pg_regress

ssl/
  Tests to exercise and verify SSL certificate handling

subscription/
  Tests for logical replication