From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Michael Fuhr <mike(at)fuhr(dot)org> |
Cc: | John Hansen <john(at)geeknet(dot)com(dot)au>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Schema name of function |
Date: | 2005-02-14 19:30:37 |
Message-ID: | 426.1108409437@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Michael Fuhr <mike(at)fuhr(dot)org> writes:
> On Mon, Feb 14, 2005 at 11:11:53AM -0500, Tom Lane wrote:
>> In C, it'd be a lot easier (and faster) to do a couple of SearchSysCache
>> calls than to use SPI to get those rows.
> The following appears to work -- does it look right, aside from the
> missing error checking?
> tuple = SearchSysCache(PROCOID,
> ObjectIdGetDatum(fcinfo->flinfo->fn_oid),
> 0, 0, 0);
> nsoid = SysCacheGetAttr(PROCOID, tuple,
> Anum_pg_proc_pronamespace, &isnull);
> schemaname = get_namespace_name(nsoid);
> ReleaseSysCache(tuple);
That would work. Since pronamespace is one of the fixed non-nullable
columns of pg_proc, you don't really need to use SysCacheGetAttr: you
can just map the C struct onto the tuple and grab the field directly.
nsoid = ((Form_pg_proc) GETSTRUCT(tuple))->pronamespace;
utils/cache/lsyscache.c contains lots of examples of this sort of thing.
(get_namespace_name is one, in fact.)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2005-02-14 19:40:34 | Re: Help me recovering data |
Previous Message | Michael Fuhr | 2005-02-14 18:32:53 | Re: getting oid of function |