Add tests for PL/pgSQL SRFs

From: Paul Jungwirth <pj(at)illuminatedcomputing(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Add tests for PL/pgSQL SRFs
Date: 2024-08-30 20:28:58
Message-ID: f7407a63-9d11-4097-9a84-a4c3f16e6e55@illuminatedcomputing.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello Hackers,

While working on inlining non-SQL SRFs [1] I noticed we don't have tests for when a PL/pgSQL
function requires materialize mode but doesn't have a result TupleDesc. Here is a patch adding tests
for that, as well as some other conditions around SRF calls with `SETOF RECORD` vs `TABLE (...)`.
There aren't any code changes, just some new tests.

But IMO it might be better to change the code. This error message is a bit confusing:

+-- materialize mode requires a result TupleDesc:
+select array_to_set2(array['one', 'two']); -- fail
+ERROR: materialize mode required, but it is not allowed in this context
+CONTEXT: PL/pgSQL function array_to_set2(anyarray) line 3 at RETURN QUERY

Perhaps it would be better to give the same error as here?:

+select * from array_to_set2(array['one', 'two']); -- fail
+ERROR: a column definition list is required for functions returning "record"
+LINE 1: select * from array_to_set2(array['one', 'two']);

If folks agree, I can work on a patch for that. Otherwise, at least this patch documents the current
behavior and increases coverage.

[1] https://commitfest.postgresql.org/49/5083/

Yours,

--
Paul ~{:-)
pj(at)illuminatedcomputing(dot)com

Attachment Content-Type Size
v1-0001-Add-tests-for-PL-pgSQL-Set-Returning-Functions.patch text/x-patch 7.3 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Mark Murawski 2024-08-30 20:46:04 Re: pl/pgperl Patch for adding $_FN detail just like triggers have for $_TD
Previous Message Andrew Dunstan 2024-08-30 20:12:20 Re: pl/pgperl Patch for adding $_FN detail just like triggers have for $_TD