Re: BUG #18463: Possible bug in stored procedures with polymorphic OUT parameters
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Dmitry Dolgov <9erthalion6@gmail.com>
Cc: drewk@cockroachlabs.com, pgsql-bugs@lists.postgresql.org
Date: 2024-05-14T19:35:37Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix failure with SQL-procedure polymorphic output arguments in v12.
- d88dcdf0fa5b 14.13 landed
- bb331af4aeb7 16.4 landed
- 9de0ff91a501 13.16 landed
- 751598263690 17.0 landed
- 5fe43d41db59 15.8 landed
- 4208f44c9469 12.20 landed
-
Fix handling of polymorphic output arguments for procedures.
- f535f350c1f9 17.0 landed
- e85f641b2b52 13.16 landed
- c40e78d239a8 15.8 landed
- 8e0e99972ad9 16.4 landed
- 70ffb27b2349 12.20 landed
- 525bd1620e9b 14.13 landed
Attachments
- fix-polymorphic-procedure-outputs.patch (text/x-diff) patch
I wrote: > It looks like we'd have to teach resolve_polymorphic_tupdesc how > to get argument types out of a CallExpr, so that does not lead > to an entirely trivial fix, but it's surely possible. > Maybe it'd be better to not try to use build_function_result_tupdesc_t > here at all. It looks to me like the output argument list in the > CallStmt is already fully polymorphically resolved, so we could just > build a tupdesc based on that and probably save a lot of work. Some experimentation showed that we need to return the correct output column names in this tupdesc, so continuing to use build_function_result_tupdesc_t seems like the easiest path for that. However, stmt->outargs does hold nodes of the correct resolved data types, so overwriting the atttypid's from that produces a nicely small patch, as attached. regards, tom lane