Thread: Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i
Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i
From
Bruce Momjian
Date:
> 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); } ;
Re: Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i
From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes: > 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 Hm. Shouldn't psql's \dS ignore temp items, since \d and \di do? Otherwise this looks pretty good... regards, tom lane
Re: Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i
From
Tom Lane
Date:
I said: > Hm. Shouldn't psql's \dS ignore temp items, since \d and \di do? Wait a sec --- I was confusing \dS (display system tables) with \ds (display sequences). It looks like the latter should get it right already. Possibly it does make sense to suppress temp items in \dS, but there isn't precedent for it. We should discuss it on its own merits. regards, tom lane
Re: Re: [GENERAL] [Help] Temporary Table: Implicitely created index not shown in \d i
From
Bruce Momjian
Date:
> I said: > > Hm. Shouldn't psql's \dS ignore temp items, since \d and \di do? > > Wait a sec --- I was confusing \dS (display system tables) with \ds > (display sequences). It looks like the latter should get it right > already. test=> \ds No relations found. > Possibly it does make sense to suppress temp items in \dS, but there > isn't precedent for it. We should discuss it on its own merits. If we don't show temp items with \dS we need another backslash command to show temp stuff. Doesn't seem worth it, especially since we don't show much info about temp stuff except that numeric name. -- 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