_row | nstrict | nstrict ----------+-----------+-------
--------- 1,1:NULL | [[null]] | MI 1,2:a | a | MI+'a' 1,3:b | a+'b' | MI+'a'+'b' 1,4:NULL | a+'b'-'a' | MI+'a'+'b'-'a' 1,5:NULL | [[null]] | MI 1,6:c | c | MI+'c' 2,1:NULL | [[null]] | MI 2,2:x | x | MI+'x' 3,1:z | z | MI+'z' (9 rows)
For now I don't understand row
1,4:NULL | a+'b'-'a' | MI+'a'+'b'-'a'
.
I am not sure why the 1st time you encounter NULL then it will call
inverse transition function
Overall, not sure about the idea of inverse transition function.
This has nothing to do with the null. The null just happens to be the third (ignoring the leading null) row and so this is the first time “preceding 1” has resulted in a row being forgotten and its value removed from the state. And it would add a new value but the transition function is strict.
A moving aggregate function adds and removes individual values from its state as the aggregate moves across the data. You provide functions to handle both.
David J.