Releases: hasura/graphql-engine
v2.33.2
v2.32.2
v2.33.1
Changelog
This is a patch release for v2.33
Bug fixes and improvements
Data Connectors
- Fix Oracle schema introspection for older Oracle versions (v18) (Enterprise edition only)
- Adds a configurable Retry mechanism to query execution in the Data Connector. Currently configured to retry 5 times, with a 1 second delay between each attempt. (Enterprise edition only)
v2.33.0
Changelog
Highlights
ClickHouse support (Beta)
We’re delighted to release the beta version of our ClickHouse data connector, which supports queries, table relationships, remote relationships, and permissions for ClickHouse.
For more information on how to set this up, please see our docs. This integration is built using Hasura Data Connectors.
Support remote source relationships in permissions
Hasura now supports using remote source relationships in permission predicates. This means you can now define permission based on a column from a remote Postgres source.
Limitations
-
The remote relationship predicate must follow the following template:
{ "<rel name>": { "<remote column name>": { "<op>": "<some session variable name or some literal text>" } } }
This implies the following:
- The remote relationship predicate can only be one level deep although, the predicate can be nested in an
_and
,_or
,_not
or_exists
node. - Only
_eq
,_neq
,_gt
,_lt
,_gte
,_lte
,_in
,_nin
,_like
,_nlike
and_is_null
operators are supported for comparing fields - Only columns from the remote source can be compared with session variables or literal text only.
- The remote relationship predicate can only be one level deep although, the predicate can be nested in an
-
The remote source relationship permission can only be defined for Postgres and data connector backends.
-
The remote source relationship RHS backend can be Postgres only.
Support for relationships between Tables and Native Queries
Hasura now allows returning data in a table along with related data returned from a Native Query using a nested GraphQL query.
Support for Logical Models & Native Queries on Snowflake (Cloud / Enterprise edition only)
Hasura now supports creating Logical Models & Native Queries on Snowflake data sources.
Behaviour changes
- Adds Native Query support for Data Connectors and implements the feature in SQLite and Snowflake agents. This change breaks backwards compatibility for the Data Connector Agent API, and as such, agents will need to be upgraded along with HGE.
- Changes log level to
error
for Trigger failures in Hasura Cloud. Previously, the log level for Trigger errors wasinfo
. (Hasura Cloud only)
Bug fixes and improvements
Server
- The Explain feature (also known as Analyze in the Hasura Console) now returns a full execution plan for SQL Server. Previously, the execution plan was not generated; only the generated SQL was shown.
- Fixes issue where
null
valued variables with customized types were causing a GraphQL exception from the upstream server (fix #9757). - Adds a new environment variable
HASURA_GRAPHQL_ENABLE_TRIGGERS_ERROR_LOG_LEVEL
to set the log-level of Event Triggers failures toerror
. By default, the value is set to log-levelInfo
. (Community / Enterprise edition only) - Adds support for the
_contains
and_contained_in
operators for PostgreSQL arrays to be used with permissions. - Adds dynamic labels to Prometheus metric
hasura_websocket_messages_sent_bytes_total
. (Cloud / Enterprise edition only) - Adds new Prometheus metrics
hasura_postgres_connection_init_time
andhasura_postgres_pool_wait_time
. (Cloud / Enterprise edition only) - Adds new Prometheus/OpenTelemetry metrics for monitoring OTLP telemetry export:
hasura_otel_sent_spans
andhasura_otel_dropped_spans
. (Cloud / Enterprise edition only)
Console
- Adds a feature flag to enable Performance Mode on the Data Tab. Performance Mode offers a faster experience, especially with larger databases, but with fewer database authoring features.
- Fix saving permissions of string columns with numbers as value.
- Improve Remote Schema permissions UI by allowing search and more clearly displaying available types.
- Better descriptive error handling for Permissions on Logical Model and data-connector based databases.
- Add console support for adding and editing remote schema to Data Connector-based databases
- Fix issue with error handling on the table relationship UI for failed
bulk
responses. - Fix Apollo Federation UI to extend table types in other subgraphs.
- Fix tracking of MongoDB collections with
-
in their names. - Fix an issue where an error notification would appear even upon successfully creating a remote relationship.
- Fix an issue where column data types were being incorrectly reported as
string
for tables of Data-connector backed data sources. - New MongoDB collection tracking flow added to the Console. (Cloud / Enterprise edition only)
- Add support for MongoDB nested objects in the permissions editor. (Cloud / Enterprise edition only)
CLI
- Adds support for Snowflake functions. Fixes metadata export failure where Snowflake UDFs are configured. (Cloud / Enterprise edition only)
Data Connectors
- Improved the performance of working with Data Connector-based data sources (such as Oracle, Snowflake, MySQL, MariaDB) that have many tables. Listing untracked tables in the Console is significantly faster, and tracking only a subset of all available tables is also significantly faster.
v2.33.0-beta.1
Changelog
Highlights
ClickHouse support (Beta)
We’re delighted to release the beta version of our ClickHouse data connector, which supports queries, table relationships, remote relationships, and permissions for ClickHouse.
For more information on how to set this up, please see our docs. This integration is built using Hasura Data Connectors.
Support remote source relationships in permissions
Hasura now supports using remote source relationships in permission predicates. This means you can now define permission based on a column from a remote Postgres source.
Limitations
-
The remote relationship predicate must follow the following template:
{ "<rel name>": { "<remote column name>": { "<op>": "<some session variable name or some literal text>" } } }
This implies the following:
- The remote relationship predicate can only be one level deep although, the predicate can be nested in an
_and
,_or
,_not
or_exists
node. - Only
_eq
,_neq
,_gt
,_lt
,_gte
,_lte
,_in
,_nin
,_like
,_nlike
and_is_null
operators are supported for comparing fields - Only columns from the remote source can be compared with session variables or literal text only.
- The remote relationship predicate can only be one level deep although, the predicate can be nested in an
-
The remote source relationship permission can only be defined for Postgres and data connector backends.
-
The remote source relationship RHS backend can be Postgres only.
Support for relationships between Tables and Native Queries
Hasura now allows returning data in a table along with related data returned from a Native Query using a nested GraphQL query.
Support for Logical Models & Native Queries on Snowflake (Cloud / Enterprise edition only)
Hasura now supports creating Logical Models & Native Queries on Snowflake data sources.
Behaviour changes
- Adds Native Query support for Data Connectors and implements the feature in SQLite and Snowflake agents. This change breaks backwards compatibility for the Data Connector Agent API, and as such, agents will need to be upgraded along with HGE.
Bug fixes and improvements
Server
- The Explain feature (also known as Analyze in the Hasura Console) now returns a full execution plan for SQL Server. Previously, the execution plan was not generated; only the generated SQL was shown.
- Fixes issue where
null
valued variables with customized types were causing a GraphQL exception from the upstream server (fix #9757). - Adds support for the
_contains
and_contained_in
operators for PostgreSQL arrays to be used with permissions. - Adds dynamic labels to Prometheus metric
hasura_websocket_messages_sent_bytes_total
. (Cloud / Enterprise edition only) - Adds new Prometheus metrics
hasura_postgres_connection_init_time
andhasura_postgres_pool_wait_time
. (Cloud / Enterprise edition only) - Adds new Prometheus/OpenTelemetry metrics for monitoring OTLP telemetry export:
hasura_otel_sent_spans
andhasura_otel_dropped_spans
. (Cloud / Enterprise edition only)
Console
- Adds a feature flag to enable Performance Mode on the Data Tab. Performance Mode offers a faster experience, especially with larger databases, but with fewer database authoring features.
- Fix saving permissions of string columns with numbers as value.
- Improve Remote Schema permissions UI by allowing search and more clearly displaying available types.
- Better descriptive error handling for Permissions on Logical Model and data-connector based databases.
- Add console support for adding and editing remote schema to Data Connector-based databases
- Fix issue with error handling on the table relationship UI for failed
bulk
responses. - Fix Apollo Federation UI to extend table types in other subgraphs.
- New MongoDB collection tracking flow added to the Console. (Cloud / Enterprise edition only)
- Add support for MongoDB nested objects in the permissions editor. (Cloud / Enterprise edition only)
CLI
- Adds support for Snowflake functions. Fixes metadata export failure where Snowflake UDFs are configured. (Cloud / Enterprise edition only)
Data Connectors
- Improved the performance of working with Data Connector-based data sources (such as Oracle, Snowflake, MySQL, MariaDB) that have many tables. Listing untracked tables in the Console is significantly faster, and tracking only a subset of all available tables is also significantly faster.
v2.32.1
Changelog
This is a patch release for v2.32
Updates to MongoDB support (Cloud / Enterprise edition only)
- Logical models are available for MongoDB, allowing you to write and customize your schema for your MongoDB Collections (and Views).
- New interface for importing models for Collections from a single document sample. (Ability to share models and permissions across Collections and even parts of Collections.)
- Interface to author in-database relationships between collections in your MongoDB database.
- Enhancements for adding MongoDB Views to your API, allowing for custom views of your data using aggregation pipelines.
- Enhancements to our query capabilities by introducing
where
clauses and permissions on embedded (nested) documents. - Enhancements for creating relationships between remote databases using GraphQL in Hasura - including a visual builder and the ability to specify your MongoDB Collections as targets for remote relationships.
v2.32.0
Changelog
Highlights
Support for SQL Server stored procedures is now GA
We are delighted to announce that our Support for SQL Server stored procedures is now GA. The Hasura GraphQL Engine can now track read-only SQL Server Stored Procedures using the Logical Models feature.
This allows you to define custom GraphQL types directly in the Hasura GraphQL Engine, to define the result set returned from the stored procedure, and automatically generate a GraphQL root field for querying it.
See the related docs.
Behaviour changes
- A new metadata inconsistency error will be raised when inherited roles are configured where the parent roles have different column select permissions for the same table/logical model when the data source does not support the column redaction feature.
- Postgres/Citus/Cockroach/MSSQL/BigQuery support column redaction.
- Athena/Snowflake/MySQL/MariaDB/Oracle/MongoDB do not currently support column redaction.
Bug fixes and improvements
Server
- Adds configuration option to specify a custom header for JWT authentication.
- Fixes an issue where an MS SQL Server source was unable to track a relationship on a foreign key when the referenced table resided in a different schema.
- Improves handling of inherited roles and fixes a bug for where ordering and filtering would cause the query to fail in MS SQL Server.
- Simplifies Postgres aggregation predicate SQL generation by removing unnecessary
AND
andOR
s inside SQLWHERE
clauses. - Allow Stored Procedures to be tracked and untracked using the
bulk_atomic
metadata API command. (Cloud / Enterprise edition only) - Allow
where
filters to refer to nested fields in non-relational databases that store data as structured documents such as MongoDB. (Cloud / Enterprise edition only) - Adds a new Prometheus metric
hasura_websocket_message_write_time
and fixes existinghasura_websocket_message_queue_time
to exclude websocket message write time. (Cloud / Enterprise edition only) - Allows filter permissions to refer to fields of nested objects in document databases such as MongoDB. (Cloud / Enterprise edition only)
- Support
order_by
for fields of nested objects for document databases ingraphql-engine
with a compatible data connector agent such as MongoDB. This requires a version of a compatible agent that includes support forColumnSelector
. (Cloud / Enterprise edition only) - Respect individually-disabled OpenTelemetry export telemetry types when an endpoint URL is set. (Enterprise edition only)
- Allow disabling telemetry in Enterprise edition (excluding Trial licenses) by configuring the
HASURA_GRAPHQL_ENABLE_TELEMETRY
environment variable tofalse
. (Enterprise edition only)
Console
- Improves the selection of array data types during column creation in the Console.
- Improves suggested relationships with more natural and intuitive naming.
- Improves function tracking on the Console for Postgres and SQL Server. This can be enabled via
Settings
>Feature Flags
>Improved Tracking UI for Postgres and SQL Server
. - Improves Remote Schema relationships UX by adding a search option for types, better organizing configuration options, and easing navigation when mapping fields.
- Fixes an issue in the Console that prevented new relationships from being created if there were inconsistent sources in the Metadata.
- Editing of Logical Models is now supported via the Console.
- Display only local relationships in the permissions builder as permissions using remote relationships are not yet supported.
- Fixes issue while creating RESTified endpoints in the following scenarios: when the
graphql-default
naming convention is enabled, custom table name GraphQL customization is set for a table, or Remote Schemas are present. - Fixes remote database relationship visualization in the Console
- Adds minor UX improvements to the Stored Procedure UI i.e. better error handling, empty states, prompts.
- Fixes issue where columns were not displaying for materialized views in the new Relationships UI.
- Fixes JWT token analyzer in API explorer.
- Fixes GraphiQL loading indefinitely in case no GraphQL schema is returned.
Data Connectors
hasura/graphql-data-connector
docker image will run using non-root user (UID: 1001) and group (GID: 1001) by default. (Enterprise edition only)
v2.11.10
Changelog
This is a patch release for v2.11
Bug fixes and improvements
Build
- Update build packages to get the latest security updates.
v2.32.0-beta.1
Changelog
This is a beta release for v2.32
.
Highlights
Support for SQL Server stored procedures is now GA (Cloud / Enterprise edition only)
We are delighted to announce that our support for SQL Server stored procedures is now GA. The Hasura GraphQL Engine can now track read-only SQL Server Stored Procedures using the Logical Models feature.
This allows you to define custom GraphQL types directly in the Hasura GraphQL Engine, to define the result set returned from the stored procedure, and automatically generate a GraphQL root field for querying it. See the related docs.
Behaviour changes
-
The
naming_convention
experimental feature now also covers:- Type and field names of named constraints that appear in
on_conflict
upserts. - Type names of all Postgres scalar types.
- Type and input field names of function arguments.
By its nature, this changes the GraphQL schema and is thus a potentially breaking change to users that enable the
naming_convention
experimental feature. (partial fix for: #8929).edit: this change was reverted in the
v2.32.0
stable release due to its breaking nature and will be reintroduced in a later release in a safer manner. - Type and field names of named constraints that appear in
Bug fixes and improvements
Server
- Adds configuration option to specify a custom header for JWT authentication.
- Fixes an issue where an MS SQL Server source was unable to track a relationship on a foreign key when the referenced table resided in a different schema.
- Improves handling of inherited roles and fixes a bug for where ordering and filtering would cause the query to fail in MS SQL Server.
- Simplifies Postgres aggregation predicate SQL generation by removing unnecessary
AND
andOR
s inside SQLWHERE
clauses. - Allow Stored Procedures to be tracked and untracked using the
bulk_atomic
metadata API command. (Cloud / Enterprise edition only) - Allow
where
filters to refer to nested fields in non-relational databases that store data as structured documents such as MongoDB. (Cloud / Enterprise edition only) - Adds a new Prometheus metric
hasura_websocket_message_write_time
and fixes existinghasura_websocket_message_queue_time
to exclude websocket message write time. (Cloud / Enterprise edition only) - Allows filter permissions to refer to fields of nested objects in document databases such as MongoDB. (Cloud / Enterprise edition only)
- Respect individually-disabled OpenTelemetry export telemetry types when an endpoint URL is set. (Enterprise edition only)
Console
- Improves the selection of array data types during column creation in the Console.
- Improves suggested relationships with more natural and intuitive naming.
- Improves function tracking on the Console for Postgres and SQL Server. This can be enabled via
Settings
>Feature Flags
>Improved Tracking UI for Postgres and SQL Server
. - Improves Remote Schema relationships UX by adding a search option for types, better organizing configuration options, and easing navigation when mapping fields.
- Fixes an issue in the Console that prevented new relationships from being created if there were inconsistent sources in the Metadata.
- Editing of Logical Models is now supported via the Console.
- Display only local relationships in the permissions builder as permissions using remote relationships are not yet supported.
- Fixes issue while creating RESTified endpoints in the following scenarios: when the
graphql-default
naming convention is enabled, custom table name GraphQL customization is set for a table, or Remote Schemas are present. - Fixes remote database relationship visualization in the Console
- Adds minor UX improvements to the Stored Procedure UI i.e. better error handling, empty states, prompts.
- Fixes issue where columns were not displaying for materialized views in the new Relationships UI.
Data Connectors
hasura/graphql-data-connector
docker image will run using non-root user (UID: 1001) and group (GID: 1001) by default. (Enterprise edition only)
v2.31.0
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.
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.
Schema Registry alerts (Cloud only)
You can now get notifications on GraphQL schema changes via Slack or email by configuring Schema Registry alerts.
Bug fixes and improvements
Server
- Improves handling of inherited roles and fixes a bug for where ordering and filtering would cause the query to fail in MS SQL Server.
- Postgres aggregation predicate SQL generation has been simplified and now removes unnecessary
AND
andOR
s inside SQLWHERE
clauses. - Fixes a bug for MS SQL Server data sources where aggregation queries would fail.
- 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.
- Improves handling of inherited roles in Postgres and SQL Server.
- 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. - Improvements to return memory more quickly and more eagerly to the OS.
- Fixes issue where we were not ignoring some Cloudflare-related headers while computing cache key (with "forward client headers"). (Cloud / Enterprise edition only)
- Adds 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 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.
- 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). - 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.
- 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) hasura/graphql-data-connector
docker image will run using non-root user (UID: 1001) and group (GID: 1001) by default. (Enterprise edition only)