Commit Graph

2183 Commits

Author SHA1 Message Date
Samir Talwar
15ac52ded4 server: Fix the Analyze feature for SQL Server.
The "Analyze" feature for SQL Server only partially worked. It would show the SQL generated, but not the execution plan. This is because SQL Server doesn't support generating a plan for prepared statements with parameters.

To work around this, we restructure the query as one without parameters. Instead, we replace each parameter with a variable. We declare the variables but don't set values. We then plan _that_, which works.

We run all this in a single query because local variables only last for a single transaction/batch.

This feature does not work for stored procedures.

[NDAT-582]: https://hasurahq.atlassian.net/browse/NDAT-582?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10125
GitOrigin-RevId: a4b45b9b207456ff4fbd1b69b008e93f87346342
2023-08-17 12:51:57 +00:00
Lyndon Maydwell
41054de113 Data Connectors Native Queries Support
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9499
Co-authored-by: gneeri <10553562+gneeri@users.noreply.github.com>
GitOrigin-RevId: 1e351556c43e643aa973f87adc0306f076cd227e
2023-08-17 02:05:14 +00:00
Daniel Chambers
131fe3d9e6 Block the use of column redaction where the data connector agent does not support it
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10108
GitOrigin-RevId: 830102b8cf1e6ad53b9971460dee147b678f008d
2023-08-15 05:13:15 +00:00
Daniel Harvey
c04c4bc0d9 chore(server): Native Query -> Table array relationships
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10100
GitOrigin-RevId: 55f38a904767e1b25916fb31b3c5ece898c10349
2023-08-14 12:35:53 +00:00
David Overton
7a9e1f6ea6 Order by nested fields
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10082
GitOrigin-RevId: 9c53d7ce3635f442451e04f70f0975ed79a3f4f7
2023-08-14 06:41:50 +00:00
Daniel Harvey
cd324f747b chore(server): Native Query -> Table object relationships
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10098
GitOrigin-RevId: 9b98bb0e285560cd03b04f867d1fa16dadd00df9
2023-08-10 14:23:47 +00:00
Krushan Bauva
d9283e1cac server: add dynamic labels to Prometheus metric hasura_websocket_messages_sent_bytes_total
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9920
GitOrigin-RevId: 7fb49f07d7914d08576dd0062fbea406b897e45e
2023-08-10 11:53:34 +00:00
Brandon Simmons
f6bbda77eb pro/server: add monitoring metrics for OTLP traces export
re. https://hasurahq.atlassian.net/browse/INFRA-832

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10080
Co-authored-by: Toan Nguyen  <1615675+hgiasac@users.noreply.github.com>
GitOrigin-RevId: 8de1c0a1703037cc9955da01f2593c2db15dc189
2023-08-10 10:35:14 +00:00
pranshi06
75f0629c5d server: change log level to error for triggers in Cloud
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9873
GitOrigin-RevId: 703a16da479d35908a9a8c2862884d11a3135731
2023-08-10 10:04:05 +00:00
Auke Booij
465940abc1 server: fix issue with remote schema customisation & null values
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9929
Co-authored-by: Rakesh Emmadi <12475069+rakeshkky@users.noreply.github.com>
GitOrigin-RevId: 60f9c4f99d9229cd0f29763d8055e791837cddf1
2023-08-10 06:42:36 +00:00
Samir Talwar
2d7bb085d5 server: Support _contains and _contained_in in permissions.
We recently added support for the `_contains` and `_contained_in` operators for PostgreSQL arrays. However, they weren't available in permissions.

This adds support for these operators for arrays too.

As these operators are overloaded to work with either JSONB or arrays, no validation is done on the value. If the value is not an array, it will fail when making a query.

[NDAT-806]: https://hasurahq.atlassian.net/browse/NDAT-806?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10075
GitOrigin-RevId: 02e4a57d39ac3303205c37add4186a587f65e409
2023-08-09 15:45:54 +00:00
paritosh-08
ed43fe9863 server/console: fix Apollo Federation UI to extend table types in other subgraphs
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10071
Co-authored-by: Varun Choudhary <68095256+Varun-Choudhary@users.noreply.github.com>
GitOrigin-RevId: 5acbc792fd8b3fd9ae6a02ea740b3e13040b9c72
2023-08-09 12:55:14 +00:00
Tom Harding
29bb76d6d3 Fix inherited roles leaking supposedly-hidden data via aggregation predicates for BigQuery
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10049
Co-authored-by: Philip Lykke Carlsen <358550+plcplc@users.noreply.github.com>
GitOrigin-RevId: d0af2d29e29111097e17033e10c41d668eb5a351
2023-08-09 11:52:58 +00:00
Brandon Simmons
ff954543ac server: fix for #9552: respect enabled data_types list
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10037
GitOrigin-RevId: a6465d61c2687ea8acf314532ba723664b849694
2023-08-07 15:13:01 +00:00
David Overton
5b70da8138 Nested permissions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10069
GitOrigin-RevId: 6bdde406a57e394f7bf4cc1bae2b6411cbb4ffe0
2023-08-07 04:58:22 +00:00
pranshi06
7647456718 server: configuration to specify which Header to pick for JWT Authentication
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9942
GitOrigin-RevId: 4f18d29f07c213a001d43b88e3ce2991230e28e6
2023-08-04 10:37:40 +00:00
Daniel Chambers
68f7d6e9a4 Add inherited roles data redaction support to the Data Connector API
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10023
GitOrigin-RevId: d6947dd89dc59fce3f68b786192c59e731826c60
2023-08-03 06:10:53 +00:00
Philip Lykke Carlsen
2cb66592c3 fix: Apply naming conventions in more places
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9988
GitOrigin-RevId: e74797306a6a131b9b038a20cc6e40befb33ab77
2023-08-02 13:47:21 +00:00
Daniel Harvey
6aae78c8e1 chore(server): add track/untrack stored procedure metadata commands to bulk_atomic
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10013
GitOrigin-RevId: 3843e379e08bcb65e65110fc8217acc05cf7640a
2023-08-01 08:15:28 +00:00
David Overton
23d40fc500 Nested where
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9940
GitOrigin-RevId: c2115f1de4f647c4b559c98183c6260a1f5674dd
2023-08-01 05:41:36 +00:00
Daniel Chambers
374bbd1937 Fix inherited roles leaking supposedly-hidden data via native queries in Postgres
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9980
GitOrigin-RevId: 48174a559453d802991b475caf337808d2462356
2023-08-01 02:29:19 +00:00
Daniel Chambers
7b2647e4e9 Fix inherited roles leaking supposedly-hidden data via streaming subscriptions for Postgres
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9977
GitOrigin-RevId: 56da6f97477095a1930cd29ff87ba5c3832d59f4
2023-08-01 01:47:44 +00:00
Krushan Bauva
94a2b6348a server: add Prometheus metric hasura_websocket_message_write_time and fix hasura_websocket_message_queue_time
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9879
GitOrigin-RevId: 9dd82d01faa367fa67950a7f5f55a61fc396b27f
2023-07-28 11:38:57 +00:00
Samir Talwar
1a052dd44b server: Avoid partial fields wherever possible.
This turns on the `partial-fields` warning, which yells at you if you try and create fields on sum types that end up being partial functions. These are dangerous; we had a bug because we introduced a new case to a data type, making the field accessors partial, and leading to a crash in certain cases.

This means that we have introduced a few wrappers in various places where the field names are useful, but we want to avoid partial matches.

Unfortunately this can be turned off by prefixing the field name with an underscore. Ideally we would try and avoid exporting any field names with underscores, but lenses make this hard. I have removed some underscores for the areas in which we've seen this break in the past.

We will have to be vigilant.

[NDAT-794]: https://hasurahq.atlassian.net/browse/NDAT-794?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9991
GitOrigin-RevId: fd69b1ef999682969f3507f0e97513f983da4da6
2023-07-28 10:54:24 +00:00
Philip Lykke Carlsen
cf2d205937 Fix(Sqlserver): Apply Column Redaction to order_by and _where
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9971
GitOrigin-RevId: 04cae8163af2d002a2d5aea73fb45088fc0eaea4
2023-07-26 16:05:00 +00:00
Puru Gupta
b3a128065f server: add tenant policy to enable/disable otel exporter
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9928
Co-authored-by: Brandon Simmons <210815+jberryman@users.noreply.github.com>
Co-authored-by: Toan Nguyen  <1615675+hgiasac@users.noreply.github.com>
Co-authored-by: Varun Choudhary <68095256+Varun-Choudhary@users.noreply.github.com>
Co-authored-by: Daniele Cammareri <5709409+dancamma@users.noreply.github.com>
GitOrigin-RevId: 56c6903691353875f87bf417c332ac89cdda1279
2023-07-26 12:50:10 +00:00
Daniel Chambers
bae14c70d4 Fix inherited roles leaking supposedly-hidden data via aggregation predicates for Postgres
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9961
GitOrigin-RevId: cffe2fda2f4dbc7929fc1aaac3887b7d12c4b467
2023-07-26 12:07:34 +00:00
Philip Lykke Carlsen
483409c26b Fix(Sqlserver): Apply Column Redaction to aggregations
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9956
GitOrigin-RevId: ed7a734fabcaaead85999a25223a61f0cba7807c
2023-07-26 08:53:56 +00:00
Brandon Simmons
f0441a3d61 INFRA-833: OpenTelemetry exporter for metrics
I scratched out some changes to support this in the front end, mostly to test it easily,   maybe this can be used without much rework (validation seems to work correctly, but the tests need to be extended and probably fixed):

<img width="648" alt="fd" src="https://github.com/hasura/graphql-engine-mono/assets/68095256/e5873a90-ef83-43c3-9d54-cfc0a693baca">

-------

## Fake OTel collector for testing

ChatGPT spit this out, and it's what I used to test, if it's useful to others:

``` python
from flask import Flask, request
from opentelemetry.proto.collector.trace.v1.trace_service_pb2 import ExportTraceServiceRequest
from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ExportMetricsServiceRequest
import google.protobuf.json_format as json_format

app = Flask(__name__)

@app.route("/v1/traces", methods=["POST"])
def handle_traces():
    if request.method == 'POST':
        binary_trace = request.get_data()
        trace_request = ExportTraceServiceRequest()
        trace_request.ParseFromString(binary_trace)
        print("Received trace data:\n")
        print(json_format.MessageToJson(trace_request, indent=2, preserving_proto_field_name=True))
        return "Trace data received", 200

@app.route("/v1/metrics", methods=["POST"])
def handle_metrics():
    if request.method == 'POST':
        binary_metric = request.get_data()
        metric_request = ExportMetricsServiceRequest()
        metric_request.ParseFromString(binary_metric)
        print("Received metrics data:\n")
        print(json_format.MessageToJson(metric_request, indent=2, preserving_proto_field_name=True))
        return "Metrics data received", 200

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)
```

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9552
Co-authored-by: Puru Gupta <32328846+purugupta99@users.noreply.github.com>
Co-authored-by: Toan Nguyen  <1615675+hgiasac@users.noreply.github.com>
Co-authored-by: Varun Choudhary <68095256+Varun-Choudhary@users.noreply.github.com>
Co-authored-by: Daniele Cammareri <5709409+dancamma@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: f340bfc5c135a7bb24735b524d015e05db422fd2
2023-07-26 05:22:17 +00:00
Daniel Chambers
fa1441ac3b Enable inherited role redaction tests for Citus and Cockroach and fix DISTINCT ON for Cockroach
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9951
GitOrigin-RevId: b078006a14ebdc007576314405734734ad1944c4
2023-07-26 04:50:25 +00:00
Daniel Harvey
78323ed1a1 chore(server): permissions for inline logical models
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9835
GitOrigin-RevId: b36a4d5a8e0d4156a2d26803c7d046570f7afefa
2023-07-25 10:11:35 +00:00
Auke Booij
dad9a80dac server: null forwarding feature flag
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9861
Co-authored-by: paritosh-08 <85472423+paritosh-08@users.noreply.github.com>
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: 46153d68adf1acc707dc451555055600b006629e
2023-07-21 15:12:32 +00:00
Daniel Chambers
592e2329d0 Fix inherited roles leaking supposedly-hidden data via filtering for Postgres
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9916
GitOrigin-RevId: 39f6f1aa21421dda6573bbae561c62ced3400034
2023-07-20 23:29:01 +00:00
Tom Harding
05cfb65b54 Log Postgres Source Names in Connection Errors
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9869
GitOrigin-RevId: 916758e7f1037cc67035894298e55771f9aa2d9f
2023-07-20 11:20:09 +00:00
Philip Lykke Carlsen
462abadb8c feat(SqlServer): Configuration option to disable the connection pool
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9834
Co-authored-by: Samir Talwar <47582+SamirTalwar@users.noreply.github.com>
GitOrigin-RevId: 6b7f8bd660ddda0cae3a5457267f5af4906ff65a
2023-07-18 18:41:10 +00:00
Daniel Chambers
2f3defe3a9 Refactor inherited roles data redaction types
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9882
GitOrigin-RevId: cffb0643202ee18abdc90887fd0306fe0835c44e
2023-07-18 13:50:32 +00:00
Daniel Chambers
a86345421f Fix inherited roles issue with ordering
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9868
GitOrigin-RevId: 0c2b50ec1a2d179a4f79b6c795bf8fecb7ad7c9f
2023-07-18 13:09:42 +00:00
Auke Booij
9a09af4f20 server: don't forward absent variable values as nulls
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9871
GitOrigin-RevId: 71191f89d7de36ff1fad0e29e8f1f07a9ddca9f7
2023-07-18 12:36:30 +00:00
paritosh-08
b1a7a64466 server: add new fields in schema registry payload
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9769
GitOrigin-RevId: c38797bab390fc8f388bf9c64250044949d94060
2023-07-18 12:03:17 +00:00
paritosh-08
318634c7a1 server/schema-registry: fix metadata resource version -1 for catalog sync
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9864
GitOrigin-RevId: 55340364d138ccb311e3f0e927ef2fd1486a125b
2023-07-17 08:12:31 +00:00
Daniel Chambers
06a79b9e59 Fix inherited roles leaking supposedly-hidden data from aggregates for Postgres
[GDC-1292]: https://hasurahq.atlassian.net/browse/GDC-1292?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9799
GitOrigin-RevId: 8138c6064bffe8af5228c293e28513962e980820
2023-07-17 04:28:46 +00:00
Tom Harding
70d5a0e168 Support remote relationship deletion in bulk_atomic
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9858
GitOrigin-RevId: 11eab0ec6383871792a1e7bf3c7ebaed3be53f90
2023-07-13 13:55:25 +00:00
pranshi06
da582dda33 server: add log line for Event Trigger timeout errors
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9847
GitOrigin-RevId: 2cff5d3bca1e04b57cbe054e774e97e543cb7ce5
2023-07-13 09:53:27 +00:00
Anon Ray
ddfd5c74bc revert "server: add upstream_execution_time to http-log"
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9856
GitOrigin-RevId: 5721b4945025fd8139fe19f7aa87d7366c4b0c27
2023-07-13 09:23:38 +00:00
Tom Harding
a381cf273a Add *_drop_relationship to bulk_atomic
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9851
GitOrigin-RevId: 6f837e2040261c319899769abcd1af28b5cea64f
2023-07-13 08:54:51 +00:00
Anon Ray
6853688e20 server: add upstream_execution_time to http-log
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9853
GitOrigin-RevId: 001ac73bb3c5c34fee26ee8804fc0a9b34fba4c7
2023-07-13 07:29:00 +00:00
Daniel Harvey
21bee98e25 chore(server): tidy logimo permissions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9844
GitOrigin-RevId: f08e3872d2507f965bf94976cae3ee5d15d882b5
2023-07-12 10:45:42 +00:00
Brandon Simmons
4eeb0860d9 server: use lighter GC in ourIdleGC when idle
Previously when users had an idle system with a large working set (i.e. large schema) they would likely see CPU spikes every 10 seconds.

See: https://github.com/hasura/graphql-engine/issues/9592#issuecomment-1580543694

Now we perform a lighter-weight minor GC in that case.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9841
GitOrigin-RevId: a04f86bfef7a73cb25fbec850d58e51eb796b81b
2023-07-12 09:26:11 +00:00
Krushan Bauva
cfd2f54eab server: fix operationName not parsed into subscription metrics and query tags
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9816
GitOrigin-RevId: c27ab21d2574fe36a150f3e333c6da6ea2658a32
2023-07-12 07:33:17 +00:00
David Overton
a46f07ea45 Logical models in get_table_info
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9798
GitOrigin-RevId: ab7b1dc0a4504c1ec103c449ca2e444589673c0f
2023-07-12 02:10:02 +00:00