-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Rewrite GraphQL schema generation and query parsing (close #2801) #4111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
lexi-lambda
merged 681 commits into
hasura:master
from
lexi-lambda:2801-graphql-schema-parser-refactor
Aug 21, 2020
Merged
Changes from all commits
Commits
Show all changes
681 commits
Select commit
Hold shift + click to select a range
5a74e56
[skip ci] remove stale benchmark commit from commit_diff
codingkarthik 147165f
[skip ci] Check for root field name conflicts between remotes
a7c6db9
[skip ci] Additionally check for conflicts between remotes and DB
d579965
[skip ci] Check for conflicts in schema when tracking a table
ddd90ef
[skip ci] Fix equality checking in GraphQL AST
ec04fc6
server: fix mishandling of GeoJSON inputs in subscriptions (fix #3239…
10b73cd
Scheduled triggers (close #1914) (#3553)
tirumaraiselvan 9f07e09
dev.sh: bump version due to addition of croniter python dependency
jberryman 515c4f1
server: fix an introspection query caching issue (fix #4547) (#4661)
1c0be22
flush log buffer on exception in mkWaiApp ( fix #4772 ) (#4801)
tirumaraiselvan 25724d0
allow logging details of a live query polling thread (#4959)
0x777 56d180a
Don't compile in developer APIs by default
jberryman 289e646
Tighten up handling of admin secret, more docs
jberryman 38d54d7
server/docs: add instructions to fix loss of float precision in Postg…
ce23e36
[skip ci] Add new commits from master to the commit diff
5639cab
[skip ci] serve default directives (skip & include) over introspection
rakeshkky 55ed62b
[skip ci] Update non-Haskell assets with the version on master
cacb0bf
server: refactor GQL execution check and config API (#5094)
ecthiender a86fd33
[skip ci] fix js issues in tests by pinning dependencies version
fcc282f
[skip ci] bump graphql version
30976d2
[skip ci] Add note about memory usage
eee2402
generalize query execution logic on Postgres (#5110)
0x777 5c6e7de
server: changes catalog initialization and logging for pro customizat…
ecthiender edbb8b6
[skip ci] cosmetic change
0e40932
[skip ci] fix test calling a mutation that does not exist
ab03ed6
[skip ci] minor text change
09c4462
[skip ci] refactored input values
cd7de01
[skip ci] remove VString Origin
ec1c467
server: fix updating of headers behaviour in the update cron trigger …
codingkarthik 63971d7
Lower stack chunk size in RTS to reduce thread STACK memory (closes #…
jberryman 28ff27d
[skip ci] fix todo and schema generation for aggregate fields
rakeshkky e88668a
5087 libpq pool leak (#5089)
jberryman 22da799
bump pg-client-hs version (fixes a build issue on some environments) …
0x777 8eb91d4
do not use prepared statements for mutations
0x777 b82ee09
server: unlock scheduled events on graceful shutdown (#4928)
codingkarthik 4a26594
Fix buggy parsing of new --conn-lifetime flag in 2b0e3774
jberryman 67eb395
[skip ci] remove cherry-picked commit from commit_diff.txt
codingkarthik 5fc96d5
server: include additional fields in scheduled trigger webhook payloa…
codingkarthik 2fe25f0
server: call the webhook asynchronously in event triggers (#5352)
codingkarthik db7895d
Expose all modules in Cabal file (#5371)
paf31 078f395
[skip ci] update commit_diff.txt
codingkarthik dc9fed4
[skip ci] fix cast exp parser & few TODOs
rakeshkky d553fb2
[skip ci] fix remote fields arguments
913ffc7
[skip ci] fix few more TODO, no-op refactor, move resolve/action.hs t…
rakeshkky 8904e06
Pass environment variables around as a data structure, via @sordina (…
sordina 13fd501
[skip ci] fix: restrict remote relationship field generation for hasu…
rakeshkky 33dda64
[skip ci] no-op refactor; move insert execution code from schema pars…
rakeshkky a058892
server: call the webhook asynchronously in event triggers (#5352)
codingkarthik 070d10e
Expose all modules in Cabal file (#5371)
paf31 7645289
[skip ci] update commit_diff.txt
codingkarthik b009cb9
Pass environment variables around as a data structure, via @sordina (…
sordina 90480f1
[skip ci] implement header checking
f2df624
server: refactor 'pollQuery' to have a hook to process 'PollDetails' …
ecthiender 58164d8
update pg-client (#5421)
tirumaraiselvan 3ed7fc2
[skip ci] update commit_diff
codingkarthik ef2681a
Fix latency buckets for telemetry data
jberryman 72ac164
[skip ci] include the latest commit compared against master in commit…
codingkarthik 8fa42a0
[skip ci] include new commits from master in commit_diff
codingkarthik 23493dd
[skip ci] improve description generation
rakeshkky e25adc1
[skip ci] sort all introspect arrays
2a4052e
[skip ci] allow parsers to specify error codes
a20b892
[skip ci] fix integer and float parsing error code
78ef076
[skip ci] scalar from json errors are now parse errors
3400567
[skip ci] fixed negative integer error message and code
99e6099
[skip ci] Re-fix nullability in relationships
d05ea4f
[skip ci] no-op refactor and removed couple of FIXMEs
rakeshkky 5f8c361
[skip ci] uncomment code in 'deleteMetadataObject'
rakeshkky 8b6d1bd
[skip ci] Fix re-fix of nullability for relationships
fd48c6b
[skip ci] fix default arguments error code
fa569dd
[skip ci] updated test error message
c0af085
[skip ci] cleanup of int scalar parser
7bebcba
[skip ci] retro-compatibility of offset as string
2a59dc4
[skip ci] Remove commit from commit_diff.txt
7ad271a
Add MonadTrace and MonadExecuteQuery abstractions (#5383)
codingkarthik 1f1f56e
Add MonadTrace and MonadExecuteQuery abstractions #5383
codingkarthik 1bb25c7
[skip ci] Fix accumulation of input object types
becb4d4
[skip ci] fix fragment error path
7f546b5
[skip ci] fix node error code
f1cda26
[skip ci] fix paths in insert queries
4efd4fd
[skip ci] fix path in objects
748ba4d
[skip ci] manually alter node id path for consistency
a5e3068
[skip ci] more node error fixups
1a83f5f
[skip ci] one last relay error message fix
b42ba36
[skip ci] update commit_diff
codingkarthik 660ee2e
Propagate the trace context to event triggers (#5409)
paf31 5323b36
server: log request/response sizes for event triggers (#5463)
ecthiender 84efaa0
Tracing: Simplify HTTP traced request (#5451)
Naveenaidu b51761b
Attach request ID as tracing metadata (#5456)
paf31 cc15dcb
server: add logging for action handlers (#5471)
ecthiender 3140eb3
server: pass http and websocket request to logging context (#5470)
ecthiender ff479a2
server: stop eventing subsystem threads when shutting down (#5479)
ecthiender 44881e8
[skip ci] update commit_diff with new commits added in master
codingkarthik eabf62e
Bugfix to support 0-size HASURA_GRAPHQL_QUERY_PLAN_CACHE_SIZE
jberryman a08a9e9
Support only the bounded cache, with default HASURA_GRAPHQL_QUERY_PLA…
jberryman 738c948
[skip ci] remove merge commit from commit_diff
codingkarthik f22431b
server: Fix compiler warning caused by GHC upgrade (#5489)
e64442b
[skip ci] update all non server code from master
codingkarthik 8986f48
[skip ci] aligned object field error message with master
cdea348
[skip ci] fix remaining undefined?
bf47458
[skip ci] remove unused import
8d3aafc
[skip ci] revert to previous error message, fix tests
35ed919
Merge branch 'master' into original-pdv-refactor-merge-master
codingkarthik d7cb4a4
Merge branch 'pdv-refactor-merge-master' into original-pdv-refactor
codingkarthik 393cdf4
Move nullableType/nonNullableType to Schema.hs
lexi-lambda 618eff3
[skip ci] fix setup to fix backend only test
3f2dfd2
[skip ci] fix insert geojson tests to reflect new paths
da59125
[skip ci] fix enum test for better error message
86cf797
[skip ci] fix header test for better error message
31042ac
[skip ci] fix fragment cycle test for better error message
d45c234
[skip ci] fix error message for type mismatch
8de999d
[skip ci] fix variable path in test
4b28c2e
[skip ci] adjust tests after bug fix
bf37b39
[skip ci] more tests fixing
66e85ab
Add hdb_catalog.current_setting abstraction for reading Hasura settings
lexi-lambda bbe8b54
[skip ci] Update CONTRIBUTING.md to mention Node setup for Python tests
lexi-lambda 6c526ec
[skip ci] Add missing Python tests env var to CONTRIBUTING.md
lexi-lambda f2e726c
[skip ci] fix order of result when subscription is run with multiple …
codingkarthik 9a22055
[skip ci] no-op refactor: fix a warning in Internal/Parser.hs
codingkarthik 88203d0
[skip ci] throw error when a subscription contains remote joins
codingkarthik 50a768d
[skip ci] Enable easier profiling by hiding AssertNF behind a flag
8af9e76
[skip ci] Fix two warnings
fe5aeb0
[skip ci] Fix warnings by commenting out query plan caching
3aaffc4
[skip ci] improve masking/commenting query caching related code & few…
rakeshkky c0e7757
[skip ci] Fixed compiler warnings in graphql-parser-hs
a2ead33
Sync non-Haskell assets with master
a04bfc0
[skip ci] add a test inserting invalid GraphQL but valid JSON value i…
codingkarthik 7322151
[skip ci] Avoid converting to/from Map
c35839e
[skip ci] Apply some hlint suggestions
5e93f63
[skip ci] remove redundant constraints from buildLiveQueryPlan and ex…
codingkarthik f031751
[skip ci] add NOTEs about missing Tracing constraints in PDV from master
codingkarthik ae3e619
Remove -fdefer-typed-holes, fix warnings
lexi-lambda 45cbc01
Update cabal.project.freeze
lexi-lambda 8cdf618
Limit GHC’s heap size to 8GB in CI to avoid the OOM killer
lexi-lambda 10b827d
Commit package-lock.json for Python tests’ remote schema server
lexi-lambda e194503
restrict env variables start with HASURA_GRAPHQL_ for headers configu…
rakeshkky 3868f69
add test for table_by_pk node when roles doesn't have permission to PK
codingkarthik a6450e1
[skip ci] fix introspection query if any enum column present in prima…
rakeshkky 70e89dc
[skip ci] test case fix for a6450e126bc2d98bcfd3791501986e4627ce6c6f
rakeshkky ac97776
[skip ci] add tests to agg queries when role doesn't have access to a…
codingkarthik b2d59b0
fix backend test
223f67c
Simplify subscription execution
2fdbbd9
[skip ci] add test to check if required headers are present while que…
codingkarthik e70a51c
fix mutations not checking for view mutability
6dac93b
[skip ci] add variable type checking and corresponding tests
9e3761a
[skip ci] add test to check if update headers are present while doing…
codingkarthik 8cb612d
[skip ci] add positive counterparts to some of the negative permissio…
codingkarthik 4e22f2a
fix args missing their description in introspect
0d117b4
[skip ci] Remove unused function; insert missing markNotReusable call
lexi-lambda bca3cc2
[skip ci] Add a Note about InputValue
lexi-lambda 3b911fa
[skip ci] Delete LegacySchema/ 🎉
lexi-lambda 622db6d
[skip ci] Delete GraphQL/{Resolve,Validate}/ 🎉
lexi-lambda 7d6b6ec
[skip ci] Delete top-level Resolve/Validate modules; tidy .cabal file
lexi-lambda 541bcb7
[skip ci] Delete LegacySchema top-level module
lexi-lambda cc3e834
fix input value to json
05f36d5
[skip ci] elaborate on JSON objects in GraphQL
9bf6f35
[skip ci] add missing file
5a02143
[skip ci] add a test with subscription containing remote joins
codingkarthik 0c174ad
add a test with remote joins in mutation output
codingkarthik 2f1ec30
[skip ci] Add some comments to Schema/Mutation.hs
b0013bd
[skip ci] Remove no longer needed code from RemoteServer.hs
95bd0e3
[skip ci] Use a helper function to generate conflict clause parsers
4ef43b2
[skip ci] fix type checker error in fields with default value
2094268
capitalize the header keys in select_articles_without_required_headers
codingkarthik 016b433
[skip ci] Add a long Note about optional fields and nullability
lexi-lambda 2250e18
Improve comments a bit; simplify Schema/Common.hs a bit
3631e2e
[skip ci] full implementation of 5.8.5 type checking.
8555bf8
[skip ci] fix validation test teardown
0c487c3
[skip ci] fix schema stitching test
07911fa
fix remote schema ignoring enum nullability
604bfd6
[skip ci] fix fieldOptional to not discard nullability
c931b61
revert nullability of use_spheroid
14505e6
fix comment
610ed48
add required remote fields with arguments for tests
fdc497a
[skip ci] add missing docstrings
b98dedc
[skip ci] fixed description of remote fields
07bff01
[skip ci] change docstring for consistency
a6bc45f
fix several schema inconsistencies
7616d53
revert behaviour change in function arguments parsing
c49e3bc
fix remaining nullability issues in new schema
37ef19b
minor no-op refactor; use isListType from graphql-parser-hs
codingkarthik 34b5d00
use nullability of remote schema node, while creating a Remote reln
codingkarthik 546342e
fix 'ID' input coercing & action 'ID' type relationship mapping
rakeshkky 17641a9
include ASTs in MonadExecuteQuery
codingkarthik 425b821
Delete code for "interfaces implementing ifaces" (draft GraphQL spec)
b451375
Ignore a remote schema test during the upgrade/downgrade test
a1f49fb
add haddock documentation to the action's field parsers
codingkarthik 26a6bf4
Deslecting some tests in server-upgrade
nizar-m c4de1f4
[skip ci] Add a long Note about interfaces and object types
lexi-lambda 8fcd90c
send the response headers back to client after running a query
codingkarthik 10825df
Deselect a few more tests during upgrade/downgrade test
9ad1611
Update commit_diff.txt
5654b40
change log kind from db_migrate to catalog_migrate (#5531)
tirumaraiselvan f2b0f83
Show method and complete URI in traced HTTP calls (#5525)
paf31 0b57f2b
restrict env variables start with HASURA_GRAPHQL_ for headers configu…
rakeshkky 0f9a5af
fix introspection query if any enum column present in primary key (fi…
rakeshkky 0b50695
Fix telemetry reporting of transport (websocket was reported as http)
jberryman c727fc3
add log kinds in cli-migrations image (#5529)
tirumaraiselvan ce18739
server: set hasura.tracecontext in RQL mutations [#5542] (#5555)
paf31 20780a9
Add bulldozer auto-merge and -update configuration
jberryman a449ff9
Remove 'bulldozer' config, try 'kodiak' for auto-merge
jberryman 678a89e
Cherry-picked all commits
899e1f1
[skip ci] Slightly improve formatting
535c779
Revert "fix introspection query if any enum column present in primary…
fb086b0
Do a small bit of tidying in Hasura.GraphQL.Parser.Collect
lexi-lambda 183f2d2
Fix cherry-picking work
2074291
[skip ci] clarified comment regarding insert representation
4b7d91c
[skip ci] removed obsolete todos
4f16dd9
cosmetic change
5ad7736
fix action error message
53e97e2
[skip ci] remove obsolete comment
c836e1d
[skip ci] synchronize stylish haskell extensions list
e11b804
use previously defined scalar names in parsers rather than ad-hoc lit…
907a89f
Apply most syntax hlint hints.
f6aaa21
Clarify comment on update mutation.
b5a60af
[skip ci] Clarify what fields should be specified for objects
82a0ada
Update "_inc" description.
de012b1
Use record types rather than tuples fo IntrospectionResult and Parsed…
2eed647
Get rid of checkFieldNamesUnique (use Data.List.Extended.duplicates)
af72e73
Throw more errors when collecting query root names
b73976b
Merge branch 'master' into original-pdv-refactor
codingkarthik 74856e1
[skip ci] clean column parser comment
baa51d4
Remove dead code inserted in ab65b39
f9b3584
avoid converting to non-empty list where not needed
codingkarthik d68efa1
add note and TODO about the disabled checks in PDV
codingkarthik 1a14acd
minor refactor in remoteField' function
codingkarthik bd6bb40
Unify two getObject methods
48a2a6b
Nitpicks in Remote.hs
636adb3
Update CHANGELOG.md
5035fd9
Revert "Unify two getObject methods"
5b18a33
Fix error message in Remote.hs
07f511d
Update CHANGELOG.md
nicuveo c350585
Apply suggested Changelog fix.
nicuveo 4fd8e4d
Fix typo in Changelog.
5bb0a10
[skip ci] Update changelog.
b481cb9
reuse type names to avoid duplication
7b8ca53
Fix Hashable instance for Definition
3f175b1
[skip ci] Update commit_diff.txt
2ec09ea
Bump parser version.
c50b2b9
Bump freeze file after changes in parser.
b6a59ec
Merge branch 'master' into 2801-graphql-schema-parser-refactor
e9fad5c
[skip ci] Incorporate commits from master
c177d88
Fix developer flag in server/cabal.project.freeze
nicuveo 07e38e8
Merge remote-tracking branch 'release/master' into 2801-graphql-schem…
8c7d38d
Deselect a changed ENUM test for upgrade/downgrade CI
f930962
Deselect test here as well
fc043fd
[skip ci] remove dead code
1bb57d5
Disable more tests for upgrade/downgrade
aac4b47
Fix which test gets deselected
6d0605b
Revert "Add hdb_catalog.current_setting abstraction for reading Hasur…
69c4c6a
Remove circular reference in cabal.project.freeze
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
diff --git a/server/tests-py/validate.py b/server/tests-py/validate.py | ||
index 3eecd52a..a18b3113 100644 | ||
--- a/server/tests-py/validate.py | ||
+++ b/server/tests-py/validate.py | ||
@@ -318,7 +318,7 @@ def assert_graphql_resp_expected(resp_orig, exp_response_orig, query, resp_hdrs= | ||
# If it is a batch GraphQL query, compare each individual response separately | ||
for (exp, out) in zip(as_list(exp_response), as_list(resp)): | ||
matched_ = equal_CommentedMap(exp, out) | ||
- if is_err_msg(exp): | ||
+ if is_err_msg(exp) and is_err_msg(out): | ||
if not matched_: | ||
warnings.warn("Response does not have the expected error message\n" + dump_str.getvalue()) | ||
return resp, matched |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,7 +6,9 @@ | |
# and sets some of the required variables that run.sh needs, | ||
# before executing run.sh | ||
set -euo pipefail | ||
ROOT="${BASH_SOURCE[0]%/*}" | ||
cd "${BASH_SOURCE[0]%/*}" | ||
ROOT="${PWD}" | ||
cd - > /dev/null | ||
|
||
SERVER_DIR="$ROOT/../../server" | ||
|
||
|
@@ -18,8 +20,8 @@ echo "server binary: $SERVER_BINARY" | |
cd - | ||
set +x | ||
|
||
export SERVER_OUTPUT_DIR="server-output" | ||
export LATEST_SERVER_BINARY="./graphql-engine-latest" | ||
export SERVER_OUTPUT_DIR="$ROOT/server-output" | ||
export LATEST_SERVER_BINARY="$ROOT/graphql-engine-latest" | ||
|
||
# Create Python virtualenv | ||
if ! [ -f ".venv/bin/activate" ] ; then | ||
|
@@ -40,7 +42,8 @@ log_duration=on | |
port=$PG_PORT | ||
EOF | ||
) | ||
export HASURA_GRAPHQL_DATABASE_URL="postgres://postgres:[email protected]:$PG_PORT/postgres" | ||
# Pytest is giving out deprecated warnings when postgres:// is used | ||
export HASURA_GRAPHQL_DATABASE_URL="postgresql://postgres:[email protected]:$PG_PORT/postgres" | ||
|
||
DOCKER_PSQL="docker exec -u postgres -it $PG_CONTAINER_NAME psql -p $PG_PORT" | ||
|
||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
**** Latest commit compared against master - fd7fb580831fe9054164a285441c99562f34c815 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is
The validation of required headers has been fixed
considered a breaking change?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, you're right, this should rather be among the fixes. I can fix this in an hour or so.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because some queries might fail where they used to "work" before.
Imagine you do the following:
Now imagine that header
X-ARTICLE-VIEW-PERMIT
is required for the select permissions on tablearticles
. That header was not checked before this patch, because we only checked the headers for the root table, which means this query would have succeeded without the required header. It would have returned no article, since the header was missing, and its value would have been evaluated to an empty string, but still: the query would have gone through. Now it will properly fail: a header is required to select from table articles, and you don't have it.