Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i - Mailing list pgsql-patches
| From | Bruce Momjian |
|---|---|
| Subject | Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i |
| Date | |
| Msg-id | 200106222304.f5MN4Ja05624@candle.pha.pa.us Whole thread Raw |
| Responses |
Re: Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i
|
| List | pgsql-patches |
> Hi,
>
> I'm running v7.1.2. In psql, if I
>
> CREATE TEMPORARY TABLE junk (col1 SERIAL, <more cols>)
>
> and check \ds, the implicitely created sequence is shown but \di doesn't
> show
> the implicitely created index.
OK, here is a patch that fixes it so the sequence is temporary like
everything else. It also adds CREATE TEMPORARY SEQUENCE to the syntax.
test=> create temp table kkk(x serial);
NOTICE: CREATE TABLE will create implicit sequence 'kkk_x_seq' for
SERIAL column 'kkk.x'
NOTICE: CREATE TABLE/UNIQUE will create implicit index 'kkk_x_key' for
table 'kkk'
CREATE
test=> \d
No relations found.
test=> \di
No relations found.
test=> \dS
List of relations
Name | Type | Owner
----------------+----------+----------
...
pg_temp_5396_0 | sequence | postgres
pg_temp_5396_1 | table | postgres
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Index: doc/src/sgml/ref/create_sequence.sgml
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/src/sgml/ref/create_sequence.sgml,v
retrieving revision 1.15
diff -c -r1.15 create_sequence.sgml
*** doc/src/sgml/ref/create_sequence.sgml 2000/12/08 20:06:58 1.15
--- doc/src/sgml/ref/create_sequence.sgml 2001/06/22 23:02:48
***************
*** 23,29 ****
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
! CREATE SEQUENCE <replaceable class="parameter">seqname</replaceable> [ INCREMENT <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 ]
</synopsis>
--- 23,29 ----
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
! 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>]
[ START <replaceable class="parameter">start</replaceable> ] [ CACHE <replaceable
class="parameter">cache</replaceable>] [ CYCLE ]
</synopsis>
***************
*** 36,41 ****
--- 36,54 ----
Inputs
</title>
<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>
<varlistentry>
Index: src/backend/commands/sequence.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/commands/sequence.c,v
retrieving revision 1.59
diff -c -r1.59 sequence.c
*** src/backend/commands/sequence.c 2001/06/13 21:07:12 1.59
--- src/backend/commands/sequence.c 2001/06/22 23:02:49
***************
*** 161,166 ****
--- 161,167 ----
}
stmt->relname = seq->seqname;
+ stmt->istemp = seq->istemp;
stmt->inhRelnames = NIL;
stmt->constraints = NIL;
Index: src/backend/parser/analyze.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/parser/analyze.c,v
retrieving revision 1.189
diff -c -r1.189 analyze.c
*** src/backend/parser/analyze.c 2001/06/04 23:27:23 1.189
--- src/backend/parser/analyze.c 2001/06/22 23:02:51
***************
*** 779,784 ****
--- 779,785 ----
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,2722 ****
return qry;
}
! /*
* Transform uses of %TYPE in a statement.
*/
static Node *
--- 2717,2723 ----
return qry;
}
! /*
* Transform uses of %TYPE in a statement.
*/
static Node *
Index: src/backend/parser/gram.y
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.231
diff -c -r2.231 gram.y
*** src/backend/parser/gram.y 2001/06/19 22:39:11 2.231
--- src/backend/parser/gram.y 2001/06/22 23:02:53
***************
*** 1574,1584 ****
*
*****************************************************************************/
! CreateSeqStmt: CREATE SEQUENCE relation_name OptSeqList
{
CreateSeqStmt *n = makeNode(CreateSeqStmt);
! n->seqname = $3;
! n->options = $4;
$$ = (Node *)n;
}
;
--- 1574,1585 ----
*
*****************************************************************************/
! CreateSeqStmt: CREATE OptTemp SEQUENCE relation_name OptSeqList
{
CreateSeqStmt *n = makeNode(CreateSeqStmt);
! n->istemp = $2;
! n->seqname = $4;
! n->options = $5;
$$ = (Node *)n;
}
;
Index: src/include/nodes/parsenodes.h
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/include/nodes/parsenodes.h,v
retrieving revision 1.132
diff -c -r1.132 parsenodes.h
*** src/include/nodes/parsenodes.h 2001/06/19 22:39:12 1.132
--- src/include/nodes/parsenodes.h 2001/06/22 23:02:55
***************
*** 402,407 ****
--- 402,408 ----
{
NodeTag type;
char *seqname; /* the relation to create */
+ bool istemp; /* is this a temp sequence? */
List *options;
} CreateSeqStmt;
Index: src/interfaces/ecpg/preproc/preproc.y
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/ecpg/preproc/preproc.y,v
retrieving revision 1.140
diff -c -r1.140 preproc.y
*** src/interfaces/ecpg/preproc/preproc.y 2001/06/13 12:38:58 1.140
--- src/interfaces/ecpg/preproc/preproc.y 2001/06/22 23:02:58
***************
*** 1289,1297 ****
*
*****************************************************************************/
! CreateSeqStmt: CREATE SEQUENCE relation_name OptSeqList
{
! $$ = cat_str(3, make_str("create sequence"), $3, $4);
}
;
--- 1289,1297 ----
*
*****************************************************************************/
! CreateSeqStmt: CREATE OptTemp SEQUENCE relation_name OptSeqList
{
! $$ = cat_str(4, make_str("create sequence"), $2, $4, $5);
}
;
pgsql-patches by date: