El mié, 02-07-2008 a las 08:02 +0200, Martijn van Oosterhout escribió: > On Tue, Jul 01, 2008 at 10:02:39AM -0500, Felipe de Jesús Molina Bravo wrote: > > Hi > > > > what can i do for a SRF written in C, can called as follow: > > > > select * from obtAscendencia('(11099,15685)','(6808,9621)'); > > > > I can call the function: > > select obtAscendencia('(11099,15685)','(6808,9621)'); > > I'm afraid you did not explain what exactly the problem is. Do you mean > that one or the other of the statements doesn't work? Which one, and > what is the error message? > > Have a nice day, ok... sorry the next statement: select * from obtAscendencia('(11099,15685)','(6808,9621)'); never end .... i need to kill the process assigned for my statement... and the other statement: select obtAscendencia('(11099,15685)','(6808,9621)'); is correct ... the output is: obtascendencia ---------------- (4291, 6064) (1774, 2507) (1031, 1457) (288, 407) (121, 171) (75, 106) (29, 41) (12, 17) (7, 10) (2, 3) (10 filas) and my question is : Why can not perform my function as the first statement? I suspect that my error is: r = obtPadre( &intF->izq, &intF->der ); if ( ( r->num != 1 ) && ( r->den != 2 ) ) { intF->der.num = intF->izq.num; intF->der.den = intF->izq.den; intF->izq.num = r->num; intF->izq.den = r->den; SRF_RETURN_NEXT(funcctx, (Datum)(r)); } Where "r" is type "Racional" (Rational)... thanks in advance see you