Thread: concurrent creation of sequences

concurrent creation of sequences

From
Marc-Olaf Jaschke
Date:
Hi,


I have a use case where I need to create sequences concurrently. I use sequences instead of a table with counters to
keeplock contention for incrementing the id low. The creation of new sequences rarely occurs during normal application
operation.

I check via information_schema.sequences if a sequence already exists and catch errors that occur with concurrent
accessif the corresponding sequence already exists. 

I wrote a stress test that simulates the behavior with heavy concurrency. I get the following three different error
codes:
42P07
42710
23505

I would have expected only 42710 (duplicate_object).

Is this behavior intentional?
Are there possibly other error codes that the stress test did not uncover and that I should consider?

"create sequence if not exists ..." does not prevent errors with concurrency.


Tested with "PostgreSQL 12.6 on x86_64-apple-darwin16.7.0, compiled by Apple LLVM version 8.1.0 (clang-802.0.42),
64-bit"


Best regards,
Marc-Olaf Jaschke