Skip to content

Commit 4400ad8

Browse files
authored
Merge pull request #5278 from ilyasgaraev/do-not-execute-multiplex-with-empty-queries
Immediately return empty array in multiplex if queries list is empty
2 parents 4918fb4 + 77d8198 commit 4400ad8

3 files changed

Lines changed: 47 additions & 0 deletions

File tree

lib/graphql/execution/interpreter.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def run_all(schema, query_options, context: {}, max_complexity: schema.max_compl
3333
end
3434
end
3535

36+
return GraphQL::EmptyObjects::EMPTY_ARRAY if queries.empty?
3637

3738
multiplex = Execution::Multiplex.new(schema: schema, queries: queries, context: context, max_complexity: max_complexity)
3839
Fiber[:__graphql_current_multiplex] = multiplex

spec/graphql/execution/interpreter_spec.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -949,4 +949,25 @@ def variant
949949
assert_equal(expected_result, res["data"])
950950
end
951951
end
952+
953+
describe "multiplex queries" do
954+
it "runs multiplex queries" do
955+
result = InterpreterTest::Schema.multiplex([
956+
{
957+
query: "query Card($name: String!) { card(name: $name) { colors } }",
958+
variables: { name: "Dark Confidant" },
959+
operation_name: "Card"
960+
},
961+
{
962+
query: "query Expansion($expansion: String!) { expansion(sym: $expansion) { cards { name } } }",
963+
variables: { expansion: "RAV" },
964+
operation_name: "Expansion"
965+
}
966+
])
967+
968+
assert_equal ["BLACK"], result[0]["data"]["card"]["colors"]
969+
assert_equal [{"name" => "Dark Confidant"}], result[1]["data"]["expansion"]["cards"]
970+
assert_nil Fiber[:__graphql_runtime_info]
971+
end
972+
end
952973
end

spec/graphql/tracing/new_relic_trace_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,4 +252,29 @@ class SchemaWithoutAuthorizedOrResolveType < GraphQL::Schema
252252
]
253253
assert_equal expected_steps, NewRelic::EXECUTION_SCOPES
254254
end
255+
256+
describe "multiplex queries" do
257+
it "handles multiplex" do
258+
NewRelicTraceTest::SchemaWithTransactionName.multiplex([
259+
{
260+
query: "query Q1 { int }",
261+
variables: {},
262+
operation_name: "Q1"
263+
},
264+
{
265+
query: "query Q2 { int }",
266+
variables: {},
267+
operation_name: "Q2"
268+
}
269+
])
270+
271+
assert_equal ["GraphQL/query.Q1"], NewRelic::TRANSACTION_NAMES
272+
end
273+
274+
it "handles empty multiplex" do
275+
NewRelicTraceTest::SchemaWithTransactionName.multiplex([])
276+
277+
assert_equal [], NewRelic::TRANSACTION_NAMES
278+
end
279+
end
255280
end

0 commit comments

Comments
 (0)