aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/ref/create_sequence.sgml25
-rw-r--r--src/backend/commands/sequence.c8
-rw-r--r--src/backend/parser/gram.y20
3 files changed, 34 insertions, 19 deletions
diff --git a/doc/src/sgml/ref/create_sequence.sgml b/doc/src/sgml/ref/create_sequence.sgml
index 3db79850c8a..4e36dfbe771 100644
--- a/doc/src/sgml/ref/create_sequence.sgml
+++ b/doc/src/sgml/ref/create_sequence.sgml
@@ -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>
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index f6ace0d2d93..31fb270c63e 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -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);
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 5fe83ac41db..1ce4cc1bfde 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -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; }