Tweak CREATE SEQUENCE grammar to be more SQL1999 standards compliant.
authorBruce Momjian <bruce@momjian.us>
Sun, 10 Nov 2002 00:10:20 +0000 (00:10 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 10 Nov 2002 00:10:20 +0000 (00:10 +0000)
Neil Conway

doc/src/sgml/ref/create_sequence.sgml
src/backend/commands/sequence.c
src/backend/parser/gram.y

index 3db79850c8a04b9ca8299c0af125a2fe77207be3..4e36dfbe77139df9612ea643ccdc38a12be1d6d8 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_sequence.sgml,v 1.28 2002/05/18 15:44:47 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_sequence.sgml,v 1.29 2002/11/10 00:10:20 momjian Exp $
 PostgreSQL documentation
 -->
 
@@ -21,9 +21,9 @@ PostgreSQL documentation
    <date>1999-07-20</date>
   </refsynopsisdivinfo>
   <synopsis>
-CREATE [ TEMPORARY | TEMP ] SEQUENCE <replaceable class="parameter">seqname</replaceable> [ INCREMENT <replaceable class="parameter">increment</replaceable> ]
+CREATE [ TEMPORARY | TEMP ] SEQUENCE <replaceable class="parameter">seqname</replaceable> [ INCREMENT [ BY ] <replaceable class="parameter">increment</replaceable> ]
     [ MINVALUE <replaceable class="parameter">minvalue</replaceable> ] [ MAXVALUE <replaceable class="parameter">maxvalue</replaceable> ]
-    [ START <replaceable class="parameter">start</replaceable> ] [ CACHE <replaceable class="parameter">cache</replaceable> ] [ CYCLE ]
+    [ START [ WITH ] <replaceable class="parameter">start</replaceable> ] [ CACHE <replaceable class="parameter">cache</replaceable> ] [ [ NO ] CYCLE ]
   </synopsis>
   
   <refsect2 id="R2-SQL-CREATESEQUENCE-1">
@@ -130,8 +130,8 @@ CREATE [ TEMPORARY | TEMP ] SEQUENCE <replaceable class="parameter">seqname</rep
       <term>CYCLE</term>
       <listitem>
        <para>
-   The optional CYCLE keyword may be used to enable the sequence
-   to wrap around when the
+   The optional <option>CYCLE</option> keyword may be used to enable
+   the sequence to wrap around when the
    <replaceable class="parameter">maxvalue</replaceable> or
    <replaceable class="parameter">minvalue</replaceable> has been
    reached by
@@ -140,11 +140,22 @@ CREATE [ TEMPORARY | TEMP ] SEQUENCE <replaceable class="parameter">seqname</rep
    <replaceable class="parameter">minvalue</replaceable> or
    <replaceable class="parameter">maxvalue</replaceable>,
    respectively.
-   Without CYCLE, after the limit is reached <function>nextval</> calls
-   will return an error.
        </para>
       </listitem>
      </varlistentry>
+
+    <varlistentry>
+     <term>NO CYCLE</term>
+     <listitem>
+      <para>
+   If the optional <option>NO CYCLE</option> keyword is specified, any
+   calls to <function>nextval</function> after the sequence has reached
+   its maximum value will return an error.  If neither
+   <option>CYCLE</option> or <option>NO CYCLE</option> are specified,
+   <option>NO CYCLE</option> is the default.
+      </para>
+     </listitem>
+   </varlistentry>
     </variablelist>
    </para>
   </refsect2>
index f6ace0d2d9342789afb64162fcd2bc8775848944..31fb270c63e6f49256d0232f43f289c23b73711d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.88 2002/09/22 19:42:50 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.89 2002/11/10 00:10:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -798,11 +798,7 @@ init_params(CreateSeqStmt *seq, Form_pg_sequence new)
        else if (strcmp(defel->defname, "cache") == 0)
            cache_value = defel;
        else if (strcmp(defel->defname, "cycle") == 0)
-       {
-           if (defel->arg != (Node *) NULL)
-               elog(ERROR, "DefineSequence: CYCLE ??");
-           new->is_cycled = true;
-       }
+           new->is_cycled = (defel->arg != NULL);
        else
            elog(ERROR, "DefineSequence: option \"%s\" not recognized",
                 defel->defname);
index 5fe83ac41db061a531aaf7c0d1daa705d7d5a29b..1ce4cc1bfde9c58d9af79c5c9de852a0d6effb41 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.374 2002/11/09 23:56:39 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.375 2002/11/10 00:10:20 momjian Exp $
  *
  * HISTORY
  *   AUTHOR            DATE            MAJOR EVENT
@@ -1893,11 +1893,15 @@ OptSeqElem: CACHE NumericOnly
                }
            | CYCLE
                {
-                   $$ = makeDefElem("cycle", (Node *)NULL);
+                   $$ = makeDefElem("cycle", (Node *)true);
                }
-           | INCREMENT NumericOnly
+           | NO CYCLE
                {
-                   $$ = makeDefElem("increment", (Node *)$2);
+                   $$ = makeDefElem("cycle", (Node *)false);
+               }
+           | INCREMENT opt_by NumericOnly
+               {
+                   $$ = makeDefElem("increment", (Node *)$3);
                }
            | MAXVALUE NumericOnly
                {
@@ -1907,12 +1911,16 @@ OptSeqElem: CACHE NumericOnly
                {
                    $$ = makeDefElem("minvalue", (Node *)$2);
                }
-           | START NumericOnly
+           | START opt_with NumericOnly
                {
-                   $$ = makeDefElem("start", (Node *)$2);
+                   $$ = makeDefElem("start", (Node *)$3);
                }
        ;
 
+opt_by:        BY              {}
+           | /* empty */   {}
+     ;
+
 NumericOnly:
            FloatOnly                               { $$ = $1; }
            | IntegerOnly                           { $$ = $1; }