1999-07-20
-CREATE [ TEMPORARY | TEMP ] SEQUENCE seqname [ INCREMENT increment ]
+CREATE [ TEMPORARY | TEMP ] SEQUENCE seqname [ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
- [ START start ] [ CACHE cache ] [ CYCLE ]
+ [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
CYCLE
- The optional CYCLE keyword may be used to enable the sequence
- to wrap around when the
+ The optional keyword may be used to enable
+ the sequence to wrap around when the
maxvalue or
minvalue has been
reached by
minvalue or
maxvalue,
respectively.
- Without CYCLE, after the limit is reached nextval> calls
- will return an error.
+
+
+ NO CYCLE
+
+ If the optional keyword is specified, any
+ calls to nextval after the sequence has reached
+ its maximum value will return an error. If neither
+ or are specified,
+ is the default.
+
+
+
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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);
*
*
* 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
}
| 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
{
{
$$ = 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; }