Releases: hasura/graphql-engine
v2.31.0-beta.1
Changelog
Highlights
Newly-improved suggested relationships UI
Introduces a new suggested relationships UI for Postgres and MS SQL with added features and improved performance. It is currently accessible by enabling a Feature Flag.
![](https://private-user-images.githubusercontent.com/24390149/256334294-45ff0c63-3b7b-4d03-8a56-b2e05d869c2b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDM4OTUsIm5iZiI6MTczOTAwMzU5NSwicGF0aCI6Ii8yNDM5MDE0OS8yNTYzMzQyOTQtNDVmZjBjNjMtM2I3Yi00ZDAzLThhNTYtYjJlMDVkODY5YzJiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA4MzMxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE2Y2YzN2IzZDk1MGU0ZjRlNzhhODQzNTk0YWI1ZGIyYTNlYTQ4MmJiMTdkMTY2MGJhZTFkNDYyY2U1MzQzZTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.E1EPzj18fNySJKREEK3V5XDaDz1BI5IP1oeP02Q_nS4)
Improved User Experience for RESTified Endpoints!
- Create CRUD REST endpoints for your tracked tables with just 2 clicks from the Modify tables page.
- Enjoy a seamless REST endpoint creation form experience with features like "Import from GraphiQL," auto-suggested name and URL, and more.
- Easily navigate and manage your RESTified endpoints with an improved listing page, equipped with search and HTTP Request Method filters.
- Improvements to REST endpoints details page for a better overall experience.
Bug fixes and improvements
Server
- Fixes a bug for MS SQL Server data sources where aggregation queries would fail.
- Improves handling of inherited roles in Postgres and SQL Server.
- Allow the return type for a Native Query to be defined inline to avoid name clashes.
- Adds a new env var
HASURA_GRAPHQL_REMOTE_SCHEMA_SKIP_NULLS
to control whether explicitnull
values are forwarded to Remote Schemas. - When Postgres source connections fail to connect, the source name will now be logged as part of the error.
- Fixes a bug for Postgres data sources where aggregating over Computed Fields while also ordering or using the nodes field would cause the query to fail.
- Allows dropping remote relationships using the
*_delete_remote_relationship
as part of an atomic metadata change with thebulk_atomic
Metadata API. - Adds a log line for an Event Trigger timeout error.
- Allows dropping table relationships using
*_drop_relationship
as part of an atomic metadata change with thebulk_atomic
Metadata API. - Fixes issue where we were not ignoring some Cloudflare-related headers while computing cache key (with "forward client headers"). (Cloud / Enterprise edition only)
- Added support for exporting OpenTelemetry metrics: now, you can quickly and easily enable an OpenTelemetry-compatible metrics endpoint using the Console, CLI, or API. (Cloud Enterprise / Enterprise edition only)
Console
- Improved the user experience for Postgres array data types in the Console.
- Fixed headers issue with mutation input validation. Now we support templating for headers value from env vars
- Fix issue with the new tracking UI where the pagination does not reset when search is applied
- Fix issue with missing details in edit postgres connection when SSL settings are only partially filled.
- Display and allow editing database permission comments.
- Reflect new values when saving permissions on some databases.
template
andtimeout
properties can be provided from the console for Data Connector-backed databases connections.- In the Raw SQL page, SQL queries with more than 5000 characters are not persisted across sessions anymore to avoid performance issues.
- Resolves an issue where the permissions editor for Postgres/MS SQL databases could show stale data for table relationships.
- Fixes issue with MSSQL where the creation of table with a default value in a text column prevented the table's creation (fixes: 9737).
- Fixes issue with MSSQL and Cockroach DB where browse rows records would not render when the
source
had GraphQL customization. - Fixes bug preventing non-existent columns from being highlighted as errors in the GraphiQL editor.
- Adds a search bar to RESTified Endpoints table.
- Adds the ability to edit existing Native Queries and add relationships between two Native Queries on the same source in the Console.
- Credentials are no longer suggested for the
x-hasura-admin-secret
header in API Explorer. (not working on Chrome for now due to an open chrome issue). - Support tracking Mongo collections using Logical Models. (Cloud / Enterprise edition only)
Data Connectors
- Adds support for explicitly listing desired schemas from Snowflake, via the new
include_schemas
config option. (Cloud / Enterprise edition only)
v2.30.1
Changelog
This is a patch release for v2.30
Bugfixes and Improvements
Server
- Fix handling of MS SQL connections without pooling. The Server previously always assumed there is a connection pool, leading to a crash when trying to disable it.
v2.30.0
Changelog
Highlights
Create REST endpoints from a table with one click
With a single click in the Data
view of the Console, you can create REST endpoints from tables 🎉 By simply navigating to a table, you can choose which CRUD operations to create, and then interact with these endpoints from the API
tab of the Console.
Behaviour changes
- Update Hasura WebSockets to adhere to the
graphql-ws
protocol standards for cases where connection initialization fails. Upon encountering a failed initialization, the connection is now closed with a server error code4403: Forbidden
, in accordance with the specifications mentioned in the spec.
Bug fixes and improvements
Server
- For SQL Server, it is now possible to disable the connection pool entirely by setting the source configuration's
"pool_settings"
to{"enable": false}
. - Add
operation_name
to subscription Prometheus metrics and Query Tags from parsed executable document when not explicitly included in the body of the request from the client. - Use the knowledge of a column's nullability to generate simpler permissions SQL expressions for columns that are not nullable (fixes #9637).
- You can now create multiple table relationships (using
create_array_relationship
andcreate_object_relationship
) within a single metadata transaction using thebulk_atomic
Metadata API. - Extend
livequery-poller-log
to log the error details for bothlive queries
andstreaming
subscriptions in the case of any error. Previously there was no way for a user to debug or know what went wrong when the poller thread goes in an error state. - Adds more detailed error messages on HTTP exception errors in log lines for Event and Scheduled Triggers improving the clarity and ease of troubleshooting.
- Logical Model array/object fields are no longer required in order to create Native Query relationships.
- Support
__typename
for namespaced subscriptions (fixes #8174). - Fix over-zealous validation for relationships with
after_parent
insertion order. This is expected to fix issues #8522, #9451, and #9709. - A failing Postgres connection will now log a JSON object containing the number of times the connection has been retried, and the host to which a connection is being attempted. (Cloud / Enterprise edition only)
- Fix
hasura_active_subscription_pollers_in_error_state
metric not decrementing when subscriptions are closed. (Cloud / Enterprise edition only)
Console
- Fix manual relationship creation for CockroachDB on the Console.
- Permissions can be enabled for Snowflake functions from the Console.
- Display boolean comparator in permissions builder for Postgres Computed fields (fixes #9101).
- Support Function Custom Field customization for GDC-backed data sources.
- Fixes the "Next" button state for paginated row views on the Console. Previously, when there were no more rows, the "Next" button was still enabled.
- Fix an issue where the data tab tree view would not refresh after a SQL execution (fixes #8695).
- Adds support for customizing function root fields in Postgres and Citus.
- Fixes request and response transforms generated when importing from an OpenAPI spec and Kriti reserved keywords are present in field names (fixes #9734).
- Long column names truncated in the Insert & Edit row UI now have an icon that shows the full name on hover.
Data Connectors
- Feature enhancements to the Oracle connector: (Cloud / Enterprise edition only)
- You now have the option to choose the schemas to include in introspection. It accepts a comma separated list that is case sensitive. If left blank it will only return the users owned schema.
- Materialized views will now be returned during introspection and be allowed to track.
- Added multi-schema support for Snowflake. (Cloud / Enterprise edition only)
Build
- Updates base image to get the latest security updates
v2.29.2
Changelog
This is a patch release for v2.29
Bugfixes and Improvements
Server
- For Remote Schema queries, stop forwarding absent variable values as
null
to the Remote Schema, i.e. avoid coercing lack of a variable value tonull
in query arguments.
v2.30.0-beta.1
Changelog
Highlights
Create REST endpoints from a table with one click
With a single click in the Data
view of the Console, you can create REST endpoints from tables 🎉 By simply navigating to a table, you can choose which CRUD operations to create, and then interact with these endpoints from the API
tab of the Console.
Behaviour changes
- Update Hasura WebSockets to adhere to the
graphql-ws
protocol standards for cases where connection initialization fails. Upon encountering a failed initialization, the connection is now closed with a server error code4403: Forbidden
, in accordance with the specifications mentioned in the spec.
Bug fixes and improvements
Server
- Add
operation_name
to subscription Prometheus metrics and Query Tags from parsed executable document when not explicitly included in the body of the request from the client. - Use the knowledge of a column's nullability to generate simpler permissions SQL expressions for columns that are not nullable (fixes #9637).
- You can now create multiple table relationships (using
create_array_relationship
andcreate_object_relationship
) within a single metadata transaction using thebulk_atomic
Metadata API. - Extend
livequery-poller-log
to log the error details for bothlive queries
andstreaming
subscriptions in the case of any error. Previously there was no way for a user to debug or know what went wrong when the poller thread goes in an error state. - Adds more detailed error messages on HTTP exception errors in log lines for Event and Scheduled Triggers improving the clarity and ease of troubleshooting.
- Logical Model array/object fields are no longer required in order to create Native Query relationships.
- Support
__typename
for namespaced subscriptions (fixes #8174). - Fix over-zealous validation for relationships with
after_parent
insertion order. This is expected to fix issues #8522, #9451, and #9709. - A failing Postgres connection will now log a JSON object containing the number of times the connection has been retried, and the host to which a connection is being attempted. (Cloud / Enterprise edition only)
- Fix
hasura_active_subscription_pollers_in_error_state
metric not decrementing when subscriptions are closed. (Cloud / Enterprise edition only)
Console
- Fix manual relationship creation for CockroachDB on the Console.
- Permissions can be enabled for Snowflake functions from the Console.
- Display boolean comparator in permissions builder for Postgres Computed fields (fixes #9101).
- Support Function Custom Field customization for GDC-backed data sources.
- Fixes the "Next" button state for paginated row views on the Console. Previously, when there were no more rows, the "Next" button was still enabled.
- Fix an issue where the data tab tree view would not refresh after a SQL execution (fixes #8695).
- Adds support for customizing function root fields in Postgres and Citus.
- Fixes request and response transforms generated when importing from an OpenAPI spec and Kriti reserved keywords are present in field names (fixes #9734).
- Long column names truncated in the Insert & Edit row UI now have an icon that shows the full name on hover.
Data Connectors
- Feature enhancements to the Oracle connector: (Cloud / Enterprise edition only)
- You now have the option to choose the schemas to include in introspection. It accepts a comma separated list that is case sensitive. If left blank it will only return the users owned schema.
- Materialized views will now be returned during introspection and be allowed to track.
- Added multi-schema support for Snowflake. (Cloud / Enterprise edition only)
Build
- Updates base image to get the latest security updates
v2.29.1
Changelog
This is a patch release for v2.29
Bugfixes and Improvements
Server
- Add
disable_postgres_arrays
experimental feature flag that can be used to preserve the earlier behavior to output types like_text
for Postgres array fields instead of[String!]
(fix #9756).
v2.11.9
Changelog
This is a patch release for v2.11
Bug fixes and improvements
Build
- Update ubuntu focal base image to get the latest security updates.
v2.29.0
Changelog
Highlights
Introducing Input Validation for GraphQL Mutations [Beta]
Hasura now offers a new permission layer called "Input Validations." This feature secures mutations by using pre-execution HTTP webhooks to validate data inputs. It enhances security, provides fine-grained control, and improves data integrity.
You can configure input validations via the Console through the table permissions section! 🚀
![input-validations](https://private-user-images.githubusercontent.com/8408875/249846118-6e869ce1-8e8a-4f56-b0f1-1293c37305bc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDM4OTUsIm5iZiI6MTczOTAwMzU5NSwicGF0aCI6Ii84NDA4ODc1LzI0OTg0NjExOC02ZTg2OWNlMS04ZThhLTRmNTYtYjBmMS0xMjkzYzM3MzA1YmMucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIwOCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMDhUMDgzMzE1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NGE2ZjJjNmFjYzczNDQwYmRmMWUxMGE0N2Y1YzUyZTcxZWMyNDJhYTQ4YzI2MmU5NzJmNGYyMjNmZjRkYzVkYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.FklZ4AExfLC9O5xOLcQyT9HSEj5o7tjI9UgfkIDUzlY)
Support for native Postgres arrays
Adds support for using native GraphQL arrays with Postgres array fields. Also filtering using _contains
and _contained_in
operators on array fields is now supported. (fixes #348, #7187)
Note that while the earlier format for input to Postgres array fields (ie. "{dog,cat,bat}"
) is still supported, the output type of array fields have changed, for instance, text[]
used to have the type _text
, but will now have [String!]
.
edit: An experimental feature flag disable_postgres_arrays
has been added in v2.29.1
to preserve the earlier behavior.
Behaviour changes
-
Remove Data-connector backed databases from the Raw SQL tab in Console as the feature is not supported for them as yet.
-
Remove feature flag for the new permissions UI on Postgres. Use the existing UI for Postgres DBs.
-
Removing a tracked source from the Console will now cascade delete any dependant metadata objects on other sources.
-
The output type of Postgres array fields has changed, for example, for
text[]
fields from_text
to[String!]
. See highlight for "Support for native Postgres arrays" above for more details. -
The cumulative header size limit for HTTP requests is set to 1MB. (Cloud only)
Bug fixes and improvements
Server
- Restore function of the
optimize_permission_filters
experimental feature. - Add support for
{{}}
style templates for headers in Actions, Remote Schemas and Event Triggers. You can specify the template as the header value. e.g.bearer {{TOKEN_ENV_VAR}}
- Check for, and disallow, conflicting array and object relationships on the same Native Query.
- Properly handle MS SQL Server inserts with an empty array of values (resolves #8959).
- Add support for setting a default isolation level for MS SQL Server sources and set the default behaviour to
read-committed
. - Fix a bug with the Schema Registry where we sent older Metadata resource versions and inconsistent schemas. (Cloud only)
- Add a new environment variable
HASURA_GRAPHQL_MAX_TOTAL_HEADER_LENGTH
, to configure the cumulative header size limit (in bytes) for HTTP requests, with a default value of 1MB. (Community / Enterprise edition only)
Console
- Fix navigation when a data source is removed.
- The table header for the browse row UI is now sticky.
- Improve table tracking UI for Postgres/MS SQL Server. This is an experimental feature and can be enabled from
Settings > Feature Flags > Enable new Table Tracking UI for Postgres & SQL Server
- Add missing common operators in permissions for types:
geography
andgeometry
- Fix array relationship details not showing and allow untracking which was not working in certain edge conditions in new relationships UI. (resolves #9713, #9595)
- Add a Logical Models Details view.
- Allows nesting of Logical Models on creation. Logical Models can also now be marked as arrays in order to have one-to-many relationships defined.
- Enable browse rows and relationship tabs for MongoDB. (Cloud / Enterprise edition only)
- Improves error handling for the database latency check when Hasura cannot connect to the project's connected data source. (Cloud only)
Data Connectors
- Add support for SQL
contains
comparisons (case-sensitive) for Strings. (Cloud / Enterprise edition only)
Build
- Update ubuntu jammy base image to get the latest security updates.
v2.28.2
Changelog
This is a patch release for v2.28
Bugfixes and Improvements
Server
- Fix a regression where
null
values were rejected for nullable types in Remote Schemas and query validation errors were thrown.
v2.29.0-beta.1
Changelog
Highlights
Introducing Input Validation for GraphQL Mutations [Beta]
Hasura now offers a new permission layer called "Input Validations." This feature secures mutations by using pre-execution HTTP webhooks to validate data inputs. It enhances security, provides fine-grained control, and improves data integrity.
You can use the environment variable HASURA_GRAPHQL_EXPERIMENTAL_FEATURES = input_validations
to enable this on the Server and you can configure input validations via the Console through the table permissions section! 🚀
![input-validations](https://private-user-images.githubusercontent.com/8408875/249846118-6e869ce1-8e8a-4f56-b0f1-1293c37305bc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDM4OTUsIm5iZiI6MTczOTAwMzU5NSwicGF0aCI6Ii84NDA4ODc1LzI0OTg0NjExOC02ZTg2OWNlMS04ZThhLTRmNTYtYjBmMS0xMjkzYzM3MzA1YmMucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIwOCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMDhUMDgzMzE1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NGE2ZjJjNmFjYzczNDQwYmRmMWUxMGE0N2Y1YzUyZTcxZWMyNDJhYTQ4YzI2MmU5NzJmNGYyMjNmZjRkYzVkYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.FklZ4AExfLC9O5xOLcQyT9HSEj5o7tjI9UgfkIDUzlY)
Behaviour changes
-
Remove Data-connector backed databases from the Raw SQL tab in Console as the feature is not supported for them as yet.
-
Remove feature flag for the new permissions UI on Postgres. Use the existing UI for Postgres DBs.
-
Removing a tracked source from the Console will now cascade delete any dependant metadata objects on other sources.
-
The cumulative header size limit for HTTP requests is set to 1MB. (Cloud only)
Bug fixes and improvements
Server
- Implements support for using native GraphQL arrays with Postgres arrays, including filtering with
_contains
and_contained_in
. - Restore function of the
optimize_permission_filters
experimental feature. - Add support for
{{}}
style templates for headers in Actions, Remote Schemas and Event Triggers. You can specify the template as the header value. e.g.bearer {{TOKEN_ENV_VAR}}
- Check for, and disallow, conflicting array and object relationships on the same Native Query.
- Properly handle MS SQL Server inserts with an empty array of values (resolves #8959)
- Adds support for setting a default isolation level for MS SQL Server sources and set the default behaviour to
read-committed
. - Adds a new environment variable
HASURA_GRAPHQL_MAX_TOTAL_HEADER_LENGTH
, to configure the cumulative header size limit (in bytes) for HTTP requests, with a default value of 1MB. (Community / Enterprise edition only) - Fixes a bug with the Schema Registry where we sent older Metadata resource versions and inconsistent schemas. (Cloud only)
Console
- Fix navigation when a data source is removed.
- The table header for the browse row UI is now sticky.
- Improve table tracking UI for Postgres/MS SQL Server. This is an experimental feature and can be enabled from
Settings > Feature Flags > Enable new Table Tracking UI for Postgres & SQL Server
- Add missing common operators in permissions for types:
geography
andgeometry
- Fix array relationship details not showing and allow untracking which was not working in certain edge conditions in new relationships UI. (resolves #9713, #9595)
- Allows nesting of Logical Models on creation. Logical Models can also now be marked as arrays in order to have one-to-many relationships defined.
- Adds a Logical Models Details view.
- Enable browse rows and relationship tabs for MongoDB. (Cloud / Enterprise edition only)
- Improves error handling for the database latency check when Hasura cannot connect to the project's connected data source. (Cloud only)
Build
- Upgrades our Docker images to Ubuntu 22.04 to benefit from the latest security patches and improvements.