Repository: mirumee/ariadne
Pull request #1140 (2023-12-20 19:40:57)

Fix typo in docstring

codecov[bot]: ## [Codecov](https://app.codecov.io/gh/mirumee/ariadne/pull/1140?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:
> Comparison is base [(`f1ca128`)](https://app.codecov.io/gh/mirumee/ariadne/commit/f1ca128d9e19591a4edf2af115d230f6be169730?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=mirumee) 97.85% compared to head [(`8c87ecf`)](https://app.codecov.io/gh/mirumee/ariadne/pull/1140?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=mirumee) 97.85%.


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


```diff
@@           Coverage Diff           @@
##           master    #1140   +/-   ##
=======================================
  Coverage   97.85%   97.85%           
=======================================
  Files         109      109           
  Lines        7865     7865           
=======================================
  Hits         7696     7696           
  Misses        169      169           
```



</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/mirumee/ariadne/pull/1140?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/CHANGELOG.md b/CHANGELOG.md
index c900f64..be5462d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
 - Deprecated `EnumType.bind_to_default_values` method. It will be removed in a future release.
 - Added `repair_schema_default_enum_values` to public API.
 - Removed `validate_schema_enum_values` and introduced `validate_schema_default_enum_values` in its place. This is a breaking change.
+- Fixed an invalid error message returned by the `GraphQLTransportWSHandler` for `query` and `mutation` operations.
 
 
 ## 0.21 (2023-11-08)
diff --git a/ariadne/asgi/handlers/graphql_transport_ws.py b/ariadne/asgi/handlers/graphql_transport_ws.py
index 26c48c9..60ee82b 100644
--- a/ariadne/asgi/handlers/graphql_transport_ws.py
+++ b/ariadne/asgi/handlers/graphql_transport_ws.py
@@ -367,15 +367,22 @@ class GraphQLTransportWSHandler(GraphQLWebsocketHandler):
                 yield result
 
             # if success then AsyncGenerator is expected, for error it will be List
-            results_producer = get_results() if success else [result]
+            if success:
+                results_producer = get_results()
+            else:
+                results_producer = result["errors"]
 
         if not success:
-            results_producer = cast(List[dict], results_producer)
+            if not isinstance(results_producer, list):
+                error_payload = cast(List[dict], [results_producer])
+            else:
+                error_payload = results_producer
+
             await websocket.send_json(
                 {
                     "type": GraphQLTransportWSHandler.GQL_ERROR,
                     "id": operation_id,
-                    "payload": [results_producer[0]],
+                    "payload": error_payload,
                 }
             )
         else:
diff --git a/ariadne/objects.py b/ariadne/objects.py
index ee5a818..d47c132 100644
--- a/ariadne/objects.py
+++ b/ariadne/objects.py
@@ -210,7 +210,7 @@ class ObjectType(SchemaBindable):
         return resolver
 
     def set_alias(self, name: str, to: str) -> None:
-        """Set an alias resolver for the field name to given Python nme.
+        """Set an alias resolver for the field name to given Python name.
 
         # Required arguments
 
diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0029_a456a090efc37c874eb5065df90974d5b8c941e2_20240108_093932.json b/benchmark/results/Linux-CPython-3.10-64bit/0029_a456a090efc37c874eb5065df90974d5b8c941e2_20240108_093932.json
new file mode 100644
index 0000000..20da15d
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.10-64bit/0029_a456a090efc37c874eb5065df90974d5b8c941e2_20240108_093932.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az692-848",
+        "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-1018-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": 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": [
+                2445425000,
+                0
+            ],
+            "hz_actual": [
+                2445425000,
+                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": "a456a090efc37c874eb5065df90974d5b8c941e2",
+        "time": "2024-01-08T09:39:03+00:00",
+        "author_time": "2024-01-08T09:39:03+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.0795998839999967,
+                "max": 1.1688380129999985,
+                "mean": 1.1284213593999994,
+                "stddev": 0.03269822544467619,
+                "rounds": 5,
+                "median": 1.133189096999999,
+                "iqr": 0.038406004500000535,
+                "q1": 1.1095316610000001,
+                "q3": 1.1479376655000006,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.0795998839999967,
+                "hd15iqr": 1.1688380129999985,
+                "ops": 0.8861937889333439,
+                "total": 5.642106796999997,
+                "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.1089177790000022,
+                "max": 1.188399094999994,
+                "mean": 1.1522620626000006,
+                "stddev": 0.030177614958253208,
+                "rounds": 5,
+                "median": 1.1594242680000022,
+                "iqr": 0.04126422974999855,
+                "q1": 1.1307459335000019,
+                "q3": 1.1720101632500004,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.1089177790000022,
+                "hd15iqr": 1.188399094999994,
+                "ops": 0.8678581309390404,
+                "total": 5.761310313000003,
+                "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.329087644999987,
+                "max": 1.42212950199999,
+                "mean": 1.3591327727999925,
+                "stddev": 0.03876144029322076,
+                "rounds": 5,
+                "median": 1.337971264999993,
+                "iqr": 0.04969595574999275,
+                "q1": 1.3339824599999979,
+                "q3": 1.3836784157499906,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.329087644999987,
+                "hd15iqr": 1.42212950199999,
+                "ops": 0.7357632896599707,
+                "total": 6.7956638639999625,
+                "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.2145887430000073,
+                "max": 1.3663666000000063,
+                "mean": 1.272169370200001,
+                "stddev": 0.06039844764100035,
+                "rounds": 5,
+                "median": 1.2627907379999925,
+                "iqr": 0.08471381624998742,
+                "q1": 1.2241752985000076,
+                "q3": 1.308889114749995,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.2145887430000073,
+                "hd15iqr": 1.3663666000000063,
+                "ops": 0.7860588561747776,
+                "total": 6.360846851000005,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-01-08T09:40:09.125570",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.11-64bit/0029_5c39cf5d29079a5c03d2b5a8494d286e649546ec_20240108_094031.json b/benchmark/results/Linux-CPython-3.11-64bit/0029_5c39cf5d29079a5c03d2b5a8494d286e649546ec_20240108_094031.json
new file mode 100644
index 0000000..24ab7e0
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.11-64bit/0029_5c39cf5d29079a5c03d2b5a8494d286e649546ec_20240108_094031.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az984-80",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.11.7",
+        "python_version": "3.11.7",
+        "python_build": [
+            "main",
+            "Dec  5 2023 08:47:01"
+        ],
+        "release": "6.2.0-1018-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.11.7.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.2410 GHz",
+            "hz_actual_friendly": "3.2410 GHz",
+            "hz_advertised": [
+                3241036000,
+                0
+            ],
+            "hz_actual": [
+                3241036000,
+                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": "5c39cf5d29079a5c03d2b5a8494d286e649546ec",
+        "time": "2024-01-08T09:40:09+00:00",
+        "author_time": "2024-01-08T09:40:09+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": 0.8112958019999894,
+                "max": 0.8816208890000041,
+                "mean": 0.8483636371999979,
+                "stddev": 0.024967588951829246,
+                "rounds": 5,
+                "median": 0.8491931629999954,
+                "iqr": 0.020640926750019162,
+                "q1": 0.8386847474999897,
+                "q3": 0.8593256742500088,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 0.8112958019999894,
+                "hd15iqr": 0.8816208890000041,
+                "ops": 1.1787398188122185,
+                "total": 4.241818185999989,
+                "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.8494627139999977,
+                "max": 0.8829435070000216,
+                "mean": 0.863488482400004,
+                "stddev": 0.013117421944879462,
+                "rounds": 5,
+                "median": 0.8631872960000067,
+                "iqr": 0.018966591999998172,
+                "q1": 0.852760817250001,
+                "q3": 0.8717274092499991,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 0.8494627139999977,
+                "hd15iqr": 0.8829435070000216,
+                "ops": 1.1580930381614034,
+                "total": 4.31744241200002,
+                "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.9911080040000115,
+                "max": 1.0233441190000008,
+                "mean": 1.0149113212000032,
+                "stddev": 0.01345941126500145,
+                "rounds": 5,
+                "median": 1.0198413990000006,
+                "iqr": 0.011078827250003087,
+                "q1": 1.011365758250001,
+                "q3": 1.0224445855000042,
+                "iqr_outliers": 1,
+                "stddev_outliers": 1,
+                "outliers": "1;1",
+                "ld15iqr": 1.0181183429999976,
+                "hd15iqr": 1.0233441190000008,
+                "ops": 0.9853077595169868,
+                "total": 5.074556606000016,
+                "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.9233651799999905,
+                "max": 0.9485774169999956,
+                "mean": 0.9333763051999995,
+                "stddev": 0.010378754352791729,
+                "rounds": 5,
+                "median": 0.9351377270000114,
+                "iqr": 0.015322668750009427,
+                "q1": 0.9237569409999935,
+                "q3": 0.9390796097500029,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 0.9233651799999905,
+                "hd15iqr": 0.9485774169999956,
+                "ops": 1.0713792437507021,
+                "total": 4.666881525999997,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-01-08T09:40:59.855791",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.12-64bit/0004_72fa3fc71f31b6f70f5a10080deca89176473dab_20240108_094123.json b/benchmark/results/Linux-CPython-3.12-64bit/0004_72fa3fc71f31b6f70f5a10080deca89176473dab_20240108_094123.json
new file mode 100644
index 0000000..3efcc96
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.12-64bit/0004_72fa3fc71f31b6f70f5a10080deca89176473dab_20240108_094123.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az1040-525",
+        "processor": "x86_64",
+        "machine": "x86_64",
+        "python_compiler": "GCC 11.4.0",
+        "python_implementation": "CPython",
+        "python_implementation_version": "3.12.1",
+        "python_version": "3.12.1",
+        "python_build": [
+            "main",
+            "Dec  8 2023 05:40:51"
+        ],
+        "release": "6.2.0-1018-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.12.1.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.7918 GHz",
+            "hz_actual_friendly": "2.7918 GHz",
+            "hz_advertised": [
+                2791820000,
+                0
+            ],
+            "hz_actual": [
+                2791820000,
+                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": "72fa3fc71f31b6f70f5a10080deca89176473dab",
+        "time": "2024-01-08T09:40:59+00:00",
+        "author_time": "2024-01-08T09:40:59+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": 0.9691520810000043,
+                "max": 1.031979065999991,
+                "mean": 1.0084941461999848,
+                "stddev": 0.027192297885826038,
+                "rounds": 5,
+                "median": 1.023405896999975,
+                "iqr": 0.042445850500001825,
+                "q1": 0.9856436007499809,
+                "q3": 1.0280894512499827,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 0.9691520810000043,
+                "hd15iqr": 1.031979065999991,
+                "ops": 0.9915773966244715,
+                "total": 5.0424707309999235,
+                "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.0032062969999913,
+                "max": 1.081942842000018,
+                "mean": 1.0401086650000024,
+                "stddev": 0.02909422941031589,
+                "rounds": 5,
+                "median": 1.0332345619999899,
+                "iqr": 0.035589585750010144,
+                "q1": 1.023658708500001,
+                "q3": 1.0592482942500112,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.0032062969999913,
+                "hd15iqr": 1.081942842000018,
+                "ops": 0.961438005133817,
+                "total": 5.200543325000012,
+                "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.2895969990000253,
+                "max": 1.3101329939999857,
+                "mean": 1.2985526795999989,
+                "stddev": 0.008368332873071937,
+                "rounds": 5,
+                "median": 1.300109768999988,
+                "iqr": 0.012974290249985643,
+                "q1": 1.2908254675000066,
+                "q3": 1.3037997577499922,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.2895969990000253,
+                "hd15iqr": 1.3101329939999857,
+                "ops": 0.7700881263500501,
+                "total": 6.492763397999994,
+                "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.2126171529999965,
+                "max": 1.2498575420000009,
+                "mean": 1.2356542402000001,
+                "stddev": 0.015136542189900752,
+                "rounds": 5,
+                "median": 1.2370305740000163,
+                "iqr": 0.022486100249999197,
+                "q1": 1.2261035112499954,
+                "q3": 1.2485896114999946,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.2126171529999965,
+                "hd15iqr": 1.2498575420000009,
+                "ops": 0.8092878796241109,
+                "total": 6.178271201000001,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-01-08T09:41:58.836785",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.8-64bit/0029_94b872901a2da9bdeb47c1ee9230e66e4a7a93c1_20240108_093729.json b/benchmark/results/Linux-CPython-3.8-64bit/0029_94b872901a2da9bdeb47c1ee9230e66e4a7a93c1_20240108_093729.json
new file mode 100644
index 0000000..fde2dea
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.8-64bit/0029_94b872901a2da9bdeb47c1ee9230e66e4a7a93c1_20240108_093729.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az1113-302",
+        "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",
+            "Aug 28 2023 08:27:22"
+        ],
+        "release": "6.2.0-1018-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": "3.2425 GHz",
+            "hz_actual_friendly": "3.2425 GHz",
+            "hz_advertised": [
+                3242530000,
+                0
+            ],
+            "hz_actual": [
+                3242530000,
+                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": "94b872901a2da9bdeb47c1ee9230e66e4a7a93c1",
+        "time": "2024-01-08T10:37:01+01:00",
+        "author_time": "2024-01-08T10:37:01+01: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.0738681519999886,
+                "max": 1.17286974000001,
+                "mean": 1.113276430999997,
+                "stddev": 0.04007593403207324,
+                "rounds": 5,
+                "median": 1.1012634399999968,
+                "iqr": 0.06059763475003166,
+                "q1": 1.0824362277499802,
+                "q3": 1.1430338625000118,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.0738681519999886,
+                "hd15iqr": 1.17286974000001,
+                "ops": 0.8982495022388582,
+                "total": 5.566382154999985,
+                "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.092931364000009,
+                "max": 1.1619930109999927,
+                "mean": 1.1295474679999984,
+                "stddev": 0.02732182401725018,
+                "rounds": 5,
+                "median": 1.1404848880000031,
+                "iqr": 0.039764251499988745,
+                "q1": 1.106606450000001,
+                "q3": 1.1463707014999898,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.092931364000009,
+                "hd15iqr": 1.1619930109999927,
+                "ops": 0.8853102931305951,
+                "total": 5.647737339999992,
+                "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.3151504600000123,
+                "max": 1.4209639720000098,
+                "mean": 1.3645311165999998,
+                "stddev": 0.04402473639940773,
+                "rounds": 5,
+                "median": 1.347997451999987,
+                "iqr": 0.07159418374999404,
+                "q1": 1.333171099250002,
+                "q3": 1.4047652829999961,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.3151504600000123,
+                "hd15iqr": 1.4209639720000098,
+                "ops": 0.7328524705920217,
+                "total": 6.8226555829999995,
+                "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.1874621899999909,
+                "max": 1.2546343779999916,
+                "mean": 1.225257900400004,
+                "stddev": 0.030601314646963865,
+                "rounds": 5,
+                "median": 1.2312865910000141,
+                "iqr": 0.056692288749985664,
+                "q1": 1.1967558052500138,
+                "q3": 1.2534480939999995,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.1874621899999909,
+                "hd15iqr": 1.2546343779999916,
+                "ops": 0.8161547047960555,
+                "total": 6.12628950200002,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-01-08T09:38:05.905272",
+    "version": "4.0.0"
+}
\ No newline at end of file
diff --git a/benchmark/results/Linux-CPython-3.9-64bit/0029_141790114c5dbf7a9f0fea01c45a12cb4b266451_20240108_093830.json b/benchmark/results/Linux-CPython-3.9-64bit/0029_141790114c5dbf7a9f0fea01c45a12cb4b266451_20240108_093830.json
new file mode 100644
index 0000000..5987bb9
--- /dev/null
+++ b/benchmark/results/Linux-CPython-3.9-64bit/0029_141790114c5dbf7a9f0fea01c45a12cb4b266451_20240108_093830.json
@@ -0,0 +1,310 @@
+{
+    "machine_info": {
+        "node": "fv-az842-373",
+        "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_build": [
+            "main",
+            "Aug 28 2023 08:38:32"
+        ],
+        "release": "6.2.0-1018-azure",
+        "system": "Linux",
+        "cpu": {
+            "python_version": "3.9.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.6252 GHz",
+            "hz_actual_friendly": "2.6252 GHz",
+            "hz_advertised": [
+                2625228000,
+                0
+            ],
+            "hz_actual": [
+                2625228000,
+                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": "141790114c5dbf7a9f0fea01c45a12cb4b266451",
+        "time": "2024-01-08T09:38:06+00:00",
+        "author_time": "2024-01-08T09:38:06+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": 0.9824889440000106,
+                "max": 1.0177701280000093,
+                "mean": 1.0002438850000033,
+                "stddev": 0.01608432836954776,
+                "rounds": 5,
+                "median": 1.0053006969999956,
+                "iqr": 0.029365057999982014,
+                "q1": 0.9837222260000118,
+                "q3": 1.0130872839999938,
+                "iqr_outliers": 0,
+                "stddev_outliers": 3,
+                "outliers": "3;0",
+                "ld15iqr": 0.9824889440000106,
+                "hd15iqr": 1.0177701280000093,
+                "ops": 0.9997561744653872,
+                "total": 5.001219425000016,
+                "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.0026301329999967,
+                "max": 1.0605312069999968,
+                "mean": 1.0313802995999963,
+                "stddev": 0.02141759121202289,
+                "rounds": 5,
+                "median": 1.0318189409999832,
+                "iqr": 0.02780590124999449,
+                "q1": 1.017212673250004,
+                "q3": 1.0450185744999985,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.0026301329999967,
+                "hd15iqr": 1.0605312069999968,
+                "ops": 0.9695744628706146,
+                "total": 5.156901497999982,
+                "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.2257543949999956,
+                "max": 1.262403355999993,
+                "mean": 1.2484377137999956,
+                "stddev": 0.014101814963786135,
+                "rounds": 5,
+                "median": 1.2522179540000025,
+                "iqr": 0.01733643325000145,
+                "q1": 1.240531326249993,
+                "q3": 1.2578677594999945,
+                "iqr_outliers": 0,
+                "stddev_outliers": 1,
+                "outliers": "1;0",
+                "ld15iqr": 1.2257543949999956,
+                "hd15iqr": 1.262403355999993,
+                "ops": 0.8010011143897594,
+                "total": 6.242188568999978,
+                "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.1076375240000118,
+                "max": 1.1533313679999821,
+                "mean": 1.1316927968000017,
+                "stddev": 0.01917331691105619,
+                "rounds": 5,
+                "median": 1.1398970900000052,
+                "iqr": 0.030967311999972935,
+                "q1": 1.113736706250016,
+                "q3": 1.144704018249989,
+                "iqr_outliers": 0,
+                "stddev_outliers": 2,
+                "outliers": "2;0",
+                "ld15iqr": 1.1076375240000118,
+                "hd15iqr": 1.1533313679999821,
+                "ops": 0.8836320270197187,
+                "total": 5.658463984000008,
+                "iterations": 1
+            }
+        }
+    ],
+    "datetime": "2024-01-08T09:39:03.755487",
+    "version": "4.0.0"
+}
\ No newline at end of file


Test patch:
diff --git a/tests/asgi/__snapshots__/test_websockets_graphql_transport_ws.ambr b/tests/asgi/__snapshots__/test_websockets_graphql_transport_ws.ambr
new file mode 100644
index 0000000..545d964
--- /dev/null
+++ b/tests/asgi/__snapshots__/test_websockets_graphql_transport_ws.ambr
@@ -0,0 +1,23 @@
+# serializer version: 1
+# name: test_invalid_query_error_is_handled_using_websocket_connection_graphql_transport_ws
+  list([
+    dict({
+      'locations': list([
+        dict({
+          'column': 17,
+          'line': 1,
+        }),
+      ]),
+      'message': "Cannot query field 'error' on type 'Query'.",
+    }),
+    dict({
+      'locations': list([
+        dict({
+          'column': 23,
+          'line': 1,
+        }),
+      ]),
+      'message': "Cannot query field 'other' on type 'Query'.",
+    }),
+  ])
+# ---
diff --git a/tests/asgi/test_websockets_graphql_transport_ws.py b/tests/asgi/test_websockets_graphql_transport_ws.py
index 38489f3..7aff250 100644
--- a/tests/asgi/test_websockets_graphql_transport_ws.py
+++ b/tests/asgi/test_websockets_graphql_transport_ws.py
@@ -153,6 +153,30 @@ def test_mutation_can_be_executed_using_websocket_connection_graphql_transport_w
         assert response["id"] == "test3"
 
 
+def test_invalid_query_error_is_handled_using_websocket_connection_graphql_transport_ws(
+    client_graphql_transport_ws, snapshot
+):
+    with client_graphql_transport_ws.websocket_connect(
+        "/", ["graphql-transport-ws"]
+    ) as ws:
+        ws.send_json({"type": GraphQLTransportWSHandler.GQL_CONNECTION_INIT})
+        response = ws.receive_json()
+        assert response["type"] == GraphQLTransportWSHandler.GQL_CONNECTION_ACK
+        ws.send_json(
+            {
+                "type": GraphQLTransportWSHandler.GQL_SUBSCRIBE,
+                "id": "test2",
+                "payload": {
+                    "operationName": "Invalid",
+                    "query": "query Invalid { error other }",
+                },
+            }
+        )
+        response = ws.receive_json()
+        assert response["type"] == GraphQLTransportWSHandler.GQL_ERROR
+        assert snapshot == response["payload"]
+
+
 def test_custom_query_parser_is_used_for_subscription_over_websocket_transport_ws(
     schema,
 ):