mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
heap_fetch requires buffer pointer, must be released; heap_getnext
no longer returns buffer pointer, can be gotten from scan; descriptor; bootstrap can create multi-key indexes; pg_procname index now is multi-key index; oidint2, oidint4, oidname are gone (must be removed from regression tests); use System Cache rather than sequential scan in many places; heap_modifytuple no longer takes buffer parameter; remove unused buffer parameter in a few other functions; oid8 is not index-able; remove some use of single-character variable names; cleanup Buffer variables usage and scan descriptor looping; cleaned up allocation and freeing of tuples; 18k lines of diff;
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.15 1998/07/27 19:38:08 vadim Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.16 1998/08/19 02:02:32 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -32,21 +32,23 @@
|
||||
char *
|
||||
RewriteGetRuleEventRel(char *rulename)
|
||||
{
|
||||
HeapTuple htp;
|
||||
HeapTuple htup;
|
||||
Oid eventrel;
|
||||
|
||||
htp = SearchSysCacheTuple(REWRITENAME, PointerGetDatum(rulename),
|
||||
0, 0, 0);
|
||||
if (!HeapTupleIsValid(htp))
|
||||
htup = SearchSysCacheTuple(REWRITENAME,
|
||||
PointerGetDatum(rulename),
|
||||
0, 0, 0);
|
||||
if (!HeapTupleIsValid(htup))
|
||||
elog(ERROR, "RewriteGetRuleEventRel: rule \"%s\" not found",
|
||||
rulename);
|
||||
eventrel = ((Form_pg_rewrite) GETSTRUCT(htp))->ev_class;
|
||||
htp = SearchSysCacheTuple(RELOID, PointerGetDatum(eventrel),
|
||||
eventrel = ((Form_pg_rewrite) GETSTRUCT(htup))->ev_class;
|
||||
htup = SearchSysCacheTuple(RELOID,
|
||||
PointerGetDatum(eventrel),
|
||||
0, 0, 0);
|
||||
if (!HeapTupleIsValid(htp))
|
||||
if (!HeapTupleIsValid(htup))
|
||||
elog(ERROR, "RewriteGetRuleEventRel: class %d not found",
|
||||
eventrel);
|
||||
return ((Form_pg_class) GETSTRUCT(htp))->relname.data;
|
||||
return ((Form_pg_class) GETSTRUCT(htup))->relname.data;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
@ -68,8 +70,6 @@ void
|
||||
RemoveRewriteRule(char *ruleName)
|
||||
{
|
||||
Relation RewriteRelation = NULL;
|
||||
HeapScanDesc scanDesc = NULL;
|
||||
ScanKeyData scanKeyData;
|
||||
HeapTuple tuple = NULL;
|
||||
Oid ruleId = (Oid) 0;
|
||||
Oid eventRelationOid = (Oid) NULL;
|
||||
@ -84,13 +84,9 @@ RemoveRewriteRule(char *ruleName)
|
||||
/*
|
||||
* Scan the RuleRelation ('pg_rewrite') until we find a tuple
|
||||
*/
|
||||
ScanKeyEntryInitialize(&scanKeyData, 0, Anum_pg_rewrite_rulename,
|
||||
F_NAMEEQ, NameGetDatum(ruleName));
|
||||
scanDesc = heap_beginscan(RewriteRelation,
|
||||
0, SnapshotNow, 1, &scanKeyData);
|
||||
|
||||
tuple = heap_getnext(scanDesc, 0, (Buffer *) NULL);
|
||||
|
||||
tuple = SearchSysCacheTupleCopy(REWRITENAME,
|
||||
PointerGetDatum(ruleName),
|
||||
0, 0, 0);
|
||||
/*
|
||||
* complain if no rule with such name existed
|
||||
*/
|
||||
@ -105,14 +101,14 @@ RemoveRewriteRule(char *ruleName)
|
||||
* relation's OID
|
||||
*/
|
||||
ruleId = tuple->t_oid;
|
||||
eventRelationOidDatum =
|
||||
heap_getattr(tuple,
|
||||
Anum_pg_rewrite_ev_class,
|
||||
RelationGetTupleDescriptor(RewriteRelation),
|
||||
&isNull);
|
||||
eventRelationOidDatum = heap_getattr(tuple,
|
||||
Anum_pg_rewrite_ev_class,
|
||||
RelationGetTupleDescriptor(RewriteRelation),
|
||||
&isNull);
|
||||
if (isNull)
|
||||
{
|
||||
/* XXX strange!!! */
|
||||
pfree(tuple);
|
||||
elog(ERROR, "RemoveRewriteRule: null event target relation!");
|
||||
}
|
||||
eventRelationOid = DatumGetObjectId(eventRelationOidDatum);
|
||||
@ -128,9 +124,10 @@ RemoveRewriteRule(char *ruleName)
|
||||
/*
|
||||
* Now delete the tuple...
|
||||
*/
|
||||
heap_delete(RewriteRelation, &(tuple->t_ctid));
|
||||
heap_delete(RewriteRelation, &tuple->t_ctid);
|
||||
|
||||
pfree(tuple);
|
||||
heap_close(RewriteRelation);
|
||||
heap_endscan(scanDesc);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -163,20 +160,8 @@ RelationRemoveRules(Oid relid)
|
||||
scanDesc = heap_beginscan(RewriteRelation,
|
||||
0, SnapshotNow, 1, &scanKeyData);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
tuple = heap_getnext(scanDesc, 0, (Buffer *) NULL);
|
||||
|
||||
if (!HeapTupleIsValid(tuple))
|
||||
{
|
||||
break; /* we're done */
|
||||
}
|
||||
|
||||
/*
|
||||
* delete the tuple...
|
||||
*/
|
||||
heap_delete(RewriteRelation, &(tuple->t_ctid));
|
||||
}
|
||||
while (HeapTupleIsValid(tuple = heap_getnext(scanDesc, 0)))
|
||||
heap_delete(RewriteRelation, &tuple->t_ctid);
|
||||
|
||||
heap_endscan(scanDesc);
|
||||
heap_close(RewriteRelation);
|
||||
|
Reference in New Issue
Block a user