diff --git a/doc/src/sgml/ref/create_sequence.sgml b/doc/src/sgml/ref/create_sequence.sgml index 718037785c2972e3259d7a55586900f582f4d079..f6a2614f36d8339a2dfa1440c88e0822ad49fbca 100644 --- a/doc/src/sgml/ref/create_sequence.sgml +++ b/doc/src/sgml/ref/create_sequence.sgml @@ -1,5 +1,5 @@ @@ -23,7 +23,7 @@ Postgres documentation 1999-07-20 -CREATE SEQUENCE seqname [ INCREMENT increment ] +CREATE [ TEMPORARY | TEMP ] SEQUENCE seqname [ INCREMENT increment ] [ MINVALUE minvalue ] [ MAXVALUE maxvalue ] [ START start ] [ CACHE cache ] [ CYCLE ] @@ -37,6 +37,19 @@ CREATE SEQUENCE seqname [ INCREMENT + + + TEMPORARY or TEMP + + + If specified, the sequence is created only for this session, and is + automatically dropped on session exit. + Existing permanent sequences with the same name are not visible + (in this session) while the temporary sequence exists. + + + + seqname diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 6861ee5c3d81a6c3c12531ed45667c75adb4694d..400c60b9b4616462834a5fd609d74fb334823c44 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.59 2001/06/13 21:07:12 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.60 2001/06/23 00:07:34 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -161,6 +161,7 @@ DefineSequence(CreateSeqStmt *seq) } stmt->relname = seq->seqname; + stmt->istemp = seq->istemp; stmt->inhRelnames = NIL; stmt->constraints = NIL; diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index c6f21e77b03be983c556726fa3c271b407c4b9e4..c0280c7b881a4fe200612ee5efda6f86df11f7e0 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.189 2001/06/04 23:27:23 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.190 2001/06/23 00:07:34 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -779,6 +779,7 @@ transformCreateStmt(ParseState *pstate, CreateStmt *stmt) sequence = makeNode(CreateSeqStmt); sequence->seqname = pstrdup(sname); + sequence->istemp = stmt->istemp; sequence->options = NIL; elog(NOTICE, "CREATE TABLE will create implicit sequence '%s' for SERIAL column '%s.%s'", @@ -2716,7 +2717,7 @@ transformAlterTableStmt(ParseState *pstate, AlterTableStmt *stmt) return qry; } -/* +/* * Transform uses of %TYPE in a statement. */ static Node * diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index e47c3f0b33153b005bc0e449ca9caae1e9929526..3c7d526a7b8fddd868e4247bd80d1365e7f15b2e 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.231 2001/06/19 22:39:11 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.232 2001/06/23 00:07:34 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -1574,11 +1574,12 @@ CreateAsElement: ColId * *****************************************************************************/ -CreateSeqStmt: CREATE SEQUENCE relation_name OptSeqList +CreateSeqStmt: CREATE OptTemp SEQUENCE relation_name OptSeqList { CreateSeqStmt *n = makeNode(CreateSeqStmt); - n->seqname = $3; - n->options = $4; + n->istemp = $2; + n->seqname = $4; + n->options = $5; $$ = (Node *)n; } ; diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 43e64b6ad5f40bbd27341f6e00ba26c16a11b3e3..42b72e8074afb37dcbc23d395f2bfd344ae02ed3 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: parsenodes.h,v 1.132 2001/06/19 22:39:12 tgl Exp $ + * $Id: parsenodes.h,v 1.133 2001/06/23 00:07:34 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -402,6 +402,7 @@ typedef struct CreateSeqStmt { NodeTag type; char *seqname; /* the relation to create */ + bool istemp; /* is this a temp sequence? */ List *options; } CreateSeqStmt; diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index c0b6c9c097d79a412ad4aeb3efd88cc296c554ea..2228c125d8a7aa8f02a7a91f6cd23032cb8851f6 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -1289,9 +1289,9 @@ CreateAsElement: ColId { $$ = $1; } * *****************************************************************************/ -CreateSeqStmt: CREATE SEQUENCE relation_name OptSeqList +CreateSeqStmt: CREATE OptTemp SEQUENCE relation_name OptSeqList { - $$ = cat_str(3, make_str("create sequence"), $3, $4); + $$ = cat_str(4, make_str("create sequence"), $2, $4, $5); } ;