Commit Graph

2035 Commits

Author SHA1 Message Date
Solomon
73276b008a Parse dont validate dangerous boolean collapse
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5642
GitOrigin-RevId: aecce571dcbb0672b708a746dfae9aa549547ecf
2022-08-26 04:38:41 +00:00
Jesse Hallett
84fd5910b0 server: polymorphic codec for metadata sources
This PR expands the OpenAPI specification generated for metadata to include separate definitions for `SourceMetadata` for each native database type, and for DataConnector.

For the most part the changes add `HasCodec` implementations, and don't modify existing code otherwise.

The generated OpenAPI spec can be used to generate TypeScript definitions that distinguish different source metadata types based on the value of the `kind` properly. There is a problem: because the specified `kind` value for a data connector source is any string, when TypeScript gets a source with a `kind` value of, say, `"postgres"`, it cannot unambiguously determine whether the source is postgres, or a data connector. For example,

```ts
function consumeSourceMetadata(source: SourceMetadata) {
    if (source.kind === "postgres" || source.kind === "pg") {
        // At this point TypeScript infers that `source` is either an instance
        // of `PostgresSourceMetadata`, or `DataconnectorSourceMetadata`. It
        // can't narrow further.
        source
    }
    if (source.kind === "something else") {
        // TypeScript infers that this `source` must be an instance of
        // `DataconnectorSourceMetadata` because `source.kind` does not match
        // any of the other options.
        source
    }
}
```

The simplest way I can think of to fix this would be to add a boolean property to the `SourceMetadata` type along the lines of `isNative` or `isDataConnector`. This could be a field that only exists in serialized data, like the metadata version field. The combination of one of the native database names for `kind`, and a true value for `isNative` would be enough for TypeScript to unambiguously distinguish the source kinds.

But note that in the current state TypeScript is able to reference the short `"pg"` name correctly!

~~Tests are not passing yet due to some discrepancies in DTO serialization vs existing Metadata serialization. I'm working on that.~~

The placeholders that I used for table and function metadata are not compatible with the ordered JSON serialization in use. I think the best solution is to write compatible codecs for those types in another PR. For now I have disabled some DTO tests for this PR.

Here are the generated [OpenAPI spec](https://github.com/hasura/graphql-engine-mono/files/9397333/openapi.tar.gz) based on these changes, and the generated [TypeScript client code](https://github.com/hasura/graphql-engine-mono/files/9397339/client-typescript.tar.gz) based on that spec.

Ticket: [MM-66](https://hasurahq.atlassian.net/browse/MM-66)

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5582
GitOrigin-RevId: e1446191c6c832879db04f129daa397a3be03f62
2022-08-25 18:36:02 +00:00
Philip Lykke Carlsen
360786389e refactor: Separate out TableInfo building
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5635
GitOrigin-RevId: 2846a64a8e3b0f55bb302a969bcaedaf2e1cf1a5
2022-08-25 17:55:55 +00:00
Gil Mizrahi
5aab7e5ce9 add cockroach to docker compose and tests-hspec
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5558
Co-authored-by: Daniel Harvey <4729125+danieljharvey@users.noreply.github.com>
GitOrigin-RevId: b7f242939e718d5bb4f22b11c093ae77d21cdcce
2022-08-25 17:18:40 +00:00
Naveen Naidu
a4c06deba3 server: add active_livequeries, active_streaming_subscriptions EKG metrics
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5627
GitOrigin-RevId: 3f010dbe29f78ba9e79f545acc26a6a56e0b5d28
2022-08-25 15:52:22 +00:00
Daniel Harvey
d0ebb018e4 server: enable runSQL for cockroach
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5629
Co-authored-by: Philip Lykke Carlsen <358550+plcplc@users.noreply.github.com>
GitOrigin-RevId: 617da541d1754289dc6097c46ec1de3fcc6b48f9
2022-08-25 13:32:16 +00:00
Karthikeyan Chinnakonda
ee1665d0f6 Server: Enable streaming subscriptions by default
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5587
GitOrigin-RevId: 5e1568f03ece98945127299c7377ba7f8a4e3f3b
2022-08-25 08:24:26 +00:00
Brandon Simmons
746cae5f4b benchmarks: Add Accept-Encoding: gzip headers (NO REGRESSION)
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5622
GitOrigin-RevId: 431f7f382573737af9b85966a58c5b262f8cb377
2022-08-25 06:43:18 +00:00
Antoine Leblanc
1537bbd442 [ci] add benchmark for deep schema
### Description

This PR adds a new benchmarl set named `deep_schema`, that is made to replicate one very specific edge-case: schemas that have deeply nested remote relationships. Our schema-building code is, in essence, "depth-first", and there are a lot of subtleties in the way we jump across remote relationship boundaries: this set will allows us to better understand the performance implications of technical decisions we make wrt. schema building.

This set, unlike others, does not declare any query: we are, for now, only interested in the schema building, which is tested with an ad-hoc script.

## Remaining work

There are several points worth discussing, wrt. this PR:
- should we make the schema larger, to make measures more consistent?
- should we extend this idea of measuring schema build performance to other sets?
- how do we extend the report to include this new information?

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5517
GitOrigin-RevId: 9d8f4fddb9bbdca5ef85f3d22337b992acf13bce
2022-08-24 15:55:29 +00:00
Daniel Harvey
bffd9c7835 server: convert fetchFunctionMetadata into typeclass
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5615
GitOrigin-RevId: 2b96e62f2b8268f5617f8a8caa81928d56768468
2022-08-24 14:33:31 +00:00
Philip Lykke Carlsen
29b6ea54c0 refactor: Enable Aggregation Predicates IR for Postgres
This does not yet enable Aggregation Predicates to users, but enables building the execution backend and tests of the schema.

This is a prerequisite for:
* #5174
* #5261

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5607
GitOrigin-RevId: e07beb01949724545131629c111d41a7ec4636f2
2022-08-24 12:00:11 +00:00
Daniel Harvey
066e2d6c7b server: fetchTableMetadata does not send tables for CockroachDB
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5593
GitOrigin-RevId: 3a2f4ab30e8900494f32870b5e3d345877744071
2022-08-24 09:38:13 +00:00
Samir Talwar
38c94d8cda server/tests-py: Fix some warnings.
They're getting in the way of real problems.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5541
GitOrigin-RevId: 9bc99a0826715f6df77055cca79e428ad49742a8
2022-08-24 08:32:07 +00:00
Solomon
37601d7303 Adds support for GDC relationships in metadata API and adds support for foreign key constraints to GDC
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5561
GitOrigin-RevId: 221a5dae514c3ac60cc60ba1ec9451a04984d491
2022-08-23 21:47:26 +00:00
Naveen Naidu
dae6cfa9a6 server: enforce event triggers name in a source to be unique
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5394
GitOrigin-RevId: 78015262365985329c18ed25897ca6d6f4422ecb
2022-08-23 08:51:11 +00:00
Philip Lykke Carlsen
4431fb5ea9 Add schema implementation for Aggregation Predicates
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5259
GitOrigin-RevId: f53e310951fa4eb7570006d8c616398a98078632
2022-08-22 15:59:21 +00:00
Abby Sassel
ac55952169 fix cockroach_table_metadata.sql syntax error
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5573
GitOrigin-RevId: cd4b4c954203fcb044cf6a5da6fd3bdab2799a52
2022-08-22 14:18:46 +00:00
Tom Harding
d89ad0cd35 Add explanation of new test structure to the tests-hspec README (close #4757)
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5574
GitOrigin-RevId: 439da1fbf1d3b3a519f28393408eebbcf5817f63
2022-08-22 10:51:44 +00:00
Daniel Harvey
5a126a693e server: MSSQL varchars compared to nvarchars
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5536
GitOrigin-RevId: ff2e5c9a71dbb02e729b7715d5df752675fc4656
2022-08-22 08:34:41 +00:00
Samir Talwar
2f186b50be server/tests-py: Extract parts of a test out of YAML.
We plan on creating the source database dynamically, in the test setup.
This means that (a) we cannot assume that the metadata database and the
source database are the same, and (b) we need to drop and re-add the
source in code, not in YAML.

This changeset prepares the code for the introduction of a separate
source database, but doesn't go there yet. The separation is already
done but is too big to review in one go, so I have split this out.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5508
GitOrigin-RevId: b497a83ac4a100371762c2515c87ee3760d8d4ab
2022-08-22 07:22:24 +00:00
Daniel Chambers
1280b7f0f6 server: Remove redundant filter expressions from Data Connector queries
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5479
GitOrigin-RevId: 65ef71bbd7dfc69ec3e678bcf0eb5ccf9bc025f5
2022-08-22 04:23:49 +00:00
Tom Harding
4a9da49f8d Move ArrayParamPermissionSpec under Postgres
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5492
GitOrigin-RevId: f9f002934acdb9cb9eb82772969663983de05a23
2022-08-19 16:13:07 +00:00
Philip Lykke Carlsen
0e921ca9a5 Define IR types for AggregationPredicates.
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5258
GitOrigin-RevId: 172b9de69f44635c5700b3f75ce17304ec56c18a
2022-08-19 15:41:47 +00:00
Daniel Harvey
6040cb065e tests: Use async instead of forkIO in test setup
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5544
GitOrigin-RevId: e932e1f76c6e20121c64a429a6eb613d550c6eca
2022-08-19 14:57:02 +00:00
Daniel Harvey
2ff8aa8f7d server: add PostgresKind for CockroachDB
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5550
GitOrigin-RevId: f53f88b64617500353bce5a699b89fcbb591d80f
2022-08-19 14:21:09 +00:00
pranshi06
e5df380d70 server: add rename_query_collection metadata API
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5533
GitOrigin-RevId: d9c322034c4be01f87ecf05415dac1f90e906c8c
2022-08-19 13:37:16 +00:00
Tom Harding
283d51668f Move BackendOnlyPermissionsSpec
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5539
GitOrigin-RevId: 96851c840ea945af250c8eb876ea183b8384f5d9
2022-08-19 12:59:03 +00:00
Daniel Harvey
8600d78456 server: Remove duplicated Expression and Constants from Query module
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5530
GitOrigin-RevId: 2e1ad22472e4abdbff0a3701d73c632dbbcf649f
2022-08-19 12:27:12 +00:00
Daniel Chambers
ef0ca7dea2 server: Data Connectors support for ordering by related table column and aggregates [GDW-126]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5478
GitOrigin-RevId: 269d33d48f7d41efc7ab4ac6efd9442c6741d08c
2022-08-19 07:01:52 +00:00
Brandon Simmons
4be1ca758d Add allocation counter to trace spans and trace metadata
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5208
GitOrigin-RevId: c0197e69986109db73fa0734b5a093a5e7f0c2e3
2022-08-18 21:57:59 +00:00
Tom Harding
dea80bfac7 Refactor the InsertDefaultsSpec
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5534
GitOrigin-RevId: b5434dbaf86315b77cf9c5ed9d61f80e87c7fc64
2022-08-18 18:16:26 +00:00
Evie Ciobanu
7e279b5c56 server/nada: use raw SQL literals to clarify tested queries
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5545
GitOrigin-RevId: 74344445aa33983b29e993e4b0cd8a335bce6b93
2022-08-18 11:32:03 +00:00
Evie Ciobanu
1e48af2d03 server/nada: add unit tests for Postgres insert SQL generation
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5543
GitOrigin-RevId: 55646f653926559f1847aa692d3522627a463d25
2022-08-18 10:44:32 +00:00
Evie Ciobanu
56f2501ab9 server/nada: minor refactoring around SQL-generation unit tests
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5524
GitOrigin-RevId: a9f1bcf66f731829c48cb6ced5d968c2e2f4ae80
2022-08-18 09:01:07 +00:00
Solomon
7a2352dd6e Introduce GDC Add/Remove Agent and List Source Kinds Metadata API Actions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5415
GitOrigin-RevId: b46f928eae85a747378bbc18968d93dcb81c895a
2022-08-17 22:14:40 +00:00
Abby Sassel
1fca1eeb7c server/tests: reorganise RunSQLSpec
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5512
GitOrigin-RevId: 45761ec297b629de283c310624d9ccb587f30c19
2022-08-17 13:35:09 +00:00
paritosh-08
9d23a10f33 server: fix behaviour of custom table name for graphql-default naming convention
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5290
GitOrigin-RevId: bc398989d82a0e78bfcf87d5aa81bcd6a709c67f
2022-08-17 12:47:49 +00:00
Tom Harding
78e6c9369a Move ObjectRelationshipsLimitSpec to the regression test directory
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5493
GitOrigin-RevId: e4303cd15229c3551269dac84dcb2670f875359c
2022-08-17 09:51:07 +00:00
Samir Talwar
b67bc98c14 server/tests-py: Split the naming convention tests.
This splits two naming convention tests into four classes (and four YAML
files), which might seem overkill, but allows us to provision sources
declaratively in the future. As each class will require a custom source
configuration, we are able to annotate them accordingly, which means the
test cases are decoupled from the source database URL, letting us
generate a new database for each test case and automatically add it as a
source to HGE.

The future changes are already prepared, but this has been extracted out
as it splits the YAML files, which is a large change best reviewed in
isolation.

The test case `test_type_and_field_names` has been split into:

* `TestNamingConventionsTypeAndFieldNamesGraphqlDefault`
* `TestNamingConventionsTypeAndFieldNamesHasuraDefault`

The test case `test_type_and_field_names_with_prefix_and_suffix` has
been split into:

* `TestNamingConventionsTypeAndFieldNamesGraphqlDefaultWithPrefixAndSuffix`
* `TestNamingConventionsTypeAndFieldNamesHasuraDefaultWithPrefixAndSuffix`

The YAML files have been split in the same way. This was fairly trivial
as each test case would add a source, run some tests with
the `graphql_default` naming convention, drop the source, and then
repeat for the `hasura_default` naming convention. I simply split the
file in two. There is a little bit of duplication for provisioning the
various database tables, which I think is worth it.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5496
GitOrigin-RevId: 94825e755c427a5414230f69985b534991b3aad6
2022-08-17 04:36:07 +00:00
Lyndon Maydwell
5d751bf0ba Adding metrics capability to data-connector agents (with specs)
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5444
GitOrigin-RevId: 49242e83fc1efeb5665515b44368e930818baf27
2022-08-17 01:47:36 +00:00
Solomon
418d0e2cc2 Use NonNegative types for arg/env parsing
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5305
GitOrigin-RevId: 8274ca8c4217d15939fa2a78664a2be486426bf7
2022-08-17 01:09:19 +00:00
Vishnu Bharathi
bb219d585b ci: tag release v2.10.1
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5476
GitOrigin-RevId: a19d1319959527c3b275ca9fd3dc88c3ee2d3eaf
2022-08-16 13:55:57 +00:00
Tom Harding
b4639fd10f Move the InsertOnConflictSpec test to regressions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5495
GitOrigin-RevId: be6986ca1073b76be21fe52ef217dc84f901fe81
2022-08-16 12:29:47 +00:00
Tom Harding
7e6c9df291 Move CustomRootFieldsSpec under Subscriptions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5494
GitOrigin-RevId: bdd0fd4e7a6b6465be59dd497c0ff06588f35445
2022-08-16 11:54:29 +00:00
Samir Talwar
2757c2156b server/tests-py: Move installing node_modules to the makefile.
This means that if `remote_schemas/nodejs/package.json` changes, the
dependencies will be automatically reinstalled.

It also moves `package-lock.json` to the correct location (in the
directory in which we run `npm install`), and updates it.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5481
GitOrigin-RevId: f3fb431afd19de150f39ec2e4cb6572b896c870f
2022-08-16 09:27:04 +00:00
Daniel Chambers
c6e7dff526 server: Data Connector agent test suite bugfixes
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5500
GitOrigin-RevId: 5bb1a326ecd7aa95cbbda3591d2a51dea605125a
2022-08-16 04:46:29 +00:00
Daniel Chambers
a1d0be0d86 server: Added additional tests to Data Connector agent test suite [GDW-281]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5499
GitOrigin-RevId: 26b7c66333ee3a251a4a33a67fc38b55ebc3fa21
2022-08-16 03:02:43 +00:00
Tom Harding
a54cbc17c3 Migrate InsertCheckPermissionSpec to the new structure
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5363
GitOrigin-RevId: 6de7600f7d9e6a04a10290d85bb83bb564352772
2022-08-15 18:10:44 +00:00
Daniel Harvey
f4df7f0162 tests: fix interpolateYaml quasi quoter when parsing '*'
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5491
GitOrigin-RevId: 3fbea70c9c9ebf4584cb140854e98db680a4137f
2022-08-15 17:17:44 +00:00
Samir Talwar
b690a3fc3a server/tests-py: Install the pytest-durations plugin.
[pytest-durations][] is an enhancement to pytest over the built-in
[`--durations` parameter][] which also shows the duration of setup,
teardown, and fixtures that take the longest.

While it's not strictly necessary now, I used it to figure out what was
taking so long when trying to run things in parallel, and found it very
helpful, so I think it's worth preserving.

[pytest-durations]: https://pypi.org/project/pytest-durations/
[`--durations` parameter]: https://docs.pytest.org/en/6.2.x/usage.html#profiling-test-execution-duration

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5480
GitOrigin-RevId: b789418dd4c971adb91e08b7837a962bede44452
2022-08-15 16:15:37 +00:00