-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Remote relationships #1990
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
Remote relationships #1990
Conversation
- add a `toJSON` instance for `GraphQLQuery` using the pretty printer
- this is used to send remote schema requests
- remove unnecessary passing around of the raw request (was required
before pretty printer)
- add a `toJSON` instance for `GraphQLQuery` using the pretty printer
- this is used to send remote schema requests
- remove unnecessary passing around of the raw request (was required
before pretty printer)
This reverts commit 6130c5a.
- variables in the query might not work for all cases. TODO: split variables - fragments in the query does not work - does not work over ws
- TODO: validate unions in our validation functions
…relationships # Conflicts: # server/src-lib/Hasura/RQL/Types/RemoteSchema.hs # server/stack.yaml
WIP change exec plan types
…engine into fix-1371-mix-schemas Resolve Conflicts: server/src-lib/Hasura/GraphQL/Execute.hs
|
Deploy preview for hasura-docs ready! Built with commit 5b58926 |
- is respected only by remote fields when queries/mutations run over websocket
* added feedback on migration commands (close hasura#1410) (hasura#1931) * firebase2graphql (v0.0.2): support array types in firebase json (close hasura#1829) (hasura#1900) * improve console error page (close hasura#272) (hasura#1890) * add nextjs 8 jwt sample app (hasura#1943) * persist queries in GraphiQL (closes hasura#1894) (hasura#1903) * add realtime chat sample app with vue (hasura#1885) * fix update_event_trigger query not persisting the changes (hasura#1950) fix hasura#1949 * mention required key length for HMAC encryption to user (hasura#1956) Following on from a discussion in discord, a small tweak to make the required key length for a HMAC key more obvious * fix input argument types for custom SQL functions (close hasura#1952) (hasura#1953) * run graphql tests on both http and websocket; add parallelism (close hasura#1868) (hasura#1921) Examples 1) ` pytest --hge-urls "http://127.0.0.1:8080" --pg-urls "postgresql://admin@127.0.0.1:5432/hge_tests" -vv ` 2) `pytest --hge-urls "http://127.0.0.1:8080" "http://127.0.0.1:8081" --pg-urls "postgresql://admin@127.0.0.1:5432/hge_tests" "postgresql://admin@127.0.0.1:5432/hge_tests2" -vv ` ### Solution and Design <!-- How is this issue solved/fixed? What is the design? --> <!-- It's better if we elaborate --> #### Reducing execution time of tests - The Schema setup and teardown, which were earlier done per test method, usually takes around 1 sec. - For mutations, the model has now been changed to only do schema setup and teardown once per test class. - A data setup and teardown will be done once per test instead (usually takes ~10ms). - For the test class to get this behaviour, one can can extend the class `DefaultTestMutations`. - The function `dir()` should be define which returns the location of the configuration folder. - Inside the configuration folder, there should be - Files `<conf_dir>/schema_setup.yaml` and `<conf_dir>/schema_teardown.yaml`, which has the metadata query executed during schema setup and teardown respectively - Files named `<conf_dir>/values_setup.yaml` and `<conf_dir>/values_teardown.yaml`. These files are executed to setup and remove data from the tables respectively. #### Running Graphql queries on both http and websockets - Each GraphQL query/mutation is run on the both HTTP and websocket protocols - Pytests test parameterisation is used to achieve this - The errors over websockets are slightly different from that on HTTP - The code takes care of converting the errors in HTTP to errors in websockets #### Parallel executation of tests. - The plugin pytest-xdist helps in running tests on parallel workers. - We are using this plugin to group tests by file and run on different workers. - Parallel test worker processes operate on separate postgres databases(and separate graphql-engines connected to these databases). Thus tests on one worker will not affect the tests on the other worker. - With two workers, this decreases execution times by half, as the tests on event triggers usually takes a long time, but does not consume much CPU. * update manifests to v1.0.0-alpha42 * update regex to delete event triggers in edit-pg-dump (close hasura#1959) (hasura#1960) * support composite foreign keys and primary keys through console (close hasura#1707) (hasura#1854) * edit-pg-dump: fix a missing semi-colon * fix styles in browse rows, relationship and permission tables (hasura#1969) * update console permissions ui (hasura#1924) * Make permissions sections as collapsibles with tooltips * Remove 'use same permission as select' type options from row permissions section * Added clone section to apply same permission to any table-role-action * Disable other subsections till row permissions are set * re-add same as other action options in permissions (hasura#1970) * fix excessive memory consumption with bulk queries (hasura#1972) Use 'Strict' State monad instead of 'Lazy' to avoid unevaluated memory thunks * add placeholder for bool type fields while inserting rows (hasura#1962) * Use UTF-8 encoding for stack hpc report generation (hasura#1974) * fix save function in console's retry config editor (fix hasura#1975) (hasura#1976) * Wip * add scroll to literal blocks in docs (close hasura#1954) (hasura#1978) * remote relationship ui v1 * wip * ui for creating remote relationships * wip * ui fixes * ui fixes * functional ui * namespace ui wip * add functionality for dropping relationship * show exact error in notification * fix state inconsistencies * update reldef for namespaced fields * lint
…engine into remote-relationships # Conflicts: # server/src-lib/Hasura/GraphQL/Execute.hs # server/src-lib/Hasura/GraphQL/RemoteServer.hs # server/src-lib/Hasura/GraphQL/Transport/HTTP.hs # server/src-lib/Hasura/GraphQL/Transport/WebSocket.hs # server/src-lib/Hasura/RQL/Types/RemoteSchema.hs
|
Review app for commit 5b58926 deployed to Heroku: https://hge-ci-pull-1990.herokuapp.com |
|
Hello, I did some tests with the remote_schema relationship, using this image hasura/graphql-engine:pull1990-5b58926. From what I could see, each record returned in the query, will make a separate request, passing the id, to the remote_schema. I think this could cause performance issues in the remote schema, depending on the number of records returned. Would it be able for the graphql-engine to make only one request, with all the ids, and merge the data from the remote_schema and PostgreSQL ? Thanks |
|
Thanks for the feedback.
From what I could see, each record returned in the query, will make a separate request, passing the id, to the remote_schema. I think this could cause performance issues in the remote schema, depending on the number of records returned.
We make ONLY one bulk request like this:
```
query {
child1: node { id },
child2: node { id },
child3: node { id }
}
```
Although, we will enable taking an optional BATCH input field which takes
an array of values as the join key. But this will be done after the first
release.
…On Wed, May 22, 2019 at 7:54 PM Leonardo Alves ***@***.***> wrote:
Hello,
I did some tests with the remote_schema relationship, using this image
hasura/graphql-engine:pull1990-5b58926.
From what I could see, each record returned in the query, will make a
separate request, passing the id, to the remote_schema. I think this could
cause performance issues in the remote schema, depending on the number of
records returned.
Would it be able for the graphql-engine to make only one request, with all
the ids, and merge the data from the remote_schema and PostgreSQL ?
Thanks
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#1990?email_source=notifications&email_token=ACCDEET5PRAB2BMBCJJ6MKDPWVJSDA5CNFSM4HFFNV4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODV7HA3Q#issuecomment-494825582>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ACCDEETJHRGAAYASDDWSNVDPWVJSDANCNFSM4HFFNV4A>
.
--
Tirumarai Selvan A, +917760686511
hasura.io
|
|
Closing in favour of #2392 |
|
Review app https://hge-ci-pull-1990.herokuapp.com is deleted |
Description
Affected components
Related Issues
Solution and Design
Steps to test and verify
Limitations, known bugs & workarounds