OLAP-style unoptimized moving window aggregate

If _drop_value_extfn function is not supplied, this moving window sum is evaluated through this significantly less efficient than using _drop_value_extfn:

Query

select b, my_sum(a) over (partition by b rows between 1 preceding and current row) 
from t
 

Calling pattern

_start_extfn(cntxt)
_reset_extfn(cntxt)	
_next_value_extfn(cntxt, args) 		input a=1
_evaluate_extfn(cntxt, args)   		returns 1
_reset_extfn(cntxt)
_next_value_extfn(cntxt, args) 		input a=1	
_next_value_extfn(cntxt, args) 		input a=2
_evaluate_extfn(cntxt, args) 	 	 returns 3
_reset_extfn(cntxt)
_next_value_extfn(cntxt, args )		input a=2
_next_value_extfn(cntxt, args )		input a=3
_evaluate_extfn(cntxt, args) 	 	 returns 5
_reset_extfn(cntxt)
_next_value_extfn(cntxt, args) 		input a=4	
_evaluate_extfn(cntxt, args) 	 		returns 4
_reset_extfn(cntxt)
_next_value_extfn(cntxt, args) 		input a=4
_next_value_extfn(cntxt, args) 		input a=5
_evaluate_extfn(cntxt, args) 	 		returns 9
_reset_extfn(cntxt)
_next_value_extfn(cntxt, args) 		input a=5
_next_value_extfn(cntxt, args) 		input a=6
_evaluate_extfn(cntxt, args) 	 		returns 11
_finish_extfn(cntxt)

Result

b,  my_sum(a)
1,  1
1,  3
1,  5
2,  4
2,  9
2,  11