-
Notifications
You must be signed in to change notification settings - Fork 249
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
qe: Capabilities-based size optimizations for WASM engine #4701
Conversation
WASM Size
|
CodSpeed Performance ReportMerging #4701 will not alter performanceComparing Summary
|
c54730b
to
a06391c
Compare
✅ WASM query-engine performance won't change substantially (1.014x)Full benchmark report
After changes in 8e43152 |
5e6612b
to
1eb96ff
Compare
5394ce7
to
bd67847
Compare
6e2e597
to
f241016
Compare
@@ -37,19 +37,14 @@ pub enum Compare<'a> { | |||
/// without visitor transformation in between. | |||
Raw(Box<Expression<'a>>, Cow<'a, str>, Box<Expression<'a>>), | |||
/// All json related comparators | |||
#[cfg(any(feature = "postgresql", feature = "mysql"))] |
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.
Does the Codspeed performance report here make sense @SevInf? |
query-engine/connectors/sql-query-connector/src/filter/visitor.rs
Outdated
Show resolved
Hide resolved
e467f64
to
d84aa2a
Compare
✅ to the most recent set of changes. Good job, @SevInf! |
It was not, fixed it. |
Core feature of this PR: `can_have_capability` function in `psl-core`
crate. For multi-connector builds it always returns `true` and has no
effect. If we are inside of a single connector build, however, it will
eveluate value based on the actual connector capabilities. In many
cases, this will allow optimizer to completely eliminate following code
if connector does not support specific feature.
Notable exeception to that were relation joins: for some reason,
optimizer can not eliminate those functions from SQLite bundle. So, this
is the only place in sql-query-connector where we have to introduce
conditionally compiled feature.
In order to take maximum advantage of this functionality, we have to
disable default features in `quaint` and `psl` crates and enable them
only in native engines.
Close prisma/team-orm#928
09f5b0d
to
8e43152
Compare
Core feature of this PR:
can_have_capability
function inpsl-core
crate. For multi-connector builds it always returns
true
and has noeffect. If we are inside of a single connector build, however, it will
eveluate value based on the actual connector capabilities. In many
cases, this will allow optimizer to completely eliminate following code
if connector does not support specific feature.
Notable exeception to that were relation joins: for some reason,
optimizer can not eliminate those functions from SQLite bundle. So, this
is the only place in sql-query-connector where we have to introduce
conditionally compiled feature.
In order to take maximum advantage of this functionality, we have to
disable default features in
quaint
andpsl
crates and enable themonly in native engines.
Close https://github.com/prisma/team-orm/issues/928