diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-01-23 14:00:58 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-01-23 14:00:58 -0500 |
commit | 0bc1207aeb3de951bf95a9e9899b1256216d65f5 (patch) | |
tree | d6b29dbd49dec2ec22b65f0324924843c6a9bc7d | |
parent | 46d482814cd4a9c474540a9c4f040ce1cd514f46 (diff) | |
download | postgresql-0bc1207aeb3de951bf95a9e9899b1256216d65f5.tar.gz postgresql-0bc1207aeb3de951bf95a9e9899b1256216d65f5.zip |
Fix default minimum value for descending sequences
For some reason that is lost in history, a descending sequence would
default its minimum value to -2^63+1 (-PG_INT64_MAX) instead of
-2^63 (PG_INT64_MIN), even though explicitly specifying a minimum value
of -2^63 would work. Fix this inconsistency by using the full range by
default.
Reported-by: Daniel Verite <daniel@manitou-mail.org>
Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
-rw-r--r-- | doc/src/sgml/ref/create_sequence.sgml | 2 | ||||
-rw-r--r-- | src/backend/commands/sequence.c | 4 | ||||
-rw-r--r-- | src/bin/pg_dump/pg_dump.c | 4 | ||||
-rw-r--r-- | src/include/pg_config_manual.h | 6 |
4 files changed, 5 insertions, 11 deletions
diff --git a/doc/src/sgml/ref/create_sequence.sgml b/doc/src/sgml/ref/create_sequence.sgml index 62ae3792267..86ff018c4ba 100644 --- a/doc/src/sgml/ref/create_sequence.sgml +++ b/doc/src/sgml/ref/create_sequence.sgml @@ -133,7 +133,7 @@ SELECT * FROM <replaceable>name</replaceable>; the minimum value a sequence can generate. If this clause is not supplied or <option>NO MINVALUE</option> is specified, then defaults will be used. The defaults are 1 and - -2<superscript>63</>-1 for ascending and descending sequences, + -2<superscript>63</> for ascending and descending sequences, respectively. </para> </listitem> diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 36f1249ee5a..0c673f5763b 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -1353,7 +1353,7 @@ init_params(ParseState *pstate, List *options, bool isInit, else if (isInit || max_value != NULL) { if (seqform->seqincrement > 0) - seqform->seqmax = SEQ_MAXVALUE; /* ascending seq */ + seqform->seqmax = PG_INT64_MAX; /* ascending seq */ else seqform->seqmax = -1; /* descending seq */ seqdataform->log_cnt = 0; @@ -1370,7 +1370,7 @@ init_params(ParseState *pstate, List *options, bool isInit, if (seqform->seqincrement > 0) seqform->seqmin = 1; /* ascending seq */ else - seqform->seqmin = SEQ_MINVALUE; /* descending seq */ + seqform->seqmin = PG_INT64_MIN; /* descending seq */ seqdataform->log_cnt = 0; } diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 049c9cdfd7e..e3cca62bf72 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -15876,8 +15876,8 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) /* Make sure we are in proper schema */ selectSourceSchema(fout, tbinfo->dobj.namespace->dobj.name); - snprintf(bufm, sizeof(bufm), INT64_FORMAT, SEQ_MINVALUE); - snprintf(bufx, sizeof(bufx), INT64_FORMAT, SEQ_MAXVALUE); + snprintf(bufm, sizeof(bufm), INT64_FORMAT, PG_INT64_MIN); + snprintf(bufx, sizeof(bufx), INT64_FORMAT, PG_INT64_MAX); if (fout->remoteVersion >= 100000) { diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h index c07907145a6..f3b35297d18 100644 --- a/src/include/pg_config_manual.h +++ b/src/include/pg_config_manual.h @@ -51,12 +51,6 @@ #define PARTITION_MAX_KEYS 32 /* - * Set the upper and lower bounds of sequence values. - */ -#define SEQ_MAXVALUE PG_INT64_MAX -#define SEQ_MINVALUE (-SEQ_MAXVALUE) - -/* * When we don't have native spinlocks, we use semaphores to simulate them. * Decreasing this value reduces consumption of OS resources; increasing it * may improve performance, but supplying a real spinlock implementation is |