Commit cd5afd81 authored by Peter Eisentraut's avatar Peter Eisentraut

Add collation assignment to CALL statement

Otherwise functions that require collation information will not have
it if they are called in arguments to a CALL statement.
Reported-by: default avatarJean-Marc Voillequin <Jean-Marc.Voillequin@moodys.com>
Reviewed-by: default avatarTom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/1EC8157EB499BF459A516ADCF135ADCE39FFAC54%40LON-WGMSX712.ad.moodys.net
parent 793c736d
......@@ -2636,6 +2636,8 @@ transformCallStmt(ParseState *pstate, CallStmt *stmt)
true,
stmt->funccall->location);
assign_expr_collations(pstate, node);
stmt->funcexpr = castNode(FuncExpr, node);
result = makeNode(Query);
......
......@@ -139,6 +139,13 @@ AS $$
SELECT NULL::int;
$$;
CALL ptest6(1, 2);
-- collation assignment
CREATE PROCEDURE ptest7(a text, b text)
LANGUAGE SQL
AS $$
SELECT a = b;
$$;
CALL ptest7(least('a', 'b'), 'a');
-- various error cases
CALL version(); -- error: not a procedure
ERROR: version() is not a procedure
......
......@@ -101,6 +101,17 @@ $$;
CALL ptest6(1, 2);
-- collation assignment
CREATE PROCEDURE ptest7(a text, b text)
LANGUAGE SQL
AS $$
SELECT a = b;
$$;
CALL ptest7(least('a', 'b'), 'a');
-- various error cases
CALL version(); -- error: not a procedure
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment