summaryrefslogtreecommitdiff
path: root/contrib/pgcrypto
diff options
context:
space:
mode:
authorPeter Eisentraut2019-07-14 12:30:27 +0000
committerPeter Eisentraut2019-07-14 12:30:27 +0000
commit5925e5549890416bcf588334d9d0bc99f8ad6c7f (patch)
tree0b9d6556f5e4dcaa389d2f35cf60804645d2c5f8 /contrib/pgcrypto
parent565f3390005318ea4c982b8d054d56e9fe5a6454 (diff)
Add gen_random_uuid function
This adds a built-in function to generate UUIDs. PostgreSQL hasn't had a built-in function to generate a UUID yet, relying on external modules such as uuid-ossp and pgcrypto to provide one. Now that we have a strong random number generator built-in, we can easily provide a version 4 (random) UUID generation function. This patch takes the existing function gen_random_uuid() from pgcrypto and makes it a built-in function. The pgcrypto implementation now internally redirects to the built-in one. Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr> Discussion: https://www.postgresql.org/message-id/6a65610c-46fc-2323-6b78-e8086340a325@2ndquadrant.com
Diffstat (limited to 'contrib/pgcrypto')
-rw-r--r--contrib/pgcrypto/pgcrypto.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/contrib/pgcrypto/pgcrypto.c b/contrib/pgcrypto/pgcrypto.c
index c5587679098..f69ae107c3a 100644
--- a/contrib/pgcrypto/pgcrypto.c
+++ b/contrib/pgcrypto/pgcrypto.c
@@ -446,20 +446,8 @@ PG_FUNCTION_INFO_V1(pg_random_uuid);
Datum
pg_random_uuid(PG_FUNCTION_ARGS)
{
- uint8 *buf = (uint8 *) palloc(UUID_LEN);
-
- /* Generate random bits. */
- if (!pg_strong_random(buf, UUID_LEN))
- px_THROW_ERROR(PXE_NO_RANDOM);
-
- /*
- * Set magic numbers for a "version 4" (pseudorandom) UUID, see
- * http://tools.ietf.org/html/rfc4122#section-4.4
- */
- buf[6] = (buf[6] & 0x0f) | 0x40; /* "version" field */
- buf[8] = (buf[8] & 0x3f) | 0x80; /* "variant" field */
-
- PG_RETURN_UUID_P((pg_uuid_t *) buf);
+ /* redirect to built-in function */
+ return gen_random_uuid(fcinfo);
}
static void *