From d73e7c1cd31f5036a847b8a6bc3823a01cac5a77 Mon Sep 17 00:00:00 2001
From: Andrey Borodin <amborodin@acm.org>
Date: Wed, 29 Oct 2025 15:59:46 +0400
Subject: [PATCH v3 2/3] Minor suggestions to Ilmari's patch

---
 src/backend/utils/adt/bytea.c      | 9 +++++----
 src/test/regress/expected/uuid.out | 3 ++-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/backend/utils/adt/bytea.c b/src/backend/utils/adt/bytea.c
index ff9e46f3015..14e95031be1 100644
--- a/src/backend/utils/adt/bytea.c
+++ b/src/backend/utils/adt/bytea.c
@@ -1124,12 +1124,13 @@ bytea_uuid(PG_FUNCTION_ARGS)
 
 	if (len != UUID_LEN)
 		ereport(ERROR,
-				errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
-				errmsg("invalid uuid length"));
+				(errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
+				 errmsg("invalid length for UUID"),
+				 errdetail("Expected %d bytes, got %d.", UUID_LEN, len)));
 
-	uuid = (pg_uuid_t *) palloc(UUID_LEN);
+	uuid = (pg_uuid_t *) palloc(sizeof(pg_uuid_t));
 	memcpy(uuid->data, VARDATA_ANY(v), UUID_LEN);
-	PG_RETURN_POINTER(uuid);
+	PG_RETURN_UUID_P(uuid);
 }
 
 /* Cast uuid -> bytea; can just use uuid_send() */
diff --git a/src/test/regress/expected/uuid.out b/src/test/regress/expected/uuid.out
index 4b635336606..24486084aaf 100644
--- a/src/test/regress/expected/uuid.out
+++ b/src/test/regress/expected/uuid.out
@@ -319,6 +319,7 @@ SELECT '\x019a2f859ced7225b99d9c55044a2563'::bytea::uuid;
 (1 row)
 
 SELECT '\x1234567890abcdef'::bytea::uuid; -- error
-ERROR:  invalid uuid length
+ERROR:  invalid length for UUID
+DETAIL:  Expected 16 bytes, got 8.
 -- clean up
 DROP TABLE guid1, guid2, guid3 CASCADE;
-- 
2.39.5 (Apple Git-154)

