Repository: mirumee/ariadne
Pull request #1175 (2024-04-12 01:57:43)

Bump idna from 3.4 to 3.7 in /tests_integrations/fastapi
Bumps [idna](https://github.com/kjd/idna) from 3.4 to 3.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/kjd/idna/releases">idna's releases</a>.</em></p>
<blockquote>
<h2>v3.7</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]</li>
</ul>
<p>Thanks to Guido Vranken for reporting the issue.</p>
<p><strong>Full Changelog</strong>: <a href="https://github.com/kjd/idna/compare/v3.6...v3.7">https://github.com/kjd/idna/compare/v3.6...v3.7</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/kjd/idna/blob/master/HISTORY.rst">idna's changelog</a>.</em></p>
<blockquote>
<p>3.7 (2024-04-11)
++++++++++++++++</p>
<ul>
<li>Fix issue where specially crafted inputs to encode() could
take exceptionally long amount of time to process. [CVE-2024-3651]</li>
</ul>
<p>Thanks to Guido Vranken for reporting the issue.</p>
<p>3.6 (2023-11-25)
++++++++++++++++</p>
<ul>
<li>Fix regression to include tests in source distribution.</li>
</ul>
<p>3.5 (2023-11-24)
++++++++++++++++</p>
<ul>
<li>Update to Unicode 15.1.0</li>
<li>String codec name is now &quot;idna2008&quot; as overriding the system codec
&quot;idna&quot; was not working.</li>
<li>Fix typing error for codec encoding</li>
<li>&quot;setup.cfg&quot; has been added for this release due to some downstream
lack of adherence to PEP 517. Should be removed in a future release
so please prepare accordingly.</li>
<li>Removed reliance on a symlink for the &quot;idna-data&quot; tool to comport
with PEP 517 and the Python Packaging User Guide for sdist archives.</li>
<li>Added security reporting protocol for project</li>
</ul>
<p>Thanks Jon Ribbens, Diogo Teles Sant'Anna, Wu Tingfeng for contributions
to this release.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/kjd/idna/commit/1d365e17e10d72d0b7876316fc7b9ca0eebdd38d"><code>1d365e1</code></a> Release v3.7</li>
<li><a href="https://github.com/kjd/idna/commit/c1b3154939907fab67c5754346afaebe165ce8e6"><code>c1b3154</code></a> Merge pull request <a href="https://redirect.github.com/kjd/idna/issues/172">#172</a> from kjd/optimize-contextj</li>
<li><a href="https://github.com/kjd/idna/commit/0394ec76ff022813e770ba1fd89658790ea35623"><code>0394ec7</code></a> Merge branch 'master' into optimize-contextj</li>
<li><a href="https://github.com/kjd/idna/commit/cd58a23173d2b0a40b95ee680baf3e59e8d33966"><code>cd58a23</code></a> Merge pull request <a href="https://redirect.github.com/kjd/idna/issues/152">#152</a> from elliotwutingfeng/dev</li>
<li><a href="https://github.com/kjd/idna/commit/5beb28b9dd77912c0dd656d8b0fdba3eb80222e7"><code>5beb28b</code></a> More efficient resolution of joiner contexts</li>
<li><a href="https://github.com/kjd/idna/commit/1b121483ed04d9576a1291758f537e1318cddc8b"><code>1b12148</code></a> Update ossf/scorecard-action to v2.3.1</li>
<li><a href="https://github.com/kjd/idna/commit/d516b874c3388047934938a500c7488d52c4e067"><code>d516b87</code></a> Update Github actions/checkout to v4</li>
<li><a href="https://github.com/kjd/idna/commit/c095c75943413c75ebf8ac74179757031b7f80b7"><code>c095c75</code></a> Merge branch 'master' into dev</li>
<li><a href="https://github.com/kjd/idna/commit/60a0a4cb61ec6834d74306bd8a1fa46daac94c98"><code>60a0a4c</code></a> Fix typo in GitHub Actions workflow key</li>
<li><a href="https://github.com/kjd/idna/commit/5918a0ef8034379c2e409ae93ee11d24295bb201"><code>5918a0e</code></a> Merge branch 'master' into dev</li>
<li>Additional commits viewable in <a href="https://github.com/kjd/idna/compare/v3.4...v3.7">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=idna&package-manager=pip&previous-version=3.4&new-version=3.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/mirumee/ariadne/network/alerts).

</details>

codecov[bot]: ## [Codecov](https://app.codecov.io/gh/mirumee/ariadne/pull/1175?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=mirumee) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 97.86%. Comparing base [(`e3d8e6b`)](https://app.codecov.io/gh/mirumee/ariadne/commit/e3d8e6b33e3b094866b7c907f56e9e1e817c619e?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=mirumee) to head [(`0d8f74b`)](https://app.codecov.io/gh/mirumee/ariadne/pull/1175?dropdown=coverage&src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=mirumee).
> Report is 11 commits behind head on main.


<details><summary>Additional details and impacted files</summary>


```diff
@@           Coverage Diff           @@
##             main    #1175   +/-   ##
=======================================
  Coverage   97.86%   97.86%           
=======================================
  Files         109      109           
  Lines        8153     8158    +5     
=======================================
+ Hits         7979     7984    +5     
  Misses        174      174           
```



</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/mirumee/ariadne/pull/1175?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=mirumee).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=mirumee).


Patch:
diff --git a/.pylintrc b/.pylintrc
index 8175adc..362c3f5 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -3,7 +3,7 @@ ignore=snapshots
 load-plugins=pylint.extensions.bad_builtin, pylint.extensions.mccabe
 
 [MESSAGES CONTROL]
-disable=C0103, C0111, C0209, C0412, I0011, R0101, R0801, R0901, R0902, R0903, R0912, R0913, R0914, R0915, R1260, W0105, W0231, W0511, W0621, W0703
+disable=C0103, C0111, C0209, C0412, I0011, R0101, R0801, R0901, R0902, R0903, R0912, R0913, R0914, R0915, R0917, R1260, W0105, W0231, W0511, W0621, W0703
 
 [SIMILARITIES]
 ignore-imports=yes
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 332e6ce..21981d9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,10 @@
 - Added validation for directive declarations in `make_executable_schema` to prevent schema creation with undeclared directives.
 - Replaced hardcoded HTTP statuses with `HTTPStatus` from the `http` stdlib module.
 - Added `include_cookies` option to the `ExplorerApollo`.
+- Fixed typing on `extract_data_from_request` method.
+- Fixed tests websockets after starlette update.
+- Added `share_enabled` param to `ExplorerPlayground` to enable share playground feature.
+- Added support for nested attribute resolution in alias resolvers.
 
 
 ## 0.23 (2024-03-18)
diff --git a/ariadne/asgi/handlers/http.py b/ariadne/asgi/handlers/http.py
index 7f85746..3fe1a5b 100644
--- a/ariadne/asgi/handlers/http.py
+++ b/ariadne/asgi/handlers/http.py
@@ -172,10 +172,10 @@ class GraphQLHTTPHandler(GraphQLHttpHandlerBase):
         success, result = await self.execute_graphql_query(request, data)
         return await self.create_json_response(request, result, success)
 
-    async def extract_data_from_request(self, request: Request):
+    async def extract_data_from_request(self, request: Request) -> Union[dict, list]:
         """Extracts GraphQL request data from request.
 
-        Returns a `dict` with GraphQL query data that was not yet validated.
+        Returns a `dict` or `list` with GraphQL query data that was not yet validated.
 
         # Required arguments
 
@@ -218,7 +218,7 @@ class GraphQLHTTPHandler(GraphQLHttpHandlerBase):
     ) -> Union[dict, list]:
         """Extracts GraphQL data from `multipart/form-data` request.
 
-        Returns an unvalidated `dict` with GraphQL query data.
+        Returns an unvalidated `dict` or `list` with GraphQL query data.
 
         # Required arguments
 
diff --git a/ariadne/contrib/tracing/copy_args.py b/ariadne/contrib/tracing/copy_args.py
index 474ce51..df6a5db 100644
--- a/ariadne/contrib/tracing/copy_args.py
+++ b/ariadne/contrib/tracing/copy_args.py
@@ -22,11 +22,15 @@ def copy_args_for_tracing(value: Any) -> Any:
 
 
 def repr_upload_file(upload_file: Union[UploadFile, File]) -> str:
+    filename: Union[str, None, bytes]
     if isinstance(upload_file, File):
         filename = upload_file.file_name
     else:
         filename = upload_file.filename
 
+    if isinstance(filename, bytes):
+        filename = filename.decode()
+
     mime_type: Union[str, None]
 
     if isinstance(upload_file, File):
diff --git a/ariadne/contrib/tracing/utils.py b/ariadne/contrib/tracing/utils.py
index ad79c94..8b67c38 100644
--- a/ariadne/contrib/tracing/utils.py
+++ b/ariadne/contrib/tracing/utils.py
@@ -25,11 +25,15 @@ def copy_args_for_tracing(value: Any) -> Any:
 
 
 def repr_upload_file(upload_file: Union[UploadFile, File]) -> str:
+    filename: Union[str, None, bytes]
     if isinstance(upload_file, File):
         filename = upload_file.file_name
     else:
         filename = upload_file.filename
 
+    if isinstance(filename, bytes):
+        filename = filename.decode()
+
     mime_type: Union[str, None]
 
     if isinstance(upload_file, File):
diff --git a/ariadne/explorer/playground.py b/ariadne/explorer/playground.py
index aa55489..fdc8852 100644
--- a/ariadne/explorer/playground.py
+++ b/ariadne/explorer/playground.py
@@ -13,6 +13,7 @@ class ExplorerPlayground(Explorer):
     def __init__(
         self,
         title: str = "Ariadne GraphQL",
+        share_enabled: bool = False,
         editor_cursor_shape: Optional[str] = None,
         editor_font_family: Optional[str] = None,
         editor_font_size: Optional[int] = None,
@@ -58,6 +59,7 @@ class ExplorerPlayground(Explorer):
             {
                 "title": title,
                 "settings": json.dumps(settings) if settings else None,
+                "share_enabled": str(share_enabled).lower(),
             },
         )
 
diff --git a/ariadne/explorer/templates/graphiql.html b/ariadne/explorer/templates/graphiql.html
index 62b5923..505e238 100644
--- a/ariadne/explorer/templates/graphiql.html
+++ b/ariadne/explorer/templates/graphiql.html
@@ -35,9 +35,9 @@
         font-weight: bold;
       }
     </style>
-    <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />
+    <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />
     {% if enable_explorer_plugin %}
-    <link rel="stylesheet" href="https://unpkg.com/@graphiql/plugin-explorer@0.1.21/dist/style.css" />
+    <link rel="stylesheet" href="https://unpkg.com/@graphiql/plugin-explorer@3.1.0/dist/style.css" />
     {% endif %}
   </head>
 
@@ -57,13 +57,13 @@
 
     <script
       crossorigin
-      src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"
+      src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"
     ></script>
 
     {% if enable_explorer_plugin %}
     <script
       crossorigin
-      src="https://unpkg.com/@graphiql/plugin-explorer@0.1.21/dist/index.umd.js"
+      src="https://unpkg.com/@graphiql/plugin-explorer@3.1.0/dist/index.umd.js"
     ></script>
     {% endif %}
 
diff --git a/ariadne/explorer/templates/playground.html b/ariadne/explorer/templates/playground.html
index 23a9cbf..1806ab6 100644
--- a/ariadne/explorer/templates/playground.html
+++ b/ariadne/explorer/templates/playground.html
@@ -51,6 +51,7 @@
         GraphQLPlayground.init(document.getElementById('root'), {
           // options as 'endpoint' belong here
           {% if settings %}settings: {% raw settings  %},{% endif %}
+          {% if share_enabled %}shareEnabled: {% raw share_enabled  %},{% endif %}
         })
       })
     </script>
diff --git a/ariadne/load_schema.py b/ariadne/load_schema.py
index 43fdfd8..dac3bc8 100644
--- a/ariadne/load_schema.py
+++ b/ariadne/load_schema.py
@@ -1,4 +1,5 @@
 import os
+from pathlib import Path
 from typing import Generator, Union
 
 from graphql import parse
@@ -27,7 +28,7 @@ def load_schema_from_path(path: Union[str, os.PathLike]) -> str:
     if os.path.isdir(path):
         schema_list = [read_graphql_file(f) for f in sorted(walk_graphql_files(path))]
         return "\n".join(schema_list)
-    return read_graphql_file(os.path.abspath(path))
+    return read_graphql_file(Path(path).resolve())
 
 
 def walk_graphql_files(path: Union[str, os.PathLike]) -> Generator[str, None, None]:
diff --git a/ariadne/resolvers.py b/ariadne/resolvers.py
index 21a3014..7a43341 100644
--- a/ariadne/resolvers.py
+++ b/ariadne/resolvers.py
@@ -79,9 +79,16 @@ snake_case_fallback_resolvers = SnakeCaseFallbackResolversSetter()
 
 
 def resolve_parent_field(parent: Any, field_name: str) -> Any:
-    if isinstance(parent, Mapping):
-        return parent.get(field_name)
-    return getattr(parent, field_name, None)
+    value = parent
+    for name in field_name.split("."):
+        if isinstance(value, Mapping):
+            value = value.get(name)
+        else:
+            value = getattr(value, name, None)
+
+        if value is None:
+            break
+    return value
 
 
 def resolve_to(attr_name: str) -> Resolver:
diff --git a/ariadne/wsgi.py b/ariadne/wsgi.py
index 8a185d7..ec652b0 100644
--- a/ariadne/wsgi.py
+++ b/ariadne/wsgi.py
@@ -40,7 +40,7 @@ try:
     from multipart import parse_form
 except ImportError:
 
-    def parse_form(*_args, **_kwargs):
+    def parse_form(*_args, **_kwargs):  # type: ignore
         raise NotImplementedError(
             "WSGI file uploads requires 'python-multipart' library."
         )
@@ -668,8 +668,11 @@ def parse_multipart_request(environ: dict) -> "FormData":
     headers = {"Content-Type": content_type}
     form_data = FormData(content_type)
 
+    # Silence mypy error for this incorrect type.
+    # parse_fprm defines the type as dict[str, bytes] but works with
+    # dict[str, Optional[str | bytes]] and will throw ValueError if Content-Type is None.
     parse_form(
-        headers,
+        headers,  # type: ignore
         environ["wsgi.input"],
         form_data.on_field,
         form_data.on_file,
diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0019_91ecd52c507b60462da2c6b50a4036d5c77591b9_20230627_134328.json b/benchmark/results/Linux-CPython-3.10-64bit/0019_91ecd52c507b60462da2c6b50a4036d5c77591b9_20230627_134328.json
deleted file mode 100644
index e61fdd8..0000000
--- a/benchmark/results/Linux-CPython-3.10-64bit/0019_91ecd52c507b60462da2c6b50a4036d5c77591b9_20230627_134328.json
+++ /dev/null
@@ -1,284 +0,0 @@
-{
-    "machine_info": {
-        "node": "fv-az988-525",
-        "processor": "x86_64",
-        "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
-        "python_implementation": "CPython",
-        "python_implementation_version": "3.10.12",
-        "python_version": "3.10.12",
-        "python_build": [
-            "main",
-            "Jun  7 2023 13:43:11"
-        ],
-        "release": "5.15.0-1040-azure",
-        "system": "Linux",
-        "cpu": {
-            "python_version": "3.10.12.final.0 (64 bit)",
-            "cpuinfo_version": [
-                9,
-                0,
-                0
-            ],
-            "cpuinfo_version_string": "9.0.0",
-            "arch": "X86_64",
-            "bits": 64,
-            "count": 2,
-            "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz",
-            "hz_advertised_friendly": "2.6000 GHz",
-            "hz_actual_friendly": "2.5939 GHz",
-            "hz_advertised": [
-                2600000000,
-                0
-            ],
-            "hz_actual": [
-                2593904000,
-                0
-            ],
-            "stepping": 7,
-            "model": 85,
-            "family": 6,
-            "flags": [
-                "3dnowprefetch",
-                "abm",
-                "adx",
-                "aes",
-                "apic",
-                "avx",
-                "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
-                "bmi1",
-                "bmi2",
-                "clflush",
-                "clflushopt",
-                "cmov",
-                "constant_tsc",
-                "cpuid",
-                "cx16",
-                "cx8",
-                "de",
-                "erms",
-                "f16c",
-                "fma",
-                "fpu",
-                "fsgsbase",
-                "fxsr",
-                "hle",
-                "ht",
-                "hypervisor",
-                "invpcid",
-                "invpcid_single",
-                "lahf_lm",
-                "lm",
-                "mca",
-                "mce",
-                "md_clear",
-                "mmx",
-                "movbe",
-                "msr",
-                "mtrr",
-                "nopl",
-                "nx",
-                "osxsave",
-                "pae",
-                "pat",
-                "pcid",
-                "pclmulqdq",
-                "pdpe1gb",
-                "pge",
-                "pni",
-                "popcnt",
-                "pse",
-                "pse36",
-                "pti",
-                "rdrand",
-                "rdrnd",
-                "rdseed",
-                "rdtscp",
-                "rep_good",
-                "rtm",
-                "sep",
-                "smap",
-                "smep",
-                "ss",
-                "sse",
-                "sse2",
-                "sse4_1",
-                "sse4_2",
-                "ssse3",
-                "syscall",
-                "tsc",
-                "vme",
-                "xsave",
-                "xsavec",
-                "xsaveopt",
-                "xsaves",
-                "xtopology"
-            ],
-            "l3_cache_size": 37486592,
-            "l2_cache_size": 2097152,
-            "l1_data_cache_size": 65536,
-            "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
-            "l2_cache_associativity": 6
-        }
-    },
-    "commit_info": {
-        "id": "91ecd52c507b60462da2c6b50a4036d5c77591b9",
-        "time": "2023-06-27T13:42:56+00:00",
-        "author_time": "2023-06-27T13:42:56+00:00",
-        "dirty": false,
-        "project": "ariadne",
-        "branch": "master"
-    },
-    "benchmarks": [
-        {
-            "group": null,
-            "name": "test_query_without_extensions",
-            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.3959913399999948,
-                "max": 1.486968272999988,
-                "mean": 1.4362104913999958,
-                "stddev": 0.03590074420045581,
-                "rounds": 5,
-                "median": 1.4234618979999993,
-                "iqr": 0.052679524749994044,
-                "q1": 1.4120167939999995,
-                "q3": 1.4646963187499935,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.3959913399999948,
-                "hd15iqr": 1.486968272999988,
-                "ops": 0.6962767686129459,
-                "total": 7.1810524569999785,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_noop_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.4267775060000076,
-                "max": 1.5517941829999984,
-                "mean": 1.4869156606000018,
-                "stddev": 0.051437649047604776,
-                "rounds": 5,
-                "median": 1.4919921420000009,
-                "iqr": 0.0861995472499899,
-                "q1": 1.4407271145000067,
-                "q3": 1.5269266617499966,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.4267775060000076,
-                "hd15iqr": 1.5517941829999984,
-                "ops": 0.6725331008999387,
-                "total": 7.434578303000009,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_telemetry_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.7208692879999887,
-                "max": 1.8279442949999947,
-                "mean": 1.7783262933999993,
-                "stddev": 0.038487893087037955,
-                "rounds": 5,
-                "median": 1.7777951230000042,
-                "iqr": 0.038707944000002215,
-                "q1": 1.76113126125,
-                "q3": 1.7998392052500023,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.7208692879999887,
-                "hd15iqr": 1.8279442949999947,
-                "ops": 0.5623264997606768,
-                "total": 8.891631466999996,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_tracing_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.547208112000007,
-                "max": 1.656219784000001,
-                "mean": 1.6005487300000028,
-                "stddev": 0.04110001597325673,
-                "rounds": 5,
-                "median": 1.588764831000006,
-                "iqr": 0.05385018974999767,
-                "q1": 1.577459988250002,
-                "q3": 1.6313101779999997,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.547208112000007,
-                "hd15iqr": 1.656219784000001,
-                "ops": 0.6247857258304146,
-                "total": 8.002743650000014,
-                "iterations": 1
-            }
-        }
-    ],
-    "datetime": "2023-06-27T13:44:15.974468",
-    "version": "4.0.0"
-}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0021_a0a4da25a890697e2398e50b8f28c40cabb1b277_20231011_120429.json b/benchmark/results/Linux-CPython-3.10-64bit/0021_a0a4da25a890697e2398e50b8f28c40cabb1b277_20231011_120429.json
deleted file mode 100644
index 6d761a3..0000000
--- a/benchmark/results/Linux-CPython-3.10-64bit/0021_a0a4da25a890697e2398e50b8f28c40cabb1b277_20231011_120429.json
+++ /dev/null
@@ -1,284 +0,0 @@
-{
-    "machine_info": {
-        "node": "fv-az361-312",
-        "processor": "x86_64",
-        "machine": "x86_64",
-        "python_compiler": "GCC 11.4.0",
-        "python_implementation": "CPython",
-        "python_implementation_version": "3.10.13",
-        "python_version": "3.10.13",
-        "python_build": [
-            "main",
-            "Aug 28 2023 08:28:42"
-        ],
-        "release": "6.2.0-1012-azure",
-        "system": "Linux",
-        "cpu": {
-            "python_version": "3.10.13.final.0 (64 bit)",
-            "cpuinfo_version": [
-                9,
-                0,
-                0
-            ],
-            "cpuinfo_version_string": "9.0.0",
-            "arch": "X86_64",
-            "bits": 64,
-            "count": 2,
-            "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz",
-            "hz_advertised_friendly": "2.8000 GHz",
-            "hz_actual_friendly": "2.7934 GHz",
-            "hz_advertised": [
-                2800000000,
-                0
-            ],
-            "hz_actual": [
-                2793439000,
-                0
-            ],
-            "stepping": 6,
-            "model": 106,
-            "family": 6,
-            "flags": [
-                "3dnowprefetch",
-                "abm",
-                "adx",
-                "aes",
-                "apic",
-                "avx",
-                "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
-                "bmi1",
-                "bmi2",
-                "clflush",
-                "clflushopt",
-                "cmov",
-                "constant_tsc",
-                "cpuid",
-                "cx16",
-                "cx8",
-                "de",
-                "erms",
-                "f16c",
-                "fma",
-                "fpu",
-                "fsgsbase",
-                "fxsr",
-                "hle",
-                "ht",
-                "hypervisor",
-                "invpcid",
-                "invpcid_single",
-                "lahf_lm",
-                "lm",
-                "mca",
-                "mce",
-                "md_clear",
-                "mmx",
-                "movbe",
-                "msr",
-                "mtrr",
-                "nopl",
-                "nx",
-                "osxsave",
-                "pae",
-                "pat",
-                "pcid",
-                "pclmulqdq",
-                "pdpe1gb",
-                "pge",
-                "pni",
-                "popcnt",
-                "pse",
-                "pse36",
-                "pti",
-                "rdrand",
-                "rdrnd",
-                "rdseed",
-                "rdtscp",
-                "rep_good",
-                "rtm",
-                "sep",
-                "smap",
-                "smep",
-                "ss",
-                "sse",
-                "sse2",
-                "sse4_1",
-                "sse4_2",
-                "ssse3",
-                "syscall",
-                "tsc",
-                "vme",
-                "xsave",
-                "xsavec",
-                "xsaveopt",
-                "xsaves",
-                "xtopology"
-            ],
-            "l3_cache_size": 50331648,
-            "l2_cache_size": "2.5 MiB",
-            "l1_data_cache_size": 98304,
-            "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
-            "l2_cache_associativity": 6
-        }
-    },
-    "commit_info": {
-        "id": "a0a4da25a890697e2398e50b8f28c40cabb1b277",
-        "time": "2023-10-11T12:04:00+00:00",
-        "author_time": "2023-10-11T12:04:00+00:00",
-        "dirty": false,
-        "project": "ariadne",
-        "branch": "master"
-    },
-    "benchmarks": [
-        {
-            "group": null,
-            "name": "test_query_without_extensions",
-            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.282689483999988,
-                "max": 1.3396279879999895,
-                "mean": 1.3076620557999945,
-                "stddev": 0.0225233651481422,
-                "rounds": 5,
-                "median": 1.2994810659999985,
-                "iqr": 0.03309303025000787,
-                "q1": 1.292435071749992,
-                "q3": 1.3255281019999998,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.282689483999988,
-                "hd15iqr": 1.3396279879999895,
-                "ops": 0.7647235733151447,
-                "total": 6.5383102789999725,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_noop_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.3069021459999988,
-                "max": 1.375457228000002,
-                "mean": 1.341045181399997,
-                "stddev": 0.03221333958924646,
-                "rounds": 5,
-                "median": 1.3430831449999943,
-                "iqr": 0.06206429399999536,
-                "q1": 1.3091815452499986,
-                "q3": 1.371245839249994,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.3069021459999988,
-                "hd15iqr": 1.375457228000002,
-                "ops": 0.7456870311826783,
-                "total": 6.705225906999985,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_telemetry_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.5797434660000107,
-                "max": 1.668349741,
-                "mean": 1.6197273508000023,
-                "stddev": 0.03295747552000297,
-                "rounds": 5,
-                "median": 1.6219697540000055,
-                "iqr": 0.04105714649999115,
-                "q1": 1.596198250000004,
-                "q3": 1.6372553964999952,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.5797434660000107,
-                "hd15iqr": 1.668349741,
-                "ops": 0.617387858213352,
-                "total": 8.098636754000012,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_tracing_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.4242069750000041,
-                "max": 1.4795038749999918,
-                "mean": 1.4513659873999956,
-                "stddev": 0.02210171078634594,
-                "rounds": 5,
-                "median": 1.443583942999993,
-                "iqr": 0.03340735650000326,
-                "q1": 1.4373358569999937,
-                "q3": 1.470743213499997,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.4242069750000041,
-                "hd15iqr": 1.4795038749999918,
-                "ops": 0.6890060871492647,
-                "total": 7.256829936999978,
-                "iterations": 1
-            }
-        }
-    ],
-    "datetime": "2023-10-11T12:05:13.328099",
-    "version": "4.0.0"
-}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0049_f4d2d0978dc8b0eac022969d5197a5054d966fee_20240613_080926.json b/benchmark/results/Linux-CPython-3.10-64bit/0049_f4d2d0978dc8b0eac022969d5197a5054d966fee_20240613_080926.json
new file mode 100644
index 0000000..43e4440
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.10-64bit/0049_f4d2d0978dc8b0eac022969d5197a5054d966fee_20240613_080926.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az1980-842",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.10.14",
+        "python_version": "3.10.14",
+        "python_build": [
+            "main",
+            "May  8 2024 15:05:35"
+        ],
+        "release": "6.5.0-1021-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.10.14.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "3.2430 GHz",
+            "hz_actual_friendly": "3.2430 GHz",
+            "hz_advertised": [
+                3242953000,
+                0
+            ],
+            "hz_actual": [
+                3242953000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "f4d2d0978dc8b0eac022969d5197a5054d966fee",
+        "time": "2024-06-13T08:08:57Z",
+        "author_time": "2024-06-13T08:08:57Z",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.0070774570000083,
+                "max": 1.1069989190000058,
+                "mean": 1.043101039000004,
+                "stddev": 0.0389545386800986,
+                "rounds": 5,
+                "median": 1.0319192480000083,
+                "iqr": 0.046842176249988654,
+                "q1": 1.0169045480000065,
+                "q3": 1.0637467242499952,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.0070774570000083,
+                "hd15iqr": 1.1069989190000058,
+                "ops": 0.958679900231598,
+                "total": 5.21550519500002,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.027411174000008,
+                "max": 1.0612497700000176,
+                "mean": 1.0509586714000136,
+                "stddev": 0.013826729448944539,
+                "rounds": 5,
+                "median": 1.0577966790000062,
+                "iqr": 0.014908447500005195,
+                "q1": 1.0442542945000142,
+                "q3": 1.0591627420000194,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.027411174000008,
+                "hd15iqr": 1.0612497700000176,
+                "ops": 0.9515122023474719,
+                "total": 5.254793357000068,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.2286675560000049,
+                "max": 1.30456000800001,
+                "mean": 1.2703366408000023,
+                "stddev": 0.028487292665423804,
+                "rounds": 5,
+                "median": 1.2672787070000027,
+                "iqr": 0.03653136674999047,
+                "q1": 1.2550791120000042,
+                "q3": 1.2916104787499947,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.2286675560000049,
+                "hd15iqr": 1.30456000800001,
+                "ops": 0.7871929124001681,
+                "total": 6.351683204000011,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.1688638500000081,
+                "max": 1.2220171090000065,
+                "mean": 1.1920760212000119,
+                "stddev": 0.020112739636640415,
+                "rounds": 5,
+                "median": 1.1913496390000091,
+                "iqr": 0.026882681250000928,
+                "q1": 1.1772248447500147,
+                "q3": 1.2041075260000156,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.1688638500000081,
+                "hd15iqr": 1.2220171090000065,
+                "ops": 0.8388726744065725,
+                "total": 5.960380106000059,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-06-13T08:10:00.952320",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.11-64bit/0021_664d95788d016d2e107ed65d7b464648dcf25b4e_20231011_120541.json b/benchmark/results/Linux-CPython-3.10-64bit/0050_57ab38b2bc05f9adc4585ecb321347aedecb3937_20240731_113212.json
similarity index 57%
rename from benchmark/results/Linux-CPython-3.11-64bit/0021_664d95788d016d2e107ed65d7b464648dcf25b4e_20231011_120541.json
rename to benchmark/results/Linux-CPython-3.10-64bit/0050_57ab38b2bc05f9adc4585ecb321347aedecb3937_20240731_113212.json
index 56cfe20..0a29f23 100644
--- a/benchmark/results/Linux-CPython-3.11-64bit/0021_664d95788d016d2e107ed65d7b464648dcf25b4e_20231011_120541.json
+++ b/benchmark/results/Linux-CPython-3.10-64bit/0050_57ab38b2bc05f9adc4585ecb321347aedecb3937_20240731_113212.json
@@ -1,20 +1,20 @@
 {
     "machine_info": {
-        "node": "fv-az617-290",
+        "node": "fv-az1113-172",
         "processor": "x86_64",
         "machine": "x86_64",
         "python_compiler": "GCC 11.4.0",
         "python_implementation": "CPython",
-        "python_implementation_version": "3.11.5",
-        "python_version": "3.11.5",
+        "python_implementation_version": "3.10.14",
+        "python_version": "3.10.14",
         "python_build": [
             "main",
-            "Aug 28 2023 12:39:56"
+            "Jul 16 2024 19:03:10"
         ],
-        "release": "6.2.0-1012-azure",
+        "release": "6.5.0-1024-azure",
         "system": "Linux",
         "cpu": {
-            "python_version": "3.11.5.final.0 (64 bit)",
+            "python_version": "3.10.14.final.0 (64 bit)",
             "cpuinfo_version": [
                 9,
                 0,
@@ -23,53 +23,59 @@
             "cpuinfo_version_string": "9.0.0",
             "arch": "X86_64",
             "bits": 64,
-            "count": 2,
+            "count": 4,
             "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz",
-            "hz_advertised_friendly": "2.6000 GHz",
-            "hz_actual_friendly": "2.5939 GHz",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.7900 GHz",
+            "hz_actual_friendly": "2.7900 GHz",
             "hz_advertised": [
-                2600000000,
+                2789959000,
                 0
             ],
             "hz_actual": [
-                2593907000,
+                2789959000,
                 0
             ],
-            "stepping": 7,
-            "model": 85,
-            "family": 6,
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
             "flags": [
+                "3dnowext",
                 "3dnowprefetch",
                 "abm",
                 "adx",
                 "aes",
+                "aperfmperf",
                 "apic",
+                "arat",
                 "avx",
                 "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
                 "bmi1",
                 "bmi2",
                 "clflush",
                 "clflushopt",
+                "clwb",
+                "clzero",
                 "cmov",
+                "cmp_legacy",
                 "constant_tsc",
                 "cpuid",
+                "cr8_legacy",
                 "cx16",
                 "cx8",
                 "de",
+                "decodeassists",
                 "erms",
+                "extd_apicid",
                 "f16c",
+                "flushbyasid",
                 "fma",
                 "fpu",
                 "fsgsbase",
+                "fsrm",
                 "fxsr",
-                "hle",
+                "fxsr_opt",
                 "ht",
                 "hypervisor",
                 "invpcid",
@@ -78,64 +84,84 @@
                 "lm",
                 "mca",
                 "mce",
-                "md_clear",
+                "misalignsse",
                 "mmx",
+                "mmxext",
                 "movbe",
                 "msr",
                 "mtrr",
+                "nonstop_tsc",
                 "nopl",
+                "npt",
+                "nrip_save",
                 "nx",
+                "osvw",
                 "osxsave",
                 "pae",
                 "pat",
+                "pausefilter",
                 "pcid",
                 "pclmulqdq",
                 "pdpe1gb",
+                "pfthreshold",
                 "pge",
                 "pni",
                 "popcnt",
                 "pse",
                 "pse36",
-                "pti",
+                "rdpid",
+                "rdpru",
                 "rdrand",
                 "rdrnd",
                 "rdseed",
                 "rdtscp",
                 "rep_good",
-                "rtm",
                 "sep",
+                "sha",
+                "sha_ni",
                 "smap",
                 "smep",
-                "ss",
                 "sse",
                 "sse2",
                 "sse4_1",
                 "sse4_2",
+                "sse4a",
                 "ssse3",
+                "svm",
                 "syscall",
+                "topoext",
                 "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
                 "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
                 "xsave",
                 "xsavec",
+                "xsaveerptr",
                 "xsaveopt",
-                "xsaves",
-                "xtopology"
+                "xsaves"
             ],
-            "l3_cache_size": 37486592,
-            "l2_cache_size": 2097152,
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
             "l1_data_cache_size": 65536,
             "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
+            "l2_cache_line_size": 512,
             "l2_cache_associativity": 6
         }
     },
     "commit_info": {
-        "id": "664d95788d016d2e107ed65d7b464648dcf25b4e",
-        "time": "2023-10-11T12:05:13+00:00",
-        "author_time": "2023-10-11T12:05:13+00:00",
+        "id": "57ab38b2bc05f9adc4585ecb321347aedecb3937",
+        "time": "2024-07-31T11:31:49Z",
+        "author_time": "2024-07-31T11:31:49Z",
         "dirty": false,
         "project": "ariadne",
-        "branch": "master"
+        "branch": "main"
     },
     "benchmarks": [
         {
@@ -154,22 +180,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.0815213950000029,
-                "max": 1.1672636119999993,
-                "mean": 1.1138683862000036,
-                "stddev": 0.03256396015391492,
+                "min": 1.0182980609999959,
+                "max": 1.0849806490000162,
+                "mean": 1.0438855708000063,
+                "stddev": 0.026053334305103978,
                 "rounds": 5,
-                "median": 1.1113132570000062,
-                "iqr": 0.03513170699999968,
-                "q1": 1.091998647500004,
-                "q3": 1.1271303545000038,
+                "median": 1.044234657000004,
+                "iqr": 0.03329766475000184,
+                "q1": 1.0232289390000062,
+                "q3": 1.056526603750008,
                 "iqr_outliers": 0,
                 "stddev_outliers": 1,
                 "outliers": "1;0",
-                "ld15iqr": 1.0815213950000029,
-                "hd15iqr": 1.1672636119999993,
-                "ops": 0.8977721357291869,
-                "total": 5.569341931000018,
+                "ld15iqr": 1.0182980609999959,
+                "hd15iqr": 1.0849806490000162,
+                "ops": 0.9579594047206021,
+                "total": 5.219427854000031,
                 "iterations": 1
             }
         },
@@ -189,22 +215,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.0953379239999919,
-                "max": 1.1814603990000023,
-                "mean": 1.1494135331999957,
-                "stddev": 0.03657135457056127,
+                "min": 1.054017411999979,
+                "max": 1.0902449280000042,
+                "mean": 1.0715961481999954,
+                "stddev": 0.013312818613457114,
                 "rounds": 5,
-                "median": 1.163762530999989,
-                "iqr": 0.05770674725000191,
-                "q1": 1.1206864712499964,
-                "q3": 1.1783932184999983,
+                "median": 1.0693169090000083,
+                "iqr": 0.01626699650000063,
+                "q1": 1.0640498537499923,
+                "q3": 1.080316850249993,
                 "iqr_outliers": 0,
-                "stddev_outliers": 1,
-                "outliers": "1;0",
-                "ld15iqr": 1.0953379239999919,
-                "hd15iqr": 1.1814603990000023,
-                "ops": 0.8700088968119031,
-                "total": 5.747067665999978,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.054017411999979,
+                "hd15iqr": 1.0902449280000042,
+                "ops": 0.9331873781738965,
+                "total": 5.357980740999977,
                 "iterations": 1
             }
         },
@@ -224,22 +250,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.3248510580000072,
-                "max": 1.3765701500000063,
-                "mean": 1.3487657106,
-                "stddev": 0.01906511138459795,
+                "min": 1.282632135,
+                "max": 1.3173220359999789,
+                "mean": 1.3033850519999988,
+                "stddev": 0.014121201898849007,
                 "rounds": 5,
-                "median": 1.3438588859999925,
-                "iqr": 0.022669516750010388,
-                "q1": 1.3382985647499943,
-                "q3": 1.3609680815000047,
+                "median": 1.301007138000017,
+                "iqr": 0.020521165000026542,
+                "q1": 1.2957201704999832,
+                "q3": 1.3162413355000098,
                 "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.3248510580000072,
-                "hd15iqr": 1.3765701500000063,
-                "ops": 0.7414186112094656,
-                "total": 6.743828553,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.282632135,
+                "hd15iqr": 1.3173220359999789,
+                "ops": 0.7672329818924462,
+                "total": 6.516925259999994,
                 "iterations": 1
             }
         },
@@ -259,26 +285,26 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.2303881610000076,
-                "max": 1.2601934189999895,
-                "mean": 1.2425375672,
-                "stddev": 0.012035318435107804,
+                "min": 1.1683849899999927,
+                "max": 1.2468162060000054,
+                "mean": 1.2039192606000029,
+                "stddev": 0.029841454921532954,
                 "rounds": 5,
-                "median": 1.2435022989999993,
-                "iqr": 0.017961467249993035,
-                "q1": 1.2318184477500047,
-                "q3": 1.2497799149999977,
+                "median": 1.2073731670000143,
+                "iqr": 0.0405216109999742,
+                "q1": 1.1805225715000134,
+                "q3": 1.2210441824999876,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.2303881610000076,
-                "hd15iqr": 1.2601934189999895,
-                "ops": 0.804804640437112,
-                "total": 6.212687836000001,
+                "ld15iqr": 1.1683849899999927,
+                "hd15iqr": 1.2468162060000054,
+                "ops": 0.8306204848833678,
+                "total": 6.019596303000014,
                 "iterations": 1
             }
         }
     ],
-    "datetime": "2023-10-11T12:06:18.332486",
+    "datetime": "2024-07-31T11:32:47.241637",
     "version": "4.0.0"
 }
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0051_305dbd43b27fce652bd4e082885a5600357b830a_20240802_063459.json b/benchmark/results/Linux-CPython-3.10-64bit/0051_305dbd43b27fce652bd4e082885a5600357b830a_20240802_063459.json
new file mode 100644
index 0000000..119ef6b
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.10-64bit/0051_305dbd43b27fce652bd4e082885a5600357b830a_20240802_063459.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az654-864",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.10.14",
+        "python_version": "3.10.14",
+        "python_build": [
+            "main",
+            "Jul 16 2024 19:03:10"
+        ],
+        "release": "6.5.0-1024-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.10.14.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "3.2419 GHz",
+            "hz_actual_friendly": "3.2419 GHz",
+            "hz_advertised": [
+                3241934000,
+                0
+            ],
+            "hz_actual": [
+                3241934000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "305dbd43b27fce652bd4e082885a5600357b830a",
+        "time": "2024-08-02T06:34:34Z",
+        "author_time": "2024-08-02T06:34:34Z",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.0567980139999804,
+                "max": 1.1308374209999954,
+                "mean": 1.086007853999996,
+                "stddev": 0.033031417515005025,
+                "rounds": 5,
+                "median": 1.0721954480000022,
+                "iqr": 0.05688431949997863,
+                "q1": 1.0588404147500086,
+                "q3": 1.1157247342499872,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.0567980139999804,
+                "hd15iqr": 1.1308374209999954,
+                "ops": 0.9208036537827871,
+                "total": 5.43003926999998,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.0789050710000083,
+                "max": 1.151056992000008,
+                "mean": 1.1255016149999961,
+                "stddev": 0.029055213532257144,
+                "rounds": 5,
+                "median": 1.1292184980000002,
+                "iqr": 0.03894740725003487,
+                "q1": 1.109894371999971,
+                "q3": 1.1488417792500059,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.0789050710000083,
+                "hd15iqr": 1.151056992000008,
+                "ops": 0.8884927277514422,
+                "total": 5.62750807499998,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.2899590279999984,
+                "max": 1.365169949999995,
+                "mean": 1.3295530759999905,
+                "stddev": 0.028430175961188284,
+                "rounds": 5,
+                "median": 1.328907517999994,
+                "iqr": 0.03963458500001593,
+                "q1": 1.3109721612499783,
+                "q3": 1.3506067462499942,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.2899590279999984,
+                "hd15iqr": 1.365169949999995,
+                "ops": 0.7521324406307546,
+                "total": 6.647765379999953,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.1642753860000425,
+                "max": 1.2555722010000068,
+                "mean": 1.2087708208000207,
+                "stddev": 0.04358466020933461,
+                "rounds": 5,
+                "median": 1.19878763600002,
+                "iqr": 0.08374658449993433,
+                "q1": 1.170064736500052,
+                "q3": 1.2538113209999864,
+                "iqr_outliers": 0,
+                "stddev_outliers": 3,
+                "outliers": "3;0",
+                "ld15iqr": 1.1642753860000425,
+                "hd15iqr": 1.2555722010000068,
+                "ops": 0.82728668064485,
+                "total": 6.043854104000104,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-08-02T06:35:35.827023",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.11-64bit/0049_42c8b704a36f538cdf646101a3eb7f1c2a2be975_20240613_081035.json b/benchmark/results/Linux-CPython-3.11-64bit/0049_42c8b704a36f538cdf646101a3eb7f1c2a2be975_20240613_081035.json
new file mode 100644
index 0000000..28b742f
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.11-64bit/0049_42c8b704a36f538cdf646101a3eb7f1c2a2be975_20240613_081035.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az1385-207",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.11.9",
+        "python_version": "3.11.9",
+        "python_build": [
+            "main",
+            "May  9 2024 14:13:20"
+        ],
+        "release": "6.5.0-1021-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.11.9.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "3.2205 GHz",
+            "hz_actual_friendly": "3.2205 GHz",
+            "hz_advertised": [
+                3220493000,
+                0
+            ],
+            "hz_actual": [
+                3220493000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "42c8b704a36f538cdf646101a3eb7f1c2a2be975",
+        "time": "2024-06-13T08:10:01Z",
+        "author_time": "2024-06-13T08:10:01Z",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.7616854369999828,
+                "max": 0.82817438699999,
+                "mean": 0.7923835127999951,
+                "stddev": 0.027219514084600365,
+                "rounds": 5,
+                "median": 0.8014510909999899,
+                "iqr": 0.04167201625001837,
+                "q1": 0.7668739632499921,
+                "q3": 0.8085459795000105,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 0.7616854369999828,
+                "hd15iqr": 0.82817438699999,
+                "ops": 1.2620151528221022,
+                "total": 3.9619175639999753,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.784624588999975,
+                "max": 0.800748393000049,
+                "mean": 0.7952459168000132,
+                "stddev": 0.006381944926431418,
+                "rounds": 5,
+                "median": 0.7973960290000264,
+                "iqr": 0.007516207750015269,
+                "q1": 0.7919612337500013,
+                "q3": 0.7994774415000165,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 0.784624588999975,
+                "hd15iqr": 0.800748393000049,
+                "ops": 1.257472662071496,
+                "total": 3.976229584000066,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.9267175040000097,
+                "max": 0.9710754509999902,
+                "mean": 0.9535198327999979,
+                "stddev": 0.019394201599600844,
+                "rounds": 5,
+                "median": 0.9618887179999547,
+                "iqr": 0.032502010000001746,
+                "q1": 0.9364421735000121,
+                "q3": 0.9689441835000139,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 0.9267175040000097,
+                "hd15iqr": 0.9710754509999902,
+                "ops": 1.0487458840405173,
+                "total": 4.767599163999989,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.8417903349999847,
+                "max": 0.8697877690000269,
+                "mean": 0.8586674693999953,
+                "stddev": 0.010489267631244779,
+                "rounds": 5,
+                "median": 0.8621817199999668,
+                "iqr": 0.011338439250053511,
+                "q1": 0.853119614499974,
+                "q3": 0.8644580537500275,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 0.8417903349999847,
+                "hd15iqr": 0.8697877690000269,
+                "ops": 1.1645951845581883,
+                "total": 4.2933373469999765,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-06-13T08:11:02.572802",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.11-64bit/0050_68be83461849c00eeaf1a4d0f092273de5a0320b_20240731_113308.json b/benchmark/results/Linux-CPython-3.11-64bit/0050_68be83461849c00eeaf1a4d0f092273de5a0320b_20240731_113308.json
new file mode 100644
index 0000000..aa57ba5
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.11-64bit/0050_68be83461849c00eeaf1a4d0f092273de5a0320b_20240731_113308.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az1536-525",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.11.9",
+        "python_version": "3.11.9",
+        "python_build": [
+            "main",
+            "Jul 15 2024 21:50:21"
+        ],
+        "release": "6.5.0-1024-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.11.9.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "3.0625 GHz",
+            "hz_actual_friendly": "3.0625 GHz",
+            "hz_advertised": [
+                3062467000,
+                0
+            ],
+            "hz_actual": [
+                3062467000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "68be83461849c00eeaf1a4d0f092273de5a0320b",
+        "time": "2024-07-31T11:32:47Z",
+        "author_time": "2024-07-31T11:32:47Z",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.8097350779999886,
+                "max": 0.8697391960000118,
+                "mean": 0.8434228805999965,
+                "stddev": 0.026829261047480304,
+                "rounds": 5,
+                "median": 0.856303309999987,
+                "iqr": 0.04629932675001669,
+                "q1": 0.8172859279999898,
+                "q3": 0.8635852547500065,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 0.8097350779999886,
+                "hd15iqr": 0.8697391960000118,
+                "ops": 1.1856448562180544,
+                "total": 4.217114402999982,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.8404026559999807,
+                "max": 0.8779347779999966,
+                "mean": 0.8619272045999992,
+                "stddev": 0.015871182883615144,
+                "rounds": 5,
+                "median": 0.8687324269999976,
+                "iqr": 0.0258450894999811,
+                "q1": 0.8478319452500145,
+                "q3": 0.8736770347499956,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 0.8404026559999807,
+                "hd15iqr": 0.8779347779999966,
+                "ops": 1.1601907848634123,
+                "total": 4.309636022999996,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.9856093269999917,
+                "max": 1.0132902089999902,
+                "mean": 1.0020809901999996,
+                "stddev": 0.010190546228016987,
+                "rounds": 5,
+                "median": 1.0047730650000233,
+                "iqr": 0.009896877499990353,
+                "q1": 0.9974386344999999,
+                "q3": 1.0073355119999903,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 0.9856093269999917,
+                "hd15iqr": 1.0132902089999902,
+                "ops": 0.9979233313271572,
+                "total": 5.010404950999998,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 0.9242947320000212,
+                "max": 0.9438269710000213,
+                "mean": 0.9351281896000045,
+                "stddev": 0.008929083894884471,
+                "rounds": 5,
+                "median": 0.9374112589999868,
+                "iqr": 0.016533828249976068,
+                "q1": 0.9265387935000149,
+                "q3": 0.943072621749991,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 0.9242947320000212,
+                "hd15iqr": 0.9438269710000213,
+                "ops": 1.0693721044039362,
+                "total": 4.675640948000023,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-07-31T11:33:37.530455",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.9-64bit/0021_cb2bc6605d9064e7f6449225cfbf3c8051da185c_20231011_120317.json b/benchmark/results/Linux-CPython-3.11-64bit/0051_46d979fbd43608b6ceec18ea8ae9cd97ba659607_20240802_063600.json
similarity index 57%
rename from benchmark/results/Linux-CPython-3.9-64bit/0021_cb2bc6605d9064e7f6449225cfbf3c8051da185c_20231011_120317.json
rename to benchmark/results/Linux-CPython-3.11-64bit/0051_46d979fbd43608b6ceec18ea8ae9cd97ba659607_20240802_063600.json
index 9b2a56d..29adf15 100644
--- a/benchmark/results/Linux-CPython-3.9-64bit/0021_cb2bc6605d9064e7f6449225cfbf3c8051da185c_20231011_120317.json
+++ b/benchmark/results/Linux-CPython-3.11-64bit/0051_46d979fbd43608b6ceec18ea8ae9cd97ba659607_20240802_063600.json
@@ -1,20 +1,20 @@
 {
     "machine_info": {
-        "node": "fv-az955-721",
+        "node": "fv-az914-226",
         "processor": "x86_64",
         "machine": "x86_64",
         "python_compiler": "GCC 11.4.0",
         "python_implementation": "CPython",
-        "python_implementation_version": "3.9.18",
-        "python_version": "3.9.18",
+        "python_implementation_version": "3.11.9",
+        "python_version": "3.11.9",
         "python_build": [
             "main",
-            "Aug 28 2023 08:38:32"
+            "Jul 15 2024 21:50:21"
         ],
-        "release": "6.2.0-1012-azure",
+        "release": "6.5.0-1025-azure",
         "system": "Linux",
         "cpu": {
-            "python_version": "3.9.18.final.0 (64 bit)",
+            "python_version": "3.11.9.final.0 (64 bit)",
             "cpuinfo_version": [
                 9,
                 0,
@@ -23,53 +23,59 @@
             "cpuinfo_version_string": "9.0.0",
             "arch": "X86_64",
             "bits": 64,
-            "count": 2,
+            "count": 4,
             "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz",
-            "hz_advertised_friendly": "2.8000 GHz",
-            "hz_actual_friendly": "2.7934 GHz",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "3.3224 GHz",
+            "hz_actual_friendly": "3.3224 GHz",
             "hz_advertised": [
-                2800000000,
+                3322434000,
                 0
             ],
             "hz_actual": [
-                2793436000,
+                3322434000,
                 0
             ],
-            "stepping": 6,
-            "model": 106,
-            "family": 6,
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
             "flags": [
+                "3dnowext",
                 "3dnowprefetch",
                 "abm",
                 "adx",
                 "aes",
+                "aperfmperf",
                 "apic",
+                "arat",
                 "avx",
                 "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
                 "bmi1",
                 "bmi2",
                 "clflush",
                 "clflushopt",
+                "clwb",
+                "clzero",
                 "cmov",
+                "cmp_legacy",
                 "constant_tsc",
                 "cpuid",
+                "cr8_legacy",
                 "cx16",
                 "cx8",
                 "de",
+                "decodeassists",
                 "erms",
+                "extd_apicid",
                 "f16c",
+                "flushbyasid",
                 "fma",
                 "fpu",
                 "fsgsbase",
+                "fsrm",
                 "fxsr",
-                "hle",
+                "fxsr_opt",
                 "ht",
                 "hypervisor",
                 "invpcid",
@@ -78,64 +84,84 @@
                 "lm",
                 "mca",
                 "mce",
-                "md_clear",
+                "misalignsse",
                 "mmx",
+                "mmxext",
                 "movbe",
                 "msr",
                 "mtrr",
+                "nonstop_tsc",
                 "nopl",
+                "npt",
+                "nrip_save",
                 "nx",
+                "osvw",
                 "osxsave",
                 "pae",
                 "pat",
+                "pausefilter",
                 "pcid",
                 "pclmulqdq",
                 "pdpe1gb",
+                "pfthreshold",
                 "pge",
                 "pni",
                 "popcnt",
                 "pse",
                 "pse36",
-                "pti",
+                "rdpid",
+                "rdpru",
                 "rdrand",
                 "rdrnd",
                 "rdseed",
                 "rdtscp",
                 "rep_good",
-                "rtm",
                 "sep",
+                "sha",
+                "sha_ni",
                 "smap",
                 "smep",
-                "ss",
                 "sse",
                 "sse2",
                 "sse4_1",
                 "sse4_2",
+                "sse4a",
                 "ssse3",
+                "svm",
                 "syscall",
+                "topoext",
                 "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
                 "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
                 "xsave",
                 "xsavec",
+                "xsaveerptr",
                 "xsaveopt",
-                "xsaves",
-                "xtopology"
+                "xsaves"
             ],
-            "l3_cache_size": 50331648,
-            "l2_cache_size": "2.5 MiB",
-            "l1_data_cache_size": 98304,
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
             "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
+            "l2_cache_line_size": 512,
             "l2_cache_associativity": 6
         }
     },
     "commit_info": {
-        "id": "cb2bc6605d9064e7f6449225cfbf3c8051da185c",
-        "time": "2023-10-11T12:02:43+00:00",
-        "author_time": "2023-10-11T12:02:43+00:00",
+        "id": "46d979fbd43608b6ceec18ea8ae9cd97ba659607",
+        "time": "2024-08-02T06:35:35Z",
+        "author_time": "2024-08-02T06:35:35Z",
         "dirty": false,
         "project": "ariadne",
-        "branch": "master"
+        "branch": "main"
     },
     "benchmarks": [
         {
@@ -154,22 +180,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.261001229999998,
-                "max": 1.3024012079999991,
-                "mean": 1.2823047355999975,
-                "stddev": 0.018976110559520257,
+                "min": 0.8023217809999892,
+                "max": 0.8573597150000012,
+                "mean": 0.8297328670000013,
+                "stddev": 0.024805624614129322,
                 "rounds": 5,
-                "median": 1.291428965999998,
-                "iqr": 0.03329732150000275,
-                "q1": 1.2625362467499954,
-                "q3": 1.2958335682499982,
+                "median": 0.8409977120000178,
+                "iqr": 0.04288164225002333,
+                "q1": 0.8040137884999865,
+                "q3": 0.8468954307500098,
                 "iqr_outliers": 0,
                 "stddev_outliers": 3,
                 "outliers": "3;0",
-                "ld15iqr": 1.261001229999998,
-                "hd15iqr": 1.3024012079999991,
-                "ops": 0.7798458293395403,
-                "total": 6.411523677999988,
+                "ld15iqr": 0.8023217809999892,
+                "hd15iqr": 0.8573597150000012,
+                "ops": 1.2052071694057631,
+                "total": 4.1486643350000065,
                 "iterations": 1
             }
         },
@@ -189,22 +215,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.2852938900000055,
-                "max": 1.333457401000004,
-                "mean": 1.308052771000004,
-                "stddev": 0.020560018610751428,
+                "min": 0.8314536610000118,
+                "max": 0.8877805110000168,
+                "mean": 0.8608809858000086,
+                "stddev": 0.024409370564304037,
                 "rounds": 5,
-                "median": 1.306070854000012,
-                "iqr": 0.03630537124998412,
-                "q1": 1.2899818670000087,
-                "q3": 1.3262872382499928,
+                "median": 0.8641552690000083,
+                "iqr": 0.04375590650000305,
+                "q1": 0.8384071262500044,
+                "q3": 0.8821630327500074,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.2852938900000055,
-                "hd15iqr": 1.333457401000004,
-                "ops": 0.7644951504789075,
-                "total": 6.5402638550000205,
+                "ld15iqr": 0.8314536610000118,
+                "hd15iqr": 0.8877805110000168,
+                "ops": 1.1616007514333813,
+                "total": 4.304404929000043,
                 "iterations": 1
             }
         },
@@ -224,22 +250,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.5534717140000112,
-                "max": 1.6102649299999996,
-                "mean": 1.5844978240000018,
-                "stddev": 0.02094749159005783,
+                "min": 0.965924321000017,
+                "max": 1.0299396510000065,
+                "mean": 0.9979045212000017,
+                "stddev": 0.02719037277631313,
                 "rounds": 5,
-                "median": 1.5878011249999986,
-                "iqr": 0.025612218749994753,
-                "q1": 1.5717677277500037,
-                "q3": 1.5973799464999985,
+                "median": 0.9922718189999955,
+                "iqr": 0.04712656674998783,
+                "q1": 0.976439768750005,
+                "q3": 1.0235663354999929,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.5534717140000112,
-                "hd15iqr": 1.6102649299999996,
-                "ops": 0.6311147827742293,
-                "total": 7.922489120000009,
+                "ld15iqr": 0.965924321000017,
+                "hd15iqr": 1.0299396510000065,
+                "ops": 1.0020998790520343,
+                "total": 4.989522606000008,
                 "iterations": 1
             }
         },
@@ -259,26 +285,26 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.4016072210000061,
-                "max": 1.4544749599999989,
-                "mean": 1.4250105074000003,
-                "stddev": 0.021599021671180916,
+                "min": 0.8961909360000107,
+                "max": 0.9059962770000141,
+                "mean": 0.9003549408000083,
+                "stddev": 0.003760159193299541,
                 "rounds": 5,
-                "median": 1.4313084249999974,
-                "iqr": 0.03260602100000298,
-                "q1": 1.404830486249999,
-                "q3": 1.437436507250002,
+                "median": 0.8992803120000019,
+                "iqr": 0.00508289850002086,
+                "q1": 0.8978471444999983,
+                "q3": 0.9029300430000191,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.4016072210000061,
-                "hd15iqr": 1.4544749599999989,
-                "ops": 0.7017492115370768,
-                "total": 7.125052537000002,
+                "ld15iqr": 0.8961909360000107,
+                "hd15iqr": 0.9059962770000141,
+                "ops": 1.1106730853406017,
+                "total": 4.5017747040000415,
                 "iterations": 1
             }
         }
     ],
-    "datetime": "2023-10-11T12:04:00.338043",
+    "datetime": "2024-08-02T06:36:28.750849",
     "version": "4.0.0"
 }
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.12-64bit/0023_a64ab498e11ec6850a19a3518835d7bbfe41cc85_20240613_081131.json b/benchmark/results/Linux-CPython-3.12-64bit/0023_a64ab498e11ec6850a19a3518835d7bbfe41cc85_20240613_081131.json
new file mode 100644
index 0000000..29bcfef
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.12-64bit/0023_a64ab498e11ec6850a19a3518835d7bbfe41cc85_20240613_081131.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az738-976",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.12.3",
+        "python_version": "3.12.3",
+        "python_build": [
+            "main",
+            "May  9 2024 14:51:07"
+        ],
+        "release": "6.5.0-1021-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.12.3.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "3.1689 GHz",
+            "hz_actual_friendly": "3.1689 GHz",
+            "hz_advertised": [
+                3168910000,
+                0
+            ],
+            "hz_actual": [
+                3168910000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "a64ab498e11ec6850a19a3518835d7bbfe41cc85",
+        "time": "2024-06-13T08:11:02Z",
+        "author_time": "2024-06-13T08:11:02Z",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.000012378000008,
+                "max": 1.0505692670000144,
+                "mean": 1.0317595532000041,
+                "stddev": 0.023623671450152817,
+                "rounds": 5,
+                "median": 1.0461272329999929,
+                "iqr": 0.03995343474998947,
+                "q1": 1.00962932125001,
+                "q3": 1.0495827559999995,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.000012378000008,
+                "hd15iqr": 1.0505692670000144,
+                "ops": 0.9692180672313604,
+                "total": 5.158797766000021,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.0041342590000113,
+                "max": 1.0613129520000086,
+                "mean": 1.0370842526000104,
+                "stddev": 0.021030589814302746,
+                "rounds": 5,
+                "median": 1.0433812980000141,
+                "iqr": 0.022075872250013617,
+                "q1": 1.0258652480000023,
+                "q3": 1.047941120250016,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.0041342590000113,
+                "hd15iqr": 1.0613129520000086,
+                "ops": 0.9642418130378138,
+                "total": 5.185421263000052,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.2552358789999971,
+                "max": 1.3070854380000014,
+                "mean": 1.2815319208000004,
+                "stddev": 0.018605066988958394,
+                "rounds": 5,
+                "median": 1.2801507089999973,
+                "iqr": 0.01932344575001821,
+                "q1": 1.2725737834999933,
+                "q3": 1.2918972292500115,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.2552358789999971,
+                "hd15iqr": 1.3070854380000014,
+                "ops": 0.7803161074409655,
+                "total": 6.407659604000003,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.1453549940000016,
+                "max": 1.2469306280000012,
+                "mean": 1.2130210024000008,
+                "stddev": 0.044332615299710956,
+                "rounds": 5,
+                "median": 1.2391514339999787,
+                "iqr": 0.06537804950000492,
+                "q1": 1.1789721615000062,
+                "q3": 1.244350211000011,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.1453549940000016,
+                "hd15iqr": 1.2469306280000012,
+                "ops": 0.8243880345199861,
+                "total": 6.065105012000004,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-06-13T08:12:06.346923",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.12-64bit/0024_ee29897eeeed1990952acd68d1dde3f05712d2ee_20240731_113401.json b/benchmark/results/Linux-CPython-3.12-64bit/0024_ee29897eeeed1990952acd68d1dde3f05712d2ee_20240731_113401.json
new file mode 100644
index 0000000..30d86ee
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.12-64bit/0024_ee29897eeeed1990952acd68d1dde3f05712d2ee_20240731_113401.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az1040-171",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.12.4",
+        "python_version": "3.12.4",
+        "python_build": [
+            "main",
+            "Jul 15 2024 21:50:45"
+        ],
+        "release": "6.5.0-1024-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.12.4.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.4454 GHz",
+            "hz_actual_friendly": "2.4454 GHz",
+            "hz_advertised": [
+                2445429000,
+                0
+            ],
+            "hz_actual": [
+                2445429000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "ee29897eeeed1990952acd68d1dde3f05712d2ee",
+        "time": "2024-07-31T11:33:37Z",
+        "author_time": "2024-07-31T11:33:37Z",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.066419121000024,
+                "max": 1.1504020880000212,
+                "mean": 1.1154066586000055,
+                "stddev": 0.039722291260887374,
+                "rounds": 5,
+                "median": 1.1306645929999775,
+                "iqr": 0.07353191199997866,
+                "q1": 1.0764170042500183,
+                "q3": 1.149948916249997,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.066419121000024,
+                "hd15iqr": 1.1504020880000212,
+                "ops": 0.896534006041476,
+                "total": 5.577033293000028,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.0699412230000007,
+                "max": 1.1212444770000047,
+                "mean": 1.094924699600017,
+                "stddev": 0.02003032117752173,
+                "rounds": 5,
+                "median": 1.092540184000029,
+                "iqr": 0.030628323499968246,
+                "q1": 1.0801706560000355,
+                "q3": 1.1107989795000037,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.0699412230000007,
+                "hd15iqr": 1.1212444770000047,
+                "ops": 0.9133048148108326,
+                "total": 5.474623498000085,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.317379953999989,
+                "max": 1.357011846999967,
+                "mean": 1.3404660446000094,
+                "stddev": 0.017418014839963154,
+                "rounds": 5,
+                "median": 1.3425077220000503,
+                "iqr": 0.030922181250033987,
+                "q1": 1.3258743969999927,
+                "q3": 1.3567965782500266,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.317379953999989,
+                "hd15iqr": 1.357011846999967,
+                "ops": 0.7460091988368096,
+                "total": 6.702330223000047,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.223492723999982,
+                "max": 1.2983315160000188,
+                "mean": 1.2548397466000096,
+                "stddev": 0.030993950029672482,
+                "rounds": 5,
+                "median": 1.2425142010000059,
+                "iqr": 0.04901553600002728,
+                "q1": 1.231917871500002,
+                "q3": 1.2809334075000294,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.223492723999982,
+                "hd15iqr": 1.2983315160000188,
+                "ops": 0.7969145085733071,
+                "total": 6.274198733000048,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-07-31T11:34:37.825205",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0020_31ed78cbee56e878fc65ec19da487b33478ab693_20230627_141901.json b/benchmark/results/Linux-CPython-3.12-64bit/0025_429d11f4c2050cdf5b191fbcffe35f1c665e5b96_20240802_063656.json
similarity index 56%
rename from benchmark/results/Linux-CPython-3.10-64bit/0020_31ed78cbee56e878fc65ec19da487b33478ab693_20230627_141901.json
rename to benchmark/results/Linux-CPython-3.12-64bit/0025_429d11f4c2050cdf5b191fbcffe35f1c665e5b96_20240802_063656.json
index 77f60ae..53107f0 100644
--- a/benchmark/results/Linux-CPython-3.10-64bit/0020_31ed78cbee56e878fc65ec19da487b33478ab693_20230627_141901.json
+++ b/benchmark/results/Linux-CPython-3.12-64bit/0025_429d11f4c2050cdf5b191fbcffe35f1c665e5b96_20240802_063656.json
@@ -1,20 +1,20 @@
 {
     "machine_info": {
-        "node": "fv-az791-543",
+        "node": "fv-az568-955",
         "processor": "x86_64",
         "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
+        "python_compiler": "GCC 11.4.0",
         "python_implementation": "CPython",
-        "python_implementation_version": "3.10.12",
-        "python_version": "3.10.12",
+        "python_implementation_version": "3.12.4",
+        "python_version": "3.12.4",
         "python_build": [
             "main",
-            "Jun  7 2023 13:43:11"
+            "Jul 15 2024 21:50:45"
         ],
-        "release": "5.15.0-1040-azure",
+        "release": "6.5.0-1024-azure",
         "system": "Linux",
         "cpu": {
-            "python_version": "3.10.12.final.0 (64 bit)",
+            "python_version": "3.12.4.final.0 (64 bit)",
             "cpuinfo_version": [
                 9,
                 0,
@@ -23,53 +23,59 @@
             "cpuinfo_version_string": "9.0.0",
             "arch": "X86_64",
             "bits": 64,
-            "count": 2,
+            "count": 4,
             "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz",
-            "hz_advertised_friendly": "2.8000 GHz",
-            "hz_actual_friendly": "2.7934 GHz",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.5232 GHz",
+            "hz_actual_friendly": "2.5232 GHz",
             "hz_advertised": [
-                2800000000,
+                2523199000,
                 0
             ],
             "hz_actual": [
-                2793437000,
+                2523199000,
                 0
             ],
-            "stepping": 6,
-            "model": 106,
-            "family": 6,
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
             "flags": [
+                "3dnowext",
                 "3dnowprefetch",
                 "abm",
                 "adx",
                 "aes",
+                "aperfmperf",
                 "apic",
+                "arat",
                 "avx",
                 "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
                 "bmi1",
                 "bmi2",
                 "clflush",
                 "clflushopt",
+                "clwb",
+                "clzero",
                 "cmov",
+                "cmp_legacy",
                 "constant_tsc",
                 "cpuid",
+                "cr8_legacy",
                 "cx16",
                 "cx8",
                 "de",
+                "decodeassists",
                 "erms",
+                "extd_apicid",
                 "f16c",
+                "flushbyasid",
                 "fma",
                 "fpu",
                 "fsgsbase",
+                "fsrm",
                 "fxsr",
-                "hle",
+                "fxsr_opt",
                 "ht",
                 "hypervisor",
                 "invpcid",
@@ -78,64 +84,84 @@
                 "lm",
                 "mca",
                 "mce",
-                "md_clear",
+                "misalignsse",
                 "mmx",
+                "mmxext",
                 "movbe",
                 "msr",
                 "mtrr",
+                "nonstop_tsc",
                 "nopl",
+                "npt",
+                "nrip_save",
                 "nx",
+                "osvw",
                 "osxsave",
                 "pae",
                 "pat",
+                "pausefilter",
                 "pcid",
                 "pclmulqdq",
                 "pdpe1gb",
+                "pfthreshold",
                 "pge",
                 "pni",
                 "popcnt",
                 "pse",
                 "pse36",
-                "pti",
+                "rdpid",
+                "rdpru",
                 "rdrand",
                 "rdrnd",
                 "rdseed",
                 "rdtscp",
                 "rep_good",
-                "rtm",
                 "sep",
+                "sha",
+                "sha_ni",
                 "smap",
                 "smep",
-                "ss",
                 "sse",
                 "sse2",
                 "sse4_1",
                 "sse4_2",
+                "sse4a",
                 "ssse3",
+                "svm",
                 "syscall",
+                "topoext",
                 "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
                 "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
                 "xsave",
                 "xsavec",
+                "xsaveerptr",
                 "xsaveopt",
-                "xsaves",
-                "xtopology"
+                "xsaves"
             ],
-            "l3_cache_size": 50331648,
-            "l2_cache_size": "2.5 MiB",
-            "l1_data_cache_size": 98304,
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
             "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
+            "l2_cache_line_size": 512,
             "l2_cache_associativity": 6
         }
     },
     "commit_info": {
-        "id": "31ed78cbee56e878fc65ec19da487b33478ab693",
-        "time": "2023-06-27T14:18:32+00:00",
-        "author_time": "2023-06-27T14:18:32+00:00",
+        "id": "429d11f4c2050cdf5b191fbcffe35f1c665e5b96",
+        "time": "2024-08-02T06:36:28Z",
+        "author_time": "2024-08-02T06:36:28Z",
         "dirty": false,
         "project": "ariadne",
-        "branch": "master"
+        "branch": "main"
     },
     "benchmarks": [
         {
@@ -154,22 +180,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.2967401489999872,
-                "max": 1.3610482560000037,
-                "mean": 1.318354019200001,
-                "stddev": 0.02681549238519678,
+                "min": 1.0178533200000004,
+                "max": 1.1004742060000012,
+                "mean": 1.066283403,
+                "stddev": 0.03964747200059133,
                 "rounds": 5,
-                "median": 1.3107435969999983,
-                "iqr": 0.038267068250007696,
-                "q1": 1.2968043017500008,
-                "q3": 1.3350713700000085,
+                "median": 1.0880777339999952,
+                "iqr": 0.07118621125000146,
+                "q1": 1.0260772432500005,
+                "q3": 1.097263454500002,
                 "iqr_outliers": 0,
                 "stddev_outliers": 1,
                 "outliers": "1;0",
-                "ld15iqr": 1.2967401489999872,
-                "hd15iqr": 1.3610482560000037,
-                "ops": 0.7585215999924031,
-                "total": 6.591770096000005,
+                "ld15iqr": 1.0178533200000004,
+                "hd15iqr": 1.1004742060000012,
+                "ops": 0.9378369739100216,
+                "total": 5.3314170149999995,
                 "iterations": 1
             }
         },
@@ -189,22 +215,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.3299884179999992,
-                "max": 1.398261299000012,
-                "mean": 1.3684538786000076,
-                "stddev": 0.03212300409620538,
+                "min": 1.0224032250000334,
+                "max": 1.0929182990000186,
+                "mean": 1.0534932762000095,
+                "stddev": 0.025578545073313478,
                 "rounds": 5,
-                "median": 1.3768890810000016,
-                "iqr": 0.06064958550000199,
-                "q1": 1.3371303950000097,
-                "q3": 1.3977799805000117,
+                "median": 1.054076710000004,
+                "iqr": 0.025567070749993093,
+                "q1": 1.038407210250007,
+                "q3": 1.0639742810000001,
                 "iqr_outliers": 0,
-                "stddev_outliers": 1,
-                "outliers": "1;0",
-                "ld15iqr": 1.3299884179999992,
-                "hd15iqr": 1.398261299000012,
-                "ops": 0.7307517013456434,
-                "total": 6.842269393000038,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.0224032250000334,
+                "hd15iqr": 1.0929182990000186,
+                "ops": 0.9492229543287054,
+                "total": 5.267466381000048,
                 "iterations": 1
             }
         },
@@ -224,22 +250,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.6010638459999882,
-                "max": 1.6746453760000009,
-                "mean": 1.6453004711999994,
-                "stddev": 0.027664689991690097,
+                "min": 1.259171623000043,
+                "max": 1.2733041249999815,
+                "mean": 1.2634915954000234,
+                "stddev": 0.005796712538021701,
                 "rounds": 5,
-                "median": 1.651262308000014,
-                "iqr": 0.03213995600001596,
-                "q1": 1.6307177344999886,
-                "q3": 1.6628576905000045,
+                "median": 1.261000976000048,
+                "iqr": 0.00667070925000246,
+                "q1": 1.2597170837500187,
+                "q3": 1.2663877930000211,
                 "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.6010638459999882,
-                "hd15iqr": 1.6746453760000009,
-                "ops": 0.6077917179897543,
-                "total": 8.226502355999997,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.259171623000043,
+                "hd15iqr": 1.2733041249999815,
+                "ops": 0.7914575796472935,
+                "total": 6.317457977000117,
                 "iterations": 1
             }
         },
@@ -259,26 +285,26 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.4491071079999926,
-                "max": 1.5147157739999955,
-                "mean": 1.4897445865999999,
-                "stddev": 0.027035893018894662,
+                "min": 1.143722774999958,
+                "max": 1.2412260330000322,
+                "mean": 1.205642441000009,
+                "stddev": 0.03966309598990536,
                 "rounds": 5,
-                "median": 1.502008888000006,
-                "iqr": 0.03994292875001548,
-                "q1": 1.4690905819999927,
-                "q3": 1.5090335107500081,
+                "median": 1.217748724000046,
+                "iqr": 0.05697454725005002,
+                "q1": 1.1791993297499772,
+                "q3": 1.2361738770000272,
                 "iqr_outliers": 0,
                 "stddev_outliers": 1,
                 "outliers": "1;0",
-                "ld15iqr": 1.4491071079999926,
-                "hd15iqr": 1.5147157739999955,
-                "ops": 0.6712560052205127,
-                "total": 7.448722932999999,
+                "ld15iqr": 1.143722774999958,
+                "hd15iqr": 1.2412260330000322,
+                "ops": 0.8294333095727446,
+                "total": 6.028212205000045,
                 "iterations": 1
             }
         }
     ],
-    "datetime": "2023-06-27T14:19:45.149114",
+    "datetime": "2024-08-02T06:37:31.789289",
     "version": "4.0.0"
 }
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.8-64bit/0019_4a5ab1b9672ab05d38b783539c67a6a83e33b5f2_20230627_134044.json b/benchmark/results/Linux-CPython-3.8-64bit/0019_4a5ab1b9672ab05d38b783539c67a6a83e33b5f2_20230627_134044.json
deleted file mode 100644
index 4cd97a6..0000000
--- a/benchmark/results/Linux-CPython-3.8-64bit/0019_4a5ab1b9672ab05d38b783539c67a6a83e33b5f2_20230627_134044.json
+++ /dev/null
@@ -1,284 +0,0 @@
-{
-    "machine_info": {
-        "node": "fv-az413-549",
-        "processor": "x86_64",
-        "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
-        "python_implementation": "CPython",
-        "python_implementation_version": "3.8.17",
-        "python_version": "3.8.17",
-        "python_build": [
-            "default",
-            "Jun  7 2023 12:29:56"
-        ],
-        "release": "5.15.0-1040-azure",
-        "system": "Linux",
-        "cpu": {
-            "python_version": "3.8.17.final.0 (64 bit)",
-            "cpuinfo_version": [
-                9,
-                0,
-                0
-            ],
-            "cpuinfo_version_string": "9.0.0",
-            "arch": "X86_64",
-            "bits": 64,
-            "count": 2,
-            "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz",
-            "hz_advertised_friendly": "2.6000 GHz",
-            "hz_actual_friendly": "2.5939 GHz",
-            "hz_advertised": [
-                2600000000,
-                0
-            ],
-            "hz_actual": [
-                2593907000,
-                0
-            ],
-            "stepping": 7,
-            "model": 85,
-            "family": 6,
-            "flags": [
-                "3dnowprefetch",
-                "abm",
-                "adx",
-                "aes",
-                "apic",
-                "avx",
-                "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
-                "bmi1",
-                "bmi2",
-                "clflush",
-                "clflushopt",
-                "cmov",
-                "constant_tsc",
-                "cpuid",
-                "cx16",
-                "cx8",
-                "de",
-                "erms",
-                "f16c",
-                "fma",
-                "fpu",
-                "fsgsbase",
-                "fxsr",
-                "hle",
-                "ht",
-                "hypervisor",
-                "invpcid",
-                "invpcid_single",
-                "lahf_lm",
-                "lm",
-                "mca",
-                "mce",
-                "md_clear",
-                "mmx",
-                "movbe",
-                "msr",
-                "mtrr",
-                "nopl",
-                "nx",
-                "osxsave",
-                "pae",
-                "pat",
-                "pcid",
-                "pclmulqdq",
-                "pdpe1gb",
-                "pge",
-                "pni",
-                "popcnt",
-                "pse",
-                "pse36",
-                "pti",
-                "rdrand",
-                "rdrnd",
-                "rdseed",
-                "rdtscp",
-                "rep_good",
-                "rtm",
-                "sep",
-                "smap",
-                "smep",
-                "ss",
-                "sse",
-                "sse2",
-                "sse4_1",
-                "sse4_2",
-                "ssse3",
-                "syscall",
-                "tsc",
-                "vme",
-                "xsave",
-                "xsavec",
-                "xsaveopt",
-                "xsaves",
-                "xtopology"
-            ],
-            "l3_cache_size": 37486592,
-            "l2_cache_size": 2097152,
-            "l1_data_cache_size": 65536,
-            "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
-            "l2_cache_associativity": 6
-        }
-    },
-    "commit_info": {
-        "id": "4a5ab1b9672ab05d38b783539c67a6a83e33b5f2",
-        "time": "2023-06-27T15:40:03+02:00",
-        "author_time": "2023-06-27T08:40:03-05:00",
-        "dirty": false,
-        "project": "ariadne",
-        "branch": "master"
-    },
-    "benchmarks": [
-        {
-            "group": null,
-            "name": "test_query_without_extensions",
-            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.4934675400000117,
-                "max": 1.5754605890000164,
-                "mean": 1.5277171424000016,
-                "stddev": 0.03332750659984521,
-                "rounds": 5,
-                "median": 1.5305815989999871,
-                "iqr": 0.051392740750010546,
-                "q1": 1.4975731397499956,
-                "q3": 1.5489658805000062,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.4934675400000117,
-                "hd15iqr": 1.5754605890000164,
-                "ops": 0.6545714335763932,
-                "total": 7.638585712000008,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_noop_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.5287739640000098,
-                "max": 1.639492233999988,
-                "mean": 1.5814909132000026,
-                "stddev": 0.05007288024328114,
-                "rounds": 5,
-                "median": 1.5852704830000164,
-                "iqr": 0.09332561324999489,
-                "q1": 1.5320896750000017,
-                "q3": 1.6254152882499966,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.5287739640000098,
-                "hd15iqr": 1.639492233999988,
-                "ops": 0.6323147301406817,
-                "total": 7.907454566000013,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_telemetry_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.807895607000006,
-                "max": 1.9350609280000128,
-                "mean": 1.8769035170000052,
-                "stddev": 0.04770820302825833,
-                "rounds": 5,
-                "median": 1.8922561840000185,
-                "iqr": 0.06013449024999318,
-                "q1": 1.8437916465000015,
-                "q3": 1.9039261367499947,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.807895607000006,
-                "hd15iqr": 1.9350609280000128,
-                "ops": 0.5327924376200086,
-                "total": 9.384517585000026,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_tracing_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.6490971760000264,
-                "max": 1.7449009969999736,
-                "mean": 1.7068883560000017,
-                "stddev": 0.035110850564043464,
-                "rounds": 5,
-                "median": 1.714680775000005,
-                "iqr": 0.027884076750005704,
-                "q1": 1.6949687952499985,
-                "q3": 1.7228528720000043,
-                "iqr_outliers": 1,
-                "stddev_outliers": 2,
-                "outliers": "2;1",
-                "ld15iqr": 1.7102593349999893,
-                "hd15iqr": 1.7449009969999736,
-                "ops": 0.5858613988928043,
-                "total": 8.534441780000009,
-                "iterations": 1
-            }
-        }
-    ],
-    "datetime": "2023-06-27T13:41:35.135106",
-    "version": "4.0.0"
-}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.8-64bit/0021_37b57186425aab59b467c4a1a93bc375c71f2919_20231011_120159.json b/benchmark/results/Linux-CPython-3.8-64bit/0049_1a665e368c8499beafe07faab0fe6f438322a917_20240613_080723.json
similarity index 58%
rename from benchmark/results/Linux-CPython-3.8-64bit/0021_37b57186425aab59b467c4a1a93bc375c71f2919_20231011_120159.json
rename to benchmark/results/Linux-CPython-3.8-64bit/0049_1a665e368c8499beafe07faab0fe6f438322a917_20240613_080723.json
index ecc1fa7..fc12722 100644
--- a/benchmark/results/Linux-CPython-3.8-64bit/0021_37b57186425aab59b467c4a1a93bc375c71f2919_20231011_120159.json
+++ b/benchmark/results/Linux-CPython-3.8-64bit/0049_1a665e368c8499beafe07faab0fe6f438322a917_20240613_080723.json
@@ -1,6 +1,6 @@
 {
     "machine_info": {
-        "node": "fv-az477-880",
+        "node": "fv-az1427-568",
         "processor": "x86_64",
         "machine": "x86_64",
         "python_compiler": "GCC 11.4.0",
@@ -11,7 +11,7 @@
             "default",
             "Aug 28 2023 08:27:22"
         ],
-        "release": "6.2.0-1012-azure",
+        "release": "6.5.0-1021-azure",
         "system": "Linux",
         "cpu": {
             "python_version": "3.8.18.final.0 (64 bit)",
@@ -23,53 +23,59 @@
             "cpuinfo_version_string": "9.0.0",
             "arch": "X86_64",
             "bits": 64,
-            "count": 2,
+            "count": 4,
             "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz",
-            "hz_advertised_friendly": "2.8000 GHz",
-            "hz_actual_friendly": "2.7934 GHz",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.4454 GHz",
+            "hz_actual_friendly": "2.4454 GHz",
             "hz_advertised": [
-                2800000000,
+                2445424000,
                 0
             ],
             "hz_actual": [
-                2793440000,
+                2445424000,
                 0
             ],
-            "stepping": 6,
-            "model": 106,
-            "family": 6,
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
             "flags": [
+                "3dnowext",
                 "3dnowprefetch",
                 "abm",
                 "adx",
                 "aes",
+                "aperfmperf",
                 "apic",
+                "arat",
                 "avx",
                 "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
                 "bmi1",
                 "bmi2",
                 "clflush",
                 "clflushopt",
+                "clwb",
+                "clzero",
                 "cmov",
+                "cmp_legacy",
                 "constant_tsc",
                 "cpuid",
+                "cr8_legacy",
                 "cx16",
                 "cx8",
                 "de",
+                "decodeassists",
                 "erms",
+                "extd_apicid",
                 "f16c",
+                "flushbyasid",
                 "fma",
                 "fpu",
                 "fsgsbase",
+                "fsrm",
                 "fxsr",
-                "hle",
+                "fxsr_opt",
                 "ht",
                 "hypervisor",
                 "invpcid",
@@ -78,64 +84,84 @@
                 "lm",
                 "mca",
                 "mce",
-                "md_clear",
+                "misalignsse",
                 "mmx",
+                "mmxext",
                 "movbe",
                 "msr",
                 "mtrr",
+                "nonstop_tsc",
                 "nopl",
+                "npt",
+                "nrip_save",
                 "nx",
+                "osvw",
                 "osxsave",
                 "pae",
                 "pat",
+                "pausefilter",
                 "pcid",
                 "pclmulqdq",
                 "pdpe1gb",
+                "pfthreshold",
                 "pge",
                 "pni",
                 "popcnt",
                 "pse",
                 "pse36",
-                "pti",
+                "rdpid",
+                "rdpru",
                 "rdrand",
                 "rdrnd",
                 "rdseed",
                 "rdtscp",
                 "rep_good",
-                "rtm",
                 "sep",
+                "sha",
+                "sha_ni",
                 "smap",
                 "smep",
-                "ss",
                 "sse",
                 "sse2",
                 "sse4_1",
                 "sse4_2",
+                "sse4a",
                 "ssse3",
+                "svm",
                 "syscall",
+                "topoext",
                 "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
                 "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
                 "xsave",
                 "xsavec",
+                "xsaveerptr",
                 "xsaveopt",
-                "xsaves",
-                "xtopology"
+                "xsaves"
             ],
-            "l3_cache_size": 50331648,
-            "l2_cache_size": "2.5 MiB",
-            "l1_data_cache_size": 98304,
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
             "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
+            "l2_cache_line_size": 512,
             "l2_cache_associativity": 6
         }
     },
     "commit_info": {
-        "id": "37b57186425aab59b467c4a1a93bc375c71f2919",
-        "time": "2023-10-11T14:01:19+02:00",
-        "author_time": "2023-10-11T07:01:19-05:00",
+        "id": "1a665e368c8499beafe07faab0fe6f438322a917",
+        "time": "2024-06-13T10:06:27+02:00",
+        "author_time": "2024-06-13T10:06:27+02:00",
         "dirty": false,
         "project": "ariadne",
-        "branch": "master"
+        "branch": "main"
     },
     "benchmarks": [
         {
@@ -154,22 +180,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.3077772890000006,
-                "max": 1.359312794999994,
-                "mean": 1.3289348356000006,
-                "stddev": 0.020403825532179294,
+                "min": 1.0194042730000206,
+                "max": 1.0644503170000235,
+                "mean": 1.0387477316000058,
+                "stddev": 0.017756620311984384,
                 "rounds": 5,
-                "median": 1.3291682400000013,
-                "iqr": 0.029656411499999535,
-                "q1": 1.311714000000002,
-                "q3": 1.3413704115000016,
+                "median": 1.0354254649999461,
+                "iqr": 0.02665933275001464,
+                "q1": 1.0250741335000129,
+                "q3": 1.0517334662500275,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.3077772890000006,
-                "hd15iqr": 1.359312794999994,
-                "ops": 0.7524823439130559,
-                "total": 6.6446741780000025,
+                "ld15iqr": 1.0194042730000206,
+                "hd15iqr": 1.0644503170000235,
+                "ops": 0.962697649851594,
+                "total": 5.193738658000029,
                 "iterations": 1
             }
         },
@@ -189,22 +215,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.3303512659999797,
-                "max": 1.3714014410000175,
-                "mean": 1.3536547563999932,
-                "stddev": 0.016534428323845034,
+                "min": 1.0387334549999991,
+                "max": 1.0834554360000084,
+                "mean": 1.0684201449999933,
+                "stddev": 0.017877730705016893,
                 "rounds": 5,
-                "median": 1.3514108109999938,
-                "iqr": 0.02526594274998928,
-                "q1": 1.3432524659999956,
-                "q3": 1.3685184087499849,
+                "median": 1.0757512550000001,
+                "iqr": 0.021273778500003004,
+                "q1": 1.0586969392499839,
+                "q3": 1.0799707177499869,
                 "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.3303512659999797,
-                "hd15iqr": 1.3714014410000175,
-                "ops": 0.7387408017236773,
-                "total": 6.768273781999966,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.0387334549999991,
+                "hd15iqr": 1.0834554360000084,
+                "ops": 0.9359613862391244,
+                "total": 5.342100724999966,
                 "iterations": 1
             }
         },
@@ -224,22 +250,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.6017218350000064,
-                "max": 1.6527725100000055,
-                "mean": 1.6307687585999986,
-                "stddev": 0.02314379478353227,
+                "min": 1.295178051999983,
+                "max": 1.3371140010000317,
+                "mean": 1.3170480178000161,
+                "stddev": 0.015151300563321356,
                 "rounds": 5,
-                "median": 1.641070577999983,
-                "iqr": 0.040889473250011577,
-                "q1": 1.608221632749995,
-                "q3": 1.6491111060000065,
+                "median": 1.3176752710000414,
+                "iqr": 0.016867607000065732,
+                "q1": 1.3088299899999782,
+                "q3": 1.325697597000044,
                 "iqr_outliers": 0,
-                "stddev_outliers": 1,
-                "outliers": "1;0",
-                "ld15iqr": 1.6017218350000064,
-                "hd15iqr": 1.6527725100000055,
-                "ops": 0.613207724716588,
-                "total": 8.153843792999993,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.295178051999983,
+                "hd15iqr": 1.3371140010000317,
+                "ops": 0.7592737595629885,
+                "total": 6.585240089000081,
                 "iterations": 1
             }
         },
@@ -259,26 +285,26 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.4468888289999882,
-                "max": 1.5005883110000013,
-                "mean": 1.4773017177999974,
-                "stddev": 0.02310519106120055,
+                "min": 1.1411834390000308,
+                "max": 1.2120502120000083,
+                "mean": 1.1682634059999941,
+                "stddev": 0.02891538888491844,
                 "rounds": 5,
-                "median": 1.4706099670000015,
-                "iqr": 0.0377956344999717,
-                "q1": 1.4626948810000115,
-                "q3": 1.5004905154999832,
+                "median": 1.1694035869999766,
+                "iqr": 0.04220925875000603,
+                "q1": 1.142554498999985,
+                "q3": 1.184763757749991,
                 "iqr_outliers": 0,
-                "stddev_outliers": 3,
-                "outliers": "3;0",
-                "ld15iqr": 1.4468888289999882,
-                "hd15iqr": 1.5005883110000013,
-                "ops": 0.6769097930036955,
-                "total": 7.3865085889999875,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.1411834390000308,
+                "hd15iqr": 1.2120502120000083,
+                "ops": 0.8559713459003997,
+                "total": 5.841317029999971,
                 "iterations": 1
             }
         }
     ],
-    "datetime": "2023-10-11T12:02:43.812833",
+    "datetime": "2024-06-13T08:07:57.867201",
     "version": "4.0.0"
 }
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.8-64bit/0050_26581bac37872f5b2cfaba5ced2f0f272d7e7ed1_20240731_113007.json b/benchmark/results/Linux-CPython-3.8-64bit/0050_26581bac37872f5b2cfaba5ced2f0f272d7e7ed1_20240731_113007.json
new file mode 100644
index 0000000..6685503
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.8-64bit/0050_26581bac37872f5b2cfaba5ced2f0f272d7e7ed1_20240731_113007.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az520-223",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.8.18",
+        "python_version": "3.8.18",
+        "python_build": [
+            "default",
+            "Jul 16 2024 19:04:00"
+        ],
+        "release": "6.5.0-1024-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.8.18.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.7389 GHz",
+            "hz_actual_friendly": "2.7389 GHz",
+            "hz_advertised": [
+                2738937000,
+                0
+            ],
+            "hz_actual": [
+                2738937000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "26581bac37872f5b2cfaba5ced2f0f272d7e7ed1",
+        "time": "2024-07-31T13:29:40+02:00",
+        "author_time": "2024-07-31T13:29:40+02:00",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.1573243709999872,
+                "max": 1.2679768080000144,
+                "mean": 1.199575368799998,
+                "stddev": 0.04880040308904846,
+                "rounds": 5,
+                "median": 1.1694443330000013,
+                "iqr": 0.07680055175001854,
+                "q1": 1.165936620999986,
+                "q3": 1.2427371727500045,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.1573243709999872,
+                "hd15iqr": 1.2679768080000144,
+                "ops": 0.833628320495073,
+                "total": 5.99787684399999,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.1834164470000132,
+                "max": 1.248413026999998,
+                "mean": 1.2105493366000075,
+                "stddev": 0.027520131384830664,
+                "rounds": 5,
+                "median": 1.2031161259999976,
+                "iqr": 0.046228289749983276,
+                "q1": 1.1875399455000206,
+                "q3": 1.233768235250004,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.1834164470000132,
+                "hd15iqr": 1.248413026999998,
+                "ops": 0.8260712469667993,
+                "total": 6.052746683000038,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.4226114040000084,
+                "max": 1.5323994069999856,
+                "mean": 1.4703221429999984,
+                "stddev": 0.03976946975841278,
+                "rounds": 5,
+                "median": 1.469049216000002,
+                "iqr": 0.03853077675000094,
+                "q1": 1.4479424709999975,
+                "q3": 1.4864732477499984,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.4226114040000084,
+                "hd15iqr": 1.5323994069999856,
+                "ops": 0.6801230633442219,
+                "total": 7.3516107149999925,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.2930760609999936,
+                "max": 1.3821129229999656,
+                "mean": 1.3405218291999972,
+                "stddev": 0.034075153073186634,
+                "rounds": 5,
+                "median": 1.3500771810000174,
+                "iqr": 0.047479563750016496,
+                "q1": 1.3146624589999902,
+                "q3": 1.3621420227500067,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.2930760609999936,
+                "hd15iqr": 1.3821129229999656,
+                "ops": 0.7459781543406754,
+                "total": 6.702609145999986,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-07-31T11:30:47.536734",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.8-64bit/0020_fa0db54348732b0fccfe27e0fafba573e6144f3c_20230627_141619.json b/benchmark/results/Linux-CPython-3.8-64bit/0051_7dffde4ec1c1b48538d178b460a0a5460a9c47ad_20240802_063251.json
similarity index 57%
rename from benchmark/results/Linux-CPython-3.8-64bit/0020_fa0db54348732b0fccfe27e0fafba573e6144f3c_20230627_141619.json
rename to benchmark/results/Linux-CPython-3.8-64bit/0051_7dffde4ec1c1b48538d178b460a0a5460a9c47ad_20240802_063251.json
index aaa8e35..1bb3c4c 100644
--- a/benchmark/results/Linux-CPython-3.8-64bit/0020_fa0db54348732b0fccfe27e0fafba573e6144f3c_20230627_141619.json
+++ b/benchmark/results/Linux-CPython-3.8-64bit/0051_7dffde4ec1c1b48538d178b460a0a5460a9c47ad_20240802_063251.json
@@ -1,20 +1,20 @@
 {
     "machine_info": {
-        "node": "fv-az576-706",
+        "node": "fv-az1789-210",
         "processor": "x86_64",
         "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
+        "python_compiler": "GCC 11.4.0",
         "python_implementation": "CPython",
-        "python_implementation_version": "3.8.17",
-        "python_version": "3.8.17",
+        "python_implementation_version": "3.8.18",
+        "python_version": "3.8.18",
         "python_build": [
             "default",
-            "Jun  7 2023 12:29:56"
+            "Jul 16 2024 19:04:00"
         ],
-        "release": "5.15.0-1040-azure",
+        "release": "6.5.0-1024-azure",
         "system": "Linux",
         "cpu": {
-            "python_version": "3.8.17.final.0 (64 bit)",
+            "python_version": "3.8.18.final.0 (64 bit)",
             "cpuinfo_version": [
                 9,
                 0,
@@ -23,53 +23,59 @@
             "cpuinfo_version_string": "9.0.0",
             "arch": "X86_64",
             "bits": 64,
-            "count": 2,
+            "count": 4,
             "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz",
-            "hz_advertised_friendly": "2.6000 GHz",
-            "hz_actual_friendly": "2.0951 GHz",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.6653 GHz",
+            "hz_actual_friendly": "2.6653 GHz",
             "hz_advertised": [
-                2600000000,
+                2665260000,
                 0
             ],
             "hz_actual": [
-                2095079000,
+                2665260000,
                 0
             ],
-            "stepping": 4,
-            "model": 85,
-            "family": 6,
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
             "flags": [
+                "3dnowext",
                 "3dnowprefetch",
                 "abm",
                 "adx",
                 "aes",
+                "aperfmperf",
                 "apic",
+                "arat",
                 "avx",
                 "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
                 "bmi1",
                 "bmi2",
                 "clflush",
                 "clflushopt",
+                "clwb",
+                "clzero",
                 "cmov",
+                "cmp_legacy",
                 "constant_tsc",
                 "cpuid",
+                "cr8_legacy",
                 "cx16",
                 "cx8",
                 "de",
+                "decodeassists",
                 "erms",
+                "extd_apicid",
                 "f16c",
+                "flushbyasid",
                 "fma",
                 "fpu",
                 "fsgsbase",
+                "fsrm",
                 "fxsr",
-                "hle",
+                "fxsr_opt",
                 "ht",
                 "hypervisor",
                 "invpcid",
@@ -78,64 +84,84 @@
                 "lm",
                 "mca",
                 "mce",
-                "md_clear",
+                "misalignsse",
                 "mmx",
+                "mmxext",
                 "movbe",
                 "msr",
                 "mtrr",
+                "nonstop_tsc",
                 "nopl",
+                "npt",
+                "nrip_save",
                 "nx",
+                "osvw",
                 "osxsave",
                 "pae",
                 "pat",
+                "pausefilter",
                 "pcid",
                 "pclmulqdq",
                 "pdpe1gb",
+                "pfthreshold",
                 "pge",
                 "pni",
                 "popcnt",
                 "pse",
                 "pse36",
-                "pti",
+                "rdpid",
+                "rdpru",
                 "rdrand",
                 "rdrnd",
                 "rdseed",
                 "rdtscp",
                 "rep_good",
-                "rtm",
                 "sep",
+                "sha",
+                "sha_ni",
                 "smap",
                 "smep",
-                "ss",
                 "sse",
                 "sse2",
                 "sse4_1",
                 "sse4_2",
+                "sse4a",
                 "ssse3",
+                "svm",
                 "syscall",
+                "topoext",
                 "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
                 "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
                 "xsave",
                 "xsavec",
+                "xsaveerptr",
                 "xsaveopt",
-                "xsaves",
-                "xtopology"
+                "xsaves"
             ],
-            "l3_cache_size": 37486592,
-            "l2_cache_size": 2097152,
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
             "l1_data_cache_size": 65536,
             "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
+            "l2_cache_line_size": 512,
             "l2_cache_associativity": 6
         }
     },
     "commit_info": {
-        "id": "fa0db54348732b0fccfe27e0fafba573e6144f3c",
-        "time": "2023-06-27T16:15:33+02:00",
-        "author_time": "2023-06-27T16:15:33+02:00",
+        "id": "7dffde4ec1c1b48538d178b460a0a5460a9c47ad",
+        "time": "2024-08-02T08:32:28+02:00",
+        "author_time": "2024-08-02T01:32:28-05:00",
         "dirty": false,
         "project": "ariadne",
-        "branch": "master"
+        "branch": "main"
     },
     "benchmarks": [
         {
@@ -154,22 +180,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.6559789030000047,
-                "max": 1.715693062999975,
-                "mean": 1.6851366110000014,
-                "stddev": 0.022508556041881112,
+                "min": 1.1043101909999962,
+                "max": 1.1533986940000034,
+                "mean": 1.1275726021999959,
+                "stddev": 0.020593004474503164,
                 "rounds": 5,
-                "median": 1.6893897030000176,
-                "iqr": 0.03024805949998921,
-                "q1": 1.6680679857500067,
-                "q3": 1.698316045249996,
+                "median": 1.125201350999987,
+                "iqr": 0.03557092599999123,
+                "q1": 1.1100354382500015,
+                "q3": 1.1456063642499927,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.6559789030000047,
-                "hd15iqr": 1.715693062999975,
-                "ops": 0.5934236983947405,
-                "total": 8.425683055000007,
+                "ld15iqr": 1.1043101909999962,
+                "hd15iqr": 1.1533986940000034,
+                "ops": 0.8868608531715917,
+                "total": 5.637863010999979,
                 "iterations": 1
             }
         },
@@ -189,22 +215,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.6919130150000115,
-                "max": 1.7455788049999796,
-                "mean": 1.7182589279999945,
-                "stddev": 0.02293156091186956,
+                "min": 1.1355013829999905,
+                "max": 1.1831137629999944,
+                "mean": 1.1673975510000048,
+                "stddev": 0.018877894043190235,
                 "rounds": 5,
-                "median": 1.7172749289999842,
-                "iqr": 0.04070603674995965,
-                "q1": 1.698031418250018,
-                "q3": 1.7387374549999777,
+                "median": 1.1701763110000059,
+                "iqr": 0.020362958500015793,
+                "q1": 1.1602190257500027,
+                "q3": 1.1805819842500185,
                 "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.6919130150000115,
-                "hd15iqr": 1.7455788049999796,
-                "ops": 0.5819844632868995,
-                "total": 8.591294639999973,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.1355013829999905,
+                "hd15iqr": 1.1831137629999944,
+                "ops": 0.8566062170880774,
+                "total": 5.836987755000024,
                 "iterations": 1
             }
         },
@@ -224,22 +250,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 2.030592757999983,
-                "max": 2.1053211139999917,
-                "mean": 2.078957152999993,
-                "stddev": 0.0293140774683531,
+                "min": 1.3831129800000213,
+                "max": 1.4430816129999755,
+                "mean": 1.4190014102000077,
+                "stddev": 0.025100337857441517,
                 "rounds": 5,
-                "median": 2.088803425000009,
-                "iqr": 0.03484720799998797,
-                "q1": 2.0633413054999963,
-                "q3": 2.0981885134999843,
+                "median": 1.4160292810000215,
+                "iqr": 0.03950716149998357,
+                "q1": 1.4033144347500155,
+                "q3": 1.442821596249999,
                 "iqr_outliers": 0,
                 "stddev_outliers": 1,
                 "outliers": "1;0",
-                "ld15iqr": 2.030592757999983,
-                "hd15iqr": 2.1053211139999917,
-                "ops": 0.4810103943493843,
-                "total": 10.394785764999966,
+                "ld15iqr": 1.3831129800000213,
+                "hd15iqr": 1.4430816129999755,
+                "ops": 0.7047209346036171,
+                "total": 7.095007051000039,
                 "iterations": 1
             }
         },
@@ -259,26 +285,26 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.8509533309999995,
-                "max": 1.9032362050000131,
-                "mean": 1.8857505430000003,
-                "stddev": 0.02211523539631199,
+                "min": 1.242542813,
+                "max": 1.2958701700000006,
+                "mean": 1.266333216800001,
+                "stddev": 0.022944334004195443,
                 "rounds": 5,
-                "median": 1.8981698510000058,
-                "iqr": 0.030612831500008042,
-                "q1": 1.8701147742499913,
-                "q3": 1.9007276057499993,
+                "median": 1.268142136999984,
+                "iqr": 0.04007099974998596,
+                "q1": 1.244182734500015,
+                "q3": 1.284253734250001,
                 "iqr_outliers": 0,
-                "stddev_outliers": 1,
-                "outliers": "1;0",
-                "ld15iqr": 1.8509533309999995,
-                "hd15iqr": 1.9032362050000131,
-                "ops": 0.5302928341779084,
-                "total": 9.428752715000002,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.242542813,
+                "hd15iqr": 1.2958701700000006,
+                "ops": 0.7896815678001247,
+                "total": 6.331666084000005,
                 "iterations": 1
             }
         }
     ],
-    "datetime": "2023-06-27T14:17:15.846777",
+    "datetime": "2024-08-02T06:33:29.141892",
     "version": "4.0.0"
 }
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.9-64bit/0019_ab1540048a7b2b769f32668e5f67cbd30ac03042_20230627_134212.json b/benchmark/results/Linux-CPython-3.9-64bit/0019_ab1540048a7b2b769f32668e5f67cbd30ac03042_20230627_134212.json
deleted file mode 100644
index 9b000fa..0000000
--- a/benchmark/results/Linux-CPython-3.9-64bit/0019_ab1540048a7b2b769f32668e5f67cbd30ac03042_20230627_134212.json
+++ /dev/null
@@ -1,284 +0,0 @@
-{
-    "machine_info": {
-        "node": "fv-az612-299",
-        "processor": "x86_64",
-        "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
-        "python_implementation": "CPython",
-        "python_implementation_version": "3.9.17",
-        "python_version": "3.9.17",
-        "python_build": [
-            "main",
-            "Jun  7 2023 12:34:12"
-        ],
-        "release": "5.15.0-1040-azure",
-        "system": "Linux",
-        "cpu": {
-            "python_version": "3.9.17.final.0 (64 bit)",
-            "cpuinfo_version": [
-                9,
-                0,
-                0
-            ],
-            "cpuinfo_version_string": "9.0.0",
-            "arch": "X86_64",
-            "bits": 64,
-            "count": 2,
-            "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz",
-            "hz_advertised_friendly": "2.8000 GHz",
-            "hz_actual_friendly": "2.7934 GHz",
-            "hz_advertised": [
-                2800000000,
-                0
-            ],
-            "hz_actual": [
-                2793438000,
-                0
-            ],
-            "stepping": 6,
-            "model": 106,
-            "family": 6,
-            "flags": [
-                "3dnowprefetch",
-                "abm",
-                "adx",
-                "aes",
-                "apic",
-                "avx",
-                "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
-                "bmi1",
-                "bmi2",
-                "clflush",
-                "clflushopt",
-                "cmov",
-                "constant_tsc",
-                "cpuid",
-                "cx16",
-                "cx8",
-                "de",
-                "erms",
-                "f16c",
-                "fma",
-                "fpu",
-                "fsgsbase",
-                "fxsr",
-                "hle",
-                "ht",
-                "hypervisor",
-                "invpcid",
-                "invpcid_single",
-                "lahf_lm",
-                "lm",
-                "mca",
-                "mce",
-                "md_clear",
-                "mmx",
-                "movbe",
-                "msr",
-                "mtrr",
-                "nopl",
-                "nx",
-                "osxsave",
-                "pae",
-                "pat",
-                "pcid",
-                "pclmulqdq",
-                "pdpe1gb",
-                "pge",
-                "pni",
-                "popcnt",
-                "pse",
-                "pse36",
-                "pti",
-                "rdrand",
-                "rdrnd",
-                "rdseed",
-                "rdtscp",
-                "rep_good",
-                "rtm",
-                "sep",
-                "smap",
-                "smep",
-                "ss",
-                "sse",
-                "sse2",
-                "sse4_1",
-                "sse4_2",
-                "ssse3",
-                "syscall",
-                "tsc",
-                "vme",
-                "xsave",
-                "xsavec",
-                "xsaveopt",
-                "xsaves",
-                "xtopology"
-            ],
-            "l3_cache_size": 50331648,
-            "l2_cache_size": "2.5 MiB",
-            "l1_data_cache_size": 98304,
-            "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
-            "l2_cache_associativity": 6
-        }
-    },
-    "commit_info": {
-        "id": "ab1540048a7b2b769f32668e5f67cbd30ac03042",
-        "time": "2023-06-27T13:41:35+00:00",
-        "author_time": "2023-06-27T13:41:35+00:00",
-        "dirty": false,
-        "project": "ariadne",
-        "branch": "master"
-    },
-    "benchmarks": [
-        {
-            "group": null,
-            "name": "test_query_without_extensions",
-            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.2691099569999977,
-                "max": 1.327032668000001,
-                "mean": 1.2958176584,
-                "stddev": 0.021700586671903013,
-                "rounds": 5,
-                "median": 1.2953645609999995,
-                "iqr": 0.02900669274999146,
-                "q1": 1.2803573965000048,
-                "q3": 1.3093640892499963,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.2691099569999977,
-                "hd15iqr": 1.327032668000001,
-                "ops": 0.7717135150286049,
-                "total": 6.479088292,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_noop_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.2926210330000032,
-                "max": 1.3590964450000058,
-                "mean": 1.3236625180000032,
-                "stddev": 0.029767528870268373,
-                "rounds": 5,
-                "median": 1.3193811370000077,
-                "iqr": 0.054963584750009176,
-                "q1": 1.2966881329999964,
-                "q3": 1.3516517177500056,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.2926210330000032,
-                "hd15iqr": 1.3590964450000058,
-                "ops": 0.7554795776123937,
-                "total": 6.618312590000016,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_telemetry_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.5735172650000067,
-                "max": 1.647078676999996,
-                "mean": 1.6106540197999977,
-                "stddev": 0.02686404881437929,
-                "rounds": 5,
-                "median": 1.6104225710000009,
-                "iqr": 0.032633070499990424,
-                "q1": 1.5946023022499993,
-                "q3": 1.6272353727499898,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.5735172650000067,
-                "hd15iqr": 1.647078676999996,
-                "ops": 0.6208658021566759,
-                "total": 8.053270098999988,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_tracing_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.4150746330000032,
-                "max": 1.465242343,
-                "mean": 1.4402057654000004,
-                "stddev": 0.021009664517705157,
-                "rounds": 5,
-                "median": 1.4416293379999985,
-                "iqr": 0.036361017749989344,
-                "q1": 1.4215150555000058,
-                "q3": 1.4578760732499951,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.4150746330000032,
-                "hd15iqr": 1.465242343,
-                "ops": 0.6943452276225693,
-                "total": 7.201028827000002,
-                "iterations": 1
-            }
-        }
-    ],
-    "datetime": "2023-06-27T13:42:56.270416",
-    "version": "4.0.0"
-}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.9-64bit/0020_c19edf2673b676724e35eb85323e93e69ca61d32_20230627_141748.json b/benchmark/results/Linux-CPython-3.9-64bit/0020_c19edf2673b676724e35eb85323e93e69ca61d32_20230627_141748.json
deleted file mode 100644
index 572e69f..0000000
--- a/benchmark/results/Linux-CPython-3.9-64bit/0020_c19edf2673b676724e35eb85323e93e69ca61d32_20230627_141748.json
+++ /dev/null
@@ -1,284 +0,0 @@
-{
-    "machine_info": {
-        "node": "fv-az555-891",
-        "processor": "x86_64",
-        "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
-        "python_implementation": "CPython",
-        "python_implementation_version": "3.9.17",
-        "python_version": "3.9.17",
-        "python_build": [
-            "main",
-            "Jun  7 2023 12:34:12"
-        ],
-        "release": "5.15.0-1040-azure",
-        "system": "Linux",
-        "cpu": {
-            "python_version": "3.9.17.final.0 (64 bit)",
-            "cpuinfo_version": [
-                9,
-                0,
-                0
-            ],
-            "cpuinfo_version_string": "9.0.0",
-            "arch": "X86_64",
-            "bits": 64,
-            "count": 2,
-            "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz",
-            "hz_advertised_friendly": "2.8000 GHz",
-            "hz_actual_friendly": "2.7934 GHz",
-            "hz_advertised": [
-                2800000000,
-                0
-            ],
-            "hz_actual": [
-                2793438000,
-                0
-            ],
-            "stepping": 6,
-            "model": 106,
-            "family": 6,
-            "flags": [
-                "3dnowprefetch",
-                "abm",
-                "adx",
-                "aes",
-                "apic",
-                "avx",
-                "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
-                "bmi1",
-                "bmi2",
-                "clflush",
-                "clflushopt",
-                "cmov",
-                "constant_tsc",
-                "cpuid",
-                "cx16",
-                "cx8",
-                "de",
-                "erms",
-                "f16c",
-                "fma",
-                "fpu",
-                "fsgsbase",
-                "fxsr",
-                "hle",
-                "ht",
-                "hypervisor",
-                "invpcid",
-                "invpcid_single",
-                "lahf_lm",
-                "lm",
-                "mca",
-                "mce",
-                "md_clear",
-                "mmx",
-                "movbe",
-                "msr",
-                "mtrr",
-                "nopl",
-                "nx",
-                "osxsave",
-                "pae",
-                "pat",
-                "pcid",
-                "pclmulqdq",
-                "pdpe1gb",
-                "pge",
-                "pni",
-                "popcnt",
-                "pse",
-                "pse36",
-                "pti",
-                "rdrand",
-                "rdrnd",
-                "rdseed",
-                "rdtscp",
-                "rep_good",
-                "rtm",
-                "sep",
-                "smap",
-                "smep",
-                "ss",
-                "sse",
-                "sse2",
-                "sse4_1",
-                "sse4_2",
-                "ssse3",
-                "syscall",
-                "tsc",
-                "vme",
-                "xsave",
-                "xsavec",
-                "xsaveopt",
-                "xsaves",
-                "xtopology"
-            ],
-            "l3_cache_size": 50331648,
-            "l2_cache_size": "2.5 MiB",
-            "l1_data_cache_size": 98304,
-            "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
-            "l2_cache_associativity": 6
-        }
-    },
-    "commit_info": {
-        "id": "c19edf2673b676724e35eb85323e93e69ca61d32",
-        "time": "2023-06-27T14:17:16+00:00",
-        "author_time": "2023-06-27T14:17:16+00:00",
-        "dirty": false,
-        "project": "ariadne",
-        "branch": "master"
-    },
-    "benchmarks": [
-        {
-            "group": null,
-            "name": "test_query_without_extensions",
-            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.2822812560000045,
-                "max": 1.3320799770000065,
-                "mean": 1.3042930218000037,
-                "stddev": 0.019736139570446495,
-                "rounds": 5,
-                "median": 1.3004222220000088,
-                "iqr": 0.030344110250027256,
-                "q1": 1.2891287192499874,
-                "q3": 1.3194728295000147,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.2822812560000045,
-                "hd15iqr": 1.3320799770000065,
-                "ops": 0.7666988807621918,
-                "total": 6.521465109000019,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_noop_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.2977927659999864,
-                "max": 1.402954047999998,
-                "mean": 1.3411142607999977,
-                "stddev": 0.04222448669752373,
-                "rounds": 5,
-                "median": 1.3227410089999978,
-                "iqr": 0.06135843125003504,
-                "q1": 1.312695441499983,
-                "q3": 1.374053872750018,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.2977927659999864,
-                "hd15iqr": 1.402954047999998,
-                "ops": 0.7456486216196693,
-                "total": 6.705571303999989,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_telemetry_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.5963437139999996,
-                "max": 1.660404323000023,
-                "mean": 1.6319940126000119,
-                "stddev": 0.0247973745971491,
-                "rounds": 5,
-                "median": 1.6391273530000205,
-                "iqr": 0.0353022415000126,
-                "q1": 1.6134778862500028,
-                "q3": 1.6487801277500154,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.5963437139999996,
-                "hd15iqr": 1.660404323000023,
-                "ops": 0.6127473460560371,
-                "total": 8.15997006300006,
-                "iterations": 1
-            }
-        },
-        {
-            "group": null,
-            "name": "test_query_with_open_tracing_extension",
-            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
-            "params": null,
-            "param": null,
-            "extra_info": {},
-            "options": {
-                "disable_gc": false,
-                "timer": "perf_counter",
-                "min_rounds": 5,
-                "max_time": 1.0,
-                "min_time": 5e-06,
-                "warmup": false
-            },
-            "stats": {
-                "min": 1.435614299000008,
-                "max": 1.4613781350000181,
-                "mean": 1.4500743718000024,
-                "stddev": 0.009758046195459294,
-                "rounds": 5,
-                "median": 1.4505050219999873,
-                "iqr": 0.01315829874999963,
-                "q1": 1.4441228060000029,
-                "q3": 1.4572811047500025,
-                "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.435614299000008,
-                "hd15iqr": 1.4613781350000181,
-                "ops": 0.6896198011959088,
-                "total": 7.250371859000012,
-                "iterations": 1
-            }
-        }
-    ],
-    "datetime": "2023-06-27T14:18:32.159417",
-    "version": "4.0.0"
-}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.11-64bit/0020_1d43c445288365b0316a456874f6d3931bc68c31_20230627_142021.json b/benchmark/results/Linux-CPython-3.9-64bit/0049_838f948c0dc0f0f9e17a7bc1f317fd48893ba978_20240613_080821.json
similarity index 56%
rename from benchmark/results/Linux-CPython-3.11-64bit/0020_1d43c445288365b0316a456874f6d3931bc68c31_20230627_142021.json
rename to benchmark/results/Linux-CPython-3.9-64bit/0049_838f948c0dc0f0f9e17a7bc1f317fd48893ba978_20240613_080821.json
index 73689d8..73d180f 100644
--- a/benchmark/results/Linux-CPython-3.11-64bit/0020_1d43c445288365b0316a456874f6d3931bc68c31_20230627_142021.json
+++ b/benchmark/results/Linux-CPython-3.9-64bit/0049_838f948c0dc0f0f9e17a7bc1f317fd48893ba978_20240613_080821.json
@@ -1,20 +1,20 @@
 {
     "machine_info": {
-        "node": "fv-az176-839",
+        "node": "fv-az1759-424",
         "processor": "x86_64",
         "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
+        "python_compiler": "GCC 11.4.0",
         "python_implementation": "CPython",
-        "python_implementation_version": "3.11.4",
-        "python_version": "3.11.4",
+        "python_implementation_version": "3.9.19",
+        "python_version": "3.9.19",
         "python_build": [
             "main",
-            "Jun  7 2023 11:01:02"
+            "May  8 2024 14:40:19"
         ],
-        "release": "5.15.0-1040-azure",
+        "release": "6.5.0-1021-azure",
         "system": "Linux",
         "cpu": {
-            "python_version": "3.11.4.final.0 (64 bit)",
+            "python_version": "3.9.19.final.0 (64 bit)",
             "cpuinfo_version": [
                 9,
                 0,
@@ -23,47 +23,59 @@
             "cpuinfo_version_string": "9.0.0",
             "arch": "X86_64",
             "bits": 64,
-            "count": 2,
+            "count": 4,
             "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz",
-            "hz_advertised_friendly": "2.3000 GHz",
-            "hz_actual_friendly": "2.2947 GHz",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.4454 GHz",
+            "hz_actual_friendly": "2.4454 GHz",
             "hz_advertised": [
-                2300000000,
+                2445433000,
                 0
             ],
             "hz_actual": [
-                2294685000,
+                2445433000,
                 0
             ],
             "stepping": 1,
-            "model": 79,
-            "family": 6,
+            "model": 1,
+            "family": 25,
             "flags": [
+                "3dnowext",
                 "3dnowprefetch",
                 "abm",
                 "adx",
                 "aes",
+                "aperfmperf",
                 "apic",
+                "arat",
                 "avx",
                 "avx2",
                 "bmi1",
                 "bmi2",
                 "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
                 "cmov",
+                "cmp_legacy",
                 "constant_tsc",
                 "cpuid",
+                "cr8_legacy",
                 "cx16",
                 "cx8",
                 "de",
+                "decodeassists",
                 "erms",
+                "extd_apicid",
                 "f16c",
+                "flushbyasid",
                 "fma",
                 "fpu",
                 "fsgsbase",
+                "fsrm",
                 "fxsr",
-                "hle",
+                "fxsr_opt",
                 "ht",
                 "hypervisor",
                 "invpcid",
@@ -72,62 +84,84 @@
                 "lm",
                 "mca",
                 "mce",
-                "md_clear",
+                "misalignsse",
                 "mmx",
+                "mmxext",
                 "movbe",
                 "msr",
                 "mtrr",
+                "nonstop_tsc",
                 "nopl",
+                "npt",
+                "nrip_save",
                 "nx",
+                "osvw",
                 "osxsave",
                 "pae",
                 "pat",
+                "pausefilter",
                 "pcid",
                 "pclmulqdq",
                 "pdpe1gb",
+                "pfthreshold",
                 "pge",
                 "pni",
                 "popcnt",
                 "pse",
                 "pse36",
-                "pti",
+                "rdpid",
+                "rdpru",
                 "rdrand",
                 "rdrnd",
                 "rdseed",
                 "rdtscp",
                 "rep_good",
-                "rtm",
                 "sep",
+                "sha",
+                "sha_ni",
                 "smap",
                 "smep",
-                "ss",
                 "sse",
                 "sse2",
                 "sse4_1",
                 "sse4_2",
+                "sse4a",
                 "ssse3",
+                "svm",
                 "syscall",
+                "topoext",
                 "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
                 "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
                 "xsave",
+                "xsavec",
+                "xsaveerptr",
                 "xsaveopt",
-                "xtopology"
+                "xsaves"
             ],
-            "l3_cache_size": 52428800,
-            "l2_cache_size": 524288,
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
             "l1_data_cache_size": 65536,
             "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
+            "l2_cache_line_size": 512,
             "l2_cache_associativity": 6
         }
     },
     "commit_info": {
-        "id": "1d43c445288365b0316a456874f6d3931bc68c31",
-        "time": "2023-06-27T14:19:45+00:00",
-        "author_time": "2023-06-27T14:19:45+00:00",
+        "id": "838f948c0dc0f0f9e17a7bc1f317fd48893ba978",
+        "time": "2024-06-13T08:07:57Z",
+        "author_time": "2024-06-13T08:07:57Z",
         "dirty": false,
         "project": "ariadne",
-        "branch": "master"
+        "branch": "main"
     },
     "benchmarks": [
         {
@@ -146,22 +180,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.3483913399999778,
-                "max": 1.4654956700000241,
-                "mean": 1.3735860203999892,
-                "stddev": 0.05148727834573533,
+                "min": 1.0663171670000224,
+                "max": 1.1229458610000052,
+                "mean": 1.0886234596000122,
+                "stddev": 0.023838957328958448,
                 "rounds": 5,
-                "median": 1.3492684469999858,
-                "iqr": 0.03522805475000723,
-                "q1": 1.3484123407499808,
-                "q3": 1.383640395499988,
-                "iqr_outliers": 1,
+                "median": 1.0868005960000175,
+                "iqr": 0.038857388499970114,
+                "q1": 1.0668743120000244,
+                "q3": 1.1057317004999945,
+                "iqr_outliers": 0,
                 "stddev_outliers": 1,
-                "outliers": "1;1",
-                "ld15iqr": 1.3483913399999778,
-                "hd15iqr": 1.4654956700000241,
-                "ops": 0.7280213871926269,
-                "total": 6.867930101999946,
+                "outliers": "1;0",
+                "ld15iqr": 1.0663171670000224,
+                "hd15iqr": 1.1229458610000052,
+                "ops": 0.9185912642075758,
+                "total": 5.443117298000061,
                 "iterations": 1
             }
         },
@@ -181,22 +215,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.3045423760000006,
-                "max": 1.4552329750000013,
-                "mean": 1.3994056102000059,
-                "stddev": 0.05981934592257034,
+                "min": 1.0764356080000255,
+                "max": 1.1416960319999987,
+                "mean": 1.114011381199998,
+                "stddev": 0.028863691985790887,
                 "rounds": 5,
-                "median": 1.424658132000019,
-                "iqr": 0.07826987375000982,
-                "q1": 1.3605599449999985,
-                "q3": 1.4388298187500084,
+                "median": 1.1216071129999818,
+                "iqr": 0.05139302675000579,
+                "q1": 1.0879392489999944,
+                "q3": 1.1393322757500002,
                 "iqr_outliers": 0,
                 "stddev_outliers": 1,
                 "outliers": "1;0",
-                "ld15iqr": 1.3045423760000006,
-                "hd15iqr": 1.4552329750000013,
-                "ops": 0.7145891031958047,
-                "total": 6.997028051000029,
+                "ld15iqr": 1.0764356080000255,
+                "hd15iqr": 1.1416960319999987,
+                "ops": 0.8976568972956214,
+                "total": 5.570056905999991,
                 "iterations": 1
             }
         },
@@ -216,22 +250,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.7236822990000178,
-                "max": 1.8352377870000112,
-                "mean": 1.788695975400009,
-                "stddev": 0.04153939354450872,
+                "min": 1.2776100840000026,
+                "max": 1.3377288689999887,
+                "mean": 1.3156333484000016,
+                "stddev": 0.023804232278996144,
                 "rounds": 5,
-                "median": 1.7980889890000071,
-                "iqr": 0.048557463500010556,
-                "q1": 1.7655128297500013,
-                "q3": 1.814070293250012,
+                "median": 1.323566048999993,
+                "iqr": 0.03138234974999676,
+                "q1": 1.3009493467500093,
+                "q3": 1.332331696500006,
                 "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.7236822990000178,
-                "hd15iqr": 1.8352377870000112,
-                "ops": 0.559066500821286,
-                "total": 8.943479877000044,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.2776100840000026,
+                "hd15iqr": 1.3377288689999887,
+                "ops": 0.7600901886655147,
+                "total": 6.578166742000008,
                 "iterations": 1
             }
         },
@@ -251,26 +285,26 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.5330717820000075,
-                "max": 1.6269990280000002,
-                "mean": 1.593806724000001,
-                "stddev": 0.03839853539835497,
+                "min": 1.1849029870000152,
+                "max": 1.224499681999987,
+                "mean": 1.206724532800007,
+                "stddev": 0.017131532151781485,
                 "rounds": 5,
-                "median": 1.6075106730000073,
-                "iqr": 0.05392432874999287,
-                "q1": 1.5685912382500007,
-                "q3": 1.6225155669999936,
+                "median": 1.2134501600000078,
+                "iqr": 0.02925436449999097,
+                "q1": 1.190586839500014,
+                "q3": 1.219841204000005,
                 "iqr_outliers": 0,
-                "stddev_outliers": 1,
-                "outliers": "1;0",
-                "ld15iqr": 1.5330717820000075,
-                "hd15iqr": 1.6269990280000002,
-                "ops": 0.6274286492469331,
-                "total": 7.969033620000005,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.1849029870000152,
+                "hd15iqr": 1.224499681999987,
+                "ops": 0.8286895416633848,
+                "total": 6.033622664000035,
                 "iterations": 1
             }
         }
     ],
-    "datetime": "2023-06-27T14:21:08.497346",
+    "datetime": "2024-06-13T08:08:57.184977",
     "version": "4.0.0"
 }
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.11-64bit/0019_373cad48092e2a2a2cd60a811a312e5c0885b01d_20230627_134447.json b/benchmark/results/Linux-CPython-3.9-64bit/0051_57f898e326821a1d2a96d799f9f300f313956387_20240802_063357.json
similarity index 57%
rename from benchmark/results/Linux-CPython-3.11-64bit/0019_373cad48092e2a2a2cd60a811a312e5c0885b01d_20230627_134447.json
rename to benchmark/results/Linux-CPython-3.9-64bit/0051_57f898e326821a1d2a96d799f9f300f313956387_20240802_063357.json
index c587a77..b80022a 100644
--- a/benchmark/results/Linux-CPython-3.11-64bit/0019_373cad48092e2a2a2cd60a811a312e5c0885b01d_20230627_134447.json
+++ b/benchmark/results/Linux-CPython-3.9-64bit/0051_57f898e326821a1d2a96d799f9f300f313956387_20240802_063357.json
@@ -1,20 +1,20 @@
 {
     "machine_info": {
-        "node": "fv-az554-967",
+        "node": "fv-az1020-381",
         "processor": "x86_64",
         "machine": "x86_64",
-        "python_compiler": "GCC 11.3.0",
+        "python_compiler": "GCC 11.4.0",
         "python_implementation": "CPython",
-        "python_implementation_version": "3.11.4",
-        "python_version": "3.11.4",
+        "python_implementation_version": "3.9.19",
+        "python_version": "3.9.19",
         "python_build": [
             "main",
-            "Jun  7 2023 11:01:02"
+            "Jul 16 2024 19:03:54"
         ],
-        "release": "5.15.0-1040-azure",
+        "release": "6.5.0-1025-azure",
         "system": "Linux",
         "cpu": {
-            "python_version": "3.11.4.final.0 (64 bit)",
+            "python_version": "3.9.19.final.0 (64 bit)",
             "cpuinfo_version": [
                 9,
                 0,
@@ -23,53 +23,59 @@
             "cpuinfo_version_string": "9.0.0",
             "arch": "X86_64",
             "bits": 64,
-            "count": 2,
+            "count": 4,
             "arch_string_raw": "x86_64",
-            "vendor_id_raw": "GenuineIntel",
-            "brand_raw": "Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz",
-            "hz_advertised_friendly": "2.6000 GHz",
-            "hz_actual_friendly": "2.5939 GHz",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "2.6041 GHz",
+            "hz_actual_friendly": "2.6041 GHz",
             "hz_advertised": [
-                2600000000,
+                2604080000,
                 0
             ],
             "hz_actual": [
-                2593906000,
+                2604080000,
                 0
             ],
-            "stepping": 7,
-            "model": 85,
-            "family": 6,
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
             "flags": [
+                "3dnowext",
                 "3dnowprefetch",
                 "abm",
                 "adx",
                 "aes",
+                "aperfmperf",
                 "apic",
+                "arat",
                 "avx",
                 "avx2",
-                "avx512bw",
-                "avx512cd",
-                "avx512dq",
-                "avx512f",
-                "avx512vl",
                 "bmi1",
                 "bmi2",
                 "clflush",
                 "clflushopt",
+                "clwb",
+                "clzero",
                 "cmov",
+                "cmp_legacy",
                 "constant_tsc",
                 "cpuid",
+                "cr8_legacy",
                 "cx16",
                 "cx8",
                 "de",
+                "decodeassists",
                 "erms",
+                "extd_apicid",
                 "f16c",
+                "flushbyasid",
                 "fma",
                 "fpu",
                 "fsgsbase",
+                "fsrm",
                 "fxsr",
-                "hle",
+                "fxsr_opt",
                 "ht",
                 "hypervisor",
                 "invpcid",
@@ -78,64 +84,84 @@
                 "lm",
                 "mca",
                 "mce",
-                "md_clear",
+                "misalignsse",
                 "mmx",
+                "mmxext",
                 "movbe",
                 "msr",
                 "mtrr",
+                "nonstop_tsc",
                 "nopl",
+                "npt",
+                "nrip_save",
                 "nx",
+                "osvw",
                 "osxsave",
                 "pae",
                 "pat",
+                "pausefilter",
                 "pcid",
                 "pclmulqdq",
                 "pdpe1gb",
+                "pfthreshold",
                 "pge",
                 "pni",
                 "popcnt",
                 "pse",
                 "pse36",
-                "pti",
+                "rdpid",
+                "rdpru",
                 "rdrand",
                 "rdrnd",
                 "rdseed",
                 "rdtscp",
                 "rep_good",
-                "rtm",
                 "sep",
+                "sha",
+                "sha_ni",
                 "smap",
                 "smep",
-                "ss",
                 "sse",
                 "sse2",
                 "sse4_1",
                 "sse4_2",
+                "sse4a",
                 "ssse3",
+                "svm",
                 "syscall",
+                "topoext",
                 "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
                 "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
                 "xsave",
                 "xsavec",
+                "xsaveerptr",
                 "xsaveopt",
-                "xsaves",
-                "xtopology"
+                "xsaves"
             ],
-            "l3_cache_size": 37486592,
-            "l2_cache_size": 2097152,
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
             "l1_data_cache_size": 65536,
             "l1_instruction_cache_size": 65536,
-            "l2_cache_line_size": 256,
+            "l2_cache_line_size": 512,
             "l2_cache_associativity": 6
         }
     },
     "commit_info": {
-        "id": "373cad48092e2a2a2cd60a811a312e5c0885b01d",
-        "time": "2023-06-27T13:44:16+00:00",
-        "author_time": "2023-06-27T13:44:16+00:00",
+        "id": "57f898e326821a1d2a96d799f9f300f313956387",
+        "time": "2024-08-02T06:33:29Z",
+        "author_time": "2024-08-02T06:33:29Z",
         "dirty": false,
         "project": "ariadne",
-        "branch": "master"
+        "branch": "main"
     },
     "benchmarks": [
         {
@@ -154,22 +180,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.1329753910000022,
-                "max": 1.2192854470000043,
-                "mean": 1.1810164102000045,
-                "stddev": 0.03132299104441879,
+                "min": 1.02505065699998,
+                "max": 1.1099904240000171,
+                "mean": 1.0650643557999957,
+                "stddev": 0.037394109264427336,
                 "rounds": 5,
-                "median": 1.1845782819999897,
-                "iqr": 0.03320085424999064,
-                "q1": 1.1655232767500152,
-                "q3": 1.1987241310000059,
+                "median": 1.0729689899999926,
+                "iqr": 0.06659858375002159,
+                "q1": 1.0275727337499845,
+                "q3": 1.094171317500006,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.1329753910000022,
-                "hd15iqr": 1.2192854470000043,
-                "ops": 0.8467282853678981,
-                "total": 5.905082051000022,
+                "ld15iqr": 1.02505065699998,
+                "hd15iqr": 1.1099904240000171,
+                "ops": 0.9389103996902383,
+                "total": 5.325321778999978,
                 "iterations": 1
             }
         },
@@ -189,22 +215,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.1741258019999918,
-                "max": 1.2737031530000138,
-                "mean": 1.222665939000001,
-                "stddev": 0.04288512074563278,
+                "min": 1.080202617999987,
+                "max": 1.1194493320000163,
+                "mean": 1.1031700374000024,
+                "stddev": 0.01821048019475425,
                 "rounds": 5,
-                "median": 1.2317960919999962,
-                "iqr": 0.07514586324999328,
-                "q1": 1.181044930750005,
-                "q3": 1.2561907939999983,
+                "median": 1.1136265650000041,
+                "iqr": 0.03148471050000978,
+                "q1": 1.0851785154999973,
+                "q3": 1.1166632260000071,
                 "iqr_outliers": 0,
-                "stddev_outliers": 2,
-                "outliers": "2;0",
-                "ld15iqr": 1.1741258019999918,
-                "hd15iqr": 1.2737031530000138,
-                "ops": 0.817884892432584,
-                "total": 6.1133296950000044,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.080202617999987,
+                "hd15iqr": 1.1194493320000163,
+                "ops": 0.906478571840876,
+                "total": 5.515850187000012,
                 "iterations": 1
             }
         },
@@ -224,22 +250,22 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.4255673809999792,
-                "max": 1.4497754470000075,
-                "mean": 1.438354361399996,
-                "stddev": 0.008711301011727058,
+                "min": 1.3002701430000059,
+                "max": 1.3350601060000145,
+                "mean": 1.3198487511999986,
+                "stddev": 0.012958550292590272,
                 "rounds": 5,
-                "median": 1.438526416000002,
-                "iqr": 0.009208575250006845,
-                "q1": 1.434027026999992,
-                "q3": 1.4432356022499988,
+                "median": 1.3189737369999932,
+                "iqr": 0.015610729749994334,
+                "q1": 1.3134633299999976,
+                "q3": 1.329074059749992,
                 "iqr_outliers": 0,
                 "stddev_outliers": 2,
                 "outliers": "2;0",
-                "ld15iqr": 1.4255673809999792,
-                "hd15iqr": 1.4497754470000075,
-                "ops": 0.6952389667221283,
-                "total": 7.191771806999981,
+                "ld15iqr": 1.3002701430000059,
+                "hd15iqr": 1.3350601060000145,
+                "ops": 0.7576625723900606,
+                "total": 6.599243755999993,
                 "iterations": 1
             }
         },
@@ -259,26 +285,26 @@
                 "warmup": false
             },
             "stats": {
-                "min": 1.3262464100000102,
-                "max": 1.370573916000012,
-                "mean": 1.3423201142000039,
-                "stddev": 0.017102633784527463,
+                "min": 1.1899797050000132,
+                "max": 1.3338852720000034,
+                "mean": 1.2587503078000055,
+                "stddev": 0.05463065851950763,
                 "rounds": 5,
-                "median": 1.3357860830000163,
-                "iqr": 0.018928357000007168,
-                "q1": 1.332261172999992,
-                "q3": 1.3511895299999992,
+                "median": 1.2646083369999985,
+                "iqr": 0.076425899500002,
+                "q1": 1.2167495067500056,
+                "q3": 1.2931754062500076,
                 "iqr_outliers": 0,
-                "stddev_outliers": 1,
-                "outliers": "1;0",
-                "ld15iqr": 1.3262464100000102,
-                "hd15iqr": 1.370573916000012,
-                "ops": 0.7449787792206184,
-                "total": 6.7116005710000195,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.1899797050000132,
+                "hd15iqr": 1.3338852720000034,
+                "ops": 0.79443873324469,
+                "total": 6.293751539000027,
                 "iterations": 1
             }
         }
     ],
-    "datetime": "2023-06-27T13:45:26.761296",
+    "datetime": "2024-08-02T06:34:34.043513",
     "version": "4.0.0"
 }
\ No newline at end of file


Test patch:
diff --git a/benchmark/results/Linux-CPython-3.9-64bit/0050_109ce9f2f09c808e2eacca1e1fc6f1229c6eca6e_20240731_113113.json b/benchmark/results/Linux-CPython-3.9-64bit/0050_109ce9f2f09c808e2eacca1e1fc6f1229c6eca6e_20240731_113113.json
new file mode 100644
index 0000000..8ac5d83
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.9-64bit/0050_109ce9f2f09c808e2eacca1e1fc6f1229c6eca6e_20240731_113113.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az692-463",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.9.19",
+        "python_version": "3.9.19",
+        "python_build": [
+            "main",
+            "Jul 16 2024 19:03:54"
+        ],
+        "release": "6.5.0-1024-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.9.19.final.0 (64 bit)",
+            "cpuinfo_version": [
+                9,
+                0,
+                0
+            ],
+            "cpuinfo_version_string": "9.0.0",
+            "arch": "X86_64",
+            "bits": 64,
+            "count": 4,
+            "arch_string_raw": "x86_64",
+            "vendor_id_raw": "AuthenticAMD",
+            "brand_raw": "AMD EPYC 7763 64-Core Processor",
+            "hz_advertised_friendly": "3.2424 GHz",
+            "hz_actual_friendly": "3.2424 GHz",
+            "hz_advertised": [
+                3242435000,
+                0
+            ],
+            "hz_actual": [
+                3242435000,
+                0
+            ],
+            "stepping": 1,
+            "model": 1,
+            "family": 25,
+            "flags": [
+                "3dnowext",
+                "3dnowprefetch",
+                "abm",
+                "adx",
+                "aes",
+                "aperfmperf",
+                "apic",
+                "arat",
+                "avx",
+                "avx2",
+                "bmi1",
+                "bmi2",
+                "clflush",
+                "clflushopt",
+                "clwb",
+                "clzero",
+                "cmov",
+                "cmp_legacy",
+                "constant_tsc",
+                "cpuid",
+                "cr8_legacy",
+                "cx16",
+                "cx8",
+                "de",
+                "decodeassists",
+                "erms",
+                "extd_apicid",
+                "f16c",
+                "flushbyasid",
+                "fma",
+                "fpu",
+                "fsgsbase",
+                "fsrm",
+                "fxsr",
+                "fxsr_opt",
+                "ht",
+                "hypervisor",
+                "invpcid",
+                "invpcid_single",
+                "lahf_lm",
+                "lm",
+                "mca",
+                "mce",
+                "misalignsse",
+                "mmx",
+                "mmxext",
+                "movbe",
+                "msr",
+                "mtrr",
+                "nonstop_tsc",
+                "nopl",
+                "npt",
+                "nrip_save",
+                "nx",
+                "osvw",
+                "osxsave",
+                "pae",
+                "pat",
+                "pausefilter",
+                "pcid",
+                "pclmulqdq",
+                "pdpe1gb",
+                "pfthreshold",
+                "pge",
+                "pni",
+                "popcnt",
+                "pse",
+                "pse36",
+                "rdpid",
+                "rdpru",
+                "rdrand",
+                "rdrnd",
+                "rdseed",
+                "rdtscp",
+                "rep_good",
+                "sep",
+                "sha",
+                "sha_ni",
+                "smap",
+                "smep",
+                "sse",
+                "sse2",
+                "sse4_1",
+                "sse4_2",
+                "sse4a",
+                "ssse3",
+                "svm",
+                "syscall",
+                "topoext",
+                "tsc",
+                "tsc_reliable",
+                "tsc_scale",
+                "umip",
+                "v_vmsave_vmload",
+                "vaes",
+                "vmcb_clean",
+                "vme",
+                "vmmcall",
+                "vpclmulqdq",
+                "xgetbv1",
+                "xsave",
+                "xsavec",
+                "xsaveerptr",
+                "xsaveopt",
+                "xsaves"
+            ],
+            "l3_cache_size": 524288,
+            "l2_cache_size": 1048576,
+            "l1_data_cache_size": 65536,
+            "l1_instruction_cache_size": 65536,
+            "l2_cache_line_size": 512,
+            "l2_cache_associativity": 6
+        }
+    },
+    "commit_info": {
+        "id": "109ce9f2f09c808e2eacca1e1fc6f1229c6eca6e",
+        "time": "2024-07-31T11:30:47Z",
+        "author_time": "2024-07-31T11:30:47Z",
+        "dirty": false,
+        "project": "ariadne",
+        "branch": "main"
+    },
+    "benchmarks": [
+        {
+            "group": null,
+            "name": "test_query_without_extensions",
+            "fullname": "benchmark/test_extensions.py::test_query_without_extensions",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.049446649999993,
+                "max": 1.1104749360000028,
+                "mean": 1.077448183599995,
+                "stddev": 0.02466878497552035,
+                "rounds": 5,
+                "median": 1.076760465999996,
+                "iqr": 0.04011962550001158,
+                "q1": 1.0563899602499873,
+                "q3": 1.096509585749999,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.049446649999993,
+                "hd15iqr": 1.1104749360000028,
+                "ops": 0.9281188786812714,
+                "total": 5.387240917999975,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_noop_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.0899198109999872,
+                "max": 1.140454405000014,
+                "mean": 1.1221149283999978,
+                "stddev": 0.020684563958665567,
+                "rounds": 5,
+                "median": 1.1334046919999992,
+                "iqr": 0.02792306150001167,
+                "q1": 1.10738364649999,
+                "q3": 1.1353067080000017,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.0899198109999872,
+                "hd15iqr": 1.140454405000014,
+                "ops": 0.8911743126222204,
+                "total": 5.610574641999989,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_telemetry_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.2938941619999866,
+                "max": 1.3518133329999955,
+                "mean": 1.3269227987999899,
+                "stddev": 0.023083196548781104,
+                "rounds": 5,
+                "median": 1.3376066470000012,
+                "iqr": 0.032958468250008366,
+                "q1": 1.3084716472499807,
+                "q3": 1.341430115499989,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.2938941619999866,
+                "hd15iqr": 1.3518133329999955,
+                "ops": 0.7536233463652563,
+                "total": 6.634613993999949,
+                "iterations": 1
+            }
+        },
+        {
+            "group": null,
+            "name": "test_query_with_open_tracing_extension",
+            "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension",
+            "params": null,
+            "param": null,
+            "extra_info": {},
+            "options": {
+                "disable_gc": false,
+                "timer": "perf_counter",
+                "min_rounds": 5,
+                "max_time": 1.0,
+                "min_time": 5e-06,
+                "warmup": false
+            },
+            "stats": {
+                "min": 1.1691995289999966,
+                "max": 1.2409742139999764,
+                "mean": 1.1985021607999955,
+                "stddev": 0.02960159843019266,
+                "rounds": 5,
+                "median": 1.2008440189999874,
+                "iqr": 0.04633916625000012,
+                "q1": 1.1711620255000028,
+                "q3": 1.217501191750003,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.1691995289999966,
+                "hd15iqr": 1.2409742139999764,
+                "ops": 0.8343747994016999,
+                "total": 5.992510803999977,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-07-31T11:31:49.049869",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/tests/asgi/__snapshots__/test_explorer.ambr b/tests/asgi/__snapshots__/test_explorer.ambr
index 2b23961..8fd8e57 100644
--- a/tests/asgi/__snapshots__/test_explorer.ambr
+++ b/tests/asgi/__snapshots__/test_explorer.ambr
@@ -78,7 +78,7 @@
           font-weight: bold;
         }
       </style>
-      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />
+      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />
       
     </head>
   
@@ -98,7 +98,7 @@
   
       <script
         crossorigin
-        src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"
+        src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"
       ></script>
   
       
@@ -174,7 +174,7 @@
           font-weight: bold;
         }
       </style>
-      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />
+      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />
       
     </head>
   
@@ -194,7 +194,7 @@
   
       <script
         crossorigin
-        src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"
+        src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"
       ></script>
   
       
@@ -286,6 +286,7 @@
           GraphQLPlayground.init(document.getElementById('root'), {
             // options as 'endpoint' belong here
             
+            shareEnabled: false,
           })
         })
       </script>
diff --git a/tests/asgi/test_websockets_graphql_transport_ws.py b/tests/asgi/test_websockets_graphql_transport_ws.py
index 5d8f1ad..5820d6e 100644
--- a/tests/asgi/test_websockets_graphql_transport_ws.py
+++ b/tests/asgi/test_websockets_graphql_transport_ws.py
@@ -11,6 +11,7 @@ from ariadne.asgi import GraphQL
 from ariadne.asgi.handlers import GraphQLTransportWSHandler
 from ariadne.exceptions import WebSocketConnectionError
 from ariadne.utils import get_operation_type
+from .websocket_utils import wait_for_condition
 
 
 def test_field_can_be_subscribed_using_websocket_connection_graphql_transport_ws(
@@ -681,6 +682,8 @@ def test_error_in_custom_websocket_on_complete_is_handled_graphql_transport_ws(s
 
 def test_custom_websocket_on_disconnect_is_called_on_invalid_operation_graphql_transport_ws(
     schema,
+    timeout=5,
+    poll_interval=0.1,
 ):
     def on_disconnect(websocket):
         websocket.scope["on_disconnect"] = True
@@ -694,9 +697,15 @@ def test_custom_websocket_on_disconnect_is_called_on_invalid_operation_graphql_t
         response = ws.receive_json()
         assert response["type"] == GraphQLTransportWSHandler.GQL_CONNECTION_ACK
         ws.send_json({"type": "INVALID"})
-        assert "on_disconnect" not in ws.scope
+        condition_met = wait_for_condition(
+            lambda: "on_disconnect" in ws.scope,
+            timeout,
+            poll_interval,
+        )
 
-    assert ws.scope["on_disconnect"] is True
+        assert (
+            condition_met and ws.scope.get("on_disconnect") is True
+        ), "on_disconnect should be set in ws.scope after invalid message"
 
 
 def test_custom_websocket_on_disconnect_is_called_on_connection_close_graphql_transport_ws(
@@ -720,6 +729,8 @@ def test_custom_websocket_on_disconnect_is_called_on_connection_close_graphql_tr
 
 def test_custom_websocket_on_disconnect_is_awaited_if_its_async_graphql_transport_ws(
     schema,
+    timeout=5,
+    poll_interval=0.1,
 ):
     async def on_disconnect(websocket):
         websocket.scope["on_disconnect"] = True
@@ -733,9 +744,15 @@ def test_custom_websocket_on_disconnect_is_awaited_if_its_async_graphql_transpor
         response = ws.receive_json()
         assert response["type"] == GraphQLTransportWSHandler.GQL_CONNECTION_ACK
         ws.send_json({"type": "INVALID"})
-        assert "on_disconnect" not in ws.scope
+        condition_met = wait_for_condition(
+            lambda: "on_disconnect" in ws.scope,
+            timeout,
+            poll_interval,
+        )
 
-    assert ws.scope["on_disconnect"] is True
+        assert (
+            condition_met and ws.scope.get("on_disconnect") is True
+        ), "on_disconnect should be set in ws.scope after invalid message"
 
 
 def test_error_in_custom_websocket_on_disconnect_is_handled_graphql_transport_ws(
@@ -806,6 +823,10 @@ def test_connection_not_acknowledged_graphql_transport_ws(
         assert exc_info.value.code == 4401
 
 
+@pytest.mark.skip(
+    "This test fails intermittently with Starlette version 0.38.2,"
+    "but works as expected with version 0.37.2."
+)
 def test_duplicate_operation_id_graphql_transport_ws(
     client_graphql_transport_ws,
 ):
diff --git a/tests/asgi/test_websockets_graphql_ws.py b/tests/asgi/test_websockets_graphql_ws.py
index abc2e2f..48c4705 100644
--- a/tests/asgi/test_websockets_graphql_ws.py
+++ b/tests/asgi/test_websockets_graphql_ws.py
@@ -8,6 +8,7 @@ from starlette.testclient import TestClient
 from ariadne.asgi import GraphQL
 from ariadne.asgi.handlers import GraphQLWSHandler
 from ariadne.exceptions import WebSocketConnectionError
+from .websocket_utils import wait_for_condition
 
 
 def test_field_can_be_subscribed_using_websocket_connection(client):
@@ -313,6 +314,7 @@ def test_stop(client):
                 "payload": {"query": "subscription { ping }"},
             }
         )
+        ws.receive_json()
         ws.send_json({"type": GraphQLWSHandler.GQL_STOP, "id": "test1"})
         response = ws.receive_json()
         assert response["type"] == GraphQLWSHandler.GQL_COMPLETE
@@ -540,7 +542,11 @@ def test_custom_websocket_on_complete_is_called_on_stop(schema):
     assert ws.scope["on_complete"] is True
 
 
-def test_custom_websocket_on_complete_is_called_on_terminate(schema):
+def test_custom_websocket_on_complete_is_called_on_terminate(
+    schema,
+    timeout=5,
+    poll_interval=0.1,
+):
     def on_complete(websocket, operation):
         assert operation.name == "TestOp"
         websocket.scope["on_complete"] = True
@@ -568,9 +574,15 @@ def test_custom_websocket_on_complete_is_called_on_terminate(schema):
         assert response["id"] == "test1"
         assert response["payload"]["data"] == {"ping": "pong"}
         ws.send_json({"type": GraphQLWSHandler.GQL_CONNECTION_TERMINATE})
-        assert "on_complete" not in ws.scope
+        condition_met = wait_for_condition(
+            lambda: "on_complete" in ws.scope,
+            timeout,
+            poll_interval,
+        )
 
-    assert ws.scope["on_complete"] is True
+        assert (
+            condition_met and ws.scope.get("on_complete") is True
+        ), "on_complete should be set in ws.scope after invalid message"
 
 
 def test_custom_websocket_on_complete_is_called_on_disconnect(schema):
@@ -605,7 +617,11 @@ def test_custom_websocket_on_complete_is_called_on_disconnect(schema):
     assert ws.scope["on_complete"] is True
 
 
-def test_custom_websocket_on_complete_is_awaited_if_its_async(schema):
+def test_custom_websocket_on_complete_is_awaited_if_its_async(
+    schema,
+    timeout=5,
+    poll_interval=0.1,
+):
     async def on_complete(websocket, operation):
         assert operation.name == "TestOp"
         websocket.scope["on_complete"] = True
@@ -634,9 +650,15 @@ def test_custom_websocket_on_complete_is_awaited_if_its_async(schema):
         assert response["payload"]["data"] == {"ping": "pong"}
         ws.send_json({"type": GraphQLWSHandler.GQL_STOP})
         ws.send_json({"type": GraphQLWSHandler.GQL_CONNECTION_TERMINATE})
-        assert "on_complete" not in ws.scope
+        condition_met = wait_for_condition(
+            lambda: "on_complete" in ws.scope,
+            timeout,
+            poll_interval,
+        )
 
-    assert ws.scope["on_complete"] is True
+        assert (
+            condition_met and ws.scope.get("on_complete") is True
+        ), "on_complete should be set in ws.scope after invalid message"
 
 
 def test_error_in_custom_websocket_on_complete_is_handled(schema):
@@ -669,7 +691,11 @@ def test_error_in_custom_websocket_on_complete_is_handled(schema):
         ws.send_json({"type": GraphQLWSHandler.GQL_CONNECTION_TERMINATE})
 
 
-def test_custom_websocket_on_disconnect_is_called_on_terminate_message(schema):
+def test_custom_websocket_on_disconnect_is_called_on_terminate_message(
+    schema,
+    timeout=5,
+    poll_interval=0.1,
+):
     def on_disconnect(websocket):
         websocket.scope["on_disconnect"] = True
 
@@ -682,9 +708,15 @@ def test_custom_websocket_on_disconnect_is_called_on_terminate_message(schema):
         response = ws.receive_json()
         assert response["type"] == GraphQLWSHandler.GQL_CONNECTION_ACK
         ws.send_json({"type": GraphQLWSHandler.GQL_CONNECTION_TERMINATE})
-        assert "on_disconnect" not in ws.scope
+        condition_met = wait_for_condition(
+            lambda: "on_disconnect" in ws.scope,
+            timeout,
+            poll_interval,
+        )
 
-    assert ws.scope["on_disconnect"] is True
+        assert (
+            condition_met and ws.scope.get("on_disconnect") is True
+        ), "on_disconnect should be set in ws.scope after invalid message"
 
 
 def test_custom_websocket_on_disconnect_is_called_on_connection_close(schema):
@@ -704,7 +736,11 @@ def test_custom_websocket_on_disconnect_is_called_on_connection_close(schema):
     assert ws.scope["on_disconnect"] is True
 
 
-def test_custom_websocket_on_disconnect_is_awaited_if_its_async(schema):
+def test_custom_websocket_on_disconnect_is_awaited_if_its_async(
+    schema,
+    timeout=5,
+    poll_interval=0.1,
+):
     async def on_disconnect(websocket):
         websocket.scope["on_disconnect"] = True
 
@@ -717,9 +753,15 @@ def test_custom_websocket_on_disconnect_is_awaited_if_its_async(schema):
         response = ws.receive_json()
         assert response["type"] == GraphQLWSHandler.GQL_CONNECTION_ACK
         ws.send_json({"type": GraphQLWSHandler.GQL_CONNECTION_TERMINATE})
-        assert "on_disconnect" not in ws.scope
+        condition_met = wait_for_condition(
+            lambda: "on_disconnect" in ws.scope,
+            timeout,
+            poll_interval,
+        )
 
-    assert ws.scope["on_disconnect"] is True
+        assert (
+            condition_met and ws.scope.get("on_disconnect") is True
+        ), "on_disconnect should be set in ws.scope after invalid message"
 
 
 def test_error_in_custom_websocket_on_disconnect_is_handled(schema):
diff --git a/tests/asgi/websocket_utils.py b/tests/asgi/websocket_utils.py
new file mode 100644
index 0000000..a321731
--- /dev/null
+++ b/tests/asgi/websocket_utils.py
@@ -0,0 +1,18 @@
+import time
+
+
+def wait_for_condition(condition_func, timeout=5, poll_interval=0.1):
+    """
+    This function is particularly useful in scenarios where asynchronous operations
+    are involved. For instance, in a WebSocket-based system, certain events or
+    state changes, like setting a flag in a callback, may not occur instantly.
+    The wait_for_condition function ensures that the test waits long enough for
+    these asynchronous events to complete, preventing race conditions or false
+    negatives in test outcomes.
+    """
+    start_time = time.time()
+    while time.time() - start_time < timeout:
+        if condition_func():
+            return True
+        time.sleep(poll_interval)
+    return False
diff --git a/tests/explorers/__snapshots__/test_explorers.ambr b/tests/explorers/__snapshots__/test_explorers.ambr
index dd6f153..84132a5 100644
--- a/tests/explorers/__snapshots__/test_explorers.ambr
+++ b/tests/explorers/__snapshots__/test_explorers.ambr
@@ -186,9 +186,9 @@
           font-weight: bold;
         }
       </style>
-      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />
+      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />
       
-      <link rel="stylesheet" href="https://unpkg.com/@graphiql/plugin-explorer@0.1.21/dist/style.css" />
+      <link rel="stylesheet" href="https://unpkg.com/@graphiql/plugin-explorer@3.1.0/dist/style.css" />
       
     </head>
   
@@ -208,13 +208,13 @@
   
       <script
         crossorigin
-        src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"
+        src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"
       ></script>
   
       
       <script
         crossorigin
-        src="https://unpkg.com/@graphiql/plugin-explorer@0.1.21/dist/index.umd.js"
+        src="https://unpkg.com/@graphiql/plugin-explorer@3.1.0/dist/index.umd.js"
       ></script>
       
   
@@ -296,7 +296,7 @@
           font-weight: bold;
         }
       </style>
-      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />
+      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />
       
     </head>
   
@@ -316,7 +316,7 @@
   
       <script
         crossorigin
-        src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"
+        src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"
       ></script>
   
       
@@ -392,7 +392,7 @@
           font-weight: bold;
         }
       </style>
-      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />
+      <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />
       
     </head>
   
@@ -412,7 +412,7 @@
   
       <script
         crossorigin
-        src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"
+        src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"
       ></script>
   
       
@@ -504,6 +504,7 @@
           GraphQLPlayground.init(document.getElementById('root'), {
             // options as 'endpoint' belong here
             
+            shareEnabled: false,
           })
         })
       </script>
@@ -567,6 +568,7 @@
           GraphQLPlayground.init(document.getElementById('root'), {
             // options as 'endpoint' belong here
             settings: {"editor.cursorShape": "block", "editor.fontFamily": "helvetica", "editor.fontSize": 24, "editor.reuseHeaders": true, "editor.theme": "light", "general.betaUpdates": false, "prettier.printWidth": 4, "prettier.tabWidth": 4, "prettier.useTabs": true, "request.credentials": "same-origin", "request.globalHeaders": {"hum": "test"}, "schema.polling.enable": true, "schema.polling.endpointFilter": "*domain*", "schema.polling.interval": 4200, "schema.disableComments": true, "tracing.hideTracingResponse": true, "tracing.tracingSupported": true, "queryPlan.hideQueryPlanResponse": true},
+            shareEnabled: false,
           })
         })
       </script>
diff --git a/tests/test_default_resolvers.py b/tests/test_default_resolvers.py
index 6efa5d2..58b24d9 100644
--- a/tests/test_default_resolvers.py
+++ b/tests/test_default_resolvers.py
@@ -14,6 +14,15 @@ def test_alias_resolver_supports_callable_return_value():
     assert alias_resolver(obj, None)
 
 
+def test_alias_resolver_supports_nested_name():
+    parent_mapping = {"nested": {"hello": "world"}}
+    parent_object = Mock(nested=Mock(hello="world"))
+
+    alias_resolver = resolve_to("nested.hello")
+    assert alias_resolver(parent_mapping, None) == "world"
+    assert alias_resolver(parent_object, None) == "world"
+
+
 def test_alias_resolver_passess_field_args_to_callable_return_value():
     def callable_resolver(*_, test):
         return test
diff --git a/tests/wsgi/__snapshots__/test_explorer.ambr b/tests/wsgi/__snapshots__/test_explorer.ambr
index 2941db4..c9c5465 100644
--- a/tests/wsgi/__snapshots__/test_explorer.ambr
+++ b/tests/wsgi/__snapshots__/test_explorer.ambr
@@ -10,16 +10,16 @@
 # ---
 # name: test_default_explorer_html_is_served_on_get_request
   list([
-    b'<!--\n *  Copyright (c) 2021 GraphQL Contributors\n *  All rights reserved.\n *\n *  This source code is licensed under the license found in the\n *  LICENSE file in the root directory of this source tree.\n-->\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">\n    <title>Ariadne GraphQL</title>\n    <style>\n      body {\n        height: 100%;\n        margin: 0;\n        width: 100%;\n        overflow: hidden;\n      }\n\n      #graphiql {\n        height: 100vh;\n      }\n\n      #graphiql-loading {\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        color: #545454;\n        font-size: 1.5em;\n        font-family: sans-serif;\n        font-weight: bold;\n      }\n    </style>\n    <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />\n    \n  </head>\n\n  <body>\n    <div id="graphiql">\n      <div id="graphiql-loading">Loading Ariadne GraphQL...</div>\n    </div>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/react@17/umd/react.production.min.js"\n    ></script>\n    <script\n      crossorigin\n      src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"\n    ></script>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"\n    ></script>\n\n    \n\n    <script>\n      var fetcher = GraphiQL.createFetcher({\n        url: window.location.href,\n        \n        subscriptionUrl: (window.location.protocol === "https:" ? "wss" : "ws") + "://" + window.location.host + window.location.pathname,\n        \n      });\n\n      function AriadneGraphiQL() {\n        var [query, setQuery] = React.useState(\n          \'#\\n# GraphiQL is an in -browser tool for writing, validating, and\\n# testing GraphQL queries.\\n#\\n# Type queries into this side of the screen, and you will see intelligent\\n# typeaheads aware of the current GraphQL type schema and live syntax and\\n# validation errors highlighted within the text.\\n#\\n# GraphQL queries typically start with a "{" character. Lines that start\\n# with a # are ignored.\\n#\\n# An example GraphQL query might look like:\\n#\\n#     {\\n#       field(arg: "value") {\\n#         subField\\n#\\n#       }\\n#\\n#     }\\n#\\n# Keyboard shortcuts:\\n#\\n#   Prettify query: Shift - Ctrl - P(or press the prettify button)\\n#\\n#  Merge fragments: Shift - Ctrl - M(or press the merge button)\\n#\\n#        Run Query: Ctrl - Enter(or press the play button)\\n#\\n#    Auto Complete: Ctrl - Space(or just start typing)\\n#\',\n        );\n        \n        return React.createElement(GraphiQL, {\n          fetcher: fetcher,\n          defaultEditorToolsVisibility: true,\n          \n          query: query,\n          onEditQuery: setQuery,\n        });\n      }\n\n      ReactDOM.render(\n        React.createElement(AriadneGraphiQL),\n        document.getElementById(\'graphiql\'),\n      );\n    </script>\n  </body>\n</html>\n',
+    b'<!--\n *  Copyright (c) 2021 GraphQL Contributors\n *  All rights reserved.\n *\n *  This source code is licensed under the license found in the\n *  LICENSE file in the root directory of this source tree.\n-->\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">\n    <title>Ariadne GraphQL</title>\n    <style>\n      body {\n        height: 100%;\n        margin: 0;\n        width: 100%;\n        overflow: hidden;\n      }\n\n      #graphiql {\n        height: 100vh;\n      }\n\n      #graphiql-loading {\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        color: #545454;\n        font-size: 1.5em;\n        font-family: sans-serif;\n        font-weight: bold;\n      }\n    </style>\n    <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />\n    \n  </head>\n\n  <body>\n    <div id="graphiql">\n      <div id="graphiql-loading">Loading Ariadne GraphQL...</div>\n    </div>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/react@17/umd/react.production.min.js"\n    ></script>\n    <script\n      crossorigin\n      src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"\n    ></script>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"\n    ></script>\n\n    \n\n    <script>\n      var fetcher = GraphiQL.createFetcher({\n        url: window.location.href,\n        \n        subscriptionUrl: (window.location.protocol === "https:" ? "wss" : "ws") + "://" + window.location.host + window.location.pathname,\n        \n      });\n\n      function AriadneGraphiQL() {\n        var [query, setQuery] = React.useState(\n          \'#\\n# GraphiQL is an in -browser tool for writing, validating, and\\n# testing GraphQL queries.\\n#\\n# Type queries into this side of the screen, and you will see intelligent\\n# typeaheads aware of the current GraphQL type schema and live syntax and\\n# validation errors highlighted within the text.\\n#\\n# GraphQL queries typically start with a "{" character. Lines that start\\n# with a # are ignored.\\n#\\n# An example GraphQL query might look like:\\n#\\n#     {\\n#       field(arg: "value") {\\n#         subField\\n#\\n#       }\\n#\\n#     }\\n#\\n# Keyboard shortcuts:\\n#\\n#   Prettify query: Shift - Ctrl - P(or press the prettify button)\\n#\\n#  Merge fragments: Shift - Ctrl - M(or press the merge button)\\n#\\n#        Run Query: Ctrl - Enter(or press the play button)\\n#\\n#    Auto Complete: Ctrl - Space(or just start typing)\\n#\',\n        );\n        \n        return React.createElement(GraphiQL, {\n          fetcher: fetcher,\n          defaultEditorToolsVisibility: true,\n          \n          query: query,\n          onEditQuery: setQuery,\n        });\n      }\n\n      ReactDOM.render(\n        React.createElement(AriadneGraphiQL),\n        document.getElementById(\'graphiql\'),\n      );\n    </script>\n  </body>\n</html>\n',
   ])
 # ---
 # name: test_graphiql_html_is_served_on_get_request
   list([
-    b'<!--\n *  Copyright (c) 2021 GraphQL Contributors\n *  All rights reserved.\n *\n *  This source code is licensed under the license found in the\n *  LICENSE file in the root directory of this source tree.\n-->\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">\n    <title>Ariadne GraphQL</title>\n    <style>\n      body {\n        height: 100%;\n        margin: 0;\n        width: 100%;\n        overflow: hidden;\n      }\n\n      #graphiql {\n        height: 100vh;\n      }\n\n      #graphiql-loading {\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        color: #545454;\n        font-size: 1.5em;\n        font-family: sans-serif;\n        font-weight: bold;\n      }\n    </style>\n    <link rel="stylesheet" href="https://unpkg.com/graphiql@3.0.0/graphiql.min.css" />\n    \n  </head>\n\n  <body>\n    <div id="graphiql">\n      <div id="graphiql-loading">Loading Ariadne GraphQL...</div>\n    </div>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/react@17/umd/react.production.min.js"\n    ></script>\n    <script\n      crossorigin\n      src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"\n    ></script>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/graphiql@3.0.0/graphiql.min.js"\n    ></script>\n\n    \n\n    <script>\n      var fetcher = GraphiQL.createFetcher({\n        url: window.location.href,\n        \n        subscriptionUrl: (window.location.protocol === "https:" ? "wss" : "ws") + "://" + window.location.host + window.location.pathname,\n        \n      });\n\n      function AriadneGraphiQL() {\n        var [query, setQuery] = React.useState(\n          \'#\\n# GraphiQL is an in -browser tool for writing, validating, and\\n# testing GraphQL queries.\\n#\\n# Type queries into this side of the screen, and you will see intelligent\\n# typeaheads aware of the current GraphQL type schema and live syntax and\\n# validation errors highlighted within the text.\\n#\\n# GraphQL queries typically start with a "{" character. Lines that start\\n# with a # are ignored.\\n#\\n# An example GraphQL query might look like:\\n#\\n#     {\\n#       field(arg: "value") {\\n#         subField\\n#\\n#       }\\n#\\n#     }\\n#\\n# Keyboard shortcuts:\\n#\\n#   Prettify query: Shift - Ctrl - P(or press the prettify button)\\n#\\n#  Merge fragments: Shift - Ctrl - M(or press the merge button)\\n#\\n#        Run Query: Ctrl - Enter(or press the play button)\\n#\\n#    Auto Complete: Ctrl - Space(or just start typing)\\n#\',\n        );\n        \n        return React.createElement(GraphiQL, {\n          fetcher: fetcher,\n          defaultEditorToolsVisibility: true,\n          \n          query: query,\n          onEditQuery: setQuery,\n        });\n      }\n\n      ReactDOM.render(\n        React.createElement(AriadneGraphiQL),\n        document.getElementById(\'graphiql\'),\n      );\n    </script>\n  </body>\n</html>\n',
+    b'<!--\n *  Copyright (c) 2021 GraphQL Contributors\n *  All rights reserved.\n *\n *  This source code is licensed under the license found in the\n *  LICENSE file in the root directory of this source tree.\n-->\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">\n    <title>Ariadne GraphQL</title>\n    <style>\n      body {\n        height: 100%;\n        margin: 0;\n        width: 100%;\n        overflow: hidden;\n      }\n\n      #graphiql {\n        height: 100vh;\n      }\n\n      #graphiql-loading {\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        color: #545454;\n        font-size: 1.5em;\n        font-family: sans-serif;\n        font-weight: bold;\n      }\n    </style>\n    <link rel="stylesheet" href="https://unpkg.com/graphiql@3.3.2/graphiql.min.css" />\n    \n  </head>\n\n  <body>\n    <div id="graphiql">\n      <div id="graphiql-loading">Loading Ariadne GraphQL...</div>\n    </div>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/react@17/umd/react.production.min.js"\n    ></script>\n    <script\n      crossorigin\n      src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"\n    ></script>\n\n    <script\n      crossorigin\n      src="https://unpkg.com/graphiql@3.3.2/graphiql.min.js"\n    ></script>\n\n    \n\n    <script>\n      var fetcher = GraphiQL.createFetcher({\n        url: window.location.href,\n        \n        subscriptionUrl: (window.location.protocol === "https:" ? "wss" : "ws") + "://" + window.location.host + window.location.pathname,\n        \n      });\n\n      function AriadneGraphiQL() {\n        var [query, setQuery] = React.useState(\n          \'#\\n# GraphiQL is an in -browser tool for writing, validating, and\\n# testing GraphQL queries.\\n#\\n# Type queries into this side of the screen, and you will see intelligent\\n# typeaheads aware of the current GraphQL type schema and live syntax and\\n# validation errors highlighted within the text.\\n#\\n# GraphQL queries typically start with a "{" character. Lines that start\\n# with a # are ignored.\\n#\\n# An example GraphQL query might look like:\\n#\\n#     {\\n#       field(arg: "value") {\\n#         subField\\n#\\n#       }\\n#\\n#     }\\n#\\n# Keyboard shortcuts:\\n#\\n#   Prettify query: Shift - Ctrl - P(or press the prettify button)\\n#\\n#  Merge fragments: Shift - Ctrl - M(or press the merge button)\\n#\\n#        Run Query: Ctrl - Enter(or press the play button)\\n#\\n#    Auto Complete: Ctrl - Space(or just start typing)\\n#\',\n        );\n        \n        return React.createElement(GraphiQL, {\n          fetcher: fetcher,\n          defaultEditorToolsVisibility: true,\n          \n          query: query,\n          onEditQuery: setQuery,\n        });\n      }\n\n      ReactDOM.render(\n        React.createElement(AriadneGraphiQL),\n        document.getElementById(\'graphiql\'),\n      );\n    </script>\n  </body>\n</html>\n',
   ])
 # ---
 # name: test_playground_html_is_served_on_get_request
   list([
-    b'<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">\n    <title>Ariadne GraphQL</title>\n    <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/graphql-playground-react/build/static/css/index.css" />\n    <link rel="shortcut icon" href="//cdn.jsdelivr.net/npm/graphql-playground-react/build/favicon.png" />\n    <script src="//cdn.jsdelivr.net/npm/graphql-playground-react/build/static/js/middleware.js"></script>\n  </head>\n  <body>\n    <div id="root">\n      <style>\n        body {\n          background-color: rgb(23, 42, 58);\n          font-family: Open Sans, sans-serif;\n          height: 90vh;\n        }\n\n        #root {\n          height: 100%;\n          width: 100%;\n          display: flex;\n          align-items: center;\n          justify-content: center;\n        }\n\n        .loading {\n          font-size: 32px;\n          font-weight: 200;\n          color: rgba(255, 255, 255, .6);\n          margin-left: 20px;\n        }\n\n        img {\n          width: 78px;\n          height: 78px;\n        }\n\n        .title {\n          font-weight: 400;\n        }\n      </style>\n      <img src=\'//cdn.jsdelivr.net/npm/graphql-playground-react/build/logo.png\' alt=\'\'>\n      <div class="loading"> Loading\n        <span class="title">Ariadne GraphQL</span>\n      </div>\n    </div>\n    <script>\n      window.addEventListener(\'load\', function (event) {\n        GraphQLPlayground.init(document.getElementById(\'root\'), {\n          // options as \'endpoint\' belong here\n          \n        })\n      })\n    </script>\n  </body>\n</html>\n',
+    b'<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">\n    <title>Ariadne GraphQL</title>\n    <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/graphql-playground-react/build/static/css/index.css" />\n    <link rel="shortcut icon" href="//cdn.jsdelivr.net/npm/graphql-playground-react/build/favicon.png" />\n    <script src="//cdn.jsdelivr.net/npm/graphql-playground-react/build/static/js/middleware.js"></script>\n  </head>\n  <body>\n    <div id="root">\n      <style>\n        body {\n          background-color: rgb(23, 42, 58);\n          font-family: Open Sans, sans-serif;\n          height: 90vh;\n        }\n\n        #root {\n          height: 100%;\n          width: 100%;\n          display: flex;\n          align-items: center;\n          justify-content: center;\n        }\n\n        .loading {\n          font-size: 32px;\n          font-weight: 200;\n          color: rgba(255, 255, 255, .6);\n          margin-left: 20px;\n        }\n\n        img {\n          width: 78px;\n          height: 78px;\n        }\n\n        .title {\n          font-weight: 400;\n        }\n      </style>\n      <img src=\'//cdn.jsdelivr.net/npm/graphql-playground-react/build/logo.png\' alt=\'\'>\n      <div class="loading"> Loading\n        <span class="title">Ariadne GraphQL</span>\n      </div>\n    </div>\n    <script>\n      window.addEventListener(\'load\', function (event) {\n        GraphQLPlayground.init(document.getElementById(\'root\'), {\n          // options as \'endpoint\' belong here\n          \n          shareEnabled: false,\n        })\n      })\n    </script>\n  </body>\n</html>\n',
   ])
 # ---
diff --git a/tests_integrations/fastapi/requirements.txt b/tests_integrations/fastapi/requirements.txt
index b17295e..b039b77 100644
--- a/tests_integrations/fastapi/requirements.txt
+++ b/tests_integrations/fastapi/requirements.txt
@@ -10,7 +10,7 @@ anyio==3.7.1
     # via starlette
 fastapi==0.109.1
     # via -r requirements.in
-idna==3.4
+idna==3.7
     # via anyio
 pydantic==2.4.2
     # via fastapi