mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-24 18:55:04 +08:00
Make procedure OUT parameters work with JDBC
The JDBC driver sends OUT parameters with type void. This makes sense when calling a function, so that the parameters are ignored in ParseFuncOrColumn(). For a procedure call we want to treat them as unknown. Reviewed-by: Andrew Dunstan <andrew@dunslane.net> Discussion: https://www.postgresql.org/message-id/flat/d7e49540-ea92-b4e2-5fff-42036102f968%402ndquadrant.com
This commit is contained in:
parent
8fed2eadb8
commit
9213462c53
@ -163,6 +163,15 @@ variable_paramref_hook(ParseState *pstate, ParamRef *pref)
|
||||
if (*pptype == InvalidOid)
|
||||
*pptype = UNKNOWNOID;
|
||||
|
||||
/*
|
||||
* If the argument is of type void and it's procedure call, interpret it
|
||||
* as unknown. This allows the JDBC driver to not have to distinguish
|
||||
* function and procedure calls. See also another component of this hack
|
||||
* in ParseFuncOrColumn().
|
||||
*/
|
||||
if (*pptype == VOIDOID && pstate->p_expr_kind == EXPR_KIND_CALL_ARGUMENT)
|
||||
*pptype = UNKNOWNOID;
|
||||
|
||||
param = makeNode(Param);
|
||||
param->paramkind = PARAM_EXTERN;
|
||||
param->paramid = paramno;
|
||||
|
Loading…
Reference in New Issue
Block a user