Releases: hasura/graphql-engine
v2.24.1
Changelog
This is a patch release for v2.24.0
Bug fixes and improvements
- Fix a regression where connecting to Snowflake would fail if the database or schema name was not entirely uppercase. (Cloud / Enterprise edition only)
- Allow turning on/off the metrics endpoint (using the
HASURA_GRAPHQL_ENABLED_APISenv var) without any downtime of the Cloud project. (Cloud only) - Fix missing SSO login buttons in EE console. (Enterprise edition only)
v2.24.0
Changelog
Highlights
CockroachDB support is now GA 🎉
We are delighted to announce that CockroachDB support is now out of beta and generally available to all Hasura users. See docs.
MySQL, MariaDB and Oracle data connectors are now in Beta (Cloud / Enterprise edition only)
We are delighted to announce that our MySQL, MariaDB and Oracle data connectors are now in beta. These data connectors support queries, mutations (INSERT, UPDATE, DELETE), table relationships, remote relationships and permissions.
Query Cache configuration options (Enterprise edition only)
The following new engine flag / environment variable options are added for configuring query cache behaviour:
| Env var | Flag | Description |
|---|---|---|
HASURA_QUERY_CACHE_MAX_TTL |
--query-cache-max-ttl |
Maximum Query Cache TTL value in seconds. Default: 600 seconds |
HASURA_GRAPHQL_CACHE_BUCKET_RATE |
--query-cache-bucket-rate |
Recharge rate for the Query Response Cache token bucket. Default: 100,000 bytes/second |
HASURA_GRAPHQL_CACHE_MAX_ENTRY_SIZE |
--query-cache-max-entry-size |
Maximum cache entry size in MB, default: 1 MB |
Single Sign-On support for the Console (Enterprise edition only)
Adds more secure auth options to the Console beside the Admin secret and Hasura collaborator tokens. You can connect any Identity provider which supports OAuth 2.0 / OpenID Connect with the auth code flow. For more information on how to set this up, please see our docs.
Behaviour changes
-
Hasura doesn't allow certain queries to be cached. Namely, Remote Schema or Action queries with
forward_client_headersset totrue.Currently, Hasura throws an error and fails the query. The behavior is now changed to not throw an error. Hasura now always fetches data from the upstream API, skips the cache, and returns the response with a Warning header.
The warning headers are as follows:
warning: 199 - Actions that forward client headers cannot currently be cached warning: 199 - Remote schemas or joins that forward client headers cannot currently be cachedNote that Remote Schemas with
forward_client_headers: truewere erroneously allowed to cache before.(Cloud / Enterprise edition only)
Bug fixes and improvements
Server
- A new metadata API
bulk_keep_goingis added. This has exactly the same interface asbulkwhen all commands succeed, but instead of returning the first error when any command fails, errors will be returned in the list of responses just as successes are. This command also always returns a 200 response code, regardless of how many commands succeed or fail. - Allow an unauthenticated user to query a remote schema to remote schema relationship when remote schema permissions are disabled (ie.
HASURA_GRAPHQL_ENABLE_REMOTE_SCHEMA_PERMISSIONS=false) - Add
codefield in metadata API warnings. - Disallow remote schema root fields (where
forward_client_headersistrue) from being cached. (Cloud / Enterprise edition only) - Expose the
hasura_active_multiplexed_subscriptionsmetric for better observability in the subscriptions subsystem. (Cloud / Enterprise edition only) - For Athena, Snowflake, MariaDB, MySQL and Oracle data sources, tables added to the database after Hasura has started will now be visible in the console so that you can track them. Changes to tracked tables will be visible in the console and in the GraphQL API when you refresh the Hasura metadata or individual database source. (Cloud / Enterprise edition only)
- Fix bug where cache key headers were sent in the response even when the response was not cached. Now, we only send back the
warningheader which specifies the cache specific warning with code. (Cloud / Enterprise edition only)
Console
- Add connection template validation for dynamic database connection routing. (Cloud / Enterprise edition only)
- Fix an issue with table names for Athena, Snowflake and MySQL being rendered as
undefinedin the metadata status page. (Cloud / Enterprise edition only)
Data Connectors
- For MySQL, MariaDB and Oracle data sources, mutations are no longer incorrectly created for views. In addition, primary key columns are now updatable. (Cloud / Enterprise edition only)
- Snowflake numeric columns with a zero scale will now be correctly typed as integers in GraphQL instead of floats. (Cloud / Enterprise edition only)
Build
- Updates ubuntu focal base image to get the latest security updates
v2.24.0-beta.1
Changelog
Highlights
Query Cache configuration options (Enterprise edition only)
The following new engine flag / environment variable options are added for configuring query cache behaviour:
| Env var | Flag | Description |
|---|---|---|
HASURA_QUERY_CACHE_MAX_TTL |
--query-cache-max-ttl |
Maximum Query Cache TTL value in seconds. Default: 600 seconds |
HASURA_GRAPHQL_CACHE_BUCKET_RATE |
--query-cache-bucket-rate |
Recharge rate for the Query Response Cache token bucket. Default: 100,000 bytes/second |
HASURA_GRAPHQL_CACHE_MAX_ENTRY_SIZE |
--query-cache-max-entry-size |
Maximum cache entry size in MB, default: 1 MB |
Single Sign-On support for the Console (Enterprise edition only)
Adds more secure auth options to the Console beside the Admin secret and Hasura collaborator tokens. You can connect any Identity provider which supports OAuth 2.0 / OpenID Connect with the auth code flow. For more information on how to set this up, please see our docs.
CockroachDB support is now GA 🎉
We are delighted to announce that CockroachDB support is now out of beta and generally available to all Hasura users.
Bug fixes and improvements
Server
- A new metadata API
bulk_keep_goingis added. This has exactly the same interface asbulkwhen all commands succeed, but instead of returning the first error when any command fails, errors will be returned in the list of responses just as successes are. This command also always returns a 200 response code, regardless of how many commands succeed or fail. - Allow an unauthenticated user to query a remote schema to remote schema relationship when remote schema permissions are disabled (ie.
HASURA_GRAPHQL_ENABLE_REMOTE_SCHEMA_PERMISSIONS=false) - Add
codefield in metadata API warnings. - Disallow remote schema root fields (where
forward_client_headersistrue) from being cached. (Cloud / Enterprise edition only) - Expose the
hasura_active_multiplexed_subscriptionsmetric for better observability in the subscriptions subsystem. (Cloud / Enterprise edition only) - For Athena, Snowflake, MariaDB, MySQL and Oracle data sources, tables added to the database after Hasura has started will now be visible in the console so that you can track them. Changes to tracked tables will be visible in the console and in the GraphQL API when you refresh the Hasura metadata or individual database source. (Cloud / Enterprise edition only)
- Fix bug where cache key headers were sent in the response even when the response was not cached. Now, we only send back the
warningheader which specifies the cache specific warning with code. (Cloud / Enterprise edition only)
Console
- Add connection template validation for dynamic database connection routing. (Cloud / Enterprise edition only)
Data Connectors
- For MySQL, MariaDB and Oracle data sources, mutations are no longer incorrectly created for views. In addition, primary key columns are now updatable. (Cloud / Enterprise edition only)
- Snowflake numeric columns with a zero scale will now be correctly typed as integers in GraphQL instead of floats. (Cloud / Enterprise edition only)
Build
- Updates ubuntu focal base image to get the latest security updates
v2.23.0
Changelog
Highlights
Hasura Enterprise Edition Trial
Adds Hasura Enterprise Edition free trial to explore Hasura’s enterprise features for 30 days.
Hasura Enterprise Edition brings you a host of performance, security, observability features and support for databases like Snowflake, Amazon Athena, MySQL and Oracle. Read more to know about all the Hasura EE features that can help you scale your API for production.
Get Started with Hasura Enterprise Edition trial in under one minute.
MariaDB support (alpha) (Cloud / Enterprise edition only)
We’re delighted to release the alpha version of our MariaDB data connector, that supports queries, table relationships, remote relationships and permissions for MariaDB databases version 10.5 and higher. For more information on how to set this up, please see our docs. This data connector has been built using Hasura GraphQL Engine Data Connectors.
Database-to-database relationships for Data Connector-based data sources (Cloud / Enterprise edition only)
Add support for creating database-to-database relationships for Athena, Snowflake, Oracle, MySQL, and MariaDB.
Zero downtime environment variable updates on Hasura Cloud (Cloud only)
Updating environment variables in Hasura cloud will now not lead to a project restart that caused a momentary downtime of the API.
Behaviour changes
- Introduce a timeout while processing scheduled events. The timeout will be determined by the lower value, 30 minutes or the response timeout associated with the scheduled event.
- In instances with data connectors, exported metadata includes a mapping from assigned data connector names to configurations. Previously these entries were given in the order they were created. Now the entries are ordered by name instead.
Bug fixes and improvements
Server
- Add metadata APIs
<db_type>_get_source_tablesto list all tables available from a given source. - BigQuery tables with JSON columns can now be tracked and rows can be returned from them.
- Add
connection_templateas an optional argument inpg_test_connection_templateAPI. The given template takes precedence over the source template. (Cloud / Enterprise edition only) - Support queries containing
distinct_onarguments on CockroachDB. - Fix cache clearing endpoints (
/pro/cache/*) which were returning aOAEServerStarterror previously. (Cloud / Enterprise edition only) - Support
_is_nulloperator in SQL Server permissions. - In dev mode, include resolved dynamic db connection template information in API error response's
internalfield (Cloud / Enterprise edition only) - Add new Prometheus metrics for monitoring the cron triggers and one-off triggers. (Enterprise edition only)
- Add new Prometheus metrics
hasura_event_processed_totalandhasura_event_invocations_total(Enterprise edition only) - Improve error message for dynamic db connection template parsing error. (Cloud / Enterprise edition only)
- Improve
schema-synclogs; remove unnecessary logs and refine log messages - Fix regression introduced in
v2.22.0in event trigger log auto cleanup in Postgres sources (Cloud / Enterprise edition only) - Allow running read-only run_sql queries in read-only mode.
Console
- Enable new data tab UI for BigQuery
- Allow tracking relationships from the new manage database view for Data Connector-based data sources
- Show Postgres trigger condition, if present, on table modify page to clarify when a PG trigger actually gets triggered
- Fix a bug that causes the console to crash when parsing
internalproperty of the metadata error response - Fixes bug where databases persist in the nav tree after removing the database from the
Managedatabases screen. - Fix issue with dynamic DB routing not showing up on EE console (Enterprise edition only)
- Fixes a bug where columns with custom GraphQL names could not be used to sort/filter in Browse Rows.
- Fix console crashing issue for Athena & Snowflake tables with JSON columns
- Previously, certain features of the Console would not work when running against a PostgreSQL database that does not allow writes, e.g. a read replica. These are now fixed.
- You can now apply filters when querying data.
- The Modify sub-tab no longer crashes the Console.
- Enables the new database relationship UI by default. Can opt back in to legacy UI using the feature flag.
- UI improvements to Snowflake & Athena tracking section
- Fixes a bug in the new relationships UI that prevented creating a relationship when starting from a view.
Data Connectors
- Fixed issue where the source column was being used instead of the target column in joins in Athena and Snowflake. (Cloud / Enterprise edition only)
- Fixes
Date/DateTimefields being converted tonullin comparisons andwhereclauses in GraphQL Data connectors. (Cloud / Enterprise edition only) - Fixes support for introspection field-only queries in Athena and Snowflake. (Cloud / Enterprise edition only)
Build
- Updates ubuntu focal base image to get the latest security updates
v2.22.1
v2.23.0-beta.1
Changelog
Highlights
Hasura Enterprise Edition Trial
Adds Hasura Enterprise Edition free trial to explore Hasura’s enterprise features for 30 days.
Hasura Enterprise Edition brings you a host of performance, security, observability features and support for databases like Snowflake, Amazon Athena, MySQL and Oracle. Read more to know about all the Hasura EE features that can help you scale your API for production.
Get Started with Hasura Enterprise Edition trial in under one minute.
Behaviour changes
- Introduce a timeout while processing scheduled events. The timeout will be determined by the lower value, 30 minutes or the response timeout associated with the scheduled event.
- In instances with data connectors, exported metadata includes a mapping from assigned data connector names to configurations. Previously these entries were given in the order they were created. Now the entries are ordered by name instead.
Bug fixes and improvements
Server
- Add metadata APIs
<db_type>_get_source_tablesto list the currently tracked tables within a given source. - BigQuery tables with JSON columns can now be tracked and rows can be returned from them.
- Support queries containing
distinct_onarguments on CockroachDB. - Support
_is_nulloperator in SQL Server permissions. - Improve
schema-synclogs; remove unnecessary logs and refine log messages - Allow running read-only run_sql queries in read-only mode.
- Fix cache clearing endpoints (
/pro/cache/*) which were returning aOAEServerStarterror previously. (Cloud / Enterprise edition only) - Add
connection_templateas an optional argument inpg_test_connection_templateAPI. The given template takes precedence over the source template. (Cloud/Enterprise edition only) - In dev mode, include resolved dynamic db connection template information in API error response's
internalfield (Cloud / Enterprise edition only) - Add new Prometheus metrics for monitoring the cron triggers and one-off triggers. (Enterprise edition only)
- Add new Prometheus metrics
hasura_event_processed_totalandhasura_event_invocations_total(Enterprise edition only) - Improve error message for dynamic db connection template parsing error. (Cloud / Enterprise edition only)
- Fix regression introduced in
v2.22.0in event trigger log auto cleanup in Postgres sources (Cloud / Enterprise edition only)
Console
- Enable new data tab UI for BigQuery
- Allow tracking relationships from the new manage database view for Data Connector-based data sources
- Show Postgres trigger condition, if present, on table modify page to clarify when a PG trigger actually gets triggered
- Fixes a bug where columns with custom GraphQL names could not be used to sort/filter in Browse Rows.
- Fix console crashing issue for Athena & Snowflake tables with JSON columns
- Previously, certain features of the Console would not work when running against a PostgreSQL database that does not allow writes, e.g. a read replica. These are now fixed.
- You can now apply filters when querying data.
- The Modify sub-tab no longer crashes the Console.
- Enables the new database relationship UI by default. Can opt back in to legacy UI using the feature flag.
- UI improvements to Snowflake & Athena tracking section
- Fixes a bug in the new relationships UI that prevented creating a relationship when starting from a view.
Data Connectors
- Fixes support for introspection field-only queries in Athena and Snowflake. (Cloud / Enterprise edition only)
Build
- Updates ubuntu focal base image to get the latest security updates
v2.22.0
Changelog
Highlights
Apollo Federation (GA)
Apollo federation support is now stable. You need to turn on the feature using either the flag --enable-apollo-federation or by
setting the environment variable HASURA_GRAPHQL_ENABLE_APOLLO_FEDERATION to true.
Please note that the existing way of turning on the feature (via HASURA_GRAPHQL_EXPERIMENTAL_FEATURES) is still supported but is deprecated.
Dynamic DB Connection Routing (GA) (Cloud / Enterprise edition only)
Dynamic DB connection routing has now been added to console and it is now GA. Hasura Cloud and Enterprise customers can now leverage dynamic routing to implement different kinds of database topology patterns with Hasura.
Read more in the docs
Cache webhook auth token (Cloud / Enterprise edition only)
Hasura can now cache the authentication webhook response in the webhook mode.
For caching you need to return either:
- a
Cache-Controlvariable, modeled on the Cache-Control HTTP Header, to specify a relative expiration time, in seconds. - an
Expiresvariable, modeled on the Expires HTTP Header, to specify an absolute expiration time. The expected format is"%a, %d %b %Y %T GMT".
Behaviour changes
Updating from v2.22.0-beta.1
v2.22.0-beta.2 removed a Hasura metadata catalog migration that was added in v2.22.0-beta.1 on the hdb_catalog.event_log and hdb.event_invocation_logs tables.
With this change, on upgrading to v2.22.0 from v2.22.0-beta.1, the following startup error will be thrown:
{
"detail": {
"kind": "catalog_migrate",
"info": { "code": "not-supported", "error": "Expected source catalog version <= 3, but the current version is 4", "path": "$"}
},
"level": "error",
"timestamp": "2023-03-28T10:17:24.289+0530",
"type": "startup"
}To fix these errors run the following SQL on the database where the event triggers are defined on and restart the Hasura instance.
UPDATE hdb_catalog.hdb_source_catalog_version SET version = 3, upgraded_on= NOW();
ALTER table hdb_catalog.event_log ALTER COLUMN created_at SET DEFAULT NOW();
ALTER table hdb_catalog.event_invocation_logs ALTER COLUMN created_at SET DEFAULT NOW();Order change in exported per-role API limits metadata (Cloud / Enterprise edition only)
In instances with configured per-role API limits, exported metadata includes a mapping from role names to limit configuration. Previously these entries were given in the order they were created. Now the entries are ordered by role name instead.
Bug fixes and improvements
Server
- Add environment variable
HASURA_GRAPHQL_AUTH_HOOK_SEND_REQUEST_BODYto remove the request body from the request to the authentication webhook (docs) - Add additional error information to invocation logs when an HTTP Exception Error is thrown during event triggers and scheduled triggers (one-off, cron) execution
- Fix bug which added the query to the operation key for the
http-logfor metadata queries irrespective of the value of the environment variableHASURA_GRAPHQL_ENABLE_METADATA_QUERY_LOGGING - Add field
detail.operation.query.typetohttp-loglog types always whenever available - Fix row limits applied to tables via permissions being incorrectly applied to aggregates of said tables in Data Connector-based data sources
- Fix table queries which used only introspection fields not returning any data when made to Data Connector-based data sources
- Fix scheduled events not showing up on console when the payload construction is failed (fix #9311)
- Fixed bug in Query Response Cache bucket size and bucket rate defaulting. (Cloud / Enterprise edition only)
- Throw a warning along with the result of the
set_api_limitsAPI request if a time limit greater than the cloud project limit is set in the API request. (Cloud only)
Console
- Add date-time data entry pickers during row insert for Data Connector-based data sources
- Fix error notifications for slow running queries
- Disable non insertable columns in the insert row form for Data Connector-based data sources
- Fix bug with
untracktable for Data Connector-based data sources.
v2.22.0-beta.2
Changelog
Behaviour change
Removes a Hasura metadata catalog migration that was added in v2.22.0-beta.1 on the hdb_catalog.event_log and hdb.event_invocation_logs tables.
With this change, on upgrading to v2.22.0-beta.2 from v2.22.0-beta.1, the following startup error will be thrown:
{
"detail": {
"kind": "catalog_migrate",
"info": { "code": "not-supported", "error": "Expected source catalog version <= 3, but the current version is 4", "path": "$"}
},
"level": "error",
"timestamp": "2023-03-28T10:17:24.289+0530",
"type": "startup"
}To fix these errors run the following SQL on the database where the event triggers are defined on and restart the Hasura instance.
UPDATE hdb_catalog.hdb_source_catalog_version SET version = 3, upgraded_on= NOW();
ALTER table hdb_catalog.event_log ALTER COLUMN created_at SET DEFAULT NOW();
ALTER table hdb_catalog.event_invocation_logs ALTER COLUMN created_at SET DEFAULT NOW();v2.22.0-beta.1
Changelog
Highlights
Apollo Federation (GA)
Apollo federation support is now stable. You need to turn on the feature using either the flag --enable-apollo-federation or by
setting the environment variable HASURA_GRAPHQL_ENABLE_APOLLO_FEDERATION to true.
Please note that the existing way of turning on the feature (via HASURA_GRAPHQL_EXPERIMENTAL_FEATURES) is still supported but is deprecated.
Dynamic DB Connection Routing (GA) (Cloud / Enterprise edition only)
Dynamic DB connection routing has now been added to console and it is now GA. Hasura Cloud and Enterprise customers can now leverage dynamic routing to implement different kinds of database topology patterns with Hasura.
Read more in the docs
Cache webhook auth token (Cloud / Enterprise edition only)
Hasura can now cache the authentication webhook response in the webhook mode.
For caching you need to return either:
- a
Cache-Controlvariable, modeled on the Cache-Control HTTP Header, to specify a relative expiration time, in seconds. - an
Expiresvariable, modeled on the Expires HTTP Header, to specify an absolute expiration time. The expected format is"%a, %d %b %Y %T GMT".
auth-hook.caching.demo.webm
Behaviour changes
- In instances with configured per-role API limits, exported metadata includes a mapping from role names to limit configuration. Previously these entries were given in the order they were created. Now the entries are ordered by role name instead. (Cloud / Enterprise edition only)
Bug fixes and improvements
Server
- Fix the
created_attimestamp value in Postgres event triggers by setting UTC as the default timezone - Add environment variable
HASURA_GRAPHQL_AUTH_HOOK_SEND_REQUEST_BODYto remove the request body from the request to the authentication webhook (docs) - Add additional error information to invocation logs when a HTTP Exception Error is thrown during event triggers and scheduled triggers (one-off, cron) execution
- Fix bug which added the query to the operation key for the
http-logfor metadata queries irrespective of the value of the environment variableHASURA_GRAPHQL_ENABLE_METADATA_QUERY_LOGGING - Add field
detail.operation.query.typetohttp-loglog types always whenever available - Fix row limits applied to tables via permissions being incorrectly applied to aggregates of said tables in Data Connector-based data sources
- Fix table queries which used only introspection fields not returning any data when made to Data Connector-based data sources
- Fix scheduled events not showing up on console when the payload construction is failed (fix #9311)
- Fixed bug in Query Response Cache bucket size and bucket rate defaulting. (Cloud / Enterprise edition only)
Console
- Add date-time data entry pickers during row insert for Data Connector-based data sources
- Fix error notifications for slow running queries
- Disable non insertable columns in the insert row form for Data Connector-based data sources
- Fix bug with
untracktable for Data Connector-based data sources.
v2.21.0
Changelog
Highlights
Oracle Support (Alpha) (Cloud / Enterprise edition only)
We’re delighted to release the alpha version of our Oracle data connector, that supports queries, table relationships and permissions for Oracle databases version 18 and higher. For more information on how to set this up, please see our docs. This data connector has been built using Hasura GraphQL Engine Data Connectors.
Support for MySQL Mutations (Alpha) (Cloud / Enterprise edition only)
We’re delighted to provide support for mutations (INSERT, UPDATE, DELETE) in our MySQL alpha data connector for MySQL databases version 8.0 and higher. For more information on how to set this up, please see our docs.
Behaviour changes
Bug fixes and improvements
Server
- A new kind of log,
execution-log, has been added. Within this log, the statistics log returns relevant information to the query. At the moment, the only information logged are the job details for BigQuery queries. - Remote relationships now cannot be configured when the target data source does not support them. Previously these were allowed to be added but would fail at query time.
- Data Connector data sources can now be used as the source and/or target of remote relationships. Please note that only data connector agents that support foreach queries can be used as a target in a remote relationship.
Console
- Fix headers getting removed from event triggers configuration while updating trigger options
- Fix subscriptions in CLI console API explorer when connected to a Hasura instance that only supports
https/wss(fix #9475) - Show year in the date column while displaying event triggers, cron triggers and scheduled events
- Respect the GraphQL API naming convention while tracking a suggested relationship.
- Fix a bug that would cause the DB tree view to not show up if a Data Connector backed database is the only connected database.
- Allow removing event trigger auto clean-up configuration (Enterprise edition only)
Data Connectors
- The SQLite data connector agent now supports being a target of a remote relationship
Build
- Updates base image to get the latest security updates