Received: from mailhost2.rdg.ac.uk (sumh2.rdg.ac.uk [134.225.16.24]) by hub.org (8.9.3/8.9.3) with ESMTP id NAA99652; Tue, 11 Apr 2000 13:10:18 -0400 (EDT) (envelope-from A.C.R.Martin@reading.ac.uk) Received: from sapc13 ([134.225.167.27] helo=sapc13.rdg.ac.uk) by mailhost2.rdg.ac.uk with esmtp (University of Reading Email Service) id {12f4B6-0002Ju-00} ; Tue, 11 Apr 2000 18:10:16 +0100 Received: from localhost (localhost [[UNIX: localhost]]) by sapc13.rdg.ac.uk (8.9.3/8.9.3) id SAA28504; Tue, 11 Apr 2000 18:09:21 +0100 From: "Andrew C.R. Martin" To: Tom Lane Subject: Re: [HACKERS] Re: Bugs: Programming Language Functions Date: Tue, 11 Apr 2000 18:04:17 +0100 X-Mailer: KMail [version 1.0.20] Content-Type: text/plain Cc: interfaces@postgreSQL.org, docs@postgreSQL.org, hackers@postgreSQL.org References: <1291.955469139@sss.pgh.pa.us> MIME-Version: 1.0 Message-Id: <00041118092100.28482@sapc13.rdg.ac.uk> Content-Transfer-Encoding: 8bit X-Archive-Number: 200004/47 On Tue, 11 Apr 2000, Tom Lane wrote: > "Andrew C.R. Martin" writes: > > My own particular problem simply pulls out an integer and a (text *) > > from a varchar. It then goes away and does some calculations based on > > these values and another external file (in fact it does a system() to > > run an external program which does these calculations). It then build > > a 'text' structure containing the result. > > Hm. I'm not too clear on why that would need to worry about either > TupleTableSlot or GetAttributeByName ... shouldn't it be a simple > function consuming a text Datum and producing another? Errrmmm, just following the instructions in the docs: Programmer's Manual, Chapter 4. Extensing SQL: Functins (page x414.htm), under the C examples. My function looks something like: text *mppfunc(TUPLE tuple) { text *attrib; int resnum; bool isnull; char my_result[400]; if(((attrib = (text *)GetAttributeByName(tuple, "substitution", &isnull)) ==NULL) || isnull) return(pg_text("Invalid1")); strncpy(newres, VARDATA(attrib), 40); resnum = (int)GetAttributeByName(tuple, "codon", &isnull); if(isnull) return(pg_text("Invalid3")); /* Do some stuff here putting a result string in my_result */ return(pg_text(my_result)); } pg_text() is a little function to put a string into a PostgreSQL text data type. Are you suggesting there is now an undocumented(?) easier way of doing this??? Best wishes, Andrew -- Dr. Andrew C.R. Martin EMail: a.c.r.martin@reading.ac.uk (work) Lecturer in Bioinformatics andrew@stagleys.demon.co.uk (home) University of Reading Tel.: +44 (0)118 987 5123x7022 Fax: +44 (0)118 931 0180