mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Fix broken ruleutils support for function TRANSFORM clauses.
I chanced to notice that this dumped core due to a faulty Assert. To add insult to injury, the output has been misformatted since v11. Obviously we need some regression testing here. Discussion: https://postgr.es/m/d1cc628c-3953-4209-957b-29427acc38c8@www.fastmail.com
This commit is contained in:
@ -3126,13 +3126,14 @@ print_function_trftypes(StringInfo buf, HeapTuple proctup)
|
||||
{
|
||||
int i;
|
||||
|
||||
appendStringInfoString(buf, "\n TRANSFORM ");
|
||||
appendStringInfoString(buf, " TRANSFORM ");
|
||||
for (i = 0; i < ntypes; i++)
|
||||
{
|
||||
if (i != 0)
|
||||
appendStringInfoString(buf, ", ");
|
||||
appendStringInfo(buf, "FOR TYPE %s", format_type_be(trftypes[i]));
|
||||
}
|
||||
appendStringInfoChar(buf, '\n');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1357,7 +1357,9 @@ get_func_arg_info(HeapTuple procTup,
|
||||
/*
|
||||
* get_func_trftypes
|
||||
*
|
||||
* Returns the number of transformed types used by function.
|
||||
* Returns the number of transformed types used by the function.
|
||||
* If there are any, a palloc'd array of the type OIDs is returned
|
||||
* into *p_trftypes.
|
||||
*/
|
||||
int
|
||||
get_func_trftypes(HeapTuple procTup,
|
||||
@ -1386,7 +1388,6 @@ get_func_trftypes(HeapTuple procTup,
|
||||
ARR_HASNULL(arr) ||
|
||||
ARR_ELEMTYPE(arr) != OIDOID)
|
||||
elog(ERROR, "protrftypes is not a 1-D Oid array or it contains nulls");
|
||||
Assert(nelems >= ((Form_pg_proc) GETSTRUCT(procTup))->pronargs);
|
||||
*p_trftypes = (Oid *) palloc(nelems * sizeof(Oid));
|
||||
memcpy(*p_trftypes, ARR_DATA_PTR(arr),
|
||||
nelems * sizeof(Oid));
|
||||
|
Reference in New Issue
Block a user