summaryrefslogtreecommitdiff
path: root/src/backend/commands/proclang.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-08-19 02:04:17 +0000
committerBruce Momjian <bruce@momjian.us>1998-08-19 02:04:17 +0000
commit7971539020a344dce3a8b3b9b93ff4f10e2f823a (patch)
tree8dca0af0d3ac8d431bff8c0dec793fe9733a1ee9 /src/backend/commands/proclang.c
parent31de2c9461dff3284ad61084c73eba093fa3f68e (diff)
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;
Diffstat (limited to 'src/backend/commands/proclang.c')
-rw-r--r--src/backend/commands/proclang.c43
1 files changed, 12 insertions, 31 deletions
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 1abcdae8724..f3c4d4b6e1b 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -53,7 +53,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
Oid typev[8];
char nulls[Natts_pg_language];
Datum values[Natts_pg_language];
- Relation rdesc;
+ Relation rel;
HeapTuple tup;
TupleDesc tupDesc;
@@ -90,7 +90,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
memset(typev, 0, sizeof(typev));
procTup = SearchSysCacheTuple(PRONAME,
PointerGetDatum(stmt->plhandler),
- UInt16GetDatum(0),
+ Int32GetDatum(0),
PointerGetDatum(typev),
0);
if (!HeapTupleIsValid(procTup))
@@ -121,14 +121,14 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
values[i++] = ObjectIdGetDatum(procTup->t_oid);
values[i++] = (Datum) fmgr(F_TEXTIN, stmt->plcompiler);
- rdesc = heap_openr(LanguageRelationName);
+ rel = heap_openr(LanguageRelationName);
- tupDesc = rdesc->rd_att;
+ tupDesc = rel->rd_att;
tup = heap_formtuple(tupDesc, values, nulls);
- heap_insert(rdesc, tup);
+ heap_insert(rel, tup);
- heap_close(rdesc);
+ heap_close(rel);
return;
}
@@ -142,11 +142,7 @@ DropProceduralLanguage(DropPLangStmt *stmt)
{
char languageName[NAMEDATALEN];
HeapTuple langTup;
-
- Relation rdesc;
- HeapScanDesc scanDesc;
- ScanKeyData scanKeyData;
- HeapTuple tup;
+ Relation rel;
/* ----------------
* Check permission
@@ -165,7 +161,7 @@ DropProceduralLanguage(DropPLangStmt *stmt)
*/
case_translate_language_name(stmt->plname, languageName);
- langTup = SearchSysCacheTuple(LANNAME,
+ langTup = SearchSysCacheTupleCopy(LANNAME,
PointerGetDatum(languageName),
0, 0, 0);
if (!HeapTupleIsValid(langTup))
@@ -177,24 +173,9 @@ DropProceduralLanguage(DropPLangStmt *stmt)
languageName);
}
- /* ----------------
- * Now scan pg_language and delete the PL tuple
- * ----------------
- */
- rdesc = heap_openr(LanguageRelationName);
-
- ScanKeyEntryInitialize(&scanKeyData, 0, Anum_pg_language_lanname,
- F_NAMEEQ, PointerGetDatum(languageName));
-
- scanDesc = heap_beginscan(rdesc, 0, SnapshotNow, 1, &scanKeyData);
-
- tup = heap_getnext(scanDesc, 0, (Buffer *) NULL);
-
- if (!HeapTupleIsValid(tup))
- elog(ERROR, "Language with name '%s' not found", languageName);
-
- heap_delete(rdesc, &(tup->t_ctid));
+ rel = heap_openr(LanguageRelationName);
+ heap_delete(rel, &langTup->t_ctid);
- heap_endscan(scanDesc);
- heap_close(rdesc);
+ pfree(langTup);
+ heap_close(rel);
}