From 2a2a1520918cf64f2466972eda95d31491453489 Mon Sep 17 00:00:00 2001 From: Seva D Date: Tue, 7 Jul 2026 11:34:27 +0400 Subject: [PATCH 1/2] Fix correctness bugs and optimize ORM hot paths Correctness: - connection: only nest /* */ block comments for PostgreSQL when splitting multi-statement scripts; other dialects end the comment at the first */, so a script like `/* a /* b */ SELECT 1; SELECT 2;` no longer merges into one malformed statement. Adds a `nests_block_comments` dialect flag. - prefetch: a LIMIT/OFFSET/slice on a custom m2m Prefetch queryset now applies per owner (run once per owner) instead of once globally across the whole batch, which previously starved owners outside the first window. - value.rs: a non-finite float (NaN/Infinity) inside a JSON parameter is now preserved as its textual form instead of raising, matching the infallible `value_to_json` path so both JSON binders agree. - relations: reverse-m2m managers read the prefetch cache under the reverse accessor name (related_name) instead of the forward info.name, so reverse-m2m prefetch actually uses its cache instead of silently re-querying per instance (N+1). Optimization: - models: cache the compiled statement plan per dialect so a model that alternates dialects restores a prior plan in O(1) instead of recompiling; a `_compiled_for = None` reset still invalidates every cached plan. - prefetch: custom m2m batched path gives each owner a distinct target instance (like the join path) and drops a redundant per-row generator. - queryset: skip the relation-target probe on the compile hot path when the base is a plain scalar field (relation names never land in meta.fields). Adds tests covering every new branch; ruff/ty clean. --- python/yara_orm/connection.py | 18 ++++++++--- python/yara_orm/dialects.py | 6 ++++ python/yara_orm/models.py | 61 +++++++++++++++++++++++++++++++++-- python/yara_orm/prefetch.py | 31 ++++++++++++++---- python/yara_orm/queryset.py | 7 +++- python/yara_orm/registry.py | 9 ++++-- python/yara_orm/relations.py | 24 +++++++++++--- rust/src/value.rs | 11 ++++--- tests/test_connection.py | 17 +++++++++- tests/test_dialects.py | 45 ++++++++++++++++++++++++++ tests/test_jd_json.py | 16 +++++++++ tests/test_prefetch.py | 54 +++++++++++++++++++++++++++++++ 12 files changed, 272 insertions(+), 27 deletions(-) diff --git a/python/yara_orm/connection.py b/python/yara_orm/connection.py index 4904ad4..da66c7f 100644 --- a/python/yara_orm/connection.py +++ b/python/yara_orm/connection.py @@ -280,7 +280,7 @@ async def _run_query( raise OperationalError(str(exc)) from exc -def _split_sql_statements(script: str) -> list[str]: +def _split_sql_statements(script: str, nest_block_comments: bool = False) -> list[str]: """Split a multi-statement SQL script into individual statements on ``;``. The native engine runs one command per call (prepared statement), so scripts @@ -292,6 +292,10 @@ def _split_sql_statements(script: str) -> list[str]: Args: script: The SQL script possibly containing several statements. + nest_block_comments: Whether ``/* */`` block comments nest. Only + PostgreSQL does; for every other dialect an inner ``/*`` is literal + and the comment ends at the first ``*/``. Passing ``True`` where the + engine does not nest would swallow a real ``;`` and merge statements. Returns: The non-empty statements, in order. @@ -303,7 +307,9 @@ def _split_sql_statements(script: str) -> list[str]: in_squote = in_dquote = in_line_comment = False # PostgreSQL block comments nest, so track depth rather than a boolean: the # comment ends only when the outermost ``*/`` closes. Without this, an inner - # ``*/`` is mistaken for the end and a following ``;`` wrongly splits. + # ``*/`` is mistaken for the end and a following ``;`` wrongly splits. On + # dialects that do not nest (``nest_block_comments=False``) an inner ``/*`` + # is literal and the first ``*/`` closes, so depth never exceeds 1. block_depth = 0 while i < n: ch = script[i] @@ -314,7 +320,7 @@ def _split_sql_statements(script: str) -> list[str]: in_line_comment = False i += 1 elif block_depth > 0: - if two == "/*": + if nest_block_comments and two == "/*": block_depth += 1 buf.append(two) i += 2 @@ -550,7 +556,8 @@ async def execute_script(self, script: str) -> None: Returns: None """ - for statement in _split_sql_statements(script): + nest = getattr(getattr(self, "dialect", None), "nests_block_comments", False) + for statement in _split_sql_statements(script, nest): await self.execute(statement) @@ -1500,7 +1507,8 @@ async def execute_script(self, script: str) -> None: Returns: None """ - statements = _split_sql_statements(script) + nest = resolve_dialect(self._engine.dialect).nests_block_comments + statements = _split_sql_statements(script, nest) if not statements: return # This path hands the split statements straight to the engine (no diff --git a/python/yara_orm/dialects.py b/python/yara_orm/dialects.py index bb05a0b..c44619b 100644 --- a/python/yara_orm/dialects.py +++ b/python/yara_orm/dialects.py @@ -98,6 +98,10 @@ class BaseDialect: regex_ops: dict[str, str] = {} #: Whether the backend supports the ``__search`` full-text lookup. supports_search = False + #: Whether ``/* */`` block comments nest (an inner ``/*`` opens another + #: level). Only PostgreSQL nests; every other engine ends the comment at the + #: first ``*/``. Used when splitting multi-statement scripts. + nests_block_comments = False #: Statement prefix that returns a query plan for ``QuerySet.explain``. explain_prefix = "EXPLAIN " #: SQL expression used for random ordering (``order_by("?")``). PostgreSQL @@ -1732,6 +1736,8 @@ class PostgresDialect(BaseDialect): # and case-insensitive); `__search` uses full-text via to_tsvector/tsquery. regex_ops = {"regex": "~", "iregex": "~*", "posix_regex": "~", "iposix_regex": "~*"} supports_search = True + # PostgreSQL is the only supported engine whose block comments nest. + nests_block_comments = True supports_extensions = True supports_for_update = True diff --git a/python/yara_orm/models.py b/python/yara_orm/models.py index b0364ae..0e4cd56 100644 --- a/python/yara_orm/models.py +++ b/python/yara_orm/models.py @@ -43,6 +43,36 @@ #: ``fetch_for_list``), so the caller's model type is preserved. _ModelT = TypeVar("_ModelT", bound="Model") +#: Every attribute :meth:`MetaInfo.compile` (and the ``_build_decode_plan`` it +#: calls) produces for one dialect. A compiled plan is stable per (model, +#: dialect), so these are snapshotted per dialect name and restored wholesale +#: when a model alternates dialects, instead of recompiling from scratch. This +#: list MUST stay complete: a missing attribute would keep another dialect's +#: value after a restore. ``_partial_update_cache`` is intentionally absent — it +#: is already keyed by dialect name and shared across all of them. +_COMPILED_PLAN_ATTRS = ( + "_read_decoders", + "decoders", + "decoder_names", + "active_decoders", + "auto_now_fields", + "validated_fields", + "coerced_fields", + "db_default_fields", + "_simple_lookup_cache", + "_partial_plan_cache", + "columns_sql", + "select_prefix", + "insert_fields", + "insert_returning_fields", + "insert_refresh_fields", + "insert_refresh_sql", + "insert_sql", + "update_field_list", + "update_sql", + "delete_sql", +) + class MetaInfo: """Resolved metadata for a model: table name, fields and primary key. @@ -141,6 +171,10 @@ def __init__( # keyed by the ordered selected field names, so a partial SELECT reuses # the same ``(names, active_decoders)`` split as the full-row fast path. self._partial_plan_cache: dict[tuple[str, ...], tuple[list[str], list[tuple]]] = {} + # Per-dialect compiled plans (see ``_COMPILED_PLAN_ATTRS``), keyed by + # dialect name. Lets a model that alternates dialects restore a prior + # dialect's plan instead of recompiling it every switch. + self._compiled_plans: dict[str, dict[str, Any]] = {} def partial_decode_plan(self, fields: list[Field]) -> tuple[list[str], list[tuple]]: """Return the cached ``(names, active_decoders)`` plan for a subset. @@ -303,6 +337,23 @@ def compile(self, dialect: BaseDialect) -> None: """ if self._compiled_for == dialect.name: return + if self._compiled_for is None: + # ``_compiled_for = None`` is the "field set changed, recompile" + # signal (construction, migrations). That invalidates *every* cached + # plan, not just the current dialect's, so drop them all and rebuild. + self._compiled_plans.clear() + else: + # A genuine dialect switch: the field set is unchanged, so a plan + # built for ``dialect`` earlier is still exact. Restore it verbatim + # rather than recompiling — no re-quoting columns or regenerating + # placeholders. The restored cache dicts are the same objects captured + # at build time, so entries accumulated since (partial plans, + # simple-lookup SQL) survive. + cached = self._compiled_plans.get(dialect.name) + if cached is not None: + self.__dict__.update(cached) + self._compiled_for = dialect.name + return # The field set may have changed since construction (migrations); refresh # the hydration plan so it stays in sync with the current columns. The # converters come from the dialect (``read_decoder``) so a backend can @@ -312,7 +363,9 @@ def compile(self, dialect: BaseDialect) -> None: self.decoders = [ (f.model_field_name, self._read_decoders[f.model_field_name]) for f in self.field_list ] - self._partial_plan_cache.clear() + # Fresh dict (not ``.clear()``): any prior dialect's plan snapshot holds a + # reference to its own cache, which clearing in place would corrupt. + self._partial_plan_cache = {} self._build_decode_plan() q = dialect.quote self.columns_sql = ", ".join(q(f.db_column) for f in self.field_list) @@ -382,6 +435,10 @@ def compile(self, dialect: BaseDialect) -> None: self.update_sql = None self.delete_sql = f"DELETE FROM {q(self.table)} WHERE {pk_col} = {dialect.placeholder(1)}" self._compiled_for = dialect.name + # Snapshot this dialect's plan so a later switch back restores it in O(1) + # instead of rebuilding. The dicts are captured by reference, so caches + # populated later (partial plans, simple-lookup SQL) stay visible here. + self._compiled_plans[dialect.name] = {k: getattr(self, k) for k in _COMPILED_PLAN_ATTRS} def partial_update_sql(self, dialect: BaseDialect, fields: list[Field]) -> str: """Return a cached ``UPDATE`` statement writing only ``fields`` by pk. @@ -790,7 +847,7 @@ def __new__( for rel_name, mm in {**inherited_m2m, **m2m_decls}.items(): info = M2MInfo(rel_name, mm, cls, mm.reference) m2m[rel_name] = info - setattr(cls, rel_name, M2MDescriptor(info, pk_field.model_field_name)) + setattr(cls, rel_name, M2MDescriptor(info, pk_field.model_field_name, name=rel_name)) # Abstract bases contribute their fields to subclasses but have no table # of their own, so they stay out of the registry (schema generation, diff --git a/python/yara_orm/prefetch.py b/python/yara_orm/prefetch.py index ed316f7..dab4794 100644 --- a/python/yara_orm/prefetch.py +++ b/python/yara_orm/prefetch.py @@ -6,6 +6,7 @@ from __future__ import annotations +import copy from collections.abc import Sequence from typing import TYPE_CHECKING, Any @@ -257,14 +258,30 @@ async def _prefetch_m2m( ) links = await engine.fetch_rows(link_sql, pks) owners_by_far: dict = {} - for near, far in ((row[0], row[1]) for row in links): + for near, far in links: owners_by_far.setdefault(far, []).append(near) - far_pks = list(owners_by_far) - objs = await custom_qs.filter(pk__in=far_pks) if far_pks else [] - grouped = {i.pk: [] for i in instances} - for obj in objs: - for owner_id in owners_by_far.get(obj.pk, ()): - grouped[owner_id].append(obj) + grouped: dict = {i.pk: [] for i in instances} + if custom_qs._limit is not None or custom_qs._offset is not None: + # A LIMIT/OFFSET/slice on the Prefetch queryset must apply *per + # owner* (e.g. "the 3 newest tags per book"), so run the queryset + # once per owner. A single `pk__in` over every owner's targets would + # apply the slice globally and starve owners outside the first window. + far_by_owner: dict = {} + for far, owner_ids in owners_by_far.items(): + for owner_id in owner_ids: + far_by_owner.setdefault(owner_id, []).append(far) + for owner_id, far_pks in far_by_owner.items(): + grouped[owner_id] = list(await custom_qs.filter(pk__in=far_pks)) + else: + # No slice: one batched query, then distribute the ordered rows into + # per-owner groups. A target shared by several owners gets a distinct + # instance per owner (like the join path's per-row `_from_db_row`), so + # mutating one owner's prefetched object cannot leak into another's. + far_pks = list(owners_by_far) + objs = await custom_qs.filter(pk__in=far_pks) if far_pks else [] + for obj in objs: + for n, owner_id in enumerate(owners_by_far.get(obj.pk, ())): + grouped[owner_id].append(obj if n == 0 else copy.copy(obj)) _assign(instances, name, to_attr, {i: grouped.get(i.pk, []) for i in instances}) return diff --git a/python/yara_orm/queryset.py b/python/yara_orm/queryset.py index 9437ec9..6488b12 100644 --- a/python/yara_orm/queryset.py +++ b/python/yara_orm/queryset.py @@ -789,7 +789,12 @@ def _compile_lookup( # back so the path compiles as a relation lookup. Genuine transforms on a # scalar column (`created__year`) and relation-key lookups (`tags__in`, # where `Tag` has no `in` member) are unaffected. - if op != "exact" and "__" not in base: + # + # `base in meta.fields` short-circuits the common case: relation names + # never land in `meta.fields` (only their source column does), so a base + # that is a plain scalar column cannot be the relation this fix targets — + # skip the `_relation_target` probe on that hot path. + if op != "exact" and "__" not in base and base not in meta.fields: target = self._relation_target(base) if target is not None: tmeta = target._meta diff --git a/python/yara_orm/registry.py b/python/yara_orm/registry.py index 2c2fb61..f56109e 100644 --- a/python/yara_orm/registry.py +++ b/python/yara_orm/registry.py @@ -226,7 +226,10 @@ def resolve_relations() -> None: target, related_name, M2MDescriptor( - info, target._meta.pk_field.model_field_name, reverse=True + info, + target._meta.pk_field.model_field_name, + reverse=True, + name=related_name, ), ) continue # already installed by a previous resolve pass @@ -240,6 +243,8 @@ def resolve_relations() -> None: setattr( target, related_name, - M2MDescriptor(info, target._meta.pk_field.model_field_name, reverse=True), + M2MDescriptor( + info, target._meta.pk_field.model_field_name, reverse=True, name=related_name + ), ) _RESOLVED["done"] = True diff --git a/python/yara_orm/relations.py b/python/yara_orm/relations.py index bcb9601..38bb2cc 100644 --- a/python/yara_orm/relations.py +++ b/python/yara_orm/relations.py @@ -590,13 +590,19 @@ async def _ensure(awaitable: Awaitable[list[MODEL]]) -> list[MODEL]: class M2MDescriptor: """Descriptor exposing a many-to-many relation as a manager.""" - def __init__(self, info: M2MInfo, owner_pk_attr: str, reverse: bool = False) -> None: + def __init__( + self, info: M2MInfo, owner_pk_attr: str, reverse: bool = False, name: str | None = None + ) -> None: """Store the metadata backing this many-to-many descriptor. Args: info: The many-to-many relation metadata. owner_pk_attr: The owning model's primary key attribute name. reverse: Whether this descriptor is the reverse side of the relation. + name: The attribute this descriptor is installed under. On the + reverse side this is the ``related_name`` (not ``info.name``), + and it is the key ``prefetch_related`` caches results under, so + the manager must read the same key. Defaults to ``info.name``. Returns: None @@ -604,6 +610,7 @@ def __init__(self, info: M2MInfo, owner_pk_attr: str, reverse: bool = False) -> self.info = info self.owner_pk_attr = owner_pk_attr self.reverse = reverse + self.name = name or info.name def __get__( self, instance: Model | None, owner: type[Model] | None @@ -620,7 +627,7 @@ def __get__( """ if instance is None: return self - return M2MManager(self.info, instance, self.reverse) + return M2MManager(self.info, instance, self.reverse, self.name) class _M2MMembershipSubquery: @@ -682,13 +689,19 @@ def as_sql( class M2MManager(_ChainableManager[MODEL]): """Many-to-many manager: awaitable to a list, async-iterable, mutable.""" - def __init__(self, info: M2MInfo, instance: Model, reverse: bool) -> None: + def __init__( + self, info: M2MInfo, instance: Model, reverse: bool, name: str | None = None + ) -> None: """Bind the manager to an instance and resolve the join key roles. Args: info: The many-to-many relation metadata. instance: The model instance owning the relation. reverse: Whether this manager is the reverse side of the relation. + name: The accessor attribute name (the reverse side's ``related_name`` + differs from ``info.name``); it is the ``_prefetch`` cache key a + prefetch stores under, so the manager reads the same key. Defaults + to ``info.name``. Returns: None @@ -708,7 +721,10 @@ def __init__(self, info: M2MInfo, instance: Model, reverse: bool) -> None: # The target class is registry-resolved; ``ManyToManyRelation[X]`` on # the declaring model is the static source of truth for ``MODEL``. self.target = cast("type[MODEL]", target) - self.name = info.name + # The prefetch cache key is the accessor name (reverse side: the + # ``related_name``), which differs from ``info.name`` on the reverse side; + # reading ``info.name`` there would miss the cache and re-query (N+1). + self.name = name or info.name def _sql(self, dialect: BaseDialect) -> dict[str, str]: """Return cached static SQL pieces for this side of the relation. diff --git a/rust/src/value.rs b/rust/src/value.rs index 8a9cbd7..719f998 100644 --- a/rust/src/value.rs +++ b/rust/src/value.rs @@ -213,13 +213,14 @@ fn py_to_json(ob: &Bound<'_, PyAny>) -> PyResult { } if ob.is_instance_of::() { // JSON has no representation for NaN/±Infinity; `serde_json::Value::from` - // would silently turn them into `null` (data corruption). Reject them - // explicitly, mirroring the Decimal('NaN')/Decimal('Infinity') branch. + // would silently turn them into `null` (data corruption). Preserve the + // value as its textual form ("inf"/"-inf"/"NaN") instead — this keeps + // the insert succeeding (raising would break rows that previously wrote) + // and matches `value_to_json`, so both JSON bind paths encode a + // non-finite float identically. let f = ob.extract::()?; if !f.is_finite() { - return Err(pyo3::exceptions::PyValueError::new_err( - "non-finite float (NaN/Infinity) has no JSON representation", - )); + return Ok(serde_json::Value::String(f.to_string())); } return Ok(serde_json::Value::from(f)); } diff --git a/tests/test_connection.py b/tests/test_connection.py index 353c366..16fbf44 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -223,12 +223,27 @@ def test_split_sql_statements_handles_nested_block_comments(): is one unit and only the real statement terminator splits """ script = "/* a /* b */ c; */ SELECT 1; SELECT 2;" - stmts = _split_sql_statements(script) + stmts = _split_sql_statements(script, nest_block_comments=True) assert len(stmts) == 2 assert stmts[0].endswith("SELECT 1") and stmts[0].startswith("/* a") assert stmts[1] == "SELECT 2" +def test_split_sql_statements_no_nesting_ends_comment_at_first_close(): + """ + GIVEN a non-PostgreSQL script (block comments do not nest) whose comment + contains a ``/*`` sequence followed by a real statement terminator + WHEN it is split with ``nest_block_comments=False`` (the default) + THEN the comment ends at the first ``*/``, so the following ``;`` splits and + statements are not swallowed and merged + """ + script = "/* note: see /* legacy */ SELECT 1; SELECT 2;" + stmts = _split_sql_statements(script) + assert len(stmts) == 2 + assert stmts[0].endswith("SELECT 1") and stmts[0].startswith("/* note") + assert stmts[1] == "SELECT 2" + + def test_connection_url_from_credentials_dict(): """ GIVEN a structured connection spec (credentials dict) diff --git a/tests/test_dialects.py b/tests/test_dialects.py index 10eea41..f13b246 100644 --- a/tests/test_dialects.py +++ b/tests/test_dialects.py @@ -9,6 +9,7 @@ import pytest +from yara_orm import Model, fields from yara_orm.dialects import ( BaseDialect, MariaDbDialect, @@ -586,3 +587,47 @@ def test_mssql_renames_use_sp_rename(): assert MSSQL.render_rename_constraint("t", "uq", "uq2") == [ "EXEC sp_rename 'uq', 'uq2', 'OBJECT'" ] + + +class _DlCacheModel(Model): + name = fields.CharField(max_length=50) + + class Meta: + table = "dl_cache_model" + + +def test_compile_caches_plan_per_dialect_and_restores_on_switch(): + """ + GIVEN a model compiled for one dialect, then another, then back + WHEN ``MetaInfo.compile`` is called for each + THEN each dialect's plan is cached and a switch back restores it verbatim + (placeholders match the dialect) instead of leaving the other's plan + """ + meta = _DlCacheModel._meta + meta.compile(PG) + pg_insert = meta.insert_sql + assert "$1" in pg_insert # PostgreSQL positional placeholders + + meta.compile(LITE) + assert "?" in meta.insert_sql and meta.insert_sql != pg_insert # SQLite placeholders + + meta.compile(PG) # switch back -> restored from cache + assert meta._compiled_for == "postgres" + assert meta.insert_sql == pg_insert + assert set(meta._compiled_plans) == {"postgres", "sqlite"} + + +def test_compile_reset_invalidates_all_cached_plans(): + """ + GIVEN a model with cached plans for two dialects + WHEN ``_compiled_for`` is reset to ``None`` (the field-set-changed signal) + THEN the next compile drops every cached plan and rebuilds + """ + meta = _DlCacheModel._meta + meta.compile(PG) + meta.compile(LITE) + assert set(meta._compiled_plans) == {"postgres", "sqlite"} + + meta._compiled_for = None # simulate a migration / field-set change + meta.compile(PG) + assert set(meta._compiled_plans) == {"postgres"} diff --git a/tests/test_jd_json.py b/tests/test_jd_json.py index d10ff2c..cf429d6 100644 --- a/tests/test_jd_json.py +++ b/tests/test_jd_json.py @@ -158,6 +158,22 @@ async def test_scalar_types_roundtrip_preserving_python_type(db): assert stored["nested"]["list"][2]["deep"] is True +@pytest.mark.asyncio +async def test_non_finite_float_stored_as_text_not_error(db): + """ + GIVEN a JSON document containing a non-finite float (NaN / Infinity), which + has no JSON representation + WHEN saved and read back + THEN the insert succeeds (it is not a hard error) and the value is preserved + as its textual form rather than silently dropped to null + """ + row = await JdDoc.create(data={"inf": float("inf"), "ninf": float("-inf"), "nan": float("nan")}) + stored = (await JdDoc.get(id=row.id)).data + assert stored["inf"] == "inf" + assert stored["ninf"] == "-inf" + assert stored["nan"] == "NaN" + + @pytest.mark.asyncio async def test_bool_not_confused_with_int(db): """ diff --git a/tests/test_prefetch.py b/tests/test_prefetch.py index e4ffa28..4f29b40 100644 --- a/tests/test_prefetch.py +++ b/tests/test_prefetch.py @@ -118,3 +118,57 @@ async def test_fetch_related_instance(db): fresh = await PfBook.get(id=b.id) await fresh.fetch_related("author") assert fresh.__dict__["_prefetch"]["author"].name == "Lin" + + +@pytest.mark.asyncio +async def test_prefetch_m2m_custom_queryset_limit_is_per_owner(db): + """ + GIVEN two Books each tagged with three distinct Tags + WHEN prefetching tags with Prefetch(queryset=Tag.order_by(...).limit(2)) + THEN the LIMIT applies per owner (each PfBook gets its own top two tags), + not once globally across the whole batch + """ + a = await PfAuthor.create(name="Mel") + b1 = await PfBook.create(title="One", author=a) + b2 = await PfBook.create(title="Two", author=a) + b1_tags = [await PfTag.create(name=f"a{n}") for n in range(3)] + b2_tags = [await PfTag.create(name=f"b{n}") for n in range(3)] + await b1.tags.add(*b1_tags) + await b2.tags.add(*b2_tags) + + books = ( + await PfBook.all() + .prefetch_related(Prefetch("tags", queryset=PfTag.all().order_by("-name").limit(2))) + .order_by("title") + ) + # Per-owner top-2 by descending name: b1 -> a2,a1 ; b2 -> b2,b1. + assert [t.name for t in await books[0].tags] == ["a2", "a1"] + assert [t.name for t in await books[1].tags] == ["b2", "b1"] + + +@pytest.mark.asyncio +async def test_prefetch_m2m_custom_queryset_shared_target_is_distinct_per_owner(db): + """ + GIVEN two Books sharing the same Tag, prefetched via a custom queryset with + no slice (the batched single-query path) + WHEN one owner's prefetched target instance is mutated + THEN the other owner's copy is unaffected (each owner gets its own instance, + matching the join-based prefetch path) + """ + a = await PfAuthor.create(name="Ned") + b1 = await PfBook.create(title="One", author=a) + b2 = await PfBook.create(title="Two", author=a) + shared = await PfTag.create(name="shared") + await b1.tags.add(shared) + await b2.tags.add(shared) + + books = ( + await PfBook.all() + .prefetch_related(Prefetch("tags", queryset=PfTag.all().order_by("name"))) + .order_by("title") + ) + t1 = (await books[0].tags)[0] + t2 = (await books[1].tags)[0] + assert t1 is not t2 + t1.name = "mutated" + assert t2.name == "shared" From 8153b2167ed680d3fcb44953d70705df74f62104 Mon Sep 17 00:00:00 2001 From: Seva D Date: Tue, 7 Jul 2026 11:34:44 +0400 Subject: [PATCH 2/2] benchmarks: use SQLite sync_fast_path; refresh SQLite/MariaDB numbers and plots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bench.py: run the SQLite suite with `?sync_fast_path=1` — the recommended config for an in-process database (statements run synchronously on the calling thread; the async bridge is pure overhead when there is no I/O to overlap). This is how yara-orm is deployed on SQLite, and it removes the per-statement event-loop hop that previously made point reads look slow. - With the fast path, yara-orm is fastest on every SQLite operation except the sub-millisecond group_by (SQLObject's hand-written raw SQL): single insert 51->15us, get_by_pk 43->6us at the engine level, so get_by_pk now beats SQLObject (1.1x) and Pony (2.5x) instead of trailing. - Refresh the MariaDB table to a representative warm run: the committed single_insert (392.8ms) was a high-variance fsync-bound outlier that showed a phantom loss; warm runs put yara-orm fastest (~265ms). Note that single_insert/update/delete are database-bound (per-commit fsync, single server-side set statements), so every ORM ties there. - Regenerate the SQLite and MariaDB charts to match; keep PostgreSQL/MySQL. --- README.md | 62 +++++++++++++---------- benchmarks/README.md | 79 ++++++++++++++++-------------- benchmarks/bench.py | 7 ++- benchmarks/plot_benchmarks.py | 36 +++++++------- docs/assets/benchmark-mariadb.png | Bin 61176 -> 61290 bytes docs/assets/benchmark-sqlite.png | Bin 62111 -> 64476 bytes docs/performance.md | 75 +++++++++++++++------------- 7 files changed, 144 insertions(+), 115 deletions(-) diff --git a/README.md b/README.md index e7ceac0..250ea06 100644 --- a/README.md +++ b/README.md @@ -286,40 +286,50 @@ MariaDB and uses its RETURNING dialect. Piccolo has no MySQL backend: | operation | yara-orm | tortoise | sqlalchemy | pony | django | peewee | sqlobject | ormar | |---------------|---------:|---------:|-----------:|-----:|-------:|-------:|----------:|------:| -| bulk_insert | 30.5 | 41.5 | 99.0 | 455.0 | 87.7 | 59.5 | 1257.2 | 191.2 | -| single_insert | 392.8 | 304.8 | 430.8 | 329.6 | 343.6 | 367.3 | 359.8 | 555.3 | -| fetch_all | 5.5 | 34.0 | 42.5 | 47.9 | 28.4 | 30.4 | 44.9 | 72.8 | -| count | 0.5 | 0.8 | 1.2 | 0.7 | 0.7 | 0.8 | 0.7 | 4.7 | -| group_by | 1.3 | 1.3 | 2.1 | 2.2 | 1.5 | 1.1 | 0.9 | - | -| filter | 3.2 | 17.8 | 16.0 | 24.5 | 15.5 | 14.7 | 16.9 | 31.9 | -| get_by_pk | 123.3 | 228.7 | 534.1 | 310.7 | 214.5 | 206.0 | 66.0 | 916.1 | -| update | 3.8 | 3.3 | 6.5 | 265.9 | 4.3 | 4.3 | 4.2 | 7.6 | -| delete | 3.2 | 3.2 | 3.3 | 249.9 | 3.3 | 3.0 | 2.9 | 3.6 | - -(MariaDB's `single_insert` ~390 ms is markedly faster than MySQL 8's — a lighter +| bulk_insert | 23.3 | 37.5 | 105.4 | 475.4 | 96.4 | 71.8 | 1266.5 | 209.9 | +| single_insert | 264.9 | 311.6 | 531.7 | 391.5 | 388.2 | 372.2 | 390.3 | 660.0 | +| fetch_all | 5.7 | 35.0 | 43.8 | 48.1 | 28.1 | 37.0 | 42.6 | 72.1 | +| count | 0.5 | 0.8 | 1.2 | 0.7 | 0.7 | 0.8 | 0.6 | 6.7 | +| group_by | 1.2 | 1.3 | 2.3 | 2.2 | 1.5 | 1.4 | 0.9 | - | +| filter | 3.2 | 17.5 | 16.3 | 24.8 | 15.1 | 14.7 | 17.1 | 32.6 | +| get_by_pk | 132.9 | 240.8 | 575.0 | 306.7 | 220.7 | 206.5 | 64.4 | 895.2 | +| update | 4.0 | 4.4 | 7.8 | 266.3 | 5.4 | 4.2 | 3.7 | 8.2 | +| delete | 3.0 | 3.0 | 3.6 | 249.5 | 3.6 | 3.0 | 3.0 | 4.0 | + +(`single_insert`, `update` and `delete` are near ties across every ORM here +because they're database-bound — single inserts are paced by MariaDB's +per-commit disk fsync, and `update`/`delete` are one server-side set statement +each — so there's no client-side marshaling for the Rust hot path to speed up. +MariaDB's `single_insert` ~265 ms is markedly faster than MySQL 8's — a lighter default commit path.) ### SQLite ![Yara ORM vs eight Python ORMs on SQLite — latency per operation, log scale, lower is better](docs/assets/benchmark-sqlite.png) +SQLite is in-process, so these use its recommended `sync_fast_path=1` config +(statements run synchronously on the calling thread — no I/O to overlap): + | operation | yara-orm | tortoise | sqlalchemy | pony | django | peewee | sqlobject | ormar | piccolo | |---------------|---------:|---------:|-----------:|-----:|-------:|-------:|----------:|------:|--------:| -| bulk_insert | 7.9 | 14.4 | 612.7 | 51.0 | 58.1 | 30.7 | 223.1 | 158.0 | 78.8 | -| single_insert | 32.6 | 29.3 | 240.0 | 128.3 | 139.0 | 114.7 | 139.9 | 323.2 | 259.1 | -| fetch_all | 3.4 | 39.7 | 28.8 | 51.0 | 16.3 | 12.5 | 44.9 | 54.8 | 9.1 | -| count | 0.1 | 0.3 | 0.7 | 0.2 | 0.2 | 0.1 | 0.1 | 1.7 | 0.5 | -| group_by | 0.5 | 0.8 | 1.4 | 1.5 | 0.9 | 0.7 | 0.5 | - | 1.0 | -| filter | 2.0 | 20.5 | 7.7 | 26.2 | 8.5 | 6.7 | 17.3 | 19.6 | 5.1 | -| get_by_pk | 47.4 | 87.5 | 330.9 | 30.7 | 83.6 | 77.7 | 13.3 | 501.8 | 359.5 | -| update | 0.6 | 0.5 | 1.8 | 43.1 | 1.3 | 1.2 | 1.2 | 1.6 | 1.4 | -| delete | 0.4 | 0.4 | 1.2 | 36.3 | 0.9 | 0.7 | 0.8 | 1.3 | 1.2 | - -Yara ORM wins everything throughput-shaped (fetch_all 2.7–16×, filter 2.5–13×, -bulk_insert 1.8–77×) and trails only the latency-bound point reads, where the -per-statement asyncio bridge costs tens of µs against in-process sync ORMs -(SQLObject and Pony on `get_by_pk`) — the opt-in `sqlite://...?sync_fast_path=1` -URL flag removes that bridge entirely (point queries ~7× faster). +| bulk_insert | 7.5 | 13.6 | 607.9 | 50.1 | 55.8 | 29.0 | 218.3 | 143.8 | 73.9 | +| single_insert | 15.3 | 26.9 | 234.5 | 107.0 | 120.1 | 113.5 | 124.8 | 296.7 | 240.4 | +| fetch_all | 3.4 | 38.6 | 27.1 | 51.0 | 16.4 | 12.2 | 44.2 | 52.0 | 9.2 | +| count | 0.0 | 0.2 | 0.7 | 0.2 | 0.3 | 0.1 | 0.1 | 1.6 | 0.5 | +| group_by | 0.6 | 0.7 | 1.3 | 1.4 | 0.9 | 0.6 | 0.5 | - | 1.0 | +| filter | 2.0 | 20.2 | 7.3 | 25.8 | 8.7 | 6.6 | 17.4 | 19.2 | 5.0 | +| get_by_pk | 12.5 | 79.4 | 329.6 | 31.3 | 84.6 | 75.5 | 13.3 | 484.1 | 357.2 | +| update | 0.5 | 0.5 | 1.7 | 43.0 | 1.3 | 1.2 | 1.1 | 1.7 | 1.5 | +| delete | 0.3 | 0.4 | 1.1 | 35.9 | 0.8 | 0.7 | 0.7 | 1.1 | 1.1 | + +With the fast path Yara ORM is fastest on **every** operation except the +sub-millisecond `group_by` (SQLObject's hand-written raw SQL, 0.8×) — including +the point reads it trailed on under the default async bridge (`get_by_pk` 1.1× vs +SQLObject, 2.5× vs Pony), while staying far ahead on throughput (bulk_insert +1.8–81×, fetch_all 2.7–15×, filter 2.5–13×). On the **default** async path the +per-statement bridge costs tens of µs on sequential point reads, so SQLObject's +lean sync active-record leads `get_by_pk` there; `sqlite://...?sync_fast_path=1` +removes that bridge (~7× faster point queries). Speed comes from the Rust hot path, **positional row decoding** (no per-row dict or column-name allocation), **compiled-SQL + prepared-statement caching**, and diff --git a/benchmarks/README.md b/benchmarks/README.md index 119b4a0..50048ae 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -190,50 +190,57 @@ Piccolo has no MySQL backend, so it is absent here: | operation | yara-orm | tortoise | sqlalchemy | pony | django | peewee | sqlobject | ormar | |---------------|---------:|---------:|-----------:|-----:|-------:|-------:|----------:|------:| -| bulk_insert | 30.5 | 41.5 | 99.0 | 455.0 | 87.7 | 59.5 | 1257.2 | 191.2 | -| single_insert | 392.8 | 304.8 | 430.8 | 329.6 | 343.6 | 367.3 | 359.8 | 555.3 | -| fetch_all | 5.5 | 34.0 | 42.5 | 47.9 | 28.4 | 30.4 | 44.9 | 72.8 | -| count | 0.5 | 0.8 | 1.2 | 0.7 | 0.7 | 0.8 | 0.7 | 4.7 | -| group_by | 1.3 | 1.3 | 2.1 | 2.2 | 1.5 | 1.1 | 0.9 | - | -| filter | 3.2 | 17.8 | 16.0 | 24.5 | 15.5 | 14.7 | 16.9 | 31.9 | -| get_by_pk | 123.3 | 228.7 | 534.1 | 310.7 | 214.5 | 206.0 | 66.0 | 916.1 | -| update | 3.8 | 3.3 | 6.5 | 265.9 | 4.3 | 4.3 | 4.2 | 7.6 | -| delete | 3.2 | 3.2 | 3.3 | 249.9 | 3.3 | 3.0 | 2.9 | 3.6 | +| bulk_insert | 23.3 | 37.5 | 105.4 | 475.4 | 96.4 | 71.8 | 1266.5 | 209.9 | +| single_insert | 264.9 | 311.6 | 531.7 | 391.5 | 388.2 | 372.2 | 390.3 | 660.0 | +| fetch_all | 5.7 | 35.0 | 43.8 | 48.1 | 28.1 | 37.0 | 42.6 | 72.1 | +| count | 0.5 | 0.8 | 1.2 | 0.7 | 0.7 | 0.8 | 0.6 | 6.7 | +| group_by | 1.2 | 1.3 | 2.3 | 2.2 | 1.5 | 1.4 | 0.9 | - | +| filter | 3.2 | 17.5 | 16.3 | 24.8 | 15.1 | 14.7 | 17.1 | 32.6 | +| get_by_pk | 132.9 | 240.8 | 575.0 | 306.7 | 220.7 | 206.5 | 64.4 | 895.2 | +| update | 4.0 | 4.4 | 7.8 | 266.3 | 5.4 | 4.2 | 3.7 | 8.2 | +| delete | 3.0 | 3.0 | 3.6 | 249.5 | 3.6 | 3.0 | 3.0 | 4.0 | `yara-orm` leads or ties every operation except SQLObject's leaner `get_by_pk` -(0.5×), the sub-millisecond `group_by` (SQLObject 0.8× via raw SQL), and a -statistical tie with Tortoise on `update`/`delete`. It wins the throughput ops -decisively (`fetch_all` 5.0–12.9×, `filter` 4.4–9.3×, `bulk_insert` up to 46× vs -SQLObject's row-by-row inserts). MariaDB's `single_insert` (~390 ms) is notably -faster than MySQL 8's (~630 ms) here — a lighter default commit path. +(0.5×) and the sub-millisecond `group_by` (SQLObject 0.8× via raw SQL). +`single_insert`, `update` and `delete` are near ties across every ORM because +they are **database-bound**, not client-bound: single inserts are paced by +MariaDB's per-commit disk fsync (high run-to-run variance — it swings ±40% +between runs), and `update`/`delete` are one server-side set statement each, so +there's no client-side row marshaling for the Rust hot path to accelerate. It +still wins the throughput ops decisively (`fetch_all` 4.9–12.6×, `filter` +4.6–10.2×, `bulk_insert` up to 54× vs SQLObject's row-by-row inserts). MariaDB's +`single_insert` (~265 ms) is notably faster than MySQL 8's (~630 ms) here — a +lighter default commit path. ### SQLite results -`BENCH_BACKEND=sqlite`, Python 3.12, N=5000, median of 5 (ms, lower is better): +`BENCH_BACKEND=sqlite`, Python 3.12, N=5000, median of 5 (ms, lower is better). +SQLite is in-process, so `bench.py` uses its recommended `sync_fast_path=1` +config (statements run synchronously on the calling thread — an embedded +database has no I/O to overlap, so the async bridge is pure overhead): | operation | yara-orm | tortoise | sqlalchemy | pony | django | peewee | sqlobject | ormar | piccolo | |---------------|---------:|---------:|-----------:|-----:|-------:|-------:|----------:|------:|--------:| -| bulk_insert | 7.9 | 14.4 | 612.7 | 51.0 | 58.1 | 30.7 | 223.1 | 158.0 | 78.8 | -| single_insert | 32.6 | 29.3 | 240.0 | 128.3 | 139.0 | 114.7 | 139.9 | 323.2 | 259.1 | -| fetch_all | 3.4 | 39.7 | 28.8 | 51.0 | 16.3 | 12.5 | 44.9 | 54.8 | 9.1 | -| count | 0.1 | 0.3 | 0.7 | 0.2 | 0.2 | 0.1 | 0.1 | 1.7 | 0.5 | -| group_by | 0.5 | 0.8 | 1.4 | 1.5 | 0.9 | 0.7 | 0.5 | - | 1.0 | -| filter | 2.0 | 20.5 | 7.7 | 26.2 | 8.5 | 6.7 | 17.3 | 19.6 | 5.1 | -| get_by_pk | 47.4 | 87.5 | 330.9 | 30.7 | 83.6 | 77.7 | 13.3 | 501.8 | 359.5 | -| update | 0.6 | 0.5 | 1.8 | 43.1 | 1.3 | 1.2 | 1.2 | 1.6 | 1.4 | -| delete | 0.4 | 0.4 | 1.2 | 36.3 | 0.9 | 0.7 | 0.8 | 1.3 | 1.2 | - -`yara-orm` wins the throughput-bound operations decisively (`bulk_insert` -1.8–77×, `fetch_all` 2.6–15×, `filter` 2.5–13× across the field). It trails only -on **latency-bound point reads**: in-process sync ORMs — SQLObject (`get_by_pk` -0.3×) and Pony (0.7×) — beat us there (plus the microsecond `group_by`, where -SQLObject's raw-SQL path is a hair ahead at 0.9×). The cost is the per-statement asyncio -bridge (scheduling on the runtime + waking the event loop), tens of µs a -synchronous in-process driver avoids on sequential point queries. Real workloads -rarely fire thousands of sequential point reads, and everything throughput-shaped -is far ahead. The opt-in -`sqlite://...?sync_fast_path=1` URL flag removes that bridge (point queries ~7× -faster) when those ops dominate. +| bulk_insert | 7.5 | 13.6 | 607.9 | 50.1 | 55.8 | 29.0 | 218.3 | 143.8 | 73.9 | +| single_insert | 15.3 | 26.9 | 234.5 | 107.0 | 120.1 | 113.5 | 124.8 | 296.7 | 240.4 | +| fetch_all | 3.4 | 38.6 | 27.1 | 51.0 | 16.4 | 12.2 | 44.2 | 52.0 | 9.2 | +| count | 0.0 | 0.2 | 0.7 | 0.2 | 0.3 | 0.1 | 0.1 | 1.6 | 0.5 | +| group_by | 0.6 | 0.7 | 1.3 | 1.4 | 0.9 | 0.6 | 0.5 | - | 1.0 | +| filter | 2.0 | 20.2 | 7.3 | 25.8 | 8.7 | 6.6 | 17.4 | 19.2 | 5.0 | +| get_by_pk | 12.5 | 79.4 | 329.6 | 31.3 | 84.6 | 75.5 | 13.3 | 484.1 | 357.2 | +| update | 0.5 | 0.5 | 1.7 | 43.0 | 1.3 | 1.2 | 1.1 | 1.7 | 1.5 | +| delete | 0.3 | 0.4 | 1.1 | 35.9 | 0.8 | 0.7 | 0.7 | 1.1 | 1.1 | + +`yara-orm` is fastest on **every** operation except the sub-millisecond +`group_by`, where SQLObject's hand-written raw-SQL aggregate (bypassing its ORM +entirely) edges it at 0.8×. With the fast path it wins the point reads it +trailed on under the default async bridge — `get_by_pk` **1.1× vs SQLObject** +and **2.5× vs Pony** — and stays far ahead on throughput (`bulk_insert` 1.8–81×, +`fetch_all` 2.7–15×, `filter` 2.5–13×, `single_insert` 1.8× vs Tortoise). On the +**default** async path (no fast path), the per-statement asyncio bridge costs +tens of µs on sequential point reads, so SQLObject's lean sync active-record +leads `get_by_pk` there instead; `sqlite://...?sync_fast_path=1` removes that +bridge (~7× faster point queries). ## Why `yara-orm` is fast here diff --git a/benchmarks/bench.py b/benchmarks/bench.py index 2f455dd..e0a6af7 100644 --- a/benchmarks/bench.py +++ b/benchmarks/bench.py @@ -112,7 +112,12 @@ def drop_sql(table: str) -> str: def ours_url() -> str: if BACKEND == "sqlite": - return f"sqlite://{SQLITE_DIR}/bench_ours.db" + # SQLite is in-process (no I/O to overlap), so the recommended config + # drives statements synchronously on the calling thread instead of the + # async bridge — the right choice for an embedded DB and how yara-orm is + # deployed on SQLite. The competitors' aiosqlite pays the async cost for + # no benefit here. + return f"sqlite://{SQLITE_DIR}/bench_ours.db?sync_fast_path=1" if BACKEND in ("mysql", "mariadb"): return mysql_family_url() if BACKEND == "oracle": diff --git a/benchmarks/plot_benchmarks.py b/benchmarks/plot_benchmarks.py index 779ebde..1b8cd9c 100644 --- a/benchmarks/plot_benchmarks.py +++ b/benchmarks/plot_benchmarks.py @@ -75,28 +75,28 @@ "mariadb": ( "Yara ORM vs 7 Python ORMs — MariaDB 11, 5000 rows, median of 5", { - "yara-orm": [30.5, 392.8, 5.5, 0.5, 1.3, 3.2, 123.3, 3.8, 3.2], - "tortoise": [41.5, 304.8, 34.0, 0.8, 1.3, 17.8, 228.7, 3.3, 3.2], - "sqlalchemy": [99.0, 430.8, 42.5, 1.2, 2.1, 16.0, 534.1, 6.5, 3.3], - "pony": [455.0, 329.6, 47.9, 0.7, 2.2, 24.5, 310.7, 265.9, 249.9], - "django": [87.7, 343.6, 28.4, 0.7, 1.5, 15.5, 214.5, 4.3, 3.3], - "peewee": [59.5, 367.3, 30.4, 0.8, 1.1, 14.7, 206.0, 4.3, 3.0], - "sqlobject": [1257.2, 359.8, 44.9, 0.7, 0.9, 16.9, 66.0, 4.2, 2.9], - "ormar": [191.2, 555.3, 72.8, 4.7, NA, 31.9, 916.1, 7.6, 3.6], + "yara-orm": [23.3, 264.9, 5.7, 0.5, 1.2, 3.2, 132.9, 4.0, 3.0], + "tortoise": [37.5, 311.6, 35.0, 0.8, 1.3, 17.5, 240.8, 4.4, 3.0], + "sqlalchemy": [105.4, 531.7, 43.8, 1.2, 2.3, 16.3, 575.0, 7.8, 3.6], + "pony": [475.4, 391.5, 48.1, 0.7, 2.2, 24.8, 306.7, 266.3, 249.5], + "django": [96.4, 388.2, 28.1, 0.7, 1.5, 15.1, 220.7, 5.4, 3.6], + "peewee": [71.8, 372.2, 37.0, 0.8, 1.4, 14.7, 206.5, 4.2, 3.0], + "sqlobject": [1266.5, 390.3, 42.6, 0.6, 0.9, 17.1, 64.4, 3.7, 3.0], + "ormar": [209.9, 660.0, 72.1, 6.7, NA, 32.6, 895.2, 8.2, 4.0], }, ), "sqlite": ( - "Yara ORM vs 8 Python ORMs — SQLite, 5000 rows, median of 5", + "Yara ORM vs 8 Python ORMs — SQLite (sync_fast_path), 5000 rows, median of 5", { - "yara-orm": [7.9, 32.6, 3.4, 0.1, 0.5, 2.0, 47.4, 0.6, 0.4], - "tortoise": [14.4, 29.3, 39.7, 0.3, 0.8, 20.5, 87.5, 0.5, 0.4], - "sqlalchemy": [612.7, 240.0, 28.8, 0.7, 1.4, 7.7, 330.9, 1.8, 1.2], - "pony": [51.0, 128.3, 51.0, 0.2, 1.5, 26.2, 30.7, 43.1, 36.3], - "django": [58.1, 139.0, 16.3, 0.2, 0.9, 8.5, 83.6, 1.3, 0.9], - "peewee": [30.7, 114.7, 12.5, 0.1, 0.7, 6.7, 77.7, 1.2, 0.7], - "sqlobject": [223.1, 139.9, 44.9, 0.1, 0.5, 17.3, 13.3, 1.2, 0.8], - "ormar": [158.0, 323.2, 54.8, 1.7, NA, 19.6, 501.8, 1.6, 1.3], - "piccolo": [78.8, 259.1, 9.1, 0.5, 1.0, 5.1, 359.5, 1.4, 1.2], + "yara-orm": [7.5, 15.3, 3.4, 0.04, 0.6, 2.0, 12.5, 0.5, 0.3], + "tortoise": [13.6, 26.9, 38.6, 0.2, 0.7, 20.2, 79.4, 0.5, 0.4], + "sqlalchemy": [607.9, 234.5, 27.1, 0.7, 1.3, 7.3, 329.6, 1.7, 1.1], + "pony": [50.1, 107.0, 51.0, 0.2, 1.4, 25.8, 31.3, 43.0, 35.9], + "django": [55.8, 120.1, 16.4, 0.3, 0.9, 8.7, 84.6, 1.3, 0.8], + "peewee": [29.0, 113.5, 12.2, 0.1, 0.6, 6.6, 75.5, 1.2, 0.7], + "sqlobject": [218.3, 124.8, 44.2, 0.1, 0.5, 17.4, 13.3, 1.1, 0.7], + "ormar": [143.8, 296.7, 52.0, 1.6, NA, 19.2, 484.1, 1.7, 1.1], + "piccolo": [73.9, 240.4, 9.2, 0.5, 1.0, 5.0, 357.2, 1.5, 1.1], }, ), } diff --git a/docs/assets/benchmark-mariadb.png b/docs/assets/benchmark-mariadb.png index f53877591f54e5eda1b1dc0d34984282e7c4ebf8..0ee5f5f893b3a47e473c432b6e53875cd59ce92d 100644 GIT binary patch literal 61290 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
I{!?SKXng0CpRjE7R27AuG zB?9Frdn?e_=tJ8Cs}-cbSOPuaZw~U(cJGKo zlKDT$d3x!Mb|A;Nt5^wS07xLOuz$rFgKo|L&$g<+GAAb|6T?#RPpuVW(VK(YFi?w- zB;fNZL5->J1tfQn-!Jin|K4+^_!A2)L>CoL_2%lSKKv78M=UnD&sdankUWofDanb2 zh7RE$>#iRwT{I7aoa}*S2U3>(Q@6q^HUSw8#7Gi`r1RQNNRc^w4>$&>yLLZp2Bl%_ zZ~ZI?agk!c3iZ3Z95UGlmf=~N{&5$d7_$l)lJmc0aEz&m1|WXHVBxyTY2cF|faI~T z&t`Sr4X=Ku37db*^4!7jbJJs_9(RUkdjt)!fVGE)GfacNwtsDPVZv+y&eFfB^_FIb z&Le+N>E{p`Ls+&!i0%VnG6`IW{xww1#UjF$S^Pi@{|-I;R`}cLsaw;DrvVtm_O1lS zQxG$=)L(P!taRBX+4CwT)|NSHu)4{gqlvW}rGAW+wm@0%-?TFn;rb9F!{s>HHC`ph0LX@O-h+!KWT}`Yn?mxEHUuZ})yy z@8%iF{^@~fVZMH)6~`hbB$Zuj`*$a1ZL7C{x~lrHZk=CGHV39~43?6)2oY0Li%MyT zLzRNZ=8ILwP4Hr9l0TW@GpNP=)m$;&OB{ydZUl%r^L!`+O|TAYRD&Q{zadB??n4#M zmjmqzRzre7H)`OjUBb4JahxyT60t@X@GP6>Pa_2h@{9psH3G$h{=z)yqS+4$eDYcu zKU;ka5pEOGJ0%&2sjlI(>6Y`Njj<0zB&hs!L(l}2{6fg${wD^5MC1*qe}DyY-G1XT zm33I##G8bK-_PwWNGTrxJ#vRRb%&%5`iCqhDt#bjKOcJ#%^1+1lnK3^1^`9pi0mg%w)9C zjt5H|65+)vaoG+HAv4mKB>xc<+gtpBtC5;```Lj)(@J_&nEhI1X@&m|GN(J($yo*! zzai9r{;1+dY(7#>+L%PTfjlk<$}H`~xyt9rfvR?G9ETZ3`oDmkEc zR(6>$)lRQa)VVeVlt~Rq-A3=uLKwp?gt2Z8ZCD6Nn6w2c0m(46j+?Mf!K{QxM-Px{ zH-L952@2$Vkm}WY{%rJoRcbq$q>Lq?L%g5kC{8QC{62kpwv9fUK)#(GTS6p~Kuvle z47wrn{+)NIst?H=jP4TqW{$kb7#Px9Y*G6$*J)W$kt~aLGco+VM0&tLmqPt(1RELB zDxwKI{y$JQ>Vk$Rj+m|VuDXxi4OnZZm-J)Hj_*jxe>zCu6g0FwrERb^{hr4|?c;}# zAYyrelLQnVP-z6eQ#g+d##IAO8|%xzV3U>e_Nn9cAo`z5+f8}~VAmm-Lx7ZwsPICz zCS+8&wxe^w(M>b^hz}r(^2=Y-e7LTo5e=^ZQyqbg+8>(1Gr7h)8-nuJ_(Dki!b${T zS3HKgOE;)Gf~Eg%6XgB)$A0yd@kgYxI^mDV7L{-b%1L&yWk$dCTr4`sChz|2J;}SW z_R)eH`5Ov_ZRbuQ3he{va6z8&9tw?oC`0PW0cT!;eAi>3SbmU^5m8cz3NU%dHfFqq zbS~*CTQ@pB{K+&Yw)$*~TqyX77dvjYgfVfs%zvK#fncgn<{(ZAPy59v zTgq;vKRO@vc#|6Sgl#rKNGb{cAvkDYl^@NgiRC=$mSk5Ypr^ejAW z&yk)JEqE8RUr-@9=b)`XGl)<(q{Uhdip&voJi-(eZcsz!{e?BByLO_fG6WQk7VzZ`f~x%)0+j)9 zEQQe7QK6w#`D=eL<)h#sQxGgueK z$$QjCu{|)f2y-yy!fce{nq4zJT<>7i>Hj+0?an&Zbb{;nR;B@vA&L+@@SlYY*!Ho* zqct-7A^DbC!r)V?PjomPq*%bH5vagX2m^Uje%c-OWYlqEHx#hsXejNf+b+YKuH_<$ zMK9KEB0bS3E(zk8)Xh#M==HKFpeuULe2=$F*Xx@S;j$ipHS^pezkctxv z_^kj)O^(QspU{(QFU*6q`!u?rtQjuQjYwkmV*5`HzYXtyKiL0T$Dxu#B$MnUkyrqo zv;OARj}L)%>DAl&px_dx^;pK5^Vg!ETCAOpj;U1vliL+FR4D1yq}05~Ju`xU9W)|{ zE#e0Bo0^d+hlIb2q0D*|2+6qZPx)&Bd2xp#+gU3|6T}03i8j-#VA4m->`IfQC}v;{ zxkzI5?A!SMcs@FAf ze1+9?Z4b)Nuo8tH=&$1&+8_}5qwKXH)bIqsY#_8ejG$zlo6O7w;GJg#1(^3x&Z#7< zss7^A9Qv@5g+)K2rjw7)sn}nkEBYvSHo+lHplmNuC=gy#T);S?-pdeyG+yKv^-GBJB?_9qe?m0WsqDA#MP{SNvNaE5Uu(WuXx)c`J*i5 zEY>0EWpjw~5C1W8zH8!eecf>&qoTAFV&+DmL~7^JhM%Cn=O68pUf-zSaXMZSgvK1P zUC4J}X`pc(2+e*sm{#(~Be5-Prlg`W`uE0Uk~>d*mhN9u<2ycZ3;P)Jo#({E@q#@b z74EUsppt;6W_2vGU=?`R?QMl|H zw~P0?p+x**U3DymK{W$h9siM+KLW?2Ex48?|CR0ckE#zE1m%|PO39fn@!N%om1!BK zAB)}d_CiUu`_kjDQA}>3wo|6$Ad9Agi{#1Q7h!^Oa_^wAGI~H2K zRvE_V^zQ0%WWgTO-?x&1?6tUaf|23hk#RRcVn6rav2g~JjW_<8j5GZZ5f6nHmusf?vhh2YD@qKx1MXpi^+Rs&nusT-jO!FU;>@gsjoT*d3aoWc-$1H^)Dt;(6T zP<3*+ihy?1stU-SzjiEOpMe;%+J^UBVLl2%!P$znA(`#h?u2vh3+cII5KV}z@bSRw zJA*dz8N?Wasukx!Ugr%c$)y1)~;riJ;#0x|LM`;MeCENgi`jB#rxWe}T=4An?Fc(8HeGdNig!vVY2oXo#?2v!x-|kp zpXTAbud|Nk13OYz#<|2{=m-qK^q~auj*-8A>2IzsuTBTB(!|M+qKFr)$c;ZBo{Eun zyTnTb*uNe84&Wi~`L+QbG}m7skl49@r7jVRuK4zV%1&w`?YL+(Hu1$l>HkJ+0*Q)& z5TsG$S`ED2$0)z;SEUHDMevxv3cq@-|Jw%m1pc&EQbWoVt8RJWhjmB-{O`A!47)25 zA9P~@hN0f1PT)GK<*$XQ#@_z_U<=wk-nerWxOa%aE;)8-jW z!Ih-lx&x+`?IY6soALEu;!~0UJ!1^hK<6yHma2HG*VKiCU?Sal74|v3-boJZ2Dn|! z4@q|n|Az7NQSz)23IE0mcDcdGioX-~X?cmmDCZ6=a{>wd}`cH&;VIy(x`_yg=m*maq@AIMb;E5j;33qWBM zDHQ&zeEtBE9F#_fNC_vHUX+%d-B!*jXGB3JPrLGR-~4ZK3LzbrqsAa> z`+z#oMsvOStw6#@ex|&0`p!@{Gy?V!eYJD@HHa~R%mki!t4){`B>88*2L*#!HsRFN z)PnRc7A_@m7&sAXB*{fe8bq;;hl7R=eJC;;Q8J)`ZwTDB?GWErPY#v}G!6AxMutVv zrxAqqZENu0yC2eDUx6aI5u`h#-BeYobRtc3mid%{CbF(urCWo@h7;n6+xWBKLp1GF5%8j zdQ_V-h(<&ZnN5)&5b_#8$0v#HfEClnW!uigBD) zvA^Cn8xc9H#$hB@K=>Z&BasH<2yA#p(5)2p*??m)2sP!oR@=YZ%MhOuCI)hpe)1l# zo`rVW%EJ0j`EZbU9m)?u#-#R{HOL6~4f&wV0Pq~a6>eua2XC*bt!uB0P+S9YzGJf- z>(l=G@x4>s*z)cKZLaQZb5Z;mJ2%m<=st4)C6oPQt}iy3>%;X`jN05t^`yO&r5JlU z`tAo|XoiKmdh%3??yer@0P+fEYkmu8au*^!{S0d!NuAh7gD zml-O#iV6+*Civ(u!6hOMq*SbHUGa>pQ!@hS7Rv_Y)@C@<^x(1f3K zDE<)5Il)vnLZl8DM2(Ag8uJ#lW;`M^^9x0CAo<^mVm&w=u@eB0n=Nn<5;@MGMun^u z9`)sVG)EFS#07Otw_gq8WqMLx*_sOEB!%D}npi80locXX5ptNlj^e?wY6o=ip^0-K zU~NF-3;{woqdvHVTt_D*{0cQ9Hsy^db8g(+S(egrxr`^#?A@PW9DR+osUZtfkxeyh zEh`=OL`lGi=?RtZX?_TsKm)t5u|a6Yh-Pao$rYNJ%nQioL9!)V5P=m@ zWZne*VIay0odXbzmt!5Mu(%>=cqz#TcMkY4v*qNO#|K9|`J_(R@I`1Bpx=6WJttiW^({KOArt z7kjUn47#y9O2mlb*ud>pQY%_J?Mw1X24XWhDy;y+(Y%#v&id+&`#1YJ7!JWlKwSmF z`Gbij+hvItQM#2jCFreU``tdhyo2b`kAi}6^UUdF+QJ4cK`T;N%f>( z>f0QyUlp#RC*bSy&p-9$Xaami()u4?FN=78F|QS+Pu@+p+6(D?2Jme3H^}X5niwBH z;8fbjL7D&|neXO#t4?m;RaFcI{H*$)fD$u;0;^3ooa{EDGFM?!t$2zR*TY^R46&C{ zSd;<9Pl1&>p-2PP=9UP`Sn7j0s3T}>Y)SZz>+_+w6w#MuG@JAm%k~k4OzWU&j;WwK z4pzH`C1iYlf3uEgPH*dnUjNW9FD4S88XFz=80SfN06nsUlqQ^Ff6oD=cL|Sm_{E+4 z@9rxkI=bv5LL;LDW(raM0U@_hKODiq=igb zw&0;_1pUGh@D+T;U{bw4|3h@--^sgQ#ZkSv%X5{RR=upjRZI`ZR@Qzhx;#wz<`_{9 zMbe&sD3TBuhRjc~15=Rg+nP$04wW`Gwvj02?Dowslzii4O|<>*VaI;#;=((WwQAF{X&}UQM*hh|>OHm0|NWkMK^P+J=62xMY;x z=tcd)el&2EuCR4Z$);*~9wYyJZuO+Q9TO_U9&tcY+_vS zs|k~>U;gv8JMoW+hhAH`FV?+6GWuvrbRR}3=0p)2w%-oy4LGNdS70c{b%yYZ8kc@0 z-s@upQ9R7diH2kajN@KMh#xXiD6VVY*x2kIisliiyO?^ExhXiu>oU)apm>}dF-d9HA%Cl$o}KQ@o~__ciozMKd?W82&Uh*fnF*knW;-c zkH{jVvEQ+FU2a~$pvNa>+!p(qmHWA__sQOdD8PeYDqfjo*Db%xZ#}@vn4$fkp~&(p zkD{g8!C9`sT*{WE%$_Xjfg386gPmtMeJwMVxIGS7R0Pp7E0h(!Xu!;5@Kx`#sS?DM%hYKu3a^t!VkA0^p*vNPaueq(|=|;x< zfJ`h?+Kiw_n($cX5@l;~X3tNWyq#~@`KDriP?h8^zoFo@VgOZ@4Uz%QZ2_LCZ=W^X<8iHePZ#X?wn}cE(_(MS)0x^i*q0)Udo_x6i^i9|b{2-|_TnfhGKbdT zg=fQj^7bPS)sfjxG&-jaj>g!j^zF9?|4hEj_3r=R@|P72^_yw($-Yb7-1D${lZMuV zVvx80p~dn4@f96KZ+T{*$Y1X|JnZ%&f$+=i_EX3Y_W0vtFG})Sp739^RL8F%7GAPA`7$HHeC^xz7BYd)=HMv8_P3%7td8T{;{qz?XFkc zgp;i$Wri=p`fB#7i2k~oM88LO4Ehr;v2JZWP;x_WHUV9Blq_Qa7*l{A3aLS{-1Z{j zzu#vUqbVhSC`do=fr3n6vjWPWr*g6UL=U0dvYpXdBka-&uXBC9l<9}r$l!yuTEu*> znBYI|gwp!3)(S0q**%_G4;Hum;Qf7tm7i(GtN#A%|H&fw`_g$=xQMUntsuHehpuB* zegh?&J9Bnzp>Kbkx4}?^C{fXcKXx3rqS^oBBUPjc_=E&_*`|K*sE{7;y-*PMIEg+| zhx;c4n;QU`vP7!%3{3;9KU>)q(+5Yxulw-F|7)Qm13vG9=Z&;5X#}DRuYXl}JXsGL z99-Lf`qQ%g_jaG+{~zqZ8H$V~T5EK_Z#i8NHP8S3?(_ExkKN8L><2ghy2t%~7mKbAng$H+d5ShbejI{MDmOQXPAY@g$4~iKA5`XbaLgaK0omSn=t1v+grD(=T?^B2lu?lR zSC!C7Uh@wCg5E^(tSwIfu4`fT$Pso>`ss;;r@)cn2Z4_)h;CLJu!YUae@4TC2&Akf z0yg?TIY9sx<%nby_kiRtTuhhxaY3jGB3Nrd#{8M(xw@t!nv#u=%$+g`4^`WA?Au6D z#0+I48VTrvG|+V*1#=ho#u>@6ZC4sAS}X1 zad-al&s537d{J`@sWit8PYBDc9EYJhPl0r-x^KaE86s`Tw5~sefeL5t0*dh>ML{wq z8S;}v+~Cp3-}(R=n>rbe7bIwsC@0w2oMoBMOn*QM=T}STz->Vm{LYUYvP|<((BUMP zvSnGsI-uZn&_R$10yo+D{B$=#uO(|w6!;NF9G|G>yygwla#mv=yP)yo76|KK8Q~HF zRWP2{d(G7s33E2JnR{yliRnV|7j~}Aoe0fzqdv{9PF&WOUje8l#8rwmOcN5xhc(A2@%!78TVHPfvf9{i(k0{d3 zcnF0ipez~znrlXZe1@r36;80LE+$(r*1d5)sco_c+M5UKw-Z42P-S89)?yDNr~agy zZPd{$vH4(_cN1PcApvWi*cY%2tbDIKbf(osnvd;N3;V^KX1JEeb3cs31DDq+%~Ee+ zZ^bhQcX*{XgB9vwt^MK=m&kQ_v%pDZn^$)cmQt9Dafdx}8jF;q##k_KU1k<4d;_Tk zzCb^5vx4=Ii^T~9x50Z7;HY3m!662)dThSF3$ut57B5yMo{65ukqOHvI&me68xLvT zQ5F;h=M%WNT5DaZyPC9sK#+Oek>igh@MJ;%2piq-SfMJ)b}CE0j*>+UsbPEKfOo5{*C9-Uhs9EZW18xY#3ECWGN?zLK$*`yyq8$&s} zfW-c*zR(SGY@Xk`X5dRYa_T2|F?wJ6YZ2O)zy2T}#rd>h{SjU52FhTaXs0+7I@Wfr zKy}727C-$x1#cL`Go%j530MPwcjWUTpgTwQ3Fla! z$n^2r;VD!LzM5unMc=_2pjw6!tyyKk=jThr-}mzTgO+xH!S!I{K6U`0!fOU|_2eAL zDy3%Q3GABDx+vIowWg_4K0_E0$4~H5usDD=CJ*^emZE#%`uCZ_oDp^5B_tO#0=?mV zj#RDJfWr_V)7daQ{%o(oC7Um2T8%bN=H>H0zt@e<)%ffy={uLnoee3QzK~R1jOOl) z|x-G zPK}lsWTtFfGjW9wopo%q@Wyfot=8uT3)w zIok3>m0L+0P!hh-u&yLoU|?&1b3jFoPwmO+QI?`1U>AfwdceL_zg3NFnOj?+%CNQZ zUXrUAD>jMHY^Z+H5+p8>ehhp=9KHZXRSe9*8Jf4U%ML)u@Spw2=!SQ&dS!%Qi{Ii1 zqI>p4SAzDbq|Za|_SY1Pk_8^L0X_NTG=Gt83=+}Uu<4bb;^U@Aw{qd&WL^eG>eW$e z_rg$fO_NhMIugZEkJa!X9L{Za8lxnkp`4Tk zl$QOFxV>m^*#fdB7!I18JhSU&1O8$?`1o!ZK&(^!`Zpwy^5Cfa?(NB1bRV^#n?GP` z5IZZJZ)$5F%~PXOVcHit$?Q6aqe;QS;8~Be0_ZzsZa;r;20zkbevQ*2{MGTfE{HZ(oZ}}i7@U^v^XVu8+EBUPf{1mYJ&;7X+2h+ zwj_E4og2SjQVnm3p7u<3k|5MU{*AD?X0FilMMB|`)&T)CrL`PHT}a*LY#VKT54UhN zi7hfjT`50=Zxyz>1L!gK6y_6R*tG?wiC6qhpK09DSfFdzWOsfscte>*^lutAs z6lBSB2>|K(+EtZ;3V>oqeNB3xV$h+Mc@KUmHJedyo{BX=O^fstL(|u=8Y#9C2o%%} zWZFbF>2Z*Lg>29L0N-@Mo4~e{jYCNiGV=q)&J*7S!JZvqSixG%dI~;SdewZWHA*Qj z@{Q_0an?u=lfOTnQ@zc!lKW|7c3MrXzyMDP5}?+Pf|KY$BiI5JxAbGC_owAG1^UL} zmYVy6F;GkAdLbYI4OQn7Q5WPE5rK&BA45+pYGMJetBTzp2c=Ga9$np2n;VD$X zOBu<(N9!R_EZ#tta`?pSNCQC#1N4vP0_UA4;rk9+l{Fm;d8Ed*a>do7IBVSa0tzvA zVfmpav_g+I+H40{H4TIjU$|kE{;>&T`c{$5-|xCg81ox>D|=SG+ly#sLJ9HpX46XL zN#O)iF+T6R55(8B8ru2T(n4bh2!=IuF8ZBJSnkiNRSk+1jX1FP>+NqS?rUZRn>)ud z`l+i5zZO~B+11rwkRN)xx$-lYXoJH@ZM^P_eL=!95IJ%>R&Si|xD-wsws(=gyL^m8 zC20#{%L9*H!yjA4PYiua-(9lNnUl7nPDN&jNsD*E%Q)0gZ8~w{`kTc@tFNJrwSl}# z0uT^LfP(1f_}9i!J;FY6;yz${Vf^a$|wZWMCm_{K_%cqp^obNK4tte z*{=RQOrwuDq#vUY$vJN?tEepa-NN!|ilQ8rus;U(KkVl=RyN98iw?-B?8-&*mwF>v z(Slq8@`Qe=$9J2_JjP)UW1%_iRr>0vjOtg<=qttv^6BSN+%YTCqxV^*=j{iP(sHI4 z`K>-iG@SY-nOv@aL!9BG;H_`eTM3s$-5Si6o0HkN@Z{EUAD4xYIi_yp?mv3)xL{!v z>7(7BkRJD#cK>ErvlTZn)1K&hx>F?u`xRo|E1P)7EY(f+WNTN(h5R)4z76|fK(|Ss zQ)Y=6-Ph5{jrug+ zI79>&qo1GP;Sw?BC)UYONY$4kVAI?$nJ75qv3e>~h$Z}F+c!_boH30`@ujo7E|6K} zU0DU;AbVC`?SVP7QZ}JkhVVUbla6z`pjo(4#|5B6WRAXSo^*GYt6)2GI`j&K0_Jgg z?k)T9GG+T*GZ~DVIIkOqXNC4y5HiRyn%x2s5sA+LzR6AVXIad06ka?O3ZZXs6^;(D z61x@-$J`v2iq^%ODIEPNE&jmitxihi^&932bZ|lqO9;_rM5pyFg4_;&WPm)z1Dzx`U|s^ z@kdL|NiQM>6z+>g4mSN{r)R?$-MPohG_76#`C3e&D>ObvR4m~sE#3m(LZ$hTQph)4 zT`RregpIWsVbBD*ed?#vt|uc8e9Y@;7b~HB zsDFIs{@kT&01Es24>CSm2X!4dn{#u!#_mhC0#fb z+z>X6$I_qJhsub(n)m5Obs2q<<0lBE=~qtaDw204JQ=QkszS_yz3|*_p8lhwa?GuMmwsdd2_#youB@8&Y$s(O&27DHHHTSEjaMZdg@yoemvV zR?)9HJQ$m&VCyktGeEguusDRKB)*I*?{(J{C7nT9O18^hIq(DZlBTld!0E zd#=Dxc9%O9N?Tn*C+&|qV=aJi>=CqKh>Ms-$FQg*0${VM|N zvqDTF;5~FcuWlqmRCCIIn(kUH&4uZ6S03d09gKfRb6H1>p>Py65b{?-i6j^d$;e|C zTa_hjA2%IPVhCb79`hmd)JgqXGtczm%ZVvnEvhYnT=*)?uKxOG$>Xwg!YO^kq>VCn zC%a=9zeas{_XuB6EeN|IMRtKwUEIdzn3G>l@ud`sNJ)6VN#_<9 zb&Z(YMLhgIB3JZft=XD&Iv1*!`ifVw6#Op~tdrY6v7LibDI$6~`&y7JWhVdz@`I3Z>zx3{)teh4F z8qC&ZC%&vObwQ=cG_FpZd-xLr9|>?@meFPw_cwZn%lC)hM%Wi&VV=3mg;-sv#bqLN zA5D5c5Mub=Nk`+j(I3ee`?f9Ph4OlJ_t;4I34zeNvM&`g9*3t1kBjd+PI8ug!iDH) zMta^O?|^W(^kWRs1(~uco~@syXg1i1PoWAq+;&$e{ZB%ZgyhuAw5`TG#57D4A#In_ z4|(&%2|7LuuA{g^+6V2zO&!}dE;1{KdLZXhzx;_>qnS<4BH*=$WtcrfVhOklU)9I- zS4Ga>(gY`mj_@Y*gCxO9e11l#?kJi-xp@bW@4iShPU=F=1nY;i@kcGZkptvT%9w>C z#?~rK54f(x^nKL#A&MD$qE^OuTDn4dCdmDh=HWNhU+oJZIw5q#0}~Lb+1ETF>TXTx zYFx7QR8Y3uNk(sR{o8V?^8N;0ki*-~t~6W;$GdX0c{X1PM@WrTn&4Y=7eiE2(KV;x z<3@MgQUtkcWY`$PTjInewHay30dLIPECj=D;wH33UxSnBrqb>m_Ai7kiYz zs_(VeJ^b_PI<_Zc@TOAOrBjqC1XOw}`3rgAzFiCJUL_2}_{V1Cin;;U1(((>I~UGfAR=0PmbYiH_3|8OBSb< zEfZo0Gq+qU=(oCxxi&xJ-={H5fbGoDK2La3^KykDNsC;OI zlbqu*nGF)>;Ncd`CUnVbraj@98UipvgUPSz#YqAwwPVU~*P+wRhAklD>z#n5Oe_T~A{= zN-v=q7dA9;D*IuJyoOn|#_@2x4IQ!hJ2i>-)cTSmbD_buHS`HT-IX8@IM@x@Oew}) zAuYYhYK*e_X8YuottlMrYa**(8hxJ!EV^Mf>{3&S9$q(ormE&#qqNlkhY#aq>N|P! zUfle5CmygycbP^DH|O-hlXVSOS;ZAPJ|ik4J^m_{s?$YM?1W6YGF$x}8v~`BCvckS zP7(;do>Vtd3>gO~DU(0CvD9lxCcR>M?@9L`)b_8B>^YN_2f)?vrg4+;8NEIQez_G# zKtfvV^Uho~l980g52Yw9D16fms0+oqk-7znzV-#xFpudAOt6gm9L+G7ro+XavjmY% zUg_Ce^iAz=6syv!TwT&J9ap)F<&0FxC~ey!kDtlwB`qPM;7n|JgLy+XR)ZmagPT>x z;Yz{v&GZhQk$wj4l^cfcTum|+O%FB3z_tpp|p^uJc$#R(<|M!WhxW- zyq?P3(}wJX624Ep)T->|7NO^tC{?FJQZM2W@m*?h`l)G5VpkKj^v>{6?WCBxKPyCk z&-Fngtyg(Ilzdv@mFaSrlKyvzj(pFp&ABSvTOlaNSg>f9Nb}V)vqBkqmFiu%WPUdx_k+3)zb|uM8&gqn( zNm_@;u_j|5|15`*ViL8tDlc`#JI39$Kg;EBi4~@fyEXVqzU(RAawae`Pg12UqLS2NiXT ztimfn;qNq4$XZO49((DRs^)y*v26Kn7;M}?!@72*=`x*)KDaNk?DTT>_J`hIemFMU zbvS_N3x~OkF+L_uAe>FXweqO2Y?|q-z6jgBuE)=?b|oe$8Ra!n-;pRNR@1{R$Im<5 zHM+(kbUEcS55eG3W|Esvd~dqER#0T}v$zxxS~C))y#DH_+h=|`@WkeQwlbF(egm~?@^P}CtCsLEeIkwasvN2;ED^*263c3+F=vI;kp z6^8JzT6e3j@OYV?XtVWZbqUKKEryaW)7YGw0jD`iihTFCh1Bs2dA|G&9?bnO3OY~t z2G%W<;+Q;2STb!k?5KNnAhh=@7bt^2(<&0pg9D*~|6=s}yLN5;{*7TK^{ z(j)jJMu)=wbAf4c!xehl{#$I}2F5yKd_-hGZqxP&o}x-T8Fl5H&eAztfNoAu`N(R; z2VZhg);)6gX&cC8eDc@!_S)$9Rp-yAyn8fAGmCRfLLVl`c6<1V3zZzVf6Y~Ign)M) zk*E(7fdum3M#UuC#$dWjhB{5a(q&EDpirq;$-_c=5qFenb<$GxT__h-Latg6;`J^1 zqlq)D)~y-J(vQ5udq5I*f6ua1c=|Ji9CI}X=1@r{OgXNL#$FjR3UXXP5F+qp5_s%C5A^w|V`!cCR-?`=+FZNsok#Nix}!bt!S-E#{(1E}z$k ztospTYttLW8Xru`bgPuKB}a$7dcUCI*@cQyv*S-xXv8CFUA2^~5gPNS@{2y??d zI^1P_-=EZ!b-nM?h<;EpExlDpdom?#z7yw+cEm8m*gde0IqE9>5vE?~nfwUvI&4gm zDx%p*&Z1f-V7yysW?vq3OMDh;yzbm7=l4fUEVD_YiF^Y1S7_tfP44U^`+g|%vVp-~ z>j$C^$~7T{&so>^bJr}H5w|7Gj#Ty-FrLD?h$uwatv9095AVBLC-}7`Wl6T zEjhi}ag$f4-?SIZ*)P^3*{E%>22Jdxr>f_!EJwy1(DX>3r}7snQ-`=>8Grhl%_H(@ zU{krWra5r75o6!6Sb<_=!zYkP)sXMlU@mi9v>!7;7LLKC>nf3n&s2$N52L`%ISs8l zksF-NBUL{MiO(pXlhrbl@l?Eh$0+OvBN#;3={clRVwT*GLu$qgJ?fXm0R5-5Q@L>uLQ)E?-R4uN&|pB}=(`w?Kno2`H#Q*q812 zUS{w$`>RCN(*)rQMtaO|6(5GZW?N=bwPz0-b#+qW3J<#O`F;u6VT}rHnX5a@LX=`V zE~h`LF(mp{T~DU1>JkKG(cAO!0Q$4}%Krp%FI$;CwfLw*m+8qZCN|^B*G5c6S_PgREF4JsRgeYOWSNPs&9X*I^2_p$W zb2c9~QrsY<;5<>Ru)BBK;CiBB8{16929)>e6@mF&C0u78p=Vd+ie zgIOA+mzmpSCFGpat#qA6Z+mlQbw0<{^|(RW!fEG;k)u2{bNW%7jtg-9neI`>-OCrm z!|z}?aG&M^v#B*JNyV@to;U_+4HjMYPBR01#oYiil{!zO$i_zLxP9b7@=wzEt#IS< znvMO!2J9a-ACm6j+7;49_tZhsY3}l5f=qZap!#(q*0}1JJ+@14^+RF^-WBE^PO*!k zc$0&Zh5x4h;xceC)XTz)BdTq__=g8L39z2UzC#5~53(W(m;JlKsz5tpNOtm0xhi`= zmgt%)raYQ)oFdw%U$zGhB|)0!das`epDP*T!F-XNQm%dMk-%-lMDWz^mlC4va z*W@0^&eL@kPi3_~9AW`7Nj7h82SPyrsVL~)-Qjuqgopt{tEjtFpMjsb(D}--cHjQ~ zJ$%_s5tE^-kwXb=)khO{IUfk>x_Y3+m`5*K)i_aQ(B%r>ITRuhTMqTA%tukg07F@t z^=!il8Y=;pxVHThwYEK)W`Q+}KfMoe=XTQZXx@``NPaQ2Vu&fP>L303v&kzghHAZ; z`&zS^ON#&7a^nVRNAWUFX@BkpD1}fa;E0F#>VwCH)m$|pcP~j(8<9H3bQw|0`JFJr zTl?e&oWNxdzZ0L5k@ARZq4MNLF8a=S#QhxJem`{YO65IDum%k!YoN?t!j^c9 zV$f*O%xuI`JpFae7BEj)t}1oQw3KF~%h_g2YPXqYq<%Wl>xo;V$=VWi>IFw%iK2zM z`D5znY?s&c&zEB4D4W|A6e9*+Ur4thq|CVV#C@s1dvXn^UH>@^aMV9+WOR9zNUx3e z^dw{1MN?^~q*ajIJai>H#;a;;s12Z)?Ik|0EUD^F+d$1y&5v`&%kR zH3v)v=*Emifnu+PBn=&t@DJcd(Ia#MN_oA0R92MdL9O%`tHV$5ZN9ys!MIc^z}1C- zLoT3_ZwcR1Ubnh3=4ZR7KYRLKO}qr|HAWuw4C8cF+Qr-em#>~Gru^b{st-XJnK&g5Dc?372mh@CSEtd6_VsvqYNH(93sX!Q_!HFm@NIFTEIR3 z@H2Kb4r!_I&`!g$=}~SE{hZUmmJ(|#g`6A}!7sWfUfbHXslA&J+9f`qQ#?ZGKh`%C z<@7{aY`#8%4ECodiFRU3tTQ32`O_moh_-1j%P#Dc?hd(3#}^uKpg@#y!;uGf^y*{v@tq$dM>+Oj{*oYr6JB%_4W zOBgV@F`E8XIr`c3M@B@x%{i&Z+1-ieu8Hn5-Kqrz4(Y5XRMDif=YjBWwt~GYD08_< z=Oho8wsH)qJ3^|dKfBg2r7N3|%Ou-vgi)oC@NRGt)8LQl*`S=N=EhTAZ8NI0R~W5Z z=%lL#cDdV&QVBm*J-=LVF*KQpbc440-v0L{%LAsi;}AHjg!F4h=bNI6xlpFc$Yy>( z_#p^(isF;+-x|p1`_5zR5k9a_$0DsTv8-#t6|%ubtXcV6u#xe$~N{kVMvMphf540j%c~ICJ=d=A*kI`{1gH;fMD2H$U<->{jJB zx@?ga!@Z^Kq|WRkM%DsdKCNX+fdXC$z}a?0x7#5QFR8TgaTmp6w()_~X5%#tjHYtL z336ZRGZIU1B4sLvFl2u*O8E)`F6A-Xh5oy4W8}V9lv511m@=+?Ue1(eS=9`C%ytA% z`iec3Kfkm|At%|eQ$wjHi0&+r(KDc15ClT}&Gygk(hyw2bf2d)mu@b`lBHwwtA>vo zKnQl#;6=TMlpLc0 zcfeWN)RC=Sf~Ik+x&%N;#Pu3jAcGk5RQ$Sohl1T%HbDn^6YN&^P|!~ng!Bx9FwSci6-SULeeLtv5oSosl)H0^HjWyEsm$1_6 zxxRshMR)ocRqdwgm~kLq&wdoYh^DvJfz;$!BOxfxoT!7JIQD1`12IN~#&tXyx-uIJ zyZG7HoOOhAYwh`WT8@p5g64p|y~G-1SoyS(U3X&`R~Wk=cDt>%U2lFB11+yn+gH{W zM%y9C>(1ePC(BdsiHZbYP%*ZXI>)d!6`!gICY45`WQs_g5m9YB=@YK#)WLyLrw1?jur%3{g@;fy*$(UBA9MKF03RMhl;whpZhERJvEtg4!(V zv3AC5_G6_X$t`0c%JAMh9DjhSqA}bJ1V7h`2AdS6`hA;adD=({lr&~8I!SL<#R=UC z%EW2Dy9#T*4z!iWff=Z}i87G`UP)ztrxJ9y{@NHhoqw`q%4=wrBMGdgX*9jVbRSpF z6_f5x(Dsrd(JeE}5}B^U+ndm(zUp@V0?)fNCSGOu@g zf|RKa*jcJ^2+P~z4hgHX*aUIdslppWqG-_kFgU!4z@AHhbS;%4LIcV zamM@Me0jc{PkZd)8m#q?Ip-a}>$-tC9iggv+H)2;;9B+`e)TP3h?8{=9w+r*Y_}B> zARnp&!0<`|NnBdQ2SA9uHu-X+OaJcCow^ACm`FR^HJ8zt_sD5A-`dQ&D4sI;OYt)y zi(a!zoBOSPTpz?fcx;02FD3G*x)${jd}kRDz2(q}sys>%PECwp24eMX?%C`1r~70C zGYY>NSp;0w0veYhXeVKBv#l?F&DsQ;$KJ+%L6<2M{H(U|)^o^q$7rVL#Ak#rFP?A1 zlpIIi8!VmvPa0c{wK@}V^u>ucboDY8x*I_SsJBpthNV;)iPWhwXib(}mH*hnpM1RO!)&Gg$O|+u zdP3%6Q}{`%szvtIBwa*t2SdN2JWEG8x+h@x%Vo)PV8K<3Xg4U;AFJOT{7K_?6rph& zKv3t+e~m`2=`P3OU@tgrbIsqtYyNAkw>-SRV!ir$4HJ0JqCC-sh}hAIVA(Rd)KCnQ z;Vl9!0rRFyDZ_L9mrGU;z(~_(_bK9>>8TY>b3T=PZK(D?Jdx@wv>h3{Qy^u1>>Wb6 z*!SVAu__ybvf+t!F%o9ef*ZSl0p`o@k+M3{oc_4l?Xa*3rRcDM!*50%<7%qFr@r3} zs(xR^p!F#6^BzHiOEa#lL0E6?oYt}iDlP4WIXM+Jfepd)aag7XWCU}EoaX1ak zN}H^7&KiDy32}fyI0sPb%eKYa#hFx0Yf1&5prt}D{-Ik#!SLQ9d{;1F&Dpe7NHPybH`k^d7ruvvNO|6fJFXyofRWoYcu=uEL%ef)~1l{5v-t z93qfzHx_dmhX+jWhx*=WT|F-Glrkez(gNPxU+~Enn8IpeK4;rBUL0>o*CF?e1< zrD{GW{?z?*FjggW-52)n@gitn#(K#}ai=-t+@d z`})sL2o*Ek;fpaMAK_|65{>-HRz8!yf;;T+7PfEahVF6{MZ~%toGp~qj?y>6ZHH_Q zXnDUgS+>O|f=IYF6QMnvr#RySDgSXBIR9&ri-2zg0#+3xcqDt^5zq|XhM>ormM@na zMw0Wb_B4A7*TRNTz5Lmnoqr#mMwE1FXwM=;p2kiQ#}D^#dr|} z?Qg|E(cHNGrO5{l2^TJb(C7hNK$9icDl#%}iBGPSzOGCsfwvG0&G}NA&8yxWWAihv z<8OVB=Q86EpU|Emmj?@OOQ9Kica6BA!Uq9bIcfq~{|yKo6YLhU`47Zq1d zPlF>6h37)4QS1bwVH4nBLw25Qh?7TgRKt_12ykyI1XtZgDKsXLaj^=92Q@4XxFsyH zn+I+~Si?=lDpla_1!rW~)NMhXFEjve-b2lJq$4>l1=JyEYTR0qDhy!`y>WEBkA8HI zdzjg0z)3C3SCBv@Zng@pQW?Yuw=I@ zt0eook%{~0=!$S9J$c@Z3Q)yMXkbPyj5V(VR+}CTZm^X8GKgkcEMrf<|MBeI-6O6i z(X4B9{O#(2T2Lt3lf@xA(3Lot>S6A7XR7~vdGt3UKkrwDu!}II5C#4YJbF&>z+v0` z2{4mfq@0N|TuV5pL^bYG(36hN6Jkg8H1qP|ai95Rpm>M`!Wr`lcV4DuA17pHQgK;} z$dP!MwRvciffGu2y=h4)nuvVppUgQIPg)CWCA57_3 z&VWc-#G55rqM_d*|K)fl&We1k*QPtE(hW8pO3{z2x;q^~;@g($(Ldc@Hu)5hY#WQE zz<=jiJ%RfUL4=|E4un6)P-KZrG{!A;UJWJ08(YU3cnyFo)B!pTgg3CzoBSw~gXn46 zt?sU(u)s)-o(iuUR83vO6d(az0x}5S@#sLQMN>Ut-It#AxC75RDA6``pvsSB0VI77 z6|3O@6F+bg=!Yo@6PaxOm2%!&K~RBx+1i-`_Z(?0s1TwKk^ITWr;HxJYCcnlxTZQV z9%qE=V_ARY7jJl1*To!q1os_a%jIpX)w-r<5~y*++=9+3CYbT6;Aun4u=Wk5X#Fz? z7ca26aFL5LoW8i+WTS=HcADLIBjx%b(C21u6)~prKZP5}>llTG}J1))* z084|AS#}FO?wC;Tg}6Sj3ZY`kYoW=!;j=ka2Uh_))`ZI#7flmg8kzPv&@8q)@&$@n z;GCg4NsW91s1)b~ZIvPza`CLX)6>8|gf5uCk3HU48zySZyAIb`-=H1SZsq^QkLa+a zN4I+H_jq1|yU1zarfk{6?@3fVs^L`dc&VK$mM``r=?P++Ur&Letp_B#lIqCplWIv8 zMwu6-STW}3=$UlSj}SvpdlZ5jpLVUuIY@{@voyYyXj7|%2rJqK+y}LCgtcnPLe%#) z7?F2%*i8In9prpQ3(JfUnJ;T{*C zy6#KkH*X+tX*zoYuA;#JTiT*&1@F8qy@^(fHt zg5#uURdDKdxq=q5GJcnXgb&wbE+(=V{wY~hX;o++1p3aB)X7bUDIuz<%IyalS1b|25Zq&U2>l0=&>Un>y@v=c3 zgX-v=Z%u}D*WwXrvV0EvN$+wkQjAj1q=w|tYn+Pm2nNEP=kK3ALLjX_kEJ1K$YjTQ z>*~FS9)nd^5~XrL51zI7S+$Qs9I|Lj|C(eUmL9PWHtCs|oHPR#Jl>(%YJrCOpWTyc~$0ahD z%8>XvGwH}F)lP^wZo`Qe1Y})i-!>gnri3<30jWh+!x2TJ4N8H+*L-eZ)AY{1j!yBv5o*f`W4$2>HXJN zAR66AkvB)XqQ=9@LT+^u*5d1TIb2y6pXZmIZ}%ewhU z_$USm6_S1yLdEt0bcrxplD+yO-dF$i{k+<=|E5>J^)pV6=wIIl9}#K$kLlO{?PvYx zWc2^{GyYQs2LHP|k8BTMW11T4l;1l#>Mbo7^FeyX`9${9S72=s^3VE^P{ATs5^mxU zfq7iPyx9}+Tc)DzRchOy=FjCu(EAuPPpQ#%6DrdPIRHDjjnbb613FUqDhVN&gr|yR z%?Cj!V(lViAiK<8*m#Zn39)p9=+9PPUb!(@EEiey}KdRKQVgH0P8Y09Rc%2irJ zRDqP&a*YySwDfY)E%an;uP?K~5MYX%1w{wZiPBB6y;}c_Yo&9gcQw-jVB57oLVR7x zlFnj>glz2(#U9psTb^DU7V~gqK^jg`1X|>vz1{5xV6{|~rK93-Hyg0ijXe{noFwg* z`#_Axls@TslN@cVvEs-ACU@&lhV}B(#N*okX*N`T^9rSw!KF~+1 zItFp;wSK^VYf)>H^e7t>sxiHL-3bEMYl}_!p^ylkM>9Xi&;a$Ra-=CM1g0Vg${g

-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 XoZ6;@JC}n-1gfiCy6{TLJmCKUMD=U( literal 61176 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

-P{T>%ZHfP>W}SE?Vt_Ce|*+6TR?3}v%EN~pPdk$rpQe8WIBM1qvS)#D3q}W zL5rP}{eXHJuvnIgQEbl}xFF~d_}4#;TmPPH+OC+Ec=RZe-^nHTsdB;gY>HO=zx+|( z`uFhNi~sk_b4b-k>S=q&=@Y*%b?QWv#sA9}e)CR}N&Ny+#{JmV?N-f2=WvqW0+7=8 zL4(e5<7-bQ_Nw&OO}6AAAi?r}11#qr5br*a7L);BODlo^4>r(}>>hy@A;c z+8iKBs7`J2==6QyykZVikv=46hPd6JLa#A~0UMWynUF4F^A(XU*AR3qhoEcDTL(q<@4cNnD;yPP2Qj>?}h2Xl{zIY zB&?|dn_CqGaZhRv|va9v>5pi68`a*Umk^?6BX;)RcG7CjjS|v&XraNUI z1l8AlfI~!36FN7dTyn4{`nWJq*v7Ad1(^2`Q~g3ppHc8@z?Kmv`%Irv;#VVE_B|k< z$%1A<@|}AOoOZ7?u4Lk4Td3r?KiBPLo~T0-gzEsS6#Yn*`8f}LPt9yzGp~PkY~wp9 zE5}SmkP;OQ<`Sa2W*jJBlx$t*JgvR_BgvAvy3OT;4rVtvdmgUbhHLq`!qW1sCv{zM0jtP zO9DcpTDgXR37*?nT0Fp(@fXEtHasH)*Sd_NIx#cOu{b>|)aBI5 zF|p6XJ#m=KFt3rO&?A!zv>!~Ayjuk~x3eQ9{XkXHK4bhlOiq$A=D0m5yzCoDPSl%* z?ns^wC#o$$L^pEsRj)0M=uh3u^ADmFN88mXTq~>G?_pnz03<$yFbD)f`DS@g~BMEI+C-w>vtIOlywV`%7QG zAPSGpKnsYR#pX<_>Q zoEHu&h^if&2jQbC8VNO4Ne_x%auI!&LFZ`t7yt^1(lcm{cLr2nl zy8(_O4%m#=Csdu`ByM>Renbu+0&@rE;Bx2u!gGLhs_@l*2t^knI0(;y+=ig#VU!-Y zI~w*;k?cMXgn?NWedj|PQ0#l>`3oEqAa!R$a(?^w@o`h*8%VIix(GOp#<&egjP1h5 zp(46&2&=Q`SbEK}!5vmKE!i-^eSt+@eC>x1ggjOHpd;-YY#B!*Kmyuli!3o?Z8;C_ z8t1!PIFx<}kuw@B1HFK8LNs|jrV_;qv69|`FhJIPn?b=V8R$Wnqa+<(a^?`I1*Nf8 z?DZ^;`nV#%ohSx5iG&Hg_^u>!#REol05Vxv-rYnxu0>Z6tgITtz%B43E@UUT&C3|V z`Ig$Tcm?jD531u_Mn*h0UVa14gN@)74BC9_(o)+eWodz2kWXRGOHH9j6MG&RLbr@Y zV3DWPj>9LhLYp54JJ=D_2F@CrKH@ucTHy*DpEnJ`7m?mUN5z(NeFh%mpv8WuF~;r5 zyW`*>^tlpuRxSFuCOlX~pg?C6zRzC3aMxFv)Ue|@)Z+FN{Bh!>9=b0et1C#2;3qia zE|ssr>BY7rWO1|`7#VfZ1+enhaix~H0b%2Vg7S`fSR{HNX^4N5wFpCE3x!QdSiYZM zct!(kb(+86QCuBQ?dKr`Y<%@}p(NAdr@M$1s6u5$9v*6`GdWQBlRZA;V2_q}i!qpG z+bf?u8Ag$_TpIVer@Qw;11|m&dhP)y#l{) z9;Ji{yL`7dQY&)~USlZZJ-a?d~1oQpmadGd#h15K!@SjyKH&B~&XR zfzsdZI`bD<$awdmn3|oZP}+7UMcA4+7xt; zNj*ma_6sdb)>2uELKg)ov~a7gu+Osq!*GlCt#8|K3I%NJl@BnNf zm%;~;Ue1yzWD<>hQR zHXIn|fhKW+Uhe0`2myazoF@N;m}jcDoQ-0PmpYy!%TIZngdE%=<&R4lyV4Fb$P;(; z@;YZ(NXB*PYVNNaJIPDDRNiKKG})p2N3JUKkQ!Az;ouzAv26FximHyexr|9mrE+Dc`(luG!R4zf3+%_q<4(7kAx~wmK^e=jQ zW(4XH`@{PrFQmpo{Z9Q5kAzW7*=qtG3eIa6a7P5DX@ak>B*{L|gArS5oF+@V3=Oyh z1eih_UOkIbBH+r*Pu2@P8r{0yU}#vYS-d%_(RidS#)EtDTO1`XP&70$0e%ql_pv0 z<>iB-TlPeL31!jjl#(N_I{c!wNWY@~ORFsAa^4F4T`OU7yWlkiui(8j?8*=umQKW$ zkt4NAW!uzRCNuFW@u})Q`FAAX$2Q%EiU8S3wI|Gmui_u&$$o)zneB@9M~#Ge@7JuP z3-8hhsd$N>Xfl3HDxkhAL)zFs46%YWiOy0~x&zGVvZMs>iEBGQ@VySbC)o6c&Zd}2 z*G1VhQc`4Es8U(+nI69e3)g_oK&Mal#vUW(=uchAgsi5I-?sSJ4(PCDYGOt*mGNj& zD~g$urY9D=<=0q^??9N|h}xq?2whkwPEY;*DJ8nEDf>$@iAr*Sv%cl5R;qB4JI*{C zyFmJ^Z9%a{LUj;p%BT590KH zT{Q6ViJ3Yb^UYDzY#yG5x)oeP3V#W0DYKLA{AI?ddd}b{L^h9J$rtV+P0z^-WtES=9vebW{GKqL z`*7UM)pnnwUHzp~CJhccV!K$n)wDBvX;(6_YY+N@Ma#IyA)naK)d>!lG_350+`5P^ z+D|t>d%|Z~3n@zR_zCVKR=QJcUdHA6vZJ|{+T9!qwiXE)&=O<}*qD?#3_>$nW%1Q`fDmacM5v6*&f;DVOBaTQ~Q8{HG8v?L-LpZ#}~XRgGO$toc>dU zmRt}Qq4p@x;DKOcm2ny=BYOr)9w@f~w2GO|ESG1E2OFO^e!t6O=}LmU10hBpYOWQ^ zslxJ-#&F5=sRTEMiDMa~>JB z5!832$@^u>@148X=NNoMpX8Wm%DI4IFM0DiWbTX&W}@+xf5Xnn|2Y!tJ9hH%(P#3s zDrfo2G^C|o-D_J{wh5GwOASvAqcJ{`thzw{+LrUIRtc*Bfp=J~`rgYcCQ2PVWho~} z-Q;KN2SG`vKiqT7|IQ2G7Mw?JUrW`#@e)J^@Ae9$GEE@B~qljld~OO_t0X z&$^V1lkg6bwidjk*ze^iu5ObTw3jUo$MzFV6rwaY?3}+RSO%y~BzxKM?!BZp<=bRCHO7=>jwr@vP(cOme@d8pUK30>vU4OqoQLxfx;tmFf4Gopt&`Mt`3N zpDhRM>r@)LjsbgV^gWg^pwbcAr|uvZN_{GCgnA;D@RJQ}U-r4Cg|paIy&e=(5hMK($cfEGq0M31b-ElJCi1y#M^>h@QDkXa@(Uds48nj9Kuux z!3fo+!e(lmjSo7ql*^3iUC7^jw_6^{faWc~IDvf}L+(6Za#cU3mac!=^Tol?tl_E9d}%L3kaDUG9&d|>L^d>r#_PZrc5M@ zbpS3)g#q7zn4L*rw0YldS3O0(xQ8WEALy{>KfmwaXP_K4l>7#tMv(8lVO7vk4c!OH zuWzUNE2okXv~~$(lS~JMUkRhYIEn4XP8o?(XE&e$1hfYhYcl%HS`P8a6 ztH!$(G{&FkHtgCc+-)xWYW z8HL|CpOm|=e|LX}@t)lc3|tc^;)+PPnBJH=l_|iHDt(f|qJ5vr%p*d~0QH)+;9z)0 zq}$3^?x#FL(+#j+*5C{+g3e@3FyCy&7j8_%?Pt+>BHy@>;-s~w`J^y@Z@*8J7VNdw z)+r<;vU!SO32lpC<*ik`FIuwdUd37oOb($;$SPEIAy{yn2TpRiBp(`xg$TlXJ+*SW zK!u$3W79HZRf(wkJ+-r|mr_>qRke+t9~CfcZW?o$e5m!l_FXMIdu!pP+^Dm3C8xB_Xk2 zL4#=R-h6%8VGP&)&*>ilFQybS^l^d_4vVMHGl?u!dEhLnvUQ4V)#C4-E1}jot1KJ! zCNU1{o`og}^wH-juRuOB^Np!K9@Ce&AUXFrx=|jj8y9-c5JlE|rDkq0*0;7PR-{(A z-b%%_Yw#8-7^{*~+qXm>JDt;ew1@;4_r^9{8~Ma*9BJF0j1n$aN}d^0Zvtb3H2TXw zKVQw$5%0RkBh~okB&kS{^u?i`_J#@7XsjoeD|5fVRs<=T$8eGKbeu3!O&6RbM33{n>$Hnd^hzO21q@lw#`Y8`H%w zC4+D0+jGHsHdnFdW(b%ZYtQzD8IIkF2uYe+nl#W;c65&UN@c5@6F44WV%+u}eC~h}7dDnwS&mejJSy+RdzYmU0?K{*s9~kW_mQ0Bm zc&`{7@!3oJqiiV1s|BD*#Xb-Ro&Gxef`vj$OWwp}5%1X%g6Tl#%Mmx;_l+f*DG;N>RqGfR~yfyKs_Con$P((wnm``Is>dU!9yPTGEVw{P@l;e3y5a^ty>(Iswrbly=^omwP^J7F<^pOM%61elb`23f4D~NgQ*I`LRw63aXWTc($Ux;@O4Eg;$xriv)$=$)NmjD=FfY z?3${ymyEf(YTn6kUitpS6aJ564G&*Rbr5F1*qD8TvHi|eJWkmdEA5aG+say?$m#F5 zXHPZOK{`Q8#h1dBfp5X!?IkI}lhODzHu*~7D-Im>@fXT9*gaEx4Xh?Fo3P^tB~PSf}?@dch61kr+re8xqPx+!OJI+u2;XGhm|owt1m+F zsn;u9p z)G9KM2AMUU=ncJgyAA|_(WJElgxXLnPRQ#s_~%G;S#m!Kq2li%`wBTQ>4jAZc>KF9 z9+8?fJP$Zl^b(F%M!8TPyvw!nrGH&dI3qxDha;b7L8W0PE}VeHnl>Joio2`%XXME5 z(lMz=m0t-0vGDN?FUw$PshJB;G=5+TvueF2n#|6|G@}W@@I;G-Bi{VQSKQ|TC(xL` zrR>^b+Hg5^H<4hUPQ*gpUh`CYy!v%hc|}&Xn8dTioMlm)Iw87x6wttN(7$#OF* zRhA{^o{SLF)9+MTNH1m`qsqqYLr7|Cc1Sao_N`q+<2R|a`o|;257;ScX_qpnQhAhR zbQkpGFqBjjiVAmq94uD$6+WsbFyGIld@$1eprkW9UVZKH(1?%5O7W^1doGyg9TNLx zkm2#VfTq`g-9Zjd3TIH_+r%kh>g_?-d)p$*d#U)IG!^@TCSXKH7tc7-s#7W&bAOcP z-IuVWD)=mo)}IHrawuhQW4_HK*NdbYkJ|qC^wAIcO9aSgQk2`Y_8dzMcuh_U5D`u% z;l)WxxC8#-3K;}X?-`S`$uIqd@}3J44BJ})iE)&l>qEf1#v#+iTjO^^SA^P?9G3vT zOAp`o{G}4P_qa*NzZSSKLS z#$LHAW4?R}wbDKs*Z4unFN0H(PW^Sr-rBw1U6fN8$-(Ek=GrWJgZPIUyG?jbMBz%9 zqfZG?44h_r7M;k+I6WHIQvd9R*c#vK*Q=TlAquMR3^IaoRi}Mqq?nFH2R~+_s4Zrx zPVahmKa8%$DBx9vy{Ta;3pS+KWJ#$pcCV9a0N&bHsN^)*TcV@|7#ex!`Bc9pTC=P; zbW=?H=s0OX{&3z!z@6@Lz6|+Ev!ZsHa2|5q>#vJN9@=VNeF+`YgC}&Ny>^}Sc3fl$ zBc@IZFzKv}IZ)8Gq-aoCxO$*`>b{JJwBYWz{F5ty)jh;K>Dv`4&nYNsb{*gsL3PtH z&aw{i=}VVcu;u)(8X_=45N~4~ll+D*=q4bf8d~m*0(+=@EUrfUs5zj`B@g)*6ujxuXp;iCQ4nM+#*PDVXk$YIv|k<&q8b^@4NLXt@|9p zhKEi?)R`(Vs~zlE!zN2b=%+yh{*|n5i1fo55$fWKNm-9!#X>wH7Fu$rX!+M>AZ}l6 zLKw-$S>0KR`|dd%yJBAnl2Y{J=nx4~5NE1jsm71FG#@=G zk3%*Bd+r1h-Hzh- zF<3arQ02+bgx_xCe#EJU)0eI1eR}T~0Hs4OD6mjUmwF^AcQ4zhuGwpr84R4NND z>4a-%#M=t4IaglC+0@S%O>tnt)5u@(ke5v?+KYfr-0Ik3hhQEN4|8|D)Wm9Eq%42f zNk+#e_XFLrL=(T_^;G4trv~VYUczBHM`;t=$n_)Iq>CwEiPa=W^X`frFs*9w;}DQC zA9R|EUsdiYDG&yW>0$n zHAJh%*kr}AeFXO;XsS|~)Hz=dSNMIUA>=S0%TT0D)eU>ujdw8NHDs-%OL5PhhWIff zoGRm_DFqK-!pilvT`Wa`yW4Pjy2Ym9{1V?4Dqy9tONOozS_aHXVXR&|tH zvGs)VzT4K=y4j|ggaL7au_DidFjo~k#4xP$HG*vFK96PjIu%3pSal+Yi{pUajGqy<>_X!mJ|z+B&L5RDS;arib|ICPsWy*omsOP`&)b*CdU)>8OCdE!L;QP! z%~gRAZos-w&F*kAopE~YqyQFBsjMjJ%ZZ%fM5oe&#KJRdnf!z=P8tY?{zUPxb)PA| zGhc1BSqflZep?!LJ!vGRS+h~f6@e&$?3vN*X51v$(?g5bv+F4ht>VmP)L|XqtnU*?QPWu zZr?dlq@|iHLljXz8KQlp7n6T!A*jvxu#UEBY}~2DryOPcYF;^9>cn>Cni*eJ$#oRQ zY0Q1D^8MZBbp8hUo)e_UEN0JCL}g^zEx4Q&=RJ;{to6VJXv}L}`)riY8J!E|8)rbr zvj85=9B&BNeO9cm=wZY#Z6}|@VEFh*ou+ggprV&TPt-?wiwPw>miBs_aALm@3usi$ znnmp{S8~WqJm^@qn7gpxpJ?b#VR(f7gBgSY(#wr2(~zC25`z!9dct<7-B)QZlrA@!wc=tbOj z(lD%Go?;r!U0=)1EY^b3brjkl+5>@^V?45SJmw7%lIHtmIUh%d#F)ngPs^@d0q6KAyqoHPeaUFsSHMB4{ zU*YW|yE{zp_Dyn5D6~!fSvE^vn(=IU@(Qc~dk7gtKa~cJEtbGrqPw5*Dq{&aF0fnNj+4`ghG6bz>srMkW;2Ij4!l z&#Mz*W3}2}Z{(R#jK2fMM$D9w;YanJR}C3Fl+3Bhi(FUq+26d7>-JYxo=D2q)8Ec>54?KU}UCHwUO|`ndDh5^SwtR2^5R<#)EO!7Zwx+$#2w3ZD$lXJm-=5S z6~4Rub!;yg^<_=$O%eoH)%d);h#3I)_Pl$`0>qF*0joHT~Ql>_QN&IZf2&opT zU%aEDjBVtMxID4Uaz>WLeA$pm^hj;xkQf9JhXhIQiWy853sxKmlL>Px*u6aICg>uS z>M>*XkV!^`by+;^(Ba~ynSz$FW^hgB<-EN}Q{xfLV`EI~P=BIk&6tV}i4u6MVsRS< zYPq9k^{cD}hl;xtEhHUN+ZIuZ^Pr}6SOG}V-i$YkhMpj)NlUe^4d_x7z^r4ZGE@n? z*~5?~sYlinsOzSo=#gcByK@uVPmp*@Xc zW$p1#^%dFd$1~Z|sJJIvJqa!cO1B3&zl7))Rhm%l83R0)iKe{oHhXmE2bC^Q__9xv zy>FdSxxAOL__CHIwaQ$=ae+LP1B~LRM*;Od1R~pqb)e=;&H)Dv(jRc6S@U$@9&M{S z>Cb*70>aR~0rc#HiO^y~P8dVbXnnU!B1h@wK4@kjh+3YzOu@*kgUIUV0{Vt3ND`(C zLUSKSK`liL>N)3ARf_jNC+5()%D07#E9`cW3i(PNcxt0t;I z2=eiOr~_16Wv%#RCV*;i^^?&q|ARa=R;eL?&Pg#M9U9VHPGC2q-`6D{=T` zgyoync!CehvPh-zu3$OH;%bgOH|b>xbCz|_?;i|Ny-l1u>Pw^ERFUjJF*E!^H=J<)eVq;@DKy!8u2Q z`se1$v0Vo$VP0&ld@Wp(zDnGed*N6VZ4d>|Ko#)i^cqPx%g>S3A9zs#c^RE(c&|u4UW!%m9f&R z68g;jdySHK5+Z!oN}3Z>v{tgD2h zxOBt2B!b_5MykGzhuo3ANYjs0kfz^zAEpP3As?zCJignB0!v76xu`(B4!M!O@E(P& zq2s8LHCS3IhW)iBQa^-MOYRa7X#iN{Rl!Z5TU1E(hkm3~dqIudwIoNFgYC%?^|cAB z

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 diff --git a/docs/assets/benchmark-sqlite.png b/docs/assets/benchmark-sqlite.png index bc6d1077beeca2ca3cf76a40550a5408eee575d6..59cbed798b4246571f4b05be92906c5c9ba97425 100644 GIT binary patch literal 64476 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�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 diff --git a/docs/performance.md b/docs/performance.md index c357640..5d5ff6d 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -97,51 +97,58 @@ backend, so it is absent here: | operation | yara-orm | tortoise | sqlalchemy | pony | django | peewee | sqlobject | ormar | |---------------|---------:|---------:|-----------:|-----:|-------:|-------:|----------:|------:| -| bulk_insert | 30.5 | 41.5 | 99.0 | 455.0 | 87.7 | 59.5 | 1257.2 | 191.2 | -| single_insert | 392.8 | 304.8 | 430.8 | 329.6 | 343.6 | 367.3 | 359.8 | 555.3 | -| fetch_all | 5.5 | 34.0 | 42.5 | 47.9 | 28.4 | 30.4 | 44.9 | 72.8 | -| count | 0.5 | 0.8 | 1.2 | 0.7 | 0.7 | 0.8 | 0.7 | 4.7 | -| group_by | 1.3 | 1.3 | 2.1 | 2.2 | 1.5 | 1.1 | 0.9 | - | -| filter | 3.2 | 17.8 | 16.0 | 24.5 | 15.5 | 14.7 | 16.9 | 31.9 | -| get_by_pk | 123.3 | 228.7 | 534.1 | 310.7 | 214.5 | 206.0 | 66.0 | 916.1 | -| update | 3.8 | 3.3 | 6.5 | 265.9 | 4.3 | 4.3 | 4.2 | 7.6 | -| delete | 3.2 | 3.2 | 3.3 | 249.9 | 3.3 | 3.0 | 2.9 | 3.6 | +| bulk_insert | 23.3 | 37.5 | 105.4 | 475.4 | 96.4 | 71.8 | 1266.5 | 209.9 | +| single_insert | 264.9 | 311.6 | 531.7 | 391.5 | 388.2 | 372.2 | 390.3 | 660.0 | +| fetch_all | 5.7 | 35.0 | 43.8 | 48.1 | 28.1 | 37.0 | 42.6 | 72.1 | +| count | 0.5 | 0.8 | 1.2 | 0.7 | 0.7 | 0.8 | 0.6 | 6.7 | +| group_by | 1.2 | 1.3 | 2.3 | 2.2 | 1.5 | 1.4 | 0.9 | - | +| filter | 3.2 | 17.5 | 16.3 | 24.8 | 15.1 | 14.7 | 17.1 | 32.6 | +| get_by_pk | 132.9 | 240.8 | 575.0 | 306.7 | 220.7 | 206.5 | 64.4 | 895.2 | +| update | 4.0 | 4.4 | 7.8 | 266.3 | 5.4 | 4.2 | 3.7 | 8.2 | +| delete | 3.0 | 3.0 | 3.6 | 249.5 | 3.6 | 3.0 | 3.0 | 4.0 | Yara ORM leads or ties every operation except SQLObject's leaner `get_by_pk` (0.5×) and the sub-millisecond `group_by` (SQLObject 0.8×). It wins the throughput -ops decisively (`fetch_all` 5.0–12.9×, `filter` 4.4–9.3×, `bulk_insert` up to 46× -vs SQLObject). MariaDB's `single_insert` (~390 ms) is notably faster than -MySQL 8's here — a lighter default commit path. +ops decisively (`fetch_all` 4.9–12.6×, `filter` 4.6–10.2×, `bulk_insert` up to +54× vs SQLObject). `single_insert`, `update` and `delete` are near ties across every +ORM because they are **database-bound**, not client-bound: single inserts are +paced by MariaDB's per-commit disk fsync (high run-to-run variance), and +`update`/`delete` are one server-side set statement each — the client just sends +SQL and reads a rowcount, so there is no marshaling for the Rust hot path to +accelerate. MariaDB's `single_insert` (~265 ms) is notably faster than MySQL 8's +here — a lighter default commit path. ## SQLite ![Yara ORM vs eight Python ORMs on SQLite — latency per operation, log scale, lower is better](assets/benchmark-sqlite.png) -Python 3.12, N=5000, median of 5 (ms, lower is better). +Python 3.12, N=5000, median of 5 (ms, lower is better). SQLite is in-process, so +these use its recommended [`sync_fast_path=1`](#opt-in-sqlite-sync-fast-path) +config — statements run synchronously on the calling thread, since an embedded +database has no I/O to overlap and the async bridge would be pure overhead. | operation | yara-orm | tortoise | sqlalchemy | pony | django | peewee | sqlobject | ormar | piccolo | |---------------|---------:|---------:|-----------:|-----:|-------:|-------:|----------:|------:|--------:| -| bulk_insert | 7.9 | 14.4 | 612.7 | 51.0 | 58.1 | 30.7 | 223.1 | 158.0 | 78.8 | -| single_insert | 32.6 | 29.3 | 240.0 | 128.3 | 139.0 | 114.7 | 139.9 | 323.2 | 259.1 | -| fetch_all | 3.4 | 39.7 | 28.8 | 51.0 | 16.3 | 12.5 | 44.9 | 54.8 | 9.1 | -| count | 0.1 | 0.3 | 0.7 | 0.2 | 0.2 | 0.1 | 0.1 | 1.7 | 0.5 | -| group_by | 0.5 | 0.8 | 1.4 | 1.5 | 0.9 | 0.7 | 0.5 | - | 1.0 | -| filter | 2.0 | 20.5 | 7.7 | 26.2 | 8.5 | 6.7 | 17.3 | 19.6 | 5.1 | -| get_by_pk | 47.4 | 87.5 | 330.9 | 30.7 | 83.6 | 77.7 | 13.3 | 501.8 | 359.5 | -| update | 0.6 | 0.5 | 1.8 | 43.1 | 1.3 | 1.2 | 1.2 | 1.6 | 1.4 | -| delete | 0.4 | 0.4 | 1.2 | 36.3 | 0.9 | 0.7 | 0.8 | 1.3 | 1.2 | - -Yara ORM wins the throughput-bound operations decisively (`bulk_insert` 1.8–77×, `fetch_all` -2.6–15×, `filter` 2.5–13× across the field). It trails only on **latency-bound point reads**: -in-process sync ORMs — SQLObject (`get_by_pk` 0.3×) and Pony (0.7×) — beat us there (plus the -microsecond `group_by`, where SQLObject's raw-SQL path is a hair ahead at 0.9×). The cost -is the per-statement asyncio bridge (scheduling the statement on the runtime and waking the -event loop), tens of microseconds that a synchronous in-process driver avoids on sequential -point queries. Real workloads rarely fire -thousands of sequential point reads, and everything throughput-shaped is far ahead. If those -point operations dominate your workload, the opt-in -[sync fast path](#opt-in-sqlite-sync-fast-path) below removes exactly that per-statement -bridge. +| bulk_insert | 7.5 | 13.6 | 607.9 | 50.1 | 55.8 | 29.0 | 218.3 | 143.8 | 73.9 | +| single_insert | 15.3 | 26.9 | 234.5 | 107.0 | 120.1 | 113.5 | 124.8 | 296.7 | 240.4 | +| fetch_all | 3.4 | 38.6 | 27.1 | 51.0 | 16.4 | 12.2 | 44.2 | 52.0 | 9.2 | +| count | 0.0 | 0.2 | 0.7 | 0.2 | 0.3 | 0.1 | 0.1 | 1.6 | 0.5 | +| group_by | 0.6 | 0.7 | 1.3 | 1.4 | 0.9 | 0.6 | 0.5 | - | 1.0 | +| filter | 2.0 | 20.2 | 7.3 | 25.8 | 8.7 | 6.6 | 17.4 | 19.2 | 5.0 | +| get_by_pk | 12.5 | 79.4 | 329.6 | 31.3 | 84.6 | 75.5 | 13.3 | 484.1 | 357.2 | +| update | 0.5 | 0.5 | 1.7 | 43.0 | 1.3 | 1.2 | 1.1 | 1.7 | 1.5 | +| delete | 0.3 | 0.4 | 1.1 | 35.9 | 0.8 | 0.7 | 0.7 | 1.1 | 1.1 | + +Yara ORM is fastest on **every** operation except the sub-millisecond `group_by`, where +SQLObject's hand-written raw-SQL aggregate (bypassing its ORM entirely) edges it at 0.8×. +It now wins the point reads it trailed on with the default async bridge — `get_by_pk` +**1.1× vs SQLObject** and **2.5× vs Pony** — because the fast path removes the per-statement +asyncio hop that a synchronous in-process driver never pays. Throughput stays far ahead +(`bulk_insert` 1.8–81×, `fetch_all` 2.7–15×, `filter` 2.5–13×, `single_insert` 1.8× vs +Tortoise). On the **default** async path (no fast path), the per-statement bridge costs tens +of microseconds on sequential point reads, so SQLObject's lean sync active-record leads +`get_by_pk` there instead — the delta is quantified in +[the sync fast path section](#opt-in-sqlite-sync-fast-path) below. ### Opt-in SQLite sync fast path