On 12/07/11 13:39, Adriano dos Santos Fernandes wrote: > On 07/12/2011 07:31, Alex Peshkoff wrote: >> On 12/05/11 04:23, Geoff Worboys wrote: >>> So the power example would become: >>> >>> declare external function dPower >>> double precision by descriptor, double precision by descriptor, >>> double precision by descriptor, integer by descriptor >>> returns parameter 3 >>> returns exception 4 >>> entry_point 'power' module_name 'fbudf'; >>> >>> and the relevant part of the udf code could become: >>> FBUDF_API void power(const paramdsc* v, const paramdsc* v2, >>> paramdsc* rc, paramdsc* rce) >>> [...] >>> if (rct< 0 || rct2< 0 || !d&& d2< 0) >>> { >>> internal::setnull(rc); >>> internal::set_int_type(rce, 1); >>> return; >>> } >>> >>> Something like this could make UDFs more powerful and error >>> situations easier to deal with. >> On my mind much simpler way will be to have special interface (we talk >> about FB3 and higher, though in 2X speical entrypoint may be easily >> used) to notify engine about error condition in UDF. Something like: >> >> if (rct< 0 || rct2< 0 || !d&& d2< 0) >> { >> fb_get_master_interface()->getUdfHelper()->signalError(FB_MATH_ERROR); >> return 0.0; >> } >> >> Certainly, UdfHelper interface name is just a sample like FB_MATH_ERROR >> constant too. >> This helps avoid artificial parameters passed to UDF. >> >> > UDFs has there for what, 20 years? > > Why do we should add hacks to the new API to support them, now that we > have a replacement for it?
You are absolutely right, I have missed it. ------------------------------------------------------------------------------ Cloud Services Checklist: Pricing and Packaging Optimization This white paper is intended to serve as a reference, checklist and point of discussion for anyone considering optimizing the pricing and packaging model of a cloud services business. Read Now! http://www.accelacomm.com/jaw/sfnl/114/51491232/ Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel