Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
d7eaf72
Clarify 'before execution begins' in response
benjie Oct 18, 2021
b76671b
Extract common logic from ExecuteQuery, ExecuteMutation and ExecuteSu…
benjie Apr 28, 2023
c9837a4
Change ExecuteSelectionSet to ExecuteGroupedFieldSet
benjie Apr 28, 2023
a52310e
Correct reference to MergeSelectionSets
benjie Aug 21, 2023
60a9c35
move Field Collection section earlier (#1111)
yaacovCR Oct 17, 2024
a1de2dd
Merge branch 'main' into benjie/incremental-common
benjie Jan 9, 2025
e8f80c8
Merge branch 'main' into benjie/incremental-common
benjie Mar 6, 2025
213fd2a
Define 'grouped field set'
benjie Mar 6, 2025
383cf8e
that -> which
benjie Mar 6, 2025
48a789b
More similar to prior wording
benjie Mar 6, 2025
0b9eed7
Remove reason from definition
benjie Mar 6, 2025
0728c4a
subGroupedFieldSet -> fieldGroupedFieldSet
benjie Mar 6, 2025
140c3da
Add note for clarity
benjie Mar 6, 2025
0e175cb
Merge branch 'main' into before-execution-begins-note
benjie Mar 7, 2025
5c2ad6a
Distinguish between Processing and Execution
martinbonnin Mar 27, 2025
6a7271b
Merge branch 'main' into before-execution-begins-note
benjie Apr 3, 2025
6150bec
Define 'execution'
benjie Apr 3, 2025
d60481a
Correction
benjie Apr 3, 2025
aa55df7
Update spec/Section 6 -- Execution.md
martinbonnin Apr 3, 2025
94ad176
Update spec/Section 6 -- Execution.md
martinbonnin Apr 3, 2025
15a6c11
format
martinbonnin Apr 3, 2025
41450b7
keep execute here
martinbonnin Apr 17, 2025
65df539
Merge branch 'main' into benjie/incremental-common
benjie Apr 17, 2025
d68df95
move field collections into one section, section reworking, minor wor…
leebyron Apr 17, 2025
180a51c
Apply suggestions from code review
benjie Apr 24, 2025
3c6dfb3
Rename 'ExecuteGroupedFieldSet' to 'ExecuteCollectedFields'
benjie Apr 25, 2025
5459f16
Merge branch 'main' into benjie/incremental-common
benjie May 1, 2025
7a740be
Merge branch 'benjie/incremental-common' into before-execution-begins…
benjie May 1, 2025
2fcc58b
Merge remote-tracking branch 'martinbonnin/clarify-execution' into be…
benjie May 1, 2025
11f33ba
Editorial and eliding
benjie May 1, 2025
1f11a6b
Add clarity
benjie May 1, 2025
ec28769
Grammar
benjie May 1, 2025
b428f39
Reorder text
benjie May 1, 2025
7ed055a
Fix typo and remove note
benjie May 1, 2025
1be44d0
Define 'execution' as in 'before execution begins'
leebyron Jul 2, 2025
7bafeaf
Merge branch 'lee/before-execution-begins-note' into before-execution…
benjie Jul 2, 2025
f16f52f
Revert to previous terminology and algorithm names.
benjie Jul 2, 2025
94241a7
Rename 'execution' to 'operation execution'
benjie Jul 2, 2025
bc5618c
Slight tweaks for subscriptions
benjie Jul 3, 2025
8606033
Clarity
benjie Jul 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions spec/Section 3 -- Type System.md
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ GraphQL supports two abstract types: interfaces and unions.
An `Interface` defines a list of fields; `Object` types and other Interface
types which implement this Interface are guaranteed to implement those fields.
Whenever a field claims it will return an Interface type, it will return a valid
implementing Object type during execution.
implementing Object type during _execution_.

A `Union` defines a list of possible types; similar to interfaces, whenever the
type system claims a union will be returned, one of the possible types will be
Expand Down Expand Up @@ -775,8 +775,8 @@ type Person {
}
```

Valid operations must supply a selection of fields for any field that returns an
object, so this operation is not valid:
Valid operations must supply a _selection set_ for every field of an object
type, so this operation is not valid:

```graphql counter-example
{
Expand Down Expand Up @@ -810,7 +810,7 @@ And will yield the subset of each object type queried:
**Field Ordering**

When querying an Object, the resulting mapping of fields are conceptually
ordered in the same order in which they were encountered during execution,
ordered in the same order in which they were encountered during _execution_,
excluding fragments for which the type does not apply and fields or fragments
that are skipped via `@skip` or `@include` directives. This ordering is
correctly produced when using the {CollectFields()} algorithm.
Expand Down Expand Up @@ -2058,8 +2058,8 @@ directive @example on

Directives can also be used to annotate the type system definition language as
well, which can be a useful tool for supplying additional metadata in order to
generate GraphQL execution services, produce client generated runtime code, or
many other useful extensions of the GraphQL semantics.
generate GraphQL services, produce client generated runtime code, or many other
useful extensions of the GraphQL semantics.

In this example, the directive `@example` annotates field and argument
definitions:
Expand Down Expand Up @@ -2122,7 +2122,7 @@ directive @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
```

The `@skip` _built-in directive_ may be provided for fields, fragment spreads,
and inline fragments, and allows for conditional exclusion during execution as
and inline fragments, and allows for conditional exclusion during _execution_ as
described by the `if` argument.

In this example `experimentalField` will only be queried if the variable
Expand All @@ -2142,7 +2142,7 @@ directive @include(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT

The `@include` _built-in directive_ may be provided for fields, fragment
spreads, and inline fragments, and allows for conditional inclusion during
execution as described by the `if` argument.
_execution_ as described by the `if` argument.

In this example `experimentalField` will only be queried if the variable
`$someTest` has the value `true`
Expand Down
9 changes: 5 additions & 4 deletions spec/Section 5 -- Validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ given GraphQL schema.
An invalid request is still technically executable, and will always produce a
stable result as defined by the algorithms in the Execution section, however
that result may be ambiguous, surprising, or unexpected relative to a request
containing validation errors, so execution should only occur for valid requests.
containing validation errors, so _execution_ should only occur for valid
requests.

Typically validation is performed in the context of a request immediately before
execution, however a GraphQL service may execute a request without explicitly
Expand Down Expand Up @@ -108,7 +109,7 @@ input FindDogInput {

GraphQL execution will only consider the executable definitions Operation and
Fragment. Type system definitions and extensions are not executable, and are not
considered during execution.
considered during _execution_.

To avoid ambiguity, a document containing {TypeSystemDefinitionOrExtension} is
invalid for execution.
Expand Down Expand Up @@ -579,12 +580,12 @@ type that is either an Object, Interface or Union type.
**Explanatory Text**

If multiple field selections with the same _response name_ are encountered
during execution, the field and arguments to execute and the resulting value
during _execution_, the field and arguments to execute and the resulting value
should be unambiguous. Therefore any two field selections which might both be
encountered for the same object are only valid if they are equivalent.

During execution, the simultaneous execution of fields with the same response
name is accomplished by {CollectSubfields()}.
name is accomplished by {CollectSubfields()} before execution.

For simple hand-written GraphQL, this rule is obviously a clear developer error,
however nested fragments can make this difficult to detect manually.
Expand Down
Loading