-
Notifications
You must be signed in to change notification settings - Fork 231
do not cache query params #2803
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
8b52b53
to
06a28e8
Compare
7a61d2f
to
676e27b
Compare
Codecov ReportBase: 91.14% // Head: 91.18% // Increases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## master #2803 +/- ##
==========================================
+ Coverage 91.14% 91.18% +0.03%
==========================================
Files 267 267
Lines 25488 25512 +24
==========================================
+ Hits 23232 23262 +30
+ Misses 2256 2250 -6
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
src/commands/execution_ctx.c
Outdated
@@ -182,6 +180,7 @@ ExecutionCtx *ExecutionCtx_FromQuery | |||
// set query parameters in the execution AST | |||
AST_SetParamsParseResult(ret->ast, params_parse_result); | |||
} else { | |||
parse_result_free(params_parse_result); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See if we can have a "cleanup goto" where we would handle all clean-ups.
e18432d
to
d00a6c3
Compare
* do not cache query params * address PR comments * fix leak * fix test * convert params to SIValues * wip * delay freeing of parsed params to after the query is parsed * free parse params when freeing AST * revert changes to ast_validations.c * revert arithmetic_expression_construct changes * emit an error when param value eval fails Co-authored-by: Avi Avni <avi.avni@gmail.com>
* do not cache query params * address PR comments * fix leak * fix test * convert params to SIValues * wip * delay freeing of parsed params to after the query is parsed * free parse params when freeing AST * revert changes to ast_validations.c * revert arithmetic_expression_construct changes * emit an error when param value eval fails Co-authored-by: Avi Avni <avi.avni@gmail.com>
* Fix toInteger() and toIntegerOrNull() don't convert Booleans (#2797) * AR_TOINTEGER: add case for type T_BOOL * skip [8] toInteger() failing on invalid arguments * Update TypeConversion2.feature Co-authored-by: Avi Avni <avi.avni@gmail.com> * Fix right(), left() length validation (#2801) * Fix AR_LEFT, AR_RIGHT length validation * Test mistmatch type and fix error message * left(), right(): NULL is a valid type for lenght * Fix argument validation Co-authored-by: Avi Avni <avi.avni@gmail.com> * fix using timeout max as default when default not configured (#2808) * fix using timeout max as default when default not configured * fix * do not cache query params (#2803) * do not cache query params * address PR comments * fix leak * fix test * convert params to SIValues * wip * delay freeing of parsed params to after the query is parsed * free parse params when freeing AST * revert changes to ast_validations.c * revert arithmetic_expression_construct changes * emit an error when param value eval fails Co-authored-by: Avi Avni <avi.avni@gmail.com> * fix multi-hop traverse with name path (#2743) * Add varLen property to QGEdge * Test variable-length edge queries * Fix spacing * Fix test, remove direction * Fix test * Test zero length edge * Init varLen in QGEdge_New() * rename varLen to rangeLen * Rewrite test11_range_length_edges() * Use QGEdge_VariableLength() and QGEdge_RangeLength * Replace QGEdge_RangeLength() by QGEdge_LengthOne() * rename function Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> Co-authored-by: Avi Avni <avi.avni@gmail.com> * indegree(), outdegree() - accept array of strings (#2807) * _AR_NodeDegree() support T_ARRAY argument * Add tests * Fix argument validation * Free array in case of error detected. * Duplicate comments and use siarray.array[i] * Update AR_IN() to use SI_ArrayContainsValue() * Validate comparedNull pointer * Support only the following two signatures: * Test indegree() wrong argument number * Test wrong signature: string and list * clean * revert Co-authored-by: Avi Avni <avi.avni@gmail.com> * Add ipv6 capability (#2842) * fix heap remove item (#2827) * fix heap remove item * remove utf8 deps * add test * wip * wip * all unit tests pass * heap remove element should use pointer cmp instead of cmp cb * spaces to tabs Co-authored-by: swilly22 <roi@redislabs.com> Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> * bump version 2.10.6 * Improve edge deletion performance (#2758) * improve edge deletion * update simple timer * improve edge deletion perf * fix build * fix test * fix test * clean * address review Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> * update ramp Co-authored-by: nafraf <nafraf@users.noreply.github.com> Co-authored-by: Avi Avni <avi.avni@gmail.com> Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> Co-authored-by: Guy Korland <gkorland@gmail.com> Co-authored-by: swilly22 <roi@redislabs.com>
* do not cache query params (#2803) * do not cache query params * address PR comments * fix leak * fix test * convert params to SIValues * wip * delay freeing of parsed params to after the query is parsed * free parse params when freeing AST * revert changes to ast_validations.c * revert arithmetic_expression_construct changes * emit an error when param value eval fails Co-authored-by: Avi Avni <avi.avni@gmail.com> * fix multi-hop traverse with name path (#2743) * Add varLen property to QGEdge * Test variable-length edge queries * Fix spacing * Fix test, remove direction * Fix test * Test zero length edge * Init varLen in QGEdge_New() * rename varLen to rangeLen * Rewrite test11_range_length_edges() * Use QGEdge_VariableLength() and QGEdge_RangeLength * Replace QGEdge_RangeLength() by QGEdge_LengthOne() * rename function Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> Co-authored-by: Avi Avni <avi.avni@gmail.com> * Add ipv6 capability (#2842) * fix heap remove item (#2827) * fix heap remove item * remove utf8 deps * add test * wip * wip * all unit tests pass * heap remove element should use pointer cmp instead of cmp cb * spaces to tabs Co-authored-by: swilly22 <roi@redislabs.com> Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> * bump version 2.8.22 * update ramp * Improve edge deletion performance (#2758) * improve edge deletion * update simple timer * improve edge deletion perf * fix build * fix test * fix test * clean * address review Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> * fix build * fix build * fix test * fix * fix test * fix * fix * fix Co-authored-by: Roi Lipman <swilly22@users.noreply.github.com> Co-authored-by: Avi Avni <avi.avni@gmail.com> Co-authored-by: nafraf <nafraf@users.noreply.github.com> Co-authored-by: Guy Korland <gkorland@gmail.com> Co-authored-by: swilly22 <roi@redislabs.com>
* do not cache query params * address PR comments * fix leak * fix test * convert params to SIValues * wip * delay freeing of parsed params to after the query is parsed * free parse params when freeing AST * revert changes to ast_validations.c * revert arithmetic_expression_construct changes * emit an error when param value eval fails Co-authored-by: Avi Avni <avi.avni@gmail.com>
When an
execution context
is evicted from thequery-cache
the cachedAST
is freed this includes query parameters (if specified) these parameters are shared with the original thread who've placed the execution context in the cache in the first place, when this happens the parameters are dropped while they still might be in use causing unexpected behavior.To resolve this only the AST is cached, query parameters are simply attached to a shallow copy of the AST.