mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-14 17:02:49 +03:00
3fd367004c
9012 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Varun Choudhary
|
3fd367004c |
Console: support for session variable in Data tab performance mode for permissions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/11077 GitOrigin-RevId: d468647ea1124bc4c297ef552be07c6d6cb4f83f |
||
Brandon Simmons
|
426a834412 |
ENG-1287 remove metadata copy from SQL artifact (#1348)
<!-- The PR description should answer 2 important questions: --> ### What Remove copies of metadata from SQL artifacts: Resulting in **19% smaller artifact** for chinook, **17% faster runtime**. Customer metadata with multiple subgraphs will show more dramatic effect. There was a separate copy of the metadata stored for each subgraph in the sql "catalog". From the point of view of MBS we were serializing 2+N copies of the same metadata which bloats artifacts and is very slow. Additionally the usage sites became confusing because you had multiple identical (we assume) copies of metadata in scope at the same time. Instead we reconstruct the original Catalog type before use, because it's required for the Datafusion impls ### How convert to a different type for serialization, re-hydrate in body of sql code V3_GIT_ORIGIN_REV_ID: 0e7e35255cfe8fe01ea328a1d7cb96db0e2dd726 |
||
Rakesh Emmadi
|
5dd7edcb7f |
Changelog for v2024.11.18 (#1357)
Release v2024.11.18 V3_GIT_ORIGIN_REV_ID: a6afe29974bb6e0fbcbe4552d26466b18f26032e |
||
Daniel Harvey
|
851e3accc9 |
Split object_types from models in JSONAPI catalog / schema (#1356)
<!-- The PR description should answer 2 important questions: --> ### What Previously in JSONAPI a model held all it's field types. This approach quickly falls apart with recursive types and when adding nested fields / relationships. ### How This outputs the object types as their own items in the catalog and refers to them throughout rather than inlining the types everywhere. V3_GIT_ORIGIN_REV_ID: 7f05bf964c6551c9aaf04ba6f2e02bf8f0ce272d |
||
dependabot[bot]
|
b8da04cf61 |
Bump serde_json from 1.0.132 to 1.0.133 (#1354)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.132 to 1.0.133. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p> <blockquote> <h2>v1.0.133</h2> <ul> <li>Implement From<[T; N]> for serde_json::Value (<a href="https://redirect.github.com/serde-rs/json/issues/1215">#1215</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
7c7483d6af |
Bump anyhow from 1.0.92 to 1.0.93 (#1353)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.92 to 1.0.93. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/anyhow/releases">anyhow's releases</a>.</em></p> <blockquote> <h2>1.0.93</h2> <ul> <li>Update dev-dependencies to <code>thiserror</code> v2</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
21c430ce8d |
Bump serde from 1.0.214 to 1.0.215 (#1352)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.214 to 1.0.215. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p> <blockquote> <h2>v1.0.215</h2> <ul> <li>Produce warning when multiple fields or variants have the same deserialization name (<a href="https://redirect.github.com/serde-rs/serde/issues/2855">#2855</a>, <a href="https://redirect.github.com/serde-rs/serde/issues/2856">#2856</a>, <a href="https://redirect.github.com/serde-rs/serde/issues/2857">#2857</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
b3034e9c4f |
Bump axum from 0.7.7 to 0.7.9 (#1351)
Bumps [axum](https://github.com/tokio-rs/axum) from 0.7.7 to 0.7.9. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tokio-rs/axum/releases">axum's releases</a>.</em></p> <blockquote> <h2>axum - v0.7.9</h2> <ul> <li><strong>fixed:</strong> Avoid setting content-length before middleware (<a href="https://redirect.github.com/tokio-rs/axum/issues/3031">#3031</a>)</li> </ul> <p><a href="https://redirect.github.com/tokio-rs/axum/issues/3031">#3031</a>:<a href="https://redirect.github.com/tokio-rs/axum/pull/3031">tokio-rs/axum#3031</a></p> <h2>axum - v0.7.8</h2> <ul> <li><strong>fixed:</strong> Skip SSE incompatible chars of <code>serde_json::RawValue</code> in <code>Event::json_data</code> (<a href="https://redirect.github.com/tokio-rs/axum/issues/2992">#2992</a>)</li> <li><strong>added:</strong> Add <code>method_not_allowed_fallback</code> to set a fallback when a path matches but there is no handler for the given HTTP method (<a href="https://redirect.github.com/tokio-rs/axum/issues/2903">#2903</a>)</li> <li><strong>added:</strong> Add <code>MethodFilter::CONNECT</code>, <code>routing::connect[_service]</code> and <code>MethodRouter::connect[_service]</code> (<a href="https://redirect.github.com/tokio-rs/axum/issues/2961">#2961</a>)</li> <li><strong>added:</strong> Add <code>NoContent</code> as a self-described shortcut for <code>StatusCode::NO_CONTENT</code> (<a href="https://redirect.github.com/tokio-rs/axum/issues/2978">#2978</a>)</li> </ul> <p><a href="https://redirect.github.com/tokio-rs/axum/issues/2903">#2903</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2903">tokio-rs/axum#2903</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2961">#2961</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2961">tokio-rs/axum#2961</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2978">#2978</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2978">tokio-rs/axum#2978</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2992">#2992</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2992">tokio-rs/axum#2992</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
6b40ae4c14 |
Bump tokio from 1.41.0 to 1.41.1 (#1350)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.41.0 to 1.41.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tokio-rs/tokio/releases">tokio's releases</a>.</em></p> <blockquote> <h2>Tokio v1.41.1</h2> <h1>1.41.1 (Nov 7th, 2024)</h1> <h3>Fixed</h3> <ul> <li>metrics: fix bug with wrong number of buckets for the histogram (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6957">#6957</a>)</li> <li>net: display <code>net</code> requirement for <code>net::UdpSocket</code> in docs (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6938">#6938</a>)</li> <li>net: fix typo in <code>TcpStream</code> internal comment (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6944">#6944</a>)</li> </ul> <p><a href="https://redirect.github.com/tokio-rs/tokio/issues/6957">#6957</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6957">tokio-rs/tokio#6957</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/6938">#6938</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6938">tokio-rs/tokio#6938</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/6944">#6944</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6944">tokio-rs/tokio#6944</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Daniel Harvey
|
bf61f3e18b |
Use type rather than model names in JSONAPI sparse fields (#1349)
<!-- The PR description should answer 2 important questions: --> ### What Given a model name `Authors` with an `Author` type underneath, this changes field selection for JSONAPI to use `fields[Author]` instead of `fields[Authors]`. This will make things more consistent when we are also filtering other types from relationships or nested fields too, which will have to use type names, for example `fields[Author]=name,articles&fields[Article]=title` V3_GIT_ORIGIN_REV_ID: fff43c673888877ca8b2edb6e5ca9fdc846675a5 |
||
Sean Park-Ross
|
5c7e20f83b |
Docs: Bot: Update
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/11079 GitOrigin-RevId: 48da2933e84289a5afca007ed054f5070bc11eaf |
||
Daniel Harvey
|
ee3c1a5a9a |
Make using ObjectBooleanExpressionType an error (#1344)
<!-- The PR description should answer 2 important questions: --> ### What These have been deprecated for a while, and we now have a codemod to fix users metadata, so it's time to make these officially deprecated. Any `ObjectBooleanExpressionType` will now raise an error. V3_GIT_ORIGIN_REV_ID: f3dd18afba40e369e82a15a7fbbfe31004d44067 |
||
Daniel Harvey
|
4e89dd40eb |
Use BooleanExpressionType in new plan filtering (#1334)
<!-- The PR description should answer 2 important questions: --> ### What Previously the OpenDD pipeline has ignored `BooleanExpressionType` as they were not available outside GraphQL. Now they are, so we use them, and test them in the JSONAPI pipeline. This means that the SQL frontend cannot use filtering unless models have a `BooleanExpressionType` defined. These are generated by the CLI, so hopefully this is fine. Depends on #1336 V3_GIT_ORIGIN_REV_ID: 4037585ef36bc99c99a482361084ccd09c5c6bb1 |
||
Daniel Harvey
|
6e69ae03c3 |
Remove misleading JSONB from Order By changelog entry (#1347)
<!-- The PR description should answer 2 important questions: --> ### What What's important about the feature is that it accesses nested fields rather than being specific to any particular underlying representation. V3_GIT_ORIGIN_REV_ID: 648464f925f23efde2e764b709a9b3e067ff6a57 |
||
Daniel Harvey
|
3cb1fc67f6 |
Add metrics for JSONAPI (#1345)
V3_GIT_ORIGIN_REV_ID: a2a0c4ba404dce98c851c8637917219fc5b2d625 |
||
Daniel Chambers
|
f255b5e48a |
Nested relationships: Refactor capabilities, add engine test, fix docker compose engine metadata (#1341)
### What This PR does three related things: * Adds an execution test that tests that nested relationships work in field selection in Postgres (taken from #935) * Refactors the way capabilities are handled in metadata resolve to account for difference between NDC 0.1.x and 0.2.x. Specifically, NDC 0.1.x connectors are assumed to support nested relationships in field selection, but do not support them in filtering and ordering. Whereas in NDC 0.2.x, a capability exists to indicate nested relationship support, but then you must support them in filtering and ordering as well as field selection. * Updates the metadata used in the default docker compose so that it: * uses an up to date pg schema * uses BooleanExpressionType instead of ObjectBooleanExpression * removes commands that do not exist on the pg connector * adds the Institutions model so that nested relationships can be tested This PR does not add support for nested relationships in filtering or in ordering. It also does not block nested relationships in field selection for NDC 0.2.x connectors that do not support it. This will all come in later PRs. ### How In `metadata_resolve`, the resolved `DataConnector` used to contain a copy of the `ndc_models::Capabilities`. This has been removed and instead a `metadata_resolve` specific `DataConnectorCapabilities` structure is used instead. This decouples `metadata_resolve` from `ndc_models` and allows it to capture differences between NDC 0.1.x and 0.2.x properly. There is now a specific function per NDC version that creates a `DataConnectorCapabilities`. This removes the need for capabilities migration code. V3_GIT_ORIGIN_REV_ID: 0eb119aab0e5fa22977d84820025f75c6102036d |
||
Daniel Harvey
|
dd070be7fb |
Changelog for v2024.11.13 (#1343)
<!-- The PR description should answer 2 important questions: --> ### What Update changelog for `v2024.11.13` V3_GIT_ORIGIN_REV_ID: e8ef1db536825e8266c663978be6832463e8d378 |
||
Varun Choudhary
|
4a40182bcf |
Console: Fix permission issue with composite FK
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/11075 GitOrigin-RevId: 69ac95f303461f6a1d6db0914ef27910f24e144b |
||
Vishnu Bharathi
|
134eb0fd68 |
ci: tag release v2.45.0-beta.1
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/11073 GitOrigin-RevId: 2e9cd62573b0677ce7289c4eac730efdf43f1eda |
||
paritosh-08
|
104365205c |
wip: plan refactor type changes (part 1) (#1339)
--------- Co-authored-by: Anon Ray <ecthiender@users.noreply.github.com> V3_GIT_ORIGIN_REV_ID: c1b88c89d2ad9ad80e20a1763f036db85798ec3b |
||
Daniel Harvey
|
85afd13f34 |
OperatorMapping struct newtype (#1336)
<!-- The PR description should answer 2 important questions: --> ### What Operator mappings in boolean expressions allow us to override the name of an operator, so we can call some database's `_eq` operator the much more attractive `equals`. If not override is provided we can just use the database's name directly. We make this a newtype with a `get` function to encode this logic and make doing the right thing the easiest thing. V3_GIT_ORIGIN_REV_ID: e47f4e291494562ed1551d0d7469259198862a0a |
||
Daniel Harvey
|
a2353ae3de |
Revert "Build: use native target CPU (#1330)" (#1338)
This reverts commit 7b5d5668b3a8949dd56b2a887f10d964d523bdd6. <!-- The PR description should answer 2 important questions: --> ### What Deployed different commits to `staging` and this one broke it, so rolling it back. V3_GIT_ORIGIN_REV_ID: ba93bbc61b38d2c756e109e24566f8d51b01d458 |
||
Rakesh Emmadi
|
c780aaed53 |
graphql-ws: send keepalive messages to the client at regular intervals (#1335)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Send `type: ping` messages on a websocket connection at regular intervals to avoid keeping it idle. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> - Spawn an async thread that send the ping messages at regular intervals. - Abort the thread before closing a connection. A test case is written to confirm the keepalive messsage sent. Also this PR does a tiny no-op refactor to the `expect_text_message` helper function in the graphql-ws tests. V3_GIT_ORIGIN_REV_ID: 65b02cf1f6502bd3a6a9460673e3d87f24738d33 |
||
Daniel Harvey
|
41c9b1d816 |
Changelog for v2024.11.11 (#1333)
<!-- The PR description should answer 2 important questions: --> ### What Updated changelog for release `v2024.11.11` V3_GIT_ORIGIN_REV_ID: 4ced0b477a8b147e53e7516512abbc4de2384ab7 |
||
Rakesh Emmadi
|
716b50fbb8 |
set the request.type = http | websocket attribute in the opening spans (#1332)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Set the `request.type` attribute in the opening spans to determine the request type, either http or websocket. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> Define an enum type to capture the request type and set its `to_str()` value in the `request.type` attribute. V3_GIT_ORIGIN_REV_ID: d0370d8a5b7938a546a74641bf7bfee6da2dd33f |
||
Rakesh Emmadi
|
bbdedbb258 |
metadata-resolve: disallow duplicate model root fields (#1322)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Disallow duplicate root fields in a model GraphQL config. This is a backward incompatible change which could break any existing builds with duplicate root fields. Hence, this check is guarded behind a compatibility date. However, warnings are thrown during a build if metadata contains duplicate graphql root fields. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> Add a check while resolving the graphql metadata of a model definition. V3_GIT_ORIGIN_REV_ID: d083c62fa359df8742bbc16df821d46275d29e79 |
||
dependabot[bot]
|
5c5af7e8da |
Bump url from 2.5.2 to 2.5.3 (#1325)
Bumps [url](https://github.com/servo/rust-url) from 2.5.2 to 2.5.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/servo/rust-url/releases">url's releases</a>.</em></p> <blockquote> <h2>v2.5.3</h2> <h2>What's Changed</h2> <ul> <li>fix: enable wasip2 feature for wasm32-wasip2 target by <a href="https://github.com/brooksmtownsend"><code>@brooksmtownsend</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/960">servo/rust-url#960</a></li> <li>Fix idna tests with no_std by <a href="https://github.com/cjwatson"><code>@cjwatson</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/963">servo/rust-url#963</a></li> <li>Fix debugger_visualizer test failures. by <a href="https://github.com/valenting"><code>@valenting</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/967">servo/rust-url#967</a></li> <li>Add AsciiSet::EMPTY and boolean operators by <a href="https://github.com/joshka"><code>@joshka</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/969">servo/rust-url#969</a></li> <li>mention why we pin unicode-width by <a href="https://github.com/Manishearth"><code>@Manishearth</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/972">servo/rust-url#972</a></li> <li>refactor and add tests for percent encoding by <a href="https://github.com/joshka"><code>@joshka</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/977">servo/rust-url#977</a></li> <li>Add a test for and fix issue <a href="https://redirect.github.com/servo/rust-url/issues/974">#974</a> by <a href="https://github.com/hansl"><code>@hansl</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/975">servo/rust-url#975</a></li> <li><code>no_std</code> support for the <code>url</code> crate by <a href="https://github.com/domenukk"><code>@domenukk</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/831">servo/rust-url#831</a></li> <li>Normalize URL paths: convert /.//p, /..//p, and //p to p by <a href="https://github.com/theskim"><code>@theskim</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/943">servo/rust-url#943</a></li> <li>support Hermit by <a href="https://github.com/m-mueller678"><code>@m-mueller678</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/985">servo/rust-url#985</a></li> <li>fix: support <code>wasm32-wasip2</code> on the stable channel by <a href="https://github.com/brooksmtownsend"><code>@brooksmtownsend</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/983">servo/rust-url#983</a></li> <li>Improve serde error output by <a href="https://github.com/konstin"><code>@konstin</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/982">servo/rust-url#982</a></li> <li>OSS-Fuzz: Add more fuzzer by <a href="https://github.com/arthurscchan"><code>@arthurscchan</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/988">servo/rust-url#988</a></li> <li>Merge idna-v1x to main by <a href="https://github.com/hsivonen"><code>@hsivonen</code></a> in <a href="https://redirect.github.com/servo/rust-url/pull/990">servo/rust-url#990</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/brooksmtownsend"><code>@brooksmtownsend</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/960">servo/rust-url#960</a></li> <li><a href="https://github.com/cjwatson"><code>@cjwatson</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/963">servo/rust-url#963</a></li> <li><a href="https://github.com/joshka"><code>@joshka</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/969">servo/rust-url#969</a></li> <li><a href="https://github.com/hansl"><code>@hansl</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/975">servo/rust-url#975</a></li> <li><a href="https://github.com/theskim"><code>@theskim</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/943">servo/rust-url#943</a></li> <li><a href="https://github.com/m-mueller678"><code>@m-mueller678</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/985">servo/rust-url#985</a></li> <li><a href="https://github.com/konstin"><code>@konstin</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/982">servo/rust-url#982</a></li> <li><a href="https://github.com/arthurscchan"><code>@arthurscchan</code></a> made their first contribution in <a href="https://redirect.github.com/servo/rust-url/pull/988">servo/rust-url#988</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/servo/rust-url/compare/v2.5.2...v2.5.3">https://github.com/servo/rust-url/compare/v2.5.2...v2.5.3</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Daniel Harvey
|
056b1c18fc |
Stop Nix rebuilding (#1329)
<!-- The PR description should answer 2 important questions: --> ### What Our Nix build was building all the workspace crates as part of it's deps step. This means when any library crate is changed, we throw away all the caching, which isn't ideal. This filters the source files out of those builds, so that we get more cache hits. We also move all Cargo features into the workspace, which I've been meaning to do for ages, so things are more consistent, and again, we get more cache hits generally. V3_GIT_ORIGIN_REV_ID: c724b152692575edf6c00ab426e48ecca13aa998 |
||
Daniel Harvey
|
9f28f41a0e |
Build: use native target CPU (#1330)
<!-- The PR description should answer 2 important questions: --> ### What Have seen this advised in both the [Rust Performance Book](https://nnethercote.github.io/perf-book/build-configuration.html#cpu-specific-instructions) and in the [Datafusion docs](https://datafusion.apache.org/user-guide/crate-configuration.html), seems like there's no drawbacks and the possibility of extra juice. My M1 Mac shows a no-op in benchmarks, but since it's going to change depending on CPU plan to merge and take a look at the CI benchmarks too. V3_GIT_ORIGIN_REV_ID: 7b5d5668b3a8949dd56b2a887f10d964d523bdd6 |
||
Daniel Harvey
|
41fb74faba |
Move boolean expression fields out of graphql config (#1319)
<!-- The PR description should answer 2 important questions: --> ### What We only resolve boolean expression fields if there is a `graphql` name defined, which is not helpful for using them in JSONAPI or SQL. This makes the validation happen earlier. This means users that have broken boolean expressions that did not have a `graphql` field would have been allowed to sit broken, but now those will error, so this is behind a new compatibility config flag. ### How Move `scalar_fields` and `object_fields` resolve into `object` steps instead of the `graphql` steps of resolve for `ObjectBooleanExpressionType` and `BooleanExpressionType`. Note: we really need to get `ObjectBooleanExpressionType` deprecated and deleted, it causes so much extra work and complexity everywhere. V3_GIT_ORIGIN_REV_ID: c6f0849d412b40f3484fb44c1b36ebdf77ac60c1 |
||
dependabot[bot]
|
cfda861bdc |
Bump serde from 1.0.210 to 1.0.214 (#1327)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.210 to 1.0.214. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p> <blockquote> <h2>v1.0.214</h2> <ul> <li>Implement IntoDeserializer for all Deserializers in serde:🇩🇪:value module (<a href="https://redirect.github.com/serde-rs/serde/issues/2568">#2568</a>, thanks <a href="https://github.com/Mingun"><code>@Mingun</code></a>)</li> </ul> <h2>v1.0.213</h2> <ul> <li>Fix support for macro-generated <code>with</code> attributes inside a newtype struct (<a href="https://redirect.github.com/serde-rs/serde/issues/2847">#2847</a>)</li> </ul> <h2>v1.0.212</h2> <ul> <li>Fix hygiene of macro-generated local variable accesses in serde(with) wrappers (<a href="https://redirect.github.com/serde-rs/serde/issues/2845">#2845</a>)</li> </ul> <h2>v1.0.211</h2> <ul> <li>Improve error reporting about mismatched signature in <code>with</code> and <code>default</code> attributes (<a href="https://redirect.github.com/serde-rs/serde/issues/2558">#2558</a>, thanks <a href="https://github.com/Mingun"><code>@Mingun</code></a>)</li> <li>Show variant aliases in error message when variant deserialization fails (<a href="https://redirect.github.com/serde-rs/serde/issues/2566">#2566</a>, thanks <a href="https://github.com/Mingun"><code>@Mingun</code></a>)</li> <li>Improve binary size of untagged enum and internally tagged enum deserialization by about 12% (<a href="https://redirect.github.com/serde-rs/serde/issues/2821">#2821</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
9b86af2486 |
Bump csv from 1.3.0 to 1.3.1 (#1326)
Bumps [csv](https://github.com/BurntSushi/rust-csv) from 1.3.0 to 1.3.1. <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
13043ccd3e |
Bump thiserror from 1.0.64 to 1.0.69 (#1324)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.64 to 1.0.69. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/thiserror/releases">thiserror's releases</a>.</em></p> <blockquote> <h2>1.0.69</h2> <ul> <li>Backport 2.0.2 fixes</li> </ul> <h2>1.0.68</h2> <ul> <li>Handle incomplete expressions more robustly in format arguments, such as while code is being typed (<a href="https://redirect.github.com/dtolnay/thiserror/issues/341">#341</a>, <a href="https://redirect.github.com/dtolnay/thiserror/issues/344">#344</a>)</li> </ul> <h2>1.0.67</h2> <ul> <li>Improve expression syntax support inside format arguments (<a href="https://redirect.github.com/dtolnay/thiserror/issues/335">#335</a>, <a href="https://redirect.github.com/dtolnay/thiserror/issues/337">#337</a>, <a href="https://redirect.github.com/dtolnay/thiserror/issues/339">#339</a>, <a href="https://redirect.github.com/dtolnay/thiserror/issues/340">#340</a>)</li> </ul> <h2>1.0.66</h2> <ul> <li>Improve compile error on malformed format attribute (<a href="https://redirect.github.com/dtolnay/thiserror/issues/327">#327</a>)</li> </ul> <h2>1.0.65</h2> <ul> <li>Ensure OUT_DIR is left with deterministic contents after build script execution (<a href="https://redirect.github.com/dtolnay/thiserror/issues/325">#325</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Brandon Simmons
|
efee881784 |
ENG-1227: mbs: reduce artifact size by omitting "default" values (#1323)
We get a 17% reduction in size for chinook.json, 14% for our big schema. Benchmark is 8% faster for chinook.json <!-- The PR description should answer 2 important questions: --> ### What reduce artifact size ### How remove certain common "default" fields on serialization, to be repopulated on deserialization. Since this works at the serde level we should still benefit if we manage to switch to e.g. bincode I attempted to create a macro for this, but decided it wasn't worth it. Fields were chosen by sorting and counting json fields, and adding these annotations for the heaviest ones. V3_GIT_ORIGIN_REV_ID: 4605016021fa6aafb97759e3bd5346116413a0ef |
||
Poojan Savani
|
70b158e173 |
console: new prometheus monitoring banner added
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/11070 GitOrigin-RevId: 247731f7478e89bec9fc28036bdf14dfea2ea20d |
||
Rakesh Emmadi
|
91f74550b5 |
metadata-resolve: refactor duplicate root field reporting in commands (#1320)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> No-op refactor. Just updates the error message. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> Define a type to track root fields and report error if the field is already in use. V3_GIT_ORIGIN_REV_ID: 91533ee0dd48087617e1950f1aeb42a1787edc16 |
||
Daniel Chambers
|
d3491fc9f6 |
Upgrade to NDC v0.2.0-rc.1 (#1291)
### What This PR updates the engine to use the NDC Spec v0.2.0-rc.1 version. This is very likely to be the final RC before release. ### How The `ndc_models` crate got updated, which then resulted in the schema migration code in `metadata_resolve` being updated. This affected a lot of test results because connectors that used deprecated type representations got migrated to other representations, and if a type representation was missing then JSON was used instead. The NDC request-sending code in `execute` was updated to send the `X-Hasura-NDC-Version` header depending on the version of request getting sent. The custom connector was updated to be compatible with the new NDC 0.2.0-rc.1 types. This resulted in the schema changing, so a lot of tests that contained the connector's schema were updated. --------- Co-authored-by: Daniel Harvey <danieljamesharvey@gmail.com> V3_GIT_ORIGIN_REV_ID: b1c7081eb1ee6cffdead08328a857903102332c6 |
||
Daniel Harvey
|
82489ad32f |
Update type representations (#1305)
<!-- The PR description should answer 2 important questions: --> ### What These are no longer used since https://github.com/hasura/v3-engine/pull/1301, let's remove them from the metadata. V3_GIT_ORIGIN_REV_ID: 17194f7fa30860738e99de6098fa84d212fee0d2 |
||
Daniel Harvey
|
9790e1fd86 |
JSONAPI filtering part 1 (#1314)
<!-- The PR description should answer 2 important questions: --> ### What First iteration of JSONAPI filtering What does it do? - Field comparisons against values - And - Or What doesn't it do - Generate schema - Use `BooleanExpressionType` to work out which operators are available - Work for nested fields (which don't work anyway atm) V3_GIT_ORIGIN_REV_ID: 71f490b2767275b5e57fa4bcf213f2339391c093 |
||
Rakesh Emmadi
|
b8629eaa58 |
server: implement protocol connection_init timeout
## Summary by CodeRabbit ## Release Notes - **Documentation** - Updated the configuration documentation for the Hasura GraphQL Engine, including new flags and environment variables, with clarifications on WebSocket connection initialization and deprecated options. - **Bug Fixes** - Enhanced WebSocket connection management and error handling, ensuring proper initialization and cleanup of connections across various components. - **Tests** - Improved tests for WebSocket connection handling and logging, ensuring robust verification of connection states and error responses. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/11069 GitOrigin-RevId: 8ee25d702a64f3bb04077bbcf0f3e1bd10c916d6 |
||
Daniel Harvey
|
c62e5fed32 |
Enable strictDeps in our Nix builds (#1318)
<!-- The PR description should answer 2 important questions: --> ### What All the docs examples have it, [it's recommended by the author](https://github.com/ipetkov/crane/issues/403#issuecomment-1743416192), and it should help with unnecessary rebuilds. V3_GIT_ORIGIN_REV_ID: 3596dd987090756e0914f7babb1329c0d9c1a263 |
||
Daniel Harvey
|
9f7d961209 |
Update changelog for v2024.11.05 (#1317)
<!-- The PR description should answer 2 important questions: --> ### What Changelog update. V3_GIT_ORIGIN_REV_ID: 3162167208fd9cce1d5f5bda4f28ef3f65339ce9 |
||
Daniel Harvey
|
1b143c10ff |
Fix JSONAPI sparse fields (#1316)
<!-- The PR description should answer 2 important questions: --> ### What Accidentally made the fallthrough to show all fields too liberal, so our "include this field?" function became const true. Now we check properly. V3_GIT_ORIGIN_REV_ID: a56ce76e1cdf57ea17856b9835128f75b3cf18c3 |
||
Rakesh Emmadi
|
d4465ce035 |
graphql-ws: fix stop all pollers when a connection is dropped (#1315)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Fix a bug with pollers are not being stopped when the connection is dropped. ### How Fetch all poller operation ids at once from a mutex map and stop each poller associated with them in a for-loop. <!-- How is it trying to accomplish it (what are the implementation steps)? --> V3_GIT_ORIGIN_REV_ID: f17511d611b92ace3de2c83e606d26214649878b |
||
Daniel Harvey
|
c8d43adb1c |
JSONAPI in multitenant (#1303)
V3_GIT_ORIGIN_REV_ID: 9be48c7e0fa948a1c36d94a48f0a2913984b24a7 |
||
Daniel Harvey
|
df79ec144c |
Print nix build debugging in build (#1313)
<!-- The PR description should answer 2 important questions: --> ### What I feel like Nix builds more than it should, and I'm interested why. [According to the crane docs](https://crane.dev/faq/constant-rebuilds.html#debugging-with-just-nix), we can use this to hopefully see what is going on, by diffing the output between builds. ### How Add `nix derivation show -r .#output` as a build step. V3_GIT_ORIGIN_REV_ID: 32bce8315874b9effb075aa834a891cf0dcc00e2 |
||
Daniel Harvey
|
e537c88d4f |
Use BTreeSet to collect Role in metadata-resolve (#1312)
<!-- The PR description should answer 2 important questions: --> ### What JSONAPI builds iterate over `roles` in metadata, and one was very slow, realised it was because it was calculating for `admin` over and over. This changes the `roles` in `metadata-resolve` to be collected in a `BTreeSet` to remove duplicates, which fixes the problem. ### How Change `Vec` to `BTreeSet`, fix type errors and snapshots. V3_GIT_ORIGIN_REV_ID: c61ef9e490c3cde9d004c08ef71dc73e92cd6e7e |
||
dependabot[bot]
|
1667c96c5d |
Bump derive_more from 0.99.18 to 1.0.0 (#1310)
Bumps [derive_more](https://github.com/JelteF/derive_more) from 0.99.18 to 1.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/JelteF/derive_more/releases">derive_more's releases</a>.</em></p> <blockquote> <h2>v1.0.0 - Finally a stable release</h2> <p><code>derive_more</code> is a library that adds derives for many of the standard library traits. By using this library the following code just works:</p> <pre lang="rust"><code>use derive_more::{Add, Display, From, Into}; <p>#[derive(PartialEq, From, Add)] struct MyInt(i32);</p> <p>#[derive(PartialEq, From, Into)] struct Point2D { x: i32, y: i32, }</p> <p>#[derive(PartialEq, From, Add, Display)] enum MyEnum { #[display("int: {_0}")] Int(i32), Uint(u32), #[display("nothing")] Nothing, }</p> <p>assert!(MyInt(11) == MyInt(5) + 6.into()); assert!((5, 6) == Point2D { x: 5, y: 6 }.into()); assert!(MyEnum::Int(15) == (MyEnum::Int(8) + 7.into()).unwrap()); assert!(MyEnum::Int(15).to_string() == "int: 15"); assert!(MyEnum::Uint(42).to_string() == "42"); assert!(MyEnum::Nothing.to_string() == "nothing"); </code></pre></p> <p>Now, more than 8 years after the first commit and almost 5 years after the 0.99.0 release, <code>derive_more</code> has finally reached its 1.0.0 release. This release contains a lot of changes (including some breaking ones) to make it easier to use the derives and make it possible to extend them without having to break backwards compatibility again. There are five major changes that I would like to call out, but there are many more changes that are documented below:</p> <ol> <li>There is a new <code>Debug</code> derive that can be used to easily customize <code>Debug</code> formatting.</li> <li>A greatly improved <code>Display</code> derive, which allows you to do anything that <a href="https://github.com/dtolnay/thiserror"><code>thiserror</code></a> provides, but it works for any type not just errors. And by combining the <code>Display</code> derive with the <code>Error</code> and <code>From</code> derives, there shouldn't really be any need to use <code>thiserror</code> anymore (if you are missing a feature/behaviour from <code>thiserror</code> please report an issue).</li> <li>Traits that can return errors now return a type that implements <code>Error</code> when an error occurs instead of a <code>&'static str</code>.</li> <li>When using <code>use derive_more::SomeTrait</code> the actual trait is also imported not just the derive macro. This is especially useful for <code>Error</code> and <code>Display</code></li> <li>The docs are now rendered on docs.rs and are much better overall.</li> </ol> <h3>Breaking changes</h3> <ul> <li>The minimum supported Rust version (MSRV) is now Rust 1.75.</li> <li>Add the <code>std</code> feature which should be disabled in <code>no_std</code> environments.</li> <li>All Cargo features, except <code>std</code>, are now disabled by default. The <code>full</code> feature can be used to get the old behavior of supporting all possible derives.</li> <li>The <code>TryFrom</code>, <code>Add</code>, <code>Sub</code>, <code>BitAnd</code>, <code>BitOr</code>, <code>BitXor</code>, <code>Not</code> and <code>Neg</code> derives now return a dedicated error type instead of a <code>&'static str</code> on error.</li> <li>The <code>FromStr</code> derive now uses a dedicated <code>FromStrError</code> error type instead of generating unique one each time.</li> <li>The <code>Display</code> derive (and other <code>fmt</code>-like ones) now uses <code>#[display("...", (<expr>),*)]</code> syntax instead of <code>#[display(fmt = "...", ("<expr>"),*)]</code>, and <code>#[display(bound(<bound>))]</code> instead of <code>#[display(bound = "<bound>")]</code>. So without the double quotes around the expressions and bounds.</li> <li>The <code>Debug</code> and <code>Display</code> derives (and other <code>fmt</code>-like ones) now transparently delegate to the inner type when <code>#[display("...", (<expr>),*)]</code> attribute is trivially substitutable with a transparent call. (<a href="https://redirect.github.com/JelteF/derive_more/pull/322">#322</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/JelteF/derive_more/blob/master/CHANGELOG.md">derive_more's changelog</a>.</em></p> <blockquote> <h2>1.0.0 - 2024-08-07</h2> <p>More than 8 years after the first commit and almost 5 years after the 0.99.0 release, <code>derive_more</code> has finally reached its 1.0.0 release. This release contains a lot of changes (including some breaking ones) to make it easier to use the derives and make it possible to extend them without having to break backwards compatibility again. There are five major changes that I would like to call out, but there are many more changes that are documented below:</p> <ol> <li>There is a new <code>Debug</code> derive that can be used to easily customize <code>Debug</code> formatting.</li> <li>A greatly improved <code>Display</code> derive, which allows you to do anything that <a href="https://github.com/dtolnay/thiserror"><code>thiserror</code></a> provides, but it works for any type not just errors. And by combining the <code>Display</code> derive with the <code>Error</code> and <code>From</code> derives, there shouldn't really be any need to use <code>thiserror</code> anymore (if you are missing a feature/behaviour from <code>thiserror</code> please report an issue).</li> <li>Traits that can return errors now return a type that implements <code>Error</code> when an error occurs instead of a <code>&'static str</code>.</li> <li>When using <code>use derive_more::SomeTrait</code> the actual trait is also imported not just the derive macro. This is especially useful for <code>Error</code> and <code>Display</code></li> <li>The docs are now rendered on docs.rs and are much better overall.</li> </ol> <h3>Breaking changes</h3> <ul> <li>The minimum supported Rust version (MSRV) is now Rust 1.75.</li> <li>Add the <code>std</code> feature which should be disabled in <code>no_std</code> environments.</li> <li>All Cargo features, except <code>std</code>, are now disabled by default. The <code>full</code> feature can be used to get the old behavior of supporting all possible derives.</li> <li>The <code>TryFrom</code>, <code>Add</code>, <code>Sub</code>, <code>BitAnd</code>, <code>BitOr</code>, <code>BitXor</code>, <code>Not</code> and <code>Neg</code> derives now return a dedicated error type instead of a <code>&'static str</code> on error.</li> <li>The <code>FromStr</code> derive now uses a dedicated <code>FromStrError</code> error type instead of generating unique one each time.</li> <li>The <code>Display</code> derive (and other <code>fmt</code>-like ones) now uses <code>#[display("...", (<expr>),*)]</code> syntax instead of <code>#[display(fmt = "...", ("<expr>"),*)]</code>, and <code>#[display(bound(<bound>))]</code> instead of <code>#[display(bound = "<bound>")]</code>. So without the double quotes around the expressions and bounds.</li> <li>The <code>Debug</code> and <code>Display</code> derives (and other <code>fmt</code>-like ones) now transparently delegate to the inner type when <code>#[display("...", (<expr>),*)]</code> attribute is trivially substitutable with a transparent call. (<a href="https://redirect.github.com/JelteF/derive_more/pull/322">#322</a>)</li> <li>The <code>DebugCustom</code> derive is renamed to just <code>Debug</code> (gated now under a separate <code>debug</code> feature), and its semantics were changed to be a superset of <code>std</code> variant of <code>Debug</code>.</li> <li>The <code>From</code> derive doesn't derive <code>From<()></code> for enum variants without any fields anymore. This feature was removed because it was considered useless in</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
fb5fd77b04 |
Bump anyhow from 1.0.91 to 1.0.92 (#1311)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.91 to 1.0.92. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/anyhow/releases">anyhow's releases</a>.</em></p> <blockquote> <h2>1.0.92</h2> <ul> <li>Support Rust 1.82's <code>&raw const</code> and <code>&raw mut</code> syntax inside <code>ensure!</code> (<a href="https://redirect.github.com/dtolnay/anyhow/issues/390">#390</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
f83c63c8e8 |
Bump serde_json from 1.0.128 to 1.0.132 (#1309)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.128 to 1.0.132. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p> <blockquote> <h2>1.0.132</h2> <ul> <li>Improve binary size and compile time for JSON array and JSON object deserialization by about 50% (<a href="https://redirect.github.com/serde-rs/json/issues/1205">#1205</a>)</li> <li>Improve performance of JSON array and JSON object deserialization by about 8% (<a href="https://redirect.github.com/serde-rs/json/issues/1206">#1206</a>)</li> </ul> <h2>1.0.131</h2> <ul> <li>Implement Deserializer and IntoDeserializer for <code>Map<String, Value></code> and <code>&Map<String, Value></code> (<a href="https://redirect.github.com/serde-rs/json/issues/1135">#1135</a>, thanks <a href="https://github.com/swlynch99"><code>@swlynch99</code></a>)</li> </ul> <h2>1.0.130</h2> <ul> <li>Support converting and deserializing <code>Number</code> from i128 and u128 (<a href="https://redirect.github.com/serde-rs/json/issues/1141">#1141</a>, thanks <a href="https://github.com/druide"><code>@druide</code></a>)</li> </ul> <h2>1.0.129</h2> <ul> <li>Add <a href="https://docs.rs/serde_json/1/serde_json/struct.Map.html#method.sort_keys"><code>serde_json::Map::sort_keys</code></a> and <a href="https://docs.rs/serde_json/1/serde_json/enum.Value.html#method.sort_all_objects"><code>serde_json::Value::sort_all_objects</code></a> (<a href="https://redirect.github.com/serde-rs/json/issues/1199">#1199</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |