Beautiful, just what I was looking for.

Thnx,

John

> -----Original Message-----
> From: Tom Lane [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, February 15, 2005 6:31 AM
> To: Michael Fuhr
> Cc: John Hansen; pgsql-hackers@postgresql.org
> Subject: Re: [HACKERS] Schema name of function 
> 
> Michael Fuhr <[EMAIL PROTECTED]> 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
> 
> 

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to