30

What is the difference between the following two functions

Are they both the same behind the scenes? Any performance impacts on using one?

Evan Carroll
  • 65,432
  • 50
  • 254
  • 507

1 Answers1

34

Are they the same?

No.

The Postgres documetation for uuid-ossp suggests using gen_random_uuid() If you only need randomly-generated (version 4) UUIDs,

The uuid-ossp extension also provides other types of UUID (such as mac-addresses based)

The difference?

I looked at the source and discovered that

  • uuid_generate_v4() uses arc4random to determine the random part.

  • gen_random_uuid() uses fortuna instead.

Other than that they do the same job.

Notes:

  • gen_random_uuid() from the pgcrypto module is now deprecated, because it is natively part of PostgreSQL (since PostgreSQL version 13).
  • uuid_generate_v4() still requires the uuid-ossp module.
Adrian B.
  • 167
  • 6
Jasen
  • 3,656
  • 1
  • 15
  • 17