diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c index 7e0a041fab..47bae957dc 100644 --- a/src/backend/commands/prepare.c +++ b/src/backend/commands/prepare.c @@ -381,7 +381,8 @@ EvaluateParams(PreparedStatement *pstmt, List *params, i + 1, format_type_be(given_type_id), format_type_be(expected_type_id)), - errhint("You will need to rewrite or cast the expression."))); + errhint("You will need to rewrite or cast the expression."), + parser_errposition(pstate, exprLocation(lfirst(l))))); /* Take care of collations in the finished expression. */ assign_expr_collations(pstate, expr); diff --git a/src/test/regress/expected/prepare.out b/src/test/regress/expected/prepare.out index 717732300d..3306c696b1 100644 --- a/src/test/regress/expected/prepare.out +++ b/src/test/regress/expected/prepare.out @@ -113,6 +113,8 @@ DETAIL: Expected 5 parameters but got 6. -- wrong param types EXECUTE q3(5::smallint, 10.5::float, false, 4::bigint, 'bytea'); ERROR: parameter $3 of type boolean cannot be coerced to the expected type double precision +LINE 1: EXECUTE q3(5::smallint, 10.5::float, false, 4::bigint, 'byte... + ^ HINT: You will need to rewrite or cast the expression. -- invalid type PREPARE q4(nonexistenttype) AS SELECT $1;