Hi,

 
I have a use case where I need to create sequences concurrently. I use 
sequences instead of a table with counters to keep lock 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 access if 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

Reply via email to