Add TEMPORARY sequences and have SERIAL on a temp table have a temporary
authorBruce Momjian
Sat, 23 Jun 2001 00:07:34 +0000 (00:07 +0000)
committerBruce Momjian
Sat, 23 Jun 2001 00:07:34 +0000 (00:07 +0000)
sequence.

doc/src/sgml/ref/create_sequence.sgml
src/backend/commands/sequence.c
src/backend/parser/analyze.c
src/backend/parser/gram.y
src/include/nodes/parsenodes.h
src/interfaces/ecpg/preproc/preproc.y

index 718037785c2972e3259d7a55586900f582f4d079..f6a2614f36d8339a2dfa1440c88e0822ad49fbca 100644 (file)
@@ -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
index 6861ee5c3d81a6c3c12531ed45667c75adb4694d..400c60b9b4616462834a5fd609d74fb334823c44 100644 (file)
@@ -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;
 
index c6f21e77b03be983c556726fa3c271b407c4b9e4..c0280c7b881a4fe200612ee5efda6f86df11f7e0 100644 (file)
@@ -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 *
index e47c3f0b33153b005bc0e449ca9caae1e9929526..3c7d526a7b8fddd868e4247bd80d1365e7f15b2e 100644 (file)
@@ -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;
                }
        ;
index 43e64b6ad5f40bbd27341f6e00ba26c16a11b3e3..42b72e8074afb37dcbc23d395f2bfd344ae02ed3 100644 (file)
@@ -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;
 
index c0b6c9c097d79a412ad4aeb3efd88cc296c554ea..2228c125d8a7aa8f02a7a91f6cd23032cb8851f6 100644 (file)
@@ -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);
                }
        ;