Hi,
First – good concept 😊
But, how this will work?
In every WHILE loop, engine will lock loop until next row is „fetched” and
susspend is called?
I do not know if you understand me?
What if function will do not call susspend at all or do not run while loop
properly?
Maybe this can be done simpler without while do? Assuming that function is in
WHILE .. DO .. already and every „call to function” do susspend.
Also why limiting to only one parameter?
Lets introduce:
agg_finished – is true in last row in agg grouping level
agg_i – row numer in the current grouping level
Lets assume:
Variables are „declared” only once per group level only body is called.
/* while (not agg_finished) do */
create aggregate function custom_count_plus_1000 (i integer) returns (o
integer)
as
Begin
If (agg_i<=1) then
Begin
--init vars and more
o = 0;
end;
-- here body of this function
-- do whatever you want
o= o + 1;
if (agg_finished) then
o = o + 1000;
end
Maybe you can mix this with your proposition
Regards,
Karol Bieniaszewski
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel