SRF question

Started by Franco Bruno Borghesiover 22 years ago4 messagesgeneral
Jump to latest
#1Franco Bruno Borghesi
franco@akyasociados.com.ar

Hi everyone.

I need to create a C function that returns a row, and the type of this
row must be the same of a type that I've created using CREATE TYPE.

I've seen the function:
TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases)
but I don't understand two things:

1)I just know the name of the type, not its oid... woud it be ok if I
execute a SELECT on pg_type asking for typname to find the oid of the
type I want to return? or is there any function like
RelationNameGetTupleDesc (maybe TypeNameGetTupleDesc) that I can call
passing just the typename as a char *?

2)in case TypeGetTupleDesc is the only option, what is the second
argument?

Thanks in advance.

PS: sorry if you receive this message twice, I sent it on saturday but
it seems it never arrived :)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Franco Bruno Borghesi (#1)
Re: SRF question

Franco Bruno Borghesi <franco@akyasociados.com.ar> writes:

1)I just know the name of the type, not its oid... woud it be ok if I
execute a SELECT on pg_type asking for typname to find the oid of the
type I want to return? or is there any function like
RelationNameGetTupleDesc (maybe TypeNameGetTupleDesc) that I can call
passing just the typename as a char *?

A SELECT seems like the hard way. Look into parse_type.c for some
routines that might help. Offhand parseTypeString() is probably your
best bet.

2)in case TypeGetTupleDesc is the only option, what is the second
argument?

I believe you can just set it to NIL, since you are only interested in
composite types.

regards, tom lane

#3Franco Bruno Borghesi
franco@akyasociados.com.ar
In reply to: Tom Lane (#2)
Re: SRF question

yes, parseTypeString() seems to be the way.

I've found parseTypeString() in plpgsql.so... would it be ok to call
dlopen('plpgsql.so', ...) from my C code to access this function or is
there some other method I sould use?

thanks tom.

On Mon, 2003-09-08 at 12:02, Tom Lane wrote:

Show quoted text

Franco Bruno Borghesi <franco@akyasociados.com.ar> writes:

1)I just know the name of the type, not its oid... woud it be ok if I
execute a SELECT on pg_type asking for typname to find the oid of the
type I want to return? or is there any function like
RelationNameGetTupleDesc (maybe TypeNameGetTupleDesc) that I can call
passing just the typename as a char *?

A SELECT seems like the hard way. Look into parse_type.c for some
routines that might help. Offhand parseTypeString() is probably your
best bet.

2)in case TypeGetTupleDesc is the only option, what is the second
argument?

I believe you can just set it to NIL, since you are only interested in
composite types.

regards, tom lane

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Franco Bruno Borghesi (#3)
Re: SRF question

Franco Bruno Borghesi <franco@akyasociados.com.ar> writes:

I've found parseTypeString() in plpgsql.so... would it be ok to call
dlopen('plpgsql.so', ...) from my C code to access this function

Why would you need to do that!??! It's in the main executable.

regards, tom lane