1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-28 18:48:04 +03:00

Docs: improve warnings about nextval() not producing gapless sequences.

In the documentation for nextval(), point out explicitly that INSERT ...
ON CONFLICT will call nextval() if needed for the insertion case, whether
or not it ends up following the ON CONFLICT path.  This seems to be a
matter of some confusion, cf bug #14126, so let's be clear about it.

Also mention the issue in the CREATE SEQUENCE reference page, since that
is another place where people might expect such things to be covered.

Minor wording improvements nearby, as well.

Back-patch to 9.5 where ON CONFLICT was introduced.
This commit is contained in:
Tom Lane
2016-05-07 13:16:50 -04:00
parent 7dc1d35969
commit 691d99de38
2 changed files with 24 additions and 8 deletions

View File

@@ -239,6 +239,16 @@ SELECT * FROM <replaceable>name</replaceable>;
(-9223372036854775808 to 9223372036854775807).
</para>
<para>
Because <function>nextval</> and <function>setval</> calls are never
rolled back, sequence objects cannot be used if <quote>gapless</>
assignment of sequence numbers is needed. It is possible to build
gapless assignment by using exclusive locking of a table containing a
counter; but this solution is much more expensive than sequence
objects, especially if many transactions need sequence numbers
concurrently.
</para>
<para>
Unexpected results might be obtained if a <replaceable
class="parameter">cache</replaceable> setting greater than one is