diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-03-29 19:44:23 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-03-29 19:44:23 +0000 |
| commit | 0f085f6e9df81140ee69f29f31f42b2824f0afed (patch) | |
| tree | 8168bd9aa2e2eaac65dccfde4f7c7286cf569b72 /src/backend/catalog/pg_proc.c | |
| parent | eb47ee486538fb0ea81917b3e35d6cff9f7a0ec7 (diff) | |
| download | postgresql-0f085f6e9df81140ee69f29f31f42b2824f0afed.tar.gz | |
Add proallargtypes and proargmodes columns to pg_proc, as per my earlier
proposal for OUT parameter support. The columns don't actually *do*
anything yet, they are just left NULLs. But I thought I'd commit this
part separately as a fairly pure example of the tasks needed when adding
a column to pg_proc or one of the other core system tables.
Diffstat (limited to 'src/backend/catalog/pg_proc.c')
| -rw-r--r-- | src/backend/catalog/pg_proc.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index 2042d67042..a991ce901c 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.124 2005/03/29 00:16:56 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.125 2005/03/29 19:44:23 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -151,32 +151,36 @@ ProcedureCreate(const char *procedureName, for (i = 0; i < Natts_pg_proc; ++i) { nulls[i] = ' '; - values[i] = (Datum) NULL; + values[i] = (Datum) 0; replaces[i] = 'r'; } - i = 0; namestrcpy(&procname, procedureName); - values[i++] = NameGetDatum(&procname); /* proname */ - values[i++] = ObjectIdGetDatum(procNamespace); /* pronamespace */ - values[i++] = Int32GetDatum(GetUserId()); /* proowner */ - values[i++] = ObjectIdGetDatum(languageObjectId); /* prolang */ - values[i++] = BoolGetDatum(isAgg); /* proisagg */ - values[i++] = BoolGetDatum(security_definer); /* prosecdef */ - values[i++] = BoolGetDatum(isStrict); /* proisstrict */ - values[i++] = BoolGetDatum(returnsSet); /* proretset */ - values[i++] = CharGetDatum(volatility); /* provolatile */ - values[i++] = UInt16GetDatum(parameterCount); /* pronargs */ - values[i++] = ObjectIdGetDatum(returnType); /* prorettype */ - values[i++] = PointerGetDatum(proargtypes); /* proargtypes */ - values[i++] = namesarray; /* proargnames */ - if (namesarray == PointerGetDatum(NULL)) + values[Anum_pg_proc_proname - 1] = NameGetDatum(&procname); + values[Anum_pg_proc_pronamespace - 1] = ObjectIdGetDatum(procNamespace); + values[Anum_pg_proc_proowner - 1] = Int32GetDatum(GetUserId()); + values[Anum_pg_proc_prolang - 1] = ObjectIdGetDatum(languageObjectId); + values[Anum_pg_proc_proisagg - 1] = BoolGetDatum(isAgg); + values[Anum_pg_proc_prosecdef - 1] = BoolGetDatum(security_definer); + values[Anum_pg_proc_proisstrict - 1] = BoolGetDatum(isStrict); + values[Anum_pg_proc_proretset - 1] = BoolGetDatum(returnsSet); + values[Anum_pg_proc_provolatile - 1] = CharGetDatum(volatility); + values[Anum_pg_proc_pronargs - 1] = UInt16GetDatum(parameterCount); + values[Anum_pg_proc_prorettype - 1] = ObjectIdGetDatum(returnType); + values[Anum_pg_proc_proargtypes - 1] = PointerGetDatum(proargtypes); + /* XXX for now, just null out the new columns */ + nulls[Anum_pg_proc_proallargtypes - 1] = 'n'; + nulls[Anum_pg_proc_proargmodes - 1] = 'n'; + if (namesarray != PointerGetDatum(NULL)) + values[Anum_pg_proc_proargnames - 1] = namesarray; + else nulls[Anum_pg_proc_proargnames - 1] = 'n'; - values[i++] = DirectFunctionCall1(textin, /* prosrc */ + values[Anum_pg_proc_prosrc - 1] = DirectFunctionCall1(textin, CStringGetDatum(prosrc)); - values[i++] = DirectFunctionCall1(textin, /* probin */ + values[Anum_pg_proc_probin - 1] = DirectFunctionCall1(textin, CStringGetDatum(probin)); - /* proacl will be handled below */ + /* start out with empty permissions */ + nulls[Anum_pg_proc_proacl - 1] = 'n'; rel = heap_openr(ProcedureRelationName, RowExclusiveLock); tupDesc = RelationGetDescr(rel); @@ -242,10 +246,6 @@ ProcedureCreate(const char *procedureName, else { /* Creating a new procedure */ - - /* start out with empty permissions */ - nulls[Anum_pg_proc_proacl - 1] = 'n'; - tup = heap_formtuple(tupDesc, values, nulls); simple_heap_insert(rel, tup); is_update = false; |
