1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-05 07:21:24 +03:00

Account for collation when coercing the output of a SQL function.

Commit 913bbd88d overlooked that the result of coerce_to_target_type
might need collation fixups.  Per report from Andreas Joseph Krogh.

Discussion: https://postgr.es/m/VisenaEmail.72.37d08ec2b8cb8fb5.17179940cd3@tc7-visena
This commit is contained in:
Tom Lane
2020-04-14 17:30:13 -04:00
parent 0516f94d18
commit 2d59643dbc
3 changed files with 25 additions and 1 deletions

View File

@ -24,6 +24,7 @@
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "parser/parse_coerce.h"
#include "parser/parse_collate.h"
#include "parser/parse_func.h"
#include "storage/proc.h"
#include "tcop/utility.h"
@ -1989,6 +1990,7 @@ coerce_fn_result_column(TargetEntry *src_tle,
-1);
if (cast_result == NULL)
return false;
assign_expr_collations(NULL, cast_result);
src_tle->expr = (Expr *) cast_result;
/* Make a Var referencing the possibly-modified TLE */
new_tle_expr = (Expr *) makeVarFromTargetEntry(1, src_tle);
@ -2007,6 +2009,7 @@ coerce_fn_result_column(TargetEntry *src_tle,
-1);
if (cast_result == NULL)
return false;
assign_expr_collations(NULL, cast_result);
/* Did the coercion actually do anything? */
if (cast_result != (Node *) var)
*upper_tlist_nontrivial = true;