mirror of
https://github.com/postgres/postgres.git
synced 2025-04-20 00:42:27 +03:00
Add TEMPORARY sequences and have SERIAL on a temp table have a temporary
sequence.
This commit is contained in:
parent
280b5f4be6
commit
a0c12d5e90
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_sequence.sgml,v 1.15 2000/12/08 20:06:58 tgl Exp $
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_sequence.sgml,v 1.16 2001/06/23 00:07:33 momjian Exp $
|
||||||
Postgres documentation
|
Postgres documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ Postgres documentation
|
|||||||
<date>1999-07-20</date>
|
<date>1999-07-20</date>
|
||||||
</refsynopsisdivinfo>
|
</refsynopsisdivinfo>
|
||||||
<synopsis>
|
<synopsis>
|
||||||
CREATE SEQUENCE <replaceable class="parameter">seqname</replaceable> [ INCREMENT <replaceable class="parameter">increment</replaceable> ]
|
CREATE [ TEMPORARY | TEMP ] SEQUENCE <replaceable class="parameter">seqname</replaceable> [ INCREMENT <replaceable class="parameter">increment</replaceable> ]
|
||||||
[ MINVALUE <replaceable class="parameter">minvalue</replaceable> ] [ MAXVALUE <replaceable class="parameter">maxvalue</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 <replaceable class="parameter">start</replaceable> ] [ CACHE <replaceable class="parameter">cache</replaceable> ] [ CYCLE ]
|
||||||
</synopsis>
|
</synopsis>
|
||||||
@ -37,6 +37,19 @@ CREATE SEQUENCE <replaceable class="parameter">seqname</replaceable> [ INCREMENT
|
|||||||
</title>
|
</title>
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>TEMPORARY or TEMP</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
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.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><replaceable class="parameter">seqname</replaceable></term>
|
<term><replaceable class="parameter">seqname</replaceable></term>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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->relname = seq->seqname;
|
||||||
|
stmt->istemp = seq->istemp;
|
||||||
stmt->inhRelnames = NIL;
|
stmt->inhRelnames = NIL;
|
||||||
stmt->constraints = NIL;
|
stmt->constraints = NIL;
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* 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 = makeNode(CreateSeqStmt);
|
||||||
sequence->seqname = pstrdup(sname);
|
sequence->seqname = pstrdup(sname);
|
||||||
|
sequence->istemp = stmt->istemp;
|
||||||
sequence->options = NIL;
|
sequence->options = NIL;
|
||||||
|
|
||||||
elog(NOTICE, "CREATE TABLE will create implicit sequence '%s' for SERIAL column '%s.%s'",
|
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;
|
return qry;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Transform uses of %TYPE in a statement.
|
* Transform uses of %TYPE in a statement.
|
||||||
*/
|
*/
|
||||||
static Node *
|
static Node *
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* HISTORY
|
||||||
* AUTHOR DATE MAJOR EVENT
|
* 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);
|
CreateSeqStmt *n = makeNode(CreateSeqStmt);
|
||||||
n->seqname = $3;
|
n->istemp = $2;
|
||||||
n->options = $4;
|
n->seqname = $4;
|
||||||
|
n->options = $5;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* 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;
|
NodeTag type;
|
||||||
char *seqname; /* the relation to create */
|
char *seqname; /* the relation to create */
|
||||||
|
bool istemp; /* is this a temp sequence? */
|
||||||
List *options;
|
List *options;
|
||||||
} CreateSeqStmt;
|
} CreateSeqStmt;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user