]> granicus.if.org Git - postgresql/commitdiff
Fix default minimum value for descending sequences
authorPeter Eisentraut <peter_e@gmx.net>
Mon, 23 Jan 2017 19:00:58 +0000 (14:00 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Mon, 23 Jan 2017 19:00:58 +0000 (14:00 -0500)
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>
doc/src/sgml/ref/create_sequence.sgml
src/backend/commands/sequence.c
src/bin/pg_dump/pg_dump.c
src/include/pg_config_manual.h

index 62ae3792267fd1eb754760eb114a05f56d0b8565..86ff018c4ba3141feb8d223d82513e8c8f61b38c 100644 (file)
@@ -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>
index 36f1249ee5a5632df25cb6404f22379c4e91c3e3..0c673f5763b18696ded55afb87709096a1b82384 100644 (file)
@@ -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;
        }
 
index 049c9cdfd7e168f440fbd9b81499daf81f7c40a7..e3cca62bf7280b53844af99dc87228b60a5f3f9e 100644 (file)
@@ -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)
        {
index c07907145a661b65b478c236c0d0a97eb82331f2..f3b35297d183b7850ec0cb3f8302294c4e058bd3 100644 (file)
  */
 #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