Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #168
This PR adds a regex cache to
ProgramState
so that we ca re-use already constructed regexes while processing LIKE expressions. I didn't find anywhere else that seemed like a good fit to put an execution-time only cache like this, so let me know if there's a better spot.To best match sqlite, I added the constant mask into the
Function
instruction (this indicates whether the first argument to the function was determined to be constant at compile time), and decide whether to use the cache based on its value. I've left the value forconstant_mask
as 0 on every other kind ofFunction
instruction. That seemed to be the safest choice, as that appears to be what has been implicitly done up to this point. Happy to change that if you'd advise otherwise.