Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf41f8ee

Browse files
committed
Fix temp relation handling for indexes, cleanup
1 parent75e3ba3 commitf41f8ee

File tree

5 files changed

+21
-32
lines changed

5 files changed

+21
-32
lines changed

‎src/backend/access/transam/xact.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.71 2000/09/27 10:41:55 petere Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.72 2000/10/11 21:28:17 momjian Exp $
1212
*
1313
* NOTES
1414
*Transaction aborts can now occur two ways:
@@ -1119,7 +1119,7 @@ AbortTransaction()
11191119
AtEOXact_portals();
11201120
RecordTransactionAbort();
11211121
RelationPurgeLocalRelation(false);
1122-
invalidate_temp_relations();
1122+
remove_temp_rel_in_myxid();
11231123
AtEOXact_SPI();
11241124
AtEOXact_nbtree();
11251125
AtAbort_Cache();

‎src/backend/catalog/heap.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.147 2000/10/05 19:48:21 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.148 2000/10/11 21:28:18 momjian Exp $
1212
*
1313
*
1414
* INTERFACE ROUTINES
@@ -131,11 +131,11 @@ static FormData_pg_attribute a6 = {
131131
MaxCommandIdAttributeNumber,0,-1,-1,'\001','p','\0','i','\0','\0'
132132
};
133133

134-
/*
134+
/*
135135
We decide to call this attribute "tableoid" rather than say
136136
"classoid" on the basis that in the future there may be more than one
137137
table of a particular class/type. In any case table is still the word
138-
used in SQL.
138+
used in SQL.
139139
*/
140140
staticFormData_pg_attributea7= {
141141
0xffffffff, {"tableoid"},OIDOID,0,sizeof(Oid),
@@ -1489,7 +1489,7 @@ heap_drop_with_catalog(const char *relname,
14891489
RelationForgetRelation(rid);
14901490

14911491
if (istemp)
1492-
remove_temp_relation(rid);
1492+
remove_temp_rel_by_relid(rid);
14931493

14941494
if (has_toasttable)
14951495
{

‎src/backend/catalog/index.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.127 2000/10/05 19:48:21 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.128 2000/10/11 21:28:18 momjian Exp $
1212
*
1313
*
1414
* INTERFACE ROUTINES
@@ -1145,7 +1145,7 @@ index_drop(Oid indexId)
11451145
RelationForgetRelation(indexId);
11461146

11471147
/* does something only if it is a temp index */
1148-
remove_temp_relation(indexId);
1148+
remove_temp_rel_by_relid(indexId);
11491149
}
11501150

11511151
/* ----------------------------------------------------------------
@@ -1374,7 +1374,7 @@ IndexesAreActive(Oid relid, bool confirmCommitted)
13741374
if (!LockClassinfoForUpdate(relid,&tuple,&buffer,confirmCommitted))
13751375
elog(ERROR,"IndexesAreActive couldn't lock %u",relid);
13761376
if (((Form_pg_class)GETSTRUCT(&tuple))->relkind!=RELKIND_RELATION&&
1377-
((Form_pg_class)GETSTRUCT(&tuple))->relkind!=RELKIND_TOASTVALUE)
1377+
((Form_pg_class)GETSTRUCT(&tuple))->relkind!=RELKIND_TOASTVALUE)
13781378
elog(ERROR,"relation %u isn't an indexable relation",relid);
13791379
isactive= ((Form_pg_class)GETSTRUCT(&tuple))->relhasindex;
13801380
ReleaseBuffer(buffer);

‎src/backend/utils/cache/temprel.c

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.27 2000/07/12 18:04:45 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.28 2000/10/11 21:28:19 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -91,35 +91,24 @@ create_temp_relation(const char *relname, HeapTuple pg_class_tuple)
9191
void
9292
remove_all_temp_relations(void)
9393
{
94-
List*l,
95-
*next;
96-
97-
if (temp_rels==NIL)
98-
return;
99-
10094
AbortOutOfAnyTransaction();
10195
StartTransactionCommand();
10296

103-
l=temp_rels;
104-
while (l!=NIL)
97+
while (temp_rels!=NIL)
10598
{
106-
TempTable*temp_rel= (TempTable*)lfirst(l);
107-
108-
next=lnext(l);/* do this first, l is deallocated */
99+
charrelname[NAMEDATALEN];
100+
TempTable*temp_rel= (TempTable*)lfirst(temp_rels);
109101

110-
/* Indexes are dropped during heap drop */
111102
if (temp_rel->relkind!=RELKIND_INDEX)
112103
{
113-
charrelname[NAMEDATALEN];
114-
115104
/* safe from deallocation */
116105
strcpy(relname,temp_rel->user_relname);
117106
heap_drop_with_catalog(relname,allowSystemTableMods);
118107
}
119-
120-
l=next;
108+
else
109+
index_drop(temp_rel->relid);
110+
CommandCounterIncrement();
121111
}
122-
temp_rels=NIL;
123112
CommitTransactionCommand();
124113
}
125114

@@ -129,7 +118,7 @@ remove_all_temp_relations(void)
129118
* we don't have the relname for indexes, so we just pass the oid
130119
*/
131120
void
132-
remove_temp_relation(Oidrelid)
121+
remove_temp_rel_by_relid(Oidrelid)
133122
{
134123
MemoryContextoldcxt;
135124
List*l,
@@ -179,7 +168,7 @@ remove_temp_relation(Oid relid)
179168
* We just have to delete the map entry.
180169
*/
181170
void
182-
invalidate_temp_relations(void)
171+
remove_temp_rel_in_myxid(void)
183172
{
184173
MemoryContextoldcxt;
185174
List*l,

‎src/include/utils/temprel.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: temprel.h,v 1.10 2000/06/20 06:41:11 tgl Exp $
10+
* $Id: temprel.h,v 1.11 2000/10/11 21:28:19 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -18,12 +18,12 @@
1818

1919
externvoidcreate_temp_relation(constchar*relname,
2020
HeapTuplepg_class_tuple);
21-
externvoidremove_temp_relation(Oidrelid);
21+
externvoidremove_temp_rel_by_relid(Oidrelid);
2222
externboolrename_temp_relation(constchar*oldname,
2323
constchar*newname);
2424

2525
externvoidremove_all_temp_relations(void);
26-
externvoidinvalidate_temp_relations(void);
26+
externvoidremove_temp_rel_in_myxid(void);
2727

2828
externchar*get_temp_rel_by_username(constchar*user_relname);
2929
externchar*get_temp_rel_by_physicalname(constchar*relname);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp