Hi, all, this question is aimed at any of you who have experience adding script-defined UDF support to sqlite/script bindings (regardless of the scripting language). Everyone can tap delete now :).
"i've got this friend" who has an sqlite3/script-language binding which (as of an hour or so ago) now allows sqlite UDFs to be created via script code, e.g.: myDb.createUDF('myfunc', function(a,b) { return a+b }); it also does aggregates, but i've got questions about those... Aggregates are _currently_ modeled as a single function which gets called just like normal function, but in the aggregate's "final" call the engine calls the aggregate function with no arguments (this is how the call knows it's the "final" one). The final call does any last-minute work returns whatever the accumulated value is. In pseudocode, such an aggregate callback might look like: function aggregateCallback() { if no arguments then this is the final call. Return accumulated data. else this is a "normal" call. Accumulate/calculate/whatever. Result is ignored. end } i'm not aware of any aggregates which (in normal use) take no arguments, so this "seems" kosher to me (i.e., i "don't think" the convention of passing no arguments for the final call is going to bite me). However, i'm envisioning corner cases involving resetting of the data accumulator (assuming a SUM-like aggregator). Specifically: if sqlite calls the aggregate's step() function once, and then is interrupted by an error triggered from another function in the same statement, the final() call for the aggregate will never(?) be made. i.e., the final() call cannot be reliably used as a place to initialize the aggregate before the _next_ round of calls. How are script bindings handling such situations? Where are they initializing and resetting any "accumulator data" in their aggregates? Any insights and suggestions would be appreciated. -- ----- stephan beal http://wanderinghorse.net/home/stephan/ http://gplus.to/sgbeal "Freedom is sloppy. But since tyranny's the only guaranteed byproduct of those who insist on a perfect world, freedom will have to do." -- Bigby Wolf