In current implementation, write-time joins works without any limitation or configuration. It tries to cache all relations of a model without entering a recursion loop. But this implementation isn't working efficiently as it should be. It has some obscure bugs too.
Caching should be turned of by default and should be configurable (by specifying a step size) for each relation. I've started to work on this in (rejoin) branch. Initially I've removed all caching realted features. After be able to pass all the tests (pyoko/zengine/ulakbus) I'll merge it to master. Then I will continue to work on it as a side work.
In the following model structure, only B, E and G model's data should be cached on A.
+----+ +-----+
| A | 2 | |
| +-----> | E |
+--+-+ +--+--+
| |
1 | |
| |
+--v-+ +--v---+
| B | | G |
| | | |
+--+-+ +---+--+
| |
| |
| |
+--v--+ +---v--+
| C | | |
| | | H |
+--+--+ | |
| +------+
|
+--v--+
| D |
| |
+-----+
In current implementation, write-time joins works without any limitation or configuration. It tries to cache all relations of a model without entering a recursion loop. But this implementation isn't working efficiently as it should be. It has some obscure bugs too.
Caching should be turned of by default and should be configurable (by specifying a step size) for each relation. I've started to work on this in (rejoin) branch. Initially I've removed all caching realted features. After be able to pass all the tests (pyoko/zengine/ulakbus) I'll merge it to master. Then I will continue to work on it as a side work.
In the following model structure, only B, E and G model's data should be cached on A.