ExecutionState currently allows reads and writes everywhere. This means that queries can write and actions can read, which breaks seminaive. Queries writing means a rule can write even while running a query, which shouldn't happen in egglog. Actions reading means that we need to run them every iteration in case they behave differently, breaking saturation.
@yihozhang and I discussed and came up with a proposed fix.
- In queries, neither reading or writing from the database is allowed unless seminaiive is disabled.
- In actions, reading is disallowed but writing is allowed.
- In global queries, reading is allowed but not writing.
- In global actions, you can do whatever you want as you can now
ExecutionState currently allows reads and writes everywhere. This means that queries can write and actions can read, which breaks seminaive. Queries writing means a rule can write even while running a query, which shouldn't happen in egglog. Actions reading means that we need to run them every iteration in case they behave differently, breaking saturation.
@yihozhang and I discussed and came up with a proposed fix.