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

Reply via email to