diff options
Diffstat (limited to 'src/backend/parser/parse_coerce.c')
-rw-r--r-- | src/backend/parser/parse_coerce.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c index 78194afedfb..5e86f4b1e2e 100644 --- a/src/backend/parser/parse_coerce.c +++ b/src/backend/parser/parse_coerce.c @@ -766,7 +766,15 @@ coerce_type_typmod(Node *node, Oid targetTypeId, int32 targetTypMod, if (hideInputCoercion) hide_coercion_node(node); - pathtype = find_typmod_coercion_function(targetTypeId, &funcId); + /* + * A negative typmod means that no actual coercion is needed, but we still + * want a RelabelType to ensure that the expression exposes the intended + * typmod. + */ + if (targetTypMod < 0) + pathtype = COERCION_PATH_NONE; + else + pathtype = find_typmod_coercion_function(targetTypeId, &funcId); if (pathtype != COERCION_PATH_NONE) { |